2
0
Эх сурвалжийг харах

Tidied up the example scripts to use the KeyDown event instead of polling keypresses.

Lasse Öörni 13 жил өмнө
parent
commit
e92e3fd138

+ 40 - 36
Bin/Data/Scripts/NinjaSnowWar.as

@@ -56,9 +56,6 @@ void Start()
     if (runServer || runClient)
     if (runServer || runClient)
         singlePlayer = false;
         singlePlayer = false;
 
 
-    // Subscribe to Update event before creating the scene to ensure we call HandleUpdate() before the scene is updated
-    SubscribeToEvent("Update", "HandleUpdate");
-
     InitAudio();
     InitAudio();
     InitConsole();
     InitConsole();
     InitScene();
     InitScene();
@@ -66,10 +63,12 @@ void Start()
     CreateCamera();
     CreateCamera();
     CreateOverlays();
     CreateOverlays();
 
 
+    SubscribeToEvent(gameScene, "SceneUpdate", "HandleUpdate");
     if (gameScene.physicsWorld !is null)
     if (gameScene.physicsWorld !is null)
         SubscribeToEvent(gameScene.physicsWorld, "PhysicsPreStep", "HandleFixedUpdate");
         SubscribeToEvent(gameScene.physicsWorld, "PhysicsPreStep", "HandleFixedUpdate");
-    SubscribeToEvent("PostUpdate", "HandlePostUpdate");
+    SubscribeToEvent(gameScene, "ScenePostUpdate", "HandlePostUpdate");
     SubscribeToEvent("PostRenderUpdate", "HandlePostRenderUpdate");
     SubscribeToEvent("PostRenderUpdate", "HandlePostRenderUpdate");
+    SubscribeToEvent("KeyDown", "HandleKeyDown");
     SubscribeToEvent("Points", "HandlePoints");
     SubscribeToEvent("Points", "HandlePoints");
     SubscribeToEvent("Kill", "HandleKill");
     SubscribeToEvent("Kill", "HandleKill");
     SubscribeToEvent("ScreenMode", "HandleScreenMode");
     SubscribeToEvent("ScreenMode", "HandleScreenMode");
@@ -338,39 +337,9 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
 {
 {
     float timeStep = eventData["TimeStep"].GetFloat();
     float timeStep = eventData["TimeStep"].GetFloat();
 
 
-    if (input.keyPress[KEY_F1])
-        console.Toggle();
-    if (input.keyPress[KEY_F2])
-        debugHud.ToggleAll();
-    if (input.keyPress[KEY_F3])
-        drawDebug = !drawDebug;
-    if (input.keyPress[KEY_F4])
-        drawOctreeDebug = !drawOctreeDebug;
-    
-    // Allow pause only in singleplayer
-    if (singlePlayer && input.keyPress['P'] && !console.visible && gameOn)
-    {
-        gameScene.active = !gameScene.active;
-        if (!gameScene.active)
-            SetMessage("PAUSED");
-        else
-            SetMessage("");
-    }
-
-    if (input.keyPress[KEY_ESC])
-    {
-        if (!console.visible)
-            engine.Exit();
-        else
-            console.visible = false;
-    }
+    UpdateControls();
+    CheckEndAndRestart();
 
 
-    if (gameScene.active)
-    {
-        UpdateControls();
-        CheckEndAndRestart();
-    }
-    
     if (engine.headless)
     if (engine.headless)
     {
     {
         String command = GetConsoleInput();
         String command = GetConsoleInput();
@@ -405,6 +374,41 @@ void HandlePostRenderUpdate()
         gameScene.octree.DrawDebugGeometry(true);
         gameScene.octree.DrawDebugGeometry(true);
 }
 }
 
 
+void HandleKeyDown(StringHash eventType, VariantMap& eventData)
+{
+    int key = eventData["Key"].GetInt();
+
+    if (key == KEY_ESC)
+    {
+        if (!console.visible)
+            engine.Exit();
+        else
+            console.visible = false;
+    }
+
+    if (key == KEY_F1)
+        console.Toggle();
+    
+    if (key == KEY_F2)
+        debugHud.ToggleAll();
+    
+    if (key == KEY_F3)
+        drawDebug = !drawDebug;
+    
+    if (key == KEY_F4)
+        drawOctreeDebug = !drawOctreeDebug;
+
+    // Allow pause only in singleplayer
+    if (key == 'P' && singlePlayer && !console.visible && gameOn)
+    {
+        gameScene.active = !gameScene.active;
+        if (!gameScene.active)
+            SetMessage("PAUSED");
+        else
+            SetMessage("");
+    }
+}
+
 void HandlePoints(StringHash eventType, VariantMap& eventData)
 void HandlePoints(StringHash eventType, VariantMap& eventData)
 {
 {
     if (eventData["DamageSide"].GetInt() == SIDE_PLAYER)
     if (eventData["DamageSide"].GetInt() == SIDE_PLAYER)

+ 48 - 44
Bin/Data/Scripts/TestScene.as

@@ -251,11 +251,43 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
             cameraNode.TranslateRelative(Vector3(-10, 0, 0) * timeStep * speedMultiplier);
             cameraNode.TranslateRelative(Vector3(-10, 0, 0) * timeStep * speedMultiplier);
         if (input.keyDown['D'])
         if (input.keyDown['D'])
             cameraNode.TranslateRelative(Vector3(10, 0, 0) * timeStep * speedMultiplier);
             cameraNode.TranslateRelative(Vector3(10, 0, 0) * timeStep * speedMultiplier);
+    }
+
+    // Update package download status
+    if (network.serverConnection !is null)
+    {
+        Connection@ connection = network.serverConnection;
+        if (connection.numDownloads > 0)
+        {
+            downloadsText.text = "Downloads: " + connection.numDownloads + " Current download: " +
+                connection.downloadName + " (" + int(connection.downloadProgress * 100.0) + "%)";
+        }
+        else if (!downloadsText.text.empty)
+            downloadsText.text = "";
+    }
+}
+
+void HandleKeyDown(StringHash eventType, VariantMap& eventData)
+{
+    int key = eventData["Key"].GetInt();
+
+    if (key == KEY_ESC)
+    {
+        if (ui.focusElement is null)
+            engine.Exit();
+        else
+            console.visible = false;
+    }
+    
+    if (key == KEY_F1)
+        console.Toggle();
 
 
-        if (input.keyPress['1'])
+    if (ui.focusElement is null)
+    {
+        if (key == '1')
             renderer.renderMode = RenderMode((renderer.renderMode + 1) % 3);
             renderer.renderMode = RenderMode((renderer.renderMode + 1) % 3);
         
         
-        if (input.keyPress['2'])
+        if (key == '2')
         {
         {
             int quality = renderer.textureQuality;
             int quality = renderer.textureQuality;
             ++quality;
             ++quality;
@@ -264,7 +296,7 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
             renderer.textureQuality = quality;
             renderer.textureQuality = quality;
         }
         }
 
 
-        if (input.keyPress['3'])
+        if (key == '3')
         {
         {
             int quality = renderer.materialQuality;
             int quality = renderer.materialQuality;
             ++quality;
             ++quality;
@@ -273,13 +305,13 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
             renderer.materialQuality = quality;
             renderer.materialQuality = quality;
         }
         }
 
 
-        if (input.keyPress['4'])
+        if (key == '4')
             renderer.specularLighting = !renderer.specularLighting;
             renderer.specularLighting = !renderer.specularLighting;
 
 
-        if (input.keyPress['5'])
+        if (key == '5')
             renderer.drawShadows = !renderer.drawShadows;
             renderer.drawShadows = !renderer.drawShadows;
 
 
-        if (input.keyPress['6'])
+        if (key == '6')
         {
         {
             int size = renderer.shadowMapSize;
             int size = renderer.shadowMapSize;
             size *= 2;
             size *= 2;
@@ -288,79 +320,51 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
             renderer.shadowMapSize = size;
             renderer.shadowMapSize = size;
         }
         }
 
 
-        if (input.keyPress['7'])
+        if (key == '7')
             renderer.shadowQuality = renderer.shadowQuality + 1;
             renderer.shadowQuality = renderer.shadowQuality + 1;
 
 
-        if (input.keyPress['8'])
+        if (key == '8')
         {
         {
             bool occlusion = renderer.maxOccluderTriangles > 0;
             bool occlusion = renderer.maxOccluderTriangles > 0;
             occlusion = !occlusion;
             occlusion = !occlusion;
             renderer.maxOccluderTriangles = occlusion ? 5000 : 0;
             renderer.maxOccluderTriangles = occlusion ? 5000 : 0;
         }
         }
 
 
-        if (input.keyPress['9'])
+        if (key == '9')
             renderer.dynamicInstancing = !renderer.dynamicInstancing;
             renderer.dynamicInstancing = !renderer.dynamicInstancing;
 
 
-        if (input.keyPress[' '])
+        if (key == ' ')
         {
         {
             drawDebug++;
             drawDebug++;
             if (drawDebug > 2)
             if (drawDebug > 2)
                 drawDebug = 0;
                 drawDebug = 0;
         }
         }
 
 
-        if (input.keyPress['C'])
+        if (key == 'C')
             camera.orthographic = !camera.orthographic;
             camera.orthographic = !camera.orthographic;
 
 
-        if (input.keyPress['B'])
+        if (key == 'B')
             bloom.active = !bloom.active;
             bloom.active = !bloom.active;
 
 
-        if (input.keyPress['F'])
+        if (key == 'F')
             edgeFilter.active = !edgeFilter.active;
             edgeFilter.active = !edgeFilter.active;
 
 
-        if (input.keyPress['T'])
+        if (key == 'T')
             debugHud.Toggle(DEBUGHUD_SHOW_PROFILER);
             debugHud.Toggle(DEBUGHUD_SHOW_PROFILER);
 
 
-        if (input.keyPress[KEY_F5])
+        if (key == KEY_F5)
         {
         {
             File@ xmlFile = File(fileSystem.programDir + "Data/Scenes/Scene.xml", FILE_WRITE);
             File@ xmlFile = File(fileSystem.programDir + "Data/Scenes/Scene.xml", FILE_WRITE);
             testScene.SaveXML(xmlFile);
             testScene.SaveXML(xmlFile);
         }
         }
 
 
-        if (input.keyPress[KEY_F7])
+        if (key == KEY_F7)
         {
         {
             File@ xmlFile = File(fileSystem.programDir + "Data/Scenes/Scene.xml", FILE_READ);
             File@ xmlFile = File(fileSystem.programDir + "Data/Scenes/Scene.xml", FILE_READ);
             if (xmlFile.open)
             if (xmlFile.open)
                 testScene.LoadXML(xmlFile);
                 testScene.LoadXML(xmlFile);
         }
         }
     }
     }
-
-    if (input.keyPress[KEY_ESC])
-    {
-        if (ui.focusElement is null)
-            engine.Exit();
-        else
-            console.visible = false;
-    }
-
-    // Update package download status
-    if (network.serverConnection !is null)
-    {
-        Connection@ connection = network.serverConnection;
-        if (connection.numDownloads > 0)
-        {
-            downloadsText.text = "Downloads: " + connection.numDownloads + " Current download: " +
-                connection.downloadName + " (" + int(connection.downloadProgress * 100.0) + "%)";
-        }
-        else if (!downloadsText.text.empty)
-            downloadsText.text = "";
-    }
-}
-
-void HandleKeyDown(StringHash eventType, VariantMap& eventData)
-{
-    // Check for toggling the console
-    if (eventData["Key"].GetInt() == KEY_F1)
-        console.Toggle();
 }
 }
 
 
 void HandleMouseMove(StringHash eventType, VariantMap& eventData)
 void HandleMouseMove(StringHash eventType, VariantMap& eventData)

+ 38 - 34
Bin/Data/Scripts/TestSceneOld.as

@@ -349,11 +349,30 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
             cameraNode.TranslateRelative(Vector3(-10, 0, 0) * timeStep * speedMultiplier);
             cameraNode.TranslateRelative(Vector3(-10, 0, 0) * timeStep * speedMultiplier);
         if (input.keyDown['D'])
         if (input.keyDown['D'])
             cameraNode.TranslateRelative(Vector3(10, 0, 0) * timeStep * speedMultiplier);
             cameraNode.TranslateRelative(Vector3(10, 0, 0) * timeStep * speedMultiplier);
+    }
+}
+
+void HandleKeyDown(StringHash eventType, VariantMap& eventData)
+{
+    int key = eventData["Key"].GetInt();
+
+    if (key == KEY_ESC)
+    {
+        if (ui.focusElement is null)
+            engine.Exit();
+        else
+            console.visible = false;
+    }
+
+    if (key == KEY_F1)
+        console.Toggle();
 
 
-        if (input.keyPress['1'])
+    if (ui.focusElement is null)
+    {
+        if (key == '1')
             renderer.renderMode = RenderMode((renderer.renderMode + 1) % 3);
             renderer.renderMode = RenderMode((renderer.renderMode + 1) % 3);
 
 
-        if (input.keyPress['2'])
+        if (key == '2')
         {
         {
             int quality = renderer.textureQuality;
             int quality = renderer.textureQuality;
             ++quality;
             ++quality;
@@ -362,7 +381,7 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
             renderer.textureQuality = quality;
             renderer.textureQuality = quality;
         }
         }
 
 
-        if (input.keyPress['3'])
+        if (key == '3')
         {
         {
             int quality = renderer.materialQuality;
             int quality = renderer.materialQuality;
             ++quality;
             ++quality;
@@ -371,13 +390,13 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
             renderer.materialQuality = quality;
             renderer.materialQuality = quality;
         }
         }
 
 
-        if (input.keyPress['4'])
+        if (key == '4')
             renderer.specularLighting = !renderer.specularLighting;
             renderer.specularLighting = !renderer.specularLighting;
 
 
-        if (input.keyPress['5'])
+        if (key == '5')
             renderer.drawShadows = !renderer.drawShadows;
             renderer.drawShadows = !renderer.drawShadows;
 
 
-        if (input.keyPress['6'])
+        if (key == '6')
         {
         {
             int size = renderer.shadowMapSize;
             int size = renderer.shadowMapSize;
             size *= 2;
             size *= 2;
@@ -386,30 +405,30 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
             renderer.shadowMapSize = size;
             renderer.shadowMapSize = size;
         }
         }
 
 
-        if (input.keyPress['7'])
+        if (key == '7')
             renderer.shadowQuality = renderer.shadowQuality + 1;
             renderer.shadowQuality = renderer.shadowQuality + 1;
 
 
-        if (input.keyPress['8'])
+        if (key == '8')
         {
         {
             bool occlusion = renderer.maxOccluderTriangles > 0;
             bool occlusion = renderer.maxOccluderTriangles > 0;
             occlusion = !occlusion;
             occlusion = !occlusion;
             renderer.maxOccluderTriangles = occlusion ? 5000 : 0;
             renderer.maxOccluderTriangles = occlusion ? 5000 : 0;
         }
         }
 
 
-        if (input.keyPress['9'])
+        if (key == '9')
             renderer.dynamicInstancing = !renderer.dynamicInstancing;
             renderer.dynamicInstancing = !renderer.dynamicInstancing;
 
 
-        if (input.keyPress[' '])
+        if (key == ' ')
         {
         {
             drawDebug++;
             drawDebug++;
             if (drawDebug > 2)
             if (drawDebug > 2)
                 drawDebug = 0;
                 drawDebug = 0;
         }
         }
 
 
-        if (input.keyPress['P'])
+        if (key == 'P')
             paused = !paused;
             paused = !paused;
 
 
-        if (input.keyPress['L'])
+        if (key == 'L')
         {
         {
             if (cameraLightNode.parent is testScene)
             if (cameraLightNode.parent is testScene)
             {
             {
@@ -421,28 +440,28 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
                 cameraLightNode.parent = testScene;
                 cameraLightNode.parent = testScene;
         }
         }
         
         
-        if (input.keyPress['V'])
+        if (key == 'V')
             cameraLight.perVertex = !cameraLight.perVertex;
             cameraLight.perVertex = !cameraLight.perVertex;
 
 
-        if (input.keyPress['C'])
+        if (key == 'C')
             camera.orthographic = !camera.orthographic;
             camera.orthographic = !camera.orthographic;
 
 
-        if (input.keyPress['B'])
+        if (key == 'B')
             bloom.active = !bloom.active;
             bloom.active = !bloom.active;
             
             
-        if (input.keyPress['F'])
+        if (key == 'F')
             edgeFilter.active = !edgeFilter.active;
             edgeFilter.active = !edgeFilter.active;
         
         
-        if (input.keyPress['T'])
+        if (key == 'T')
             debugHud.Toggle(DEBUGHUD_SHOW_PROFILER);
             debugHud.Toggle(DEBUGHUD_SHOW_PROFILER);
 
 
-        if (input.keyPress[KEY_F5])
+        if (key == KEY_F5)
         {
         {
             File@ xmlFile = File("Data/Scenes/SceneOld.xml", FILE_WRITE);
             File@ xmlFile = File("Data/Scenes/SceneOld.xml", FILE_WRITE);
             testScene.SaveXML(xmlFile);
             testScene.SaveXML(xmlFile);
         }
         }
 
 
-        if (input.keyPress[KEY_F7])
+        if (key == KEY_F7)
         {
         {
             File@ xmlFile = File("Data/Scenes/SceneOld.xml", FILE_READ);
             File@ xmlFile = File("Data/Scenes/SceneOld.xml", FILE_READ);
             if (xmlFile.open)
             if (xmlFile.open)
@@ -456,21 +475,6 @@ void HandleUpdate(StringHash eventType, VariantMap& eventData)
             }
             }
         }
         }
     }
     }
-
-    if (input.keyPress[KEY_ESC])
-    {
-        if (ui.focusElement is null)
-            engine.Exit();
-        else
-            console.visible = false;
-    }
-}
-
-void HandleKeyDown(StringHash eventType, VariantMap& eventData)
-{
-    // Check for toggling the console
-    if (eventData["Key"].GetInt() == KEY_F1)
-        console.Toggle();
 }
 }
 
 
 void HandleMouseMove(StringHash eventType, VariantMap& eventData)
 void HandleMouseMove(StringHash eventType, VariantMap& eventData)