Browse Source

blender mode fixes: select w shift , strafe, pan

MonkeyFirst 10 years ago
parent
commit
3f8cb158d4
1 changed files with 68 additions and 34 deletions
  1. 68 34
      bin/Data/Scripts/Editor/EditorView.as

+ 68 - 34
bin/Data/Scripts/Editor/EditorView.as

@@ -1214,12 +1214,12 @@ void UpdateView(float timeStep)
         }
     
     // Move camera
+    float speedMultiplier = 1.0;
+    if (input.keyDown[KEY_LSHIFT])
+        speedMultiplier = cameraShiftSpeedMultiplier;
+    
     if (!input.keyDown[KEY_LCTRL])
-    {
-        float speedMultiplier = 1.0;
-        if (input.keyDown[KEY_LSHIFT])
-            speedMultiplier = cameraShiftSpeedMultiplier;
-        
+    {        
         if (hotKeyMode == HOTKEYS_MODE_STANDARD ||  (hotKeyMode == HOTKEYS_MODE_BLENDER && cameraFlyMode && !input.keyDown[KEY_LSHIFT]) ) 
         {
             if (input.keyDown['W'] || input.keyDown[KEY_UP])
@@ -1253,38 +1253,43 @@ void UpdateView(float timeStep)
                 FadeUI();
             }
         } 
-        if (input.mouseMoveWheel != 0 && ui.GetElementAt(ui.cursor.position) is null)
+    }
+    
+    if (input.mouseMoveWheel != 0 && ui.GetElementAt(ui.cursor.position) is null)
+    {
+        if ( hotKeyMode == HOTKEYS_MODE_STANDARD) 
         {
-            if ( hotKeyMode == HOTKEYS_MODE_STANDARD) 
+            if (mouseWheelCameraPosition)
             {
-                if (mouseWheelCameraPosition)
-                {
-                    cameraNode.Translate(Vector3(0, 0, -cameraBaseSpeed) * -input.mouseMoveWheel*20 * timeStep *
-                    speedMultiplier);
-                }
-                else
-                {
-                    float zoom = camera.zoom + -input.mouseMoveWheel *.1 * speedMultiplier;
-                    camera.zoom = Clamp(zoom, .1, 30);
-                }
+                cameraNode.Translate(Vector3(0, 0, -cameraBaseSpeed) * -input.mouseMoveWheel*20 * timeStep *
+                speedMultiplier);
             }
-            else if (hotKeyMode == HOTKEYS_MODE_BLENDER) 
+            else
             {
-                if (mouseWheelCameraPosition && !camera.orthographic )
-                {
-                    cameraNode.Translate(Vector3(0, 0, -cameraBaseSpeed) * -input.mouseMoveWheel*20 * timeStep *
-                    speedMultiplier);
-                }
+                float zoom = camera.zoom + -input.mouseMoveWheel *.1 * speedMultiplier;
+                camera.zoom = Clamp(zoom, .1, 30);
+            }
+        }
+        else if (hotKeyMode == HOTKEYS_MODE_BLENDER) 
+        {
+            if (mouseWheelCameraPosition && !camera.orthographic )
+            {   if (input.keyDown[KEY_LSHIFT])
+                    cameraNode.Translate(Vector3(0, -cameraBaseSpeed, 0) * -input.mouseMoveWheel* 5* timeStep * speedMultiplier);
+                else if (input.keyDown[KEY_LCTRL])
+                    cameraNode.Translate(Vector3(-cameraBaseSpeed,0, 0) * -input.mouseMoveWheel*20 * timeStep * speedMultiplier);
                 else
-                {
-                    float zoom = camera.zoom + -input.mouseMoveWheel *.1 * speedMultiplier;
-                    camera.zoom = Clamp(zoom, .1, 30);
-                }
+                    cameraNode.Translate(Vector3(0, 0, -cameraBaseSpeed) * -input.mouseMoveWheel*20 * timeStep * speedMultiplier);
+            }
+            else
+            {
+                float zoom = camera.zoom + -input.mouseMoveWheel *.1 * speedMultiplier;
+                camera.zoom = Clamp(zoom, .1, 30);
             }
-            
         }
+        
     }
 
+
     if (input.keyDown[KEY_HOME])
     {
         if (selectedNodes.length > 0 || selectedComponents.length > 0)
@@ -1295,9 +1300,20 @@ void UpdateView(float timeStep)
             cameraNode.worldPosition = centerPoint - q * Vector3(0.0, 0.0,10);
         }
     }
-
+    
     // Rotate/orbit/pan camera
-    bool changeCamViewButton = input.mouseButtonDown[MOUSEB_RIGHT] || input.mouseButtonDown[MOUSEB_MIDDLE];
+    bool changeCamViewButton = false;
+    
+    if ( hotKeyMode == HOTKEYS_MODE_STANDARD) 
+        changeCamViewButton = input.mouseButtonDown[MOUSEB_RIGHT] || input.mouseButtonDown[MOUSEB_MIDDLE];
+    else if (hotKeyMode == HOTKEYS_MODE_BLENDER) 
+    {  
+        changeCamViewButton = input.mouseButtonDown[MOUSEB_MIDDLE] || cameraFlyMode;
+        
+        if (input.mouseButtonPress[MOUSEB_RIGHT]) 
+            cameraFlyMode = false;
+    }
+    
     if (changeCamViewButton)
     {
         SetMouseLock();
@@ -1672,13 +1688,31 @@ void ViewRaycast(bool mouseClick)
             selectedComponent = body;
         }
     }
-
-    if (mouseClick && input.mouseButtonPress[MOUSEB_LEFT])
+    
+    bool multiselect = false;
+    bool componentSelectQualifier = false;
+    bool mouseButtonPressRL = false;
+    
+    if (hotKeyMode == HOTKEYS_MODE_STANDARD) 
     {
-        bool multiselect = input.qualifierDown[QUAL_CTRL];
+        mouseButtonPressRL = input.mouseButtonPress[MOUSEB_LEFT];
+        componentSelectQualifier = input.qualifierDown[QUAL_SHIFT];
+        multiselect = input.qualifierDown[QUAL_CTRL];
+    }
+    else if ( hotKeyMode == HOTKEYS_MODE_BLENDER ) 
+    {
+        mouseButtonPressRL = input.mouseButtonPress[MOUSEB_RIGHT];
+        componentSelectQualifier = input.qualifierDown[QUAL_CTRL];
+        multiselect = input.qualifierDown[QUAL_SHIFT];
+    }
+    
+    if (mouseClick && mouseButtonPressRL)
+    {
+       
+        
         if (selectedComponent !is null)
         {
-            if (input.qualifierDown[QUAL_SHIFT])
+            if (componentSelectQualifier)
             {
                 // If we are selecting components, but have nodes in existing selection, do not multiselect to prevent confusion
                 if (!selectedNodes.empty)