Browse Source

Merge remote-tracking branch 'remotes/petex/master'

Lasse Öörni 12 years ago
parent
commit
4b8cc596f9
3 changed files with 57 additions and 13 deletions
  1. 31 0
      Bin/Data/Scripts/Editor/EditorUI.as
  2. 15 13
      Bin/Data/Scripts/Editor/EditorView.as
  3. 11 0
      Docs/GettingStarted.dox

+ 31 - 0
Bin/Data/Scripts/Editor/EditorUI.as

@@ -1048,6 +1048,7 @@ void HandleUIElementDefaultStyle(StringHash eventType, VariantMap& eventData)
 void HandleKeyDown(StringHash eventType, VariantMap& eventData)
 {
     int key = eventData["Key"].GetInt();
+    int viewDirection = eventData["Qualifiers"].GetInt() == QUAL_CTRL ? -1 : 1;
 
     if (key == KEY_ESC)
     {
@@ -1084,6 +1085,36 @@ void HandleKeyDown(StringHash eventType, VariantMap& eventData)
     else if (key == KEY_F4)
         ToggleOctreeDebug();
 
+    else if (key == KEY_NUMPAD1) // Front view
+    {
+        Vector3 pos = cameraNode.position;
+        pos.z = -pos.length * viewDirection;
+        pos.x = 0;
+        pos.y = 0;
+        cameraNode.position = pos;
+        cameraNode.direction = Vector3(0, 0, viewDirection);
+    }
+
+    else if (key == KEY_NUMPAD3) // Side view
+    {
+        Vector3 pos = cameraNode.position;
+        pos.x = pos.length * viewDirection;
+        pos.y = 0;
+        pos.z = 0;
+        cameraNode.position = pos;
+        cameraNode.direction = Vector3(-viewDirection, 0, 0);
+    }
+
+    else if (key == KEY_NUMPAD7) // Top view
+    {
+        Vector3 pos = cameraNode.position;
+        pos.y = pos.length * viewDirection;
+        pos.x = 0;
+        pos.z = 0;
+        cameraNode.position = pos;
+        cameraNode.direction = Vector3(0, -viewDirection, 0);
+    }
+
     else if (eventData["Qualifiers"].GetInt() == QUAL_CTRL)
     {
         if (key == '1')

+ 15 - 13
Bin/Data/Scripts/Editor/EditorView.as

@@ -39,8 +39,6 @@ SnapScaleMode snapScaleMode = SNAP_SCALE_FULL;
 float cameraBaseSpeed = 10;
 float cameraBaseRotationSpeed = 0.2;
 float cameraShiftSpeedMultiplier = 5;
-float cameraYaw = 0;
-float cameraPitch = 0;
 float newNodeDistance = 20;
 float moveStep = 0.5;
 float rotateStep = 5;
@@ -113,10 +111,9 @@ void CreateCamera()
 
 void ResetCamera()
 {
-    cameraPitch = 20;
-    cameraYaw = 0;
     cameraNode.position = Vector3(0, 5, -10);
-    cameraNode.rotation = Quaternion(cameraPitch, cameraYaw, 0);
+    // Look at the origin so user can see the scene.
+    cameraNode.rotation = Quaternion(Vector3(0, 0, 1), -cameraNode.position);
 }
 
 void CreateGrid()
@@ -312,6 +309,16 @@ void UpdateView(float timeStep)
             cameraNode.Translate(Vector3(0, -cameraBaseSpeed, 0) * timeStep * speedMultiplier);
             FadeUI();
         }
+        if (input.keyDown['E'])
+        {
+            cameraNode.Translate(Vector3(0, cameraBaseSpeed, 0) * timeStep * speedMultiplier);
+            FadeUI();
+        }
+        if (input.keyDown['Q'])
+        {
+            cameraNode.Translate(Vector3(0, -cameraBaseSpeed, 0) * timeStep * speedMultiplier);
+            FadeUI();
+        }
     }
 
     // Rotate camera
@@ -320,14 +327,9 @@ void UpdateView(float timeStep)
         IntVector2 mouseMove = input.mouseMove;
         if (mouseMove.x != 0 || mouseMove.y != 0)
         {
-            cameraYaw += mouseMove.x * cameraBaseRotationSpeed;
-            cameraPitch += mouseMove.y * cameraBaseRotationSpeed;
-            if (cameraPitch < -90.0)
-                cameraPitch = -90.0;
-            if (cameraPitch > 90.0)
-                cameraPitch = 90.0;
-
-            cameraNode.rotation = Quaternion(cameraPitch, cameraYaw, 0);
+            float cameraYaw = mouseMove.x * cameraBaseRotationSpeed;
+            float cameraPitch = mouseMove.y * cameraBaseRotationSpeed;
+            cameraNode.rotation = cameraNode.rotation * Quaternion(cameraPitch, cameraYaw, 0);
             FadeUI();
         }
     }

+ 11 - 0
Docs/GettingStarted.dox

@@ -463,6 +463,17 @@ Right mouse     - Hold down and move mouse to rotate camera
 
 WSAD or arrows  - Move
 Shift+WSAD      - Move faster
+E               - Ascend
+Q               - Descend
+Shift+E,Q       - Ascend or descend faster
+
+Numpad1         - Front view
+Numpad3         - Right hand view
+Numpad7         - Top view
+Ctrl+Numpad1    - Back view
+Ctrl+Numpad3    - Left view
+Ctrl+Numpad7    - Bottom view
+
 Ctrl+1,2,3      - Object manipulation mode: move/rotate/scale
 Ctrl+4          - Object selection mode, no manipulation
 Ctrl+5          - Toggle between world and local axes manipulation