EditorCamera.as 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // Urho3D editor camera functions
  2. Camera@ camera;
  3. float cameraBaseSpeed = 10.0;
  4. float cameraBaseRotationSpeed = 0.2;
  5. float cameraShiftSpeedMultiplier = 5.0;
  6. float cameraCtrlSpeedMultiplier = 0.1;
  7. float cameraYaw = 0.0;
  8. float cameraPitch = 0.0;
  9. void createCamera()
  10. {
  11. // Note: this camera will not be bound into a scene entity, so that it does not get listed in the editor UI
  12. @camera = editorScene.createComponent("Camera");
  13. pipeline.setViewport(0, Viewport(editorScene, camera));
  14. }
  15. void moveCamera(float timeStep)
  16. {
  17. if (ui.getFocusElement() is null)
  18. {
  19. float speedMultiplier = 1.0f;
  20. if (input.getKeyDown(KEY_SHIFT))
  21. speedMultiplier = cameraShiftSpeedMultiplier;
  22. if (input.getKeyDown(KEY_CTRL))
  23. speedMultiplier = cameraCtrlSpeedMultiplier;
  24. if ((input.getKeyDown('W')) || (input.getKeyDown(KEY_UP)))
  25. camera.translateRelative(Vector3(0, 0, cameraBaseSpeed) * timeStep * speedMultiplier);
  26. if ((input.getKeyDown('S')) || (input.getKeyDown(KEY_DOWN)))
  27. camera.translateRelative(Vector3(0, 0, -cameraBaseSpeed) * timeStep * speedMultiplier);
  28. if ((input.getKeyDown('A')) || (input.getKeyDown(KEY_LEFT)))
  29. camera.translateRelative(Vector3(-cameraBaseSpeed, 0, 0) * timeStep * speedMultiplier);
  30. if ((input.getKeyDown('D')) || (input.getKeyDown(KEY_RIGHT)))
  31. camera.translateRelative(Vector3(cameraBaseSpeed, 0, 0) * timeStep * speedMultiplier);
  32. }
  33. if (input.getMouseButtonDown(MOUSEB_RIGHT))
  34. {
  35. IntVector2 mouseMove = input.getMouseMove();
  36. if ((mouseMove.x != 0) || (mouseMove.y != 0))
  37. {
  38. cameraYaw += mouseMove.x * cameraBaseRotationSpeed;
  39. cameraPitch += mouseMove.y * cameraBaseRotationSpeed;
  40. if (cameraPitch < -90.0f)
  41. cameraPitch = -90.0f;
  42. if (cameraPitch > 90.0f)
  43. cameraPitch = 90.0f;
  44. camera.setRotation(Quaternion(cameraPitch, cameraYaw, 0));
  45. }
  46. }
  47. }