void UI::ShowConsole(bool value) { Console* console = GetSubsystem<Console>(); if (!console) return; console->SetVisible(value); consoleVisible_ = console->IsVisible(); }
/// Initialize the main console void GameEconomicGameClient::InitializeConsole(void) { /// Get component GameStateHandlerComponent * gamestatehandlercomponent_ = GetSubsystem<GameStateHandlerComponent>(); /// create basic console Console* console = GetSubsystem<Console>(); console->SetNumRows(2); console->SetNumBufferedRows(32); console->SetCommandInterpreter(GetTypeName()); console->SetVisible(false); console->GetCloseButton()->SetVisible(false); gamestatehandlercomponent_ ->SetConsoleState(UI_CONSOLEOFF); }
void TowerApp::HandleKeyDown(StringHash, VariantMap &eventData) { using namespace KeyDown; int key = eventData[P_KEY].GetInt(); // Close console (if open) or exit when ESC is pressed if (key == KEY_ESC) { Console *console = GetSubsystem<Console>(); if (console->IsVisible()) console->SetVisible(false); else engine_->Exit(); return; } if (key == '`') { GetSubsystem<Console>()->Toggle(); return; } // Toggle debug HUD with F2 if (key == KEY_F2) { DebugHud *debugHud = GetSubsystem<DebugHud>(); if (debugHud->GetMode() == 0 || debugHud->GetMode() == DEBUGHUD_SHOW_ALL_MEMORY) debugHud->SetMode(DEBUGHUD_SHOW_ALL); else debugHud->SetMode(DEBUGHUD_SHOW_NONE); return; } if (key == KEY_F3) { DebugHud *debugHud = GetSubsystem<DebugHud>(); if (debugHud->GetMode() == 0 || debugHud->GetMode() == DEBUGHUD_SHOW_ALL) debugHud->SetMode(DEBUGHUD_SHOW_ALL_MEMORY); else debugHud->SetMode(DEBUGHUD_SHOW_NONE); return; } if (key == KEY_F4) { drawDebugGeometry = !drawDebugGeometry; return; } }
void UrhoQuickStart::HandleKeyDown(StringHash eventType, VariantMap& eventData) { using namespace KeyDown; int key = eventData[P_KEY].GetInt(); if (key == KEY_ESC) { Console* console = GetSubsystem<Console>(); if (console->IsVisible()) console->SetVisible(false); else engine_->Exit(); } else if (key == KEY_F1) { Console* console = GetSubsystem<Console>(); console->Toggle(); } if (key == KEY_F2) drawDebug_ = !drawDebug_; if (key == KEY_E) { Vector3 hitPos; Drawable* hitDrawable; NavigationMesh* navMesh = scene_->GetComponent<NavigationMesh>(); if (Raycast(250.0f, hitPos, hitDrawable)) { Vector3 pathPos = navMesh->FindNearestPoint(hitPos, Vector3(2.0f, 2.0f, 2.0f)); botScript_->AddPath(botNode_->GetWorldPosition(), pathPos); } } }
void ConsoleInput::Start() { // Execute base class startup Sample::Start(); // Subscribe to console commands and the frame update SubscribeToEvent(E_CONSOLECOMMAND, URHO3D_HANDLER(ConsoleInput, HandleConsoleCommand)); SubscribeToEvent(E_UPDATE, URHO3D_HANDLER(ConsoleInput, HandleUpdate)); // Subscribe key down event SubscribeToEvent(E_KEYDOWN, URHO3D_HANDLER(ConsoleInput, HandleEscKeyDown)); // Hide logo to make room for the console SetLogoVisible(false); // Show the console by default, make it large. Console will show the text edit field when there is at least one // subscriber for the console command event Console* console = GetSubsystem<Console>(); console->SetNumRows(GetSubsystem<Graphics>()->GetHeight() / 16); console->SetNumBufferedRows(2 * console->GetNumRows()); console->SetCommandInterpreter(GetTypeName()); console->SetVisible(true); console->GetCloseButton()->SetVisible(false); // Show OS mouse cursor GetSubsystem<Input>()->SetMouseVisible(true); // Open the operating system console window (for stdin / stdout) if not open yet OpenConsoleWindow(); // Initialize game and print the welcome message StartGame(); // Randomize from system clock SetRandomSeed(Time::GetSystemTime()); }
//------------------------------------------------------------------------------------------------------------------------------------------------------ void BaseApplication::HandleKeyDown(StringHash eventType, VariantMap& eventData) { using namespace Urho3D::KeyDown; int key = eventData[P_KEY].GetInt(); // Close console (if open) or exit when ESC is pressed if (key == Urho3D::KEY_ESC) { Console* console = GetSubsystem<Console>(); if (console->IsVisible()) console->SetVisible(false); else engine_->Exit(); } // Toggle console with F1 else if (key == Urho3D::KEY_F1) GetSubsystem<Console>()->Toggle(); // Toggle debug HUD with F2 else if (key == Urho3D::KEY_F2) { DebugHud* debugHud = GetSubsystem<DebugHud>(); if (debugHud->GetMode() == 0 || debugHud->GetMode() == DEBUGHUD_SHOW_ALL_MEMORY) debugHud->SetMode(DEBUGHUD_SHOW_ALL); else debugHud->SetMode(DEBUGHUD_SHOW_NONE); } else if (key == KEY_F3) { DebugHud* debugHud = GetSubsystem<DebugHud>(); if (debugHud->GetMode() == 0 || debugHud->GetMode() == DEBUGHUD_SHOW_ALL) debugHud->SetMode(DEBUGHUD_SHOW_ALL_MEMORY); else debugHud->SetMode(DEBUGHUD_SHOW_NONE); } // Common rendering quality controls, only when UI has no focused element else if (!GetSubsystem<UI>()->GetFocusElement()) { Renderer* renderer = GetSubsystem<Renderer>(); // Preferences / Pause if (key == KEY_SELECT && touchEnabled_) { paused_ = !paused_; Input* input = GetSubsystem<Input>(); if (screenJoystickSettingsIndex_ == M_MAX_UNSIGNED) { // Lazy initialization ResourceCache* cache = GetSubsystem<ResourceCache>(); screenJoystickSettingsIndex_ = input->AddScreenJoystick(cache->GetResource<XMLFile>("UI/ScreenJoystickSettings_Samples.xml"), cache->GetResource<XMLFile>("UI/DefaultStyle.xml")); } else input->SetScreenJoystickVisible(screenJoystickSettingsIndex_, paused_); } // Texture quality else if (key == '1') { int quality = renderer->GetTextureQuality(); ++quality; if (quality > QUALITY_HIGH) quality = QUALITY_LOW; renderer->SetTextureQuality(quality); } // Material quality else if (key == '2') { int quality = renderer->GetMaterialQuality(); ++quality; if (quality > QUALITY_HIGH) quality = QUALITY_LOW; renderer->SetMaterialQuality(quality); } // Specular lighting else if (key == '3') renderer->SetSpecularLighting(!renderer->GetSpecularLighting()); // Shadow rendering else if (key == '4') renderer->SetDrawShadows(!renderer->GetDrawShadows()); // Shadow map resolution else if (key == '5') { int shadowMapSize = renderer->GetShadowMapSize(); shadowMapSize *= 2; if (shadowMapSize > 2048) shadowMapSize = 512; renderer->SetShadowMapSize(shadowMapSize); } // Shadow depth and filtering quality else if (key == '6') { int quality = renderer->GetShadowQuality(); ++quality; if (quality > SHADOWQUALITY_PCF_24BIT) quality = SHADOWQUALITY_SIMPLE_16BIT; renderer->SetShadowQuality((ShadowQuality)quality); } // Occlusion culling else if (key == '7') { bool occlusion = renderer->GetMaxOccluderTriangles() > 0; occlusion = !occlusion; renderer->SetMaxOccluderTriangles(occlusion ? 5000 : 0); } // Instancing else if (key == '8') renderer->SetDynamicInstancing(!renderer->GetDynamicInstancing()); // Take screenshot else if (key == '9') { Graphics* graphics = GetSubsystem<Graphics>(); Image screenshot(context_); graphics->TakeScreenShot(screenshot); // Here we save in the Data folder with date and time appended screenshot.SavePNG(GetSubsystem<FileSystem>()->GetProgramDir() + "Data/Screenshot_" + Time::GetTimeStamp().Replaced(':', '_').Replaced('.', '_').Replaced(' ', '_') + ".png"); } } }
void DatabaseDemo::Start() { // Execute base class startup Sample::Start(); // Subscribe to console commands and the frame update SubscribeToEvent(E_CONSOLECOMMAND, URHO3D_HANDLER(DatabaseDemo, HandleConsoleCommand)); SubscribeToEvent(E_UPDATE, URHO3D_HANDLER(DatabaseDemo, HandleUpdate)); // Subscribe key down event SubscribeToEvent(E_KEYDOWN, URHO3D_HANDLER(DatabaseDemo, HandleEscKeyDown)); // Hide logo to make room for the console SetLogoVisible(false); // Show the console by default, make it large. Console will show the text edit field when there is at least one // subscriber for the console command event Console* console = GetSubsystem<Console>(); console->SetNumRows((unsigned)(GetSubsystem<Graphics>()->GetHeight() / 16)); console->SetNumBufferedRows(2 * console->GetNumRows()); console->SetCommandInterpreter(GetTypeName()); console->SetVisible(true); console->GetCloseButton()->SetVisible(false); // Show OS mouse cursor GetSubsystem<Input>()->SetMouseVisible(true); // Set the mouse mode to use in the sample Sample::InitMouseMode(MM_FREE); // Open the operating system console window (for stdin / stdout) if not open yet OpenConsoleWindow(); // In general, the connection string is really the only thing that need to be changed when switching underlying database API // and that when using ODBC API then the connection string must refer to an already installed ODBC driver // Although it has not been tested yet but the ODBC API should be able to interface with any vendor provided ODBC drivers // In this particular demo, however, when using ODBC API then the SQLite-ODBC driver need to be installed // The SQLite-ODBC driver can be built from source downloaded from http://www.ch-werner.de/sqliteodbc/ // You can try to install other ODBC driver and modify the connection string below to match your ODBC driver // Both DSN and DSN-less connection string should work // The ODBC API, i.e. URHO3D_DATABASE_ODBC build option, is only available for native (including RPI) platforms // and it is designed for development of game server connecting to ODBC-compliant databases in mind // This demo will always work when using SQLite API as the SQLite database engine is embedded inside Urho3D game engine // and this is also the case when targeting Web platform // We could have used #ifdef to init the connection string during compile time, but below shows how it is done during runtime // The "URHO3D_DATABASE_ODBC" compiler define is set when URHO3D_DATABASE_ODBC build option is enabled // Connect to a temporary in-memory SQLite database connection_ = GetSubsystem<Database>()->Connect(Database::GetAPI() == DBAPI_ODBC ? "Driver=SQLite3;Database=:memory:" : "file://"); // Subscribe to database cursor event to loop through query resultset SubscribeToEvent(E_DBCURSOR, URHO3D_HANDLER(DatabaseDemo, HandleDbCursor)); // Show instruction Print("This demo connects to temporary in-memory database.\n" "All the tables and their data will be lost after exiting the demo.\n" "Enter a valid SQL statement in the console input and press Enter to execute.\n" "Enter 'get/set maxrows [number]' to get/set the maximum rows to be printed out.\n" "Enter 'get/set connstr [string]' to get/set the database connection string and establish a new connection to it.\n" "Enter 'quit' or 'exit' to exit the demo.\n" "For example:\n "); HandleInput("create table tbl1(col1 varchar(10), col2 smallint)"); HandleInput("insert into tbl1 values('Hello', 10)"); HandleInput("insert into tbl1 values('World', 20)"); HandleInput("select * from tbl1"); }
void Sample::HandleKeyDown(StringHash eventType, VariantMap& eventData) { using namespace KeyDown; int key = eventData[P_KEY].GetInt(); // Close console (if open) or exit when ESC is pressed if (key == KEY_ESC) { Console* console = GetSubsystem<Console>(); if (console->IsVisible()) console->SetVisible(false); else GetSubsystem<Engine>()->Exit(); } // Toggle console with F1 else if (key == KEY_F1) GetSubsystem<Console>()->Toggle(); // Toggle debug HUD with F2 else if (key == KEY_F2) GetSubsystem<DebugHud>()->ToggleAll(); // Take screenshot else if (key == '9') { Graphics* graphics = GetSubsystem<Graphics>(); Image screenshot(context_); graphics->TakeScreenShot(screenshot); // Here we save in the Data folder with date and time appended screenshot.SavePNG(GetSubsystem<FileSystem>()->GetProgramDir() + "Data/Screenshot_" + Time::GetTimeStamp().Replaced(':', '_').Replaced('.', '_').Replaced(' ', '_') + ".png"); } // Common rendering quality controls, only when UI has no focused element else if (!GetSubsystem<UI>()->GetFocusElement()) { Renderer* renderer = GetSubsystem<Renderer>(); // Texture quality if (key == '1') { int quality = renderer->GetTextureQuality(); ++quality; if (quality > QUALITY_HIGH) quality = QUALITY_LOW; renderer->SetTextureQuality(quality); } // Material quality else if (key == '2') { int quality = renderer->GetMaterialQuality(); ++quality; if (quality > QUALITY_HIGH) quality = QUALITY_LOW; renderer->SetMaterialQuality(quality); } // Specular lighting else if (key == '3') renderer->SetSpecularLighting(!renderer->GetSpecularLighting()); // Shadow rendering else if (key == '4') renderer->SetDrawShadows(!renderer->GetDrawShadows()); // Shadow map resolution else if (key == '5') { int shadowMapSize = renderer->GetShadowMapSize(); shadowMapSize *= 2; if (shadowMapSize > 2048) shadowMapSize = 512; renderer->SetShadowMapSize(shadowMapSize); } // Shadow depth and filtering quality else if (key == '6') { int quality = renderer->GetShadowQuality(); ++quality; if (quality > SHADOWQUALITY_HIGH_24BIT) quality = SHADOWQUALITY_LOW_16BIT; renderer->SetShadowQuality(quality); } // Occlusion culling else if (key == '7') { bool occlusion = renderer->GetMaxOccluderTriangles() > 0; occlusion = !occlusion; renderer->SetMaxOccluderTriangles(occlusion ? 5000 : 0); } // Instancing else if (key == '8') renderer->SetDynamicInstancing(!renderer->GetDynamicInstancing()); } }
void GameApplication::HandleKeyDown(StringHash eventType, VariantMap& eventData) { using namespace KeyDown; int key = eventData[P_KEY].GetInt(); list<CHANGE_ORDER> changes; //显示与内存中上下相反 if (key == 'W') { gameData_.OnDown(changes); UpdateShow(); } if (key == 'S') { gameData_.OnUp(changes); UpdateShow(); } if (key == 'A') { gameData_.OnLeft(changes); UpdateShow(); } if (key == 'D') { gameData_.OnRight(changes); UpdateShow(); } // Close console (if open) or exit when ESC is pressed if (key == KEY_ESC) { Console* console = GetSubsystem<Console>(); if (!console->IsVisible()) engine_->Exit(); else console->SetVisible(false); } // Toggle console with F1 else if (key == KEY_F1) GetSubsystem<Console>()->Toggle(); // Toggle debug HUD with F2 else if (key == KEY_F2) GetSubsystem<DebugHud>()->ToggleAll(); // Common rendering quality controls, only when UI has no focused element else if (!GetSubsystem<UI>()->GetFocusElement()) { Renderer* renderer = GetSubsystem<Renderer>(); // Texture quality if (key == '1') { int quality = renderer->GetTextureQuality(); ++quality; if (quality > QUALITY_HIGH) quality = QUALITY_LOW; renderer->SetTextureQuality(quality); } // Material quality else if (key == '2') { int quality = renderer->GetMaterialQuality(); ++quality; if (quality > QUALITY_HIGH) quality = QUALITY_LOW; renderer->SetMaterialQuality(quality); } // Specular lighting else if (key == '3') renderer->SetSpecularLighting(!renderer->GetSpecularLighting()); // Shadow rendering else if (key == '4') renderer->SetDrawShadows(!renderer->GetDrawShadows()); // Shadow map resolution else if (key == '5') { int shadowMapSize = renderer->GetShadowMapSize(); shadowMapSize *= 2; if (shadowMapSize > 2048) shadowMapSize = 512; renderer->SetShadowMapSize(shadowMapSize); } // Shadow depth and filtering quality else if (key == '6') { int quality = renderer->GetShadowQuality(); ++quality; if (quality > SHADOWQUALITY_HIGH_24BIT) quality = SHADOWQUALITY_LOW_16BIT; renderer->SetShadowQuality(quality); } // Occlusion culling else if (key == '7') { bool occlusion = renderer->GetMaxOccluderTriangles() > 0; occlusion = !occlusion; renderer->SetMaxOccluderTriangles(occlusion ? 5000 : 0); } // Instancing else if (key == '8') renderer->SetDynamicInstancing(!renderer->GetDynamicInstancing()); } }