                 FadeUI();
             }
         } 
-        if (input.mouseMoveWheel != 0 && ui.GetElementAt(ui.cursor.position) is null)
-        {
-            if ( hotKeyMode == HOTKEYS_MODE_STANDARD) 
+    }
+    
+    if (input.mouseMoveWheel != 0 && ui.GetElementAt(ui.cursor.position) is null)
+    {
+        if ( hotKeyMode == HOTKEYS_MODE_STANDARD) 
+        {
+            if (mouseWheelCameraPosition)
             {
-                if (mouseWheelCameraPosition)
-                {
-                    cameraNode.Translate(Vector3(0, 0, -cameraBaseSpeed) * -input.mouseMoveWheel*20 * timeStep *
-                    speedMultiplier);
-                }
+                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);
+            }
+        }
+        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 if (hotKeyMode == HOTKEYS_MODE_BLENDER) 
+            else
             {
-                if (mouseWheelCameraPosition && !camera.orthographic )
-                {
-                    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);
-                }
+                float zoom = camera.zoom + -input.mouseMoveWheel *.1 * speedMultiplier;
+                camera.zoom = Clamp(zoom, .1, 30);
             }
-            
-        }
-    }
+        }
+        
+    }
+
 
     if (input.keyDown[KEY_HOME])
     {

        }
    
    // Move camera
    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])

            selectedComponent = body;
        }
    }
    
    bool multiselect = false;
    bool componentSelectQualifier = false;
    bool mouseButtonPressRL = false;
    
    if (hotKeyMode == HOTKEYS_MODE_STANDARD) 
    {
        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 (componentSelectQualifier)
            {
                // If we are selecting components, but have nodes in existing selection, do not multiselect to prevent confusion
                if (!selectedNodes.empty)
