private static void HandleKeyDown(SceneView sceneView) { if (Event.current.keyCode == KeyCode.Escape && GUIUtility.hotControl == SceneViewMotion.s_ViewToolID) { SceneViewMotion.ResetDragState(); } if (Tools.s_LockedViewTool != ViewTool.FPS) { return; } Event current = Event.current; Vector3 motion = SceneViewMotion.s_Motion; if (current.keyCode == (Event)SceneViewMotion.kFPSForward.keyCode) { sceneView.viewIsLockedToObject = false; SceneViewMotion.s_Motion.z = 1f; current.Use(); } else if (current.keyCode == (Event)SceneViewMotion.kFPSBack.keyCode) { sceneView.viewIsLockedToObject = false; SceneViewMotion.s_Motion.z = -1f; current.Use(); } else if (current.keyCode == (Event)SceneViewMotion.kFPSLeft.keyCode) { sceneView.viewIsLockedToObject = false; SceneViewMotion.s_Motion.x = -1f; current.Use(); } else if (current.keyCode == (Event)SceneViewMotion.kFPSRight.keyCode) { sceneView.viewIsLockedToObject = false; SceneViewMotion.s_Motion.x = 1f; current.Use(); } else if (current.keyCode == (Event)SceneViewMotion.kFPSUp.keyCode) { sceneView.viewIsLockedToObject = false; SceneViewMotion.s_Motion.y = 1f; current.Use(); } else if (current.keyCode == (Event)SceneViewMotion.kFPSDown.keyCode) { sceneView.viewIsLockedToObject = false; SceneViewMotion.s_Motion.y = -1f; current.Use(); } if (current.type == EventType.KeyDown || (double)motion.sqrMagnitude != 0.0) { return; } SceneViewMotion.s_FPSTiming.Begin(); }
private static void HandleMouseUp(SceneView view, int id, int button, int clickCount) { if (GUIUtility.hotControl == id) { SceneViewMotion.ResetDragState(); RaycastHit raycastHit; if (button == 2 && !SceneViewMotion.s_Dragged && SceneViewMotion.RaycastWorld(Event.current.mousePosition, out raycastHit)) { Vector3 b = view.pivot - view.rotation * Vector3.forward * view.cameraDistance; float newSize = view.size; if (!view.orthographic) { newSize = view.size * Vector3.Dot(raycastHit.point - b, view.rotation * Vector3.forward) / view.cameraDistance; } view.LookAt(raycastHit.point, view.rotation, newSize); } Event.current.Use(); } }