private void MoveToolGUI(Vector3 handlePosition, bool isStatic)
        {
            RuntimeTransformManipulator.BeginManipulationHandling(false);
            RuntimeEditorGUI.BeginChangeCheck();
            Vector3 a = RuntimeHandles.DoPositionHandle(handlePosition, Tools.handleRotation);

            if (RuntimeEditorGUI.EndChangeCheck() && !isStatic)
            {
                Vector3 positionDelta = a - RuntimeTransformManipulator.mouseDownHandlePosition;
                RuntimeTransformManipulator.SetMinDragDifferenceForPos(handlePosition);
                RuntimeTransformManipulator.SetPositionDelta(positionDelta);
            }
            RuntimeTransformManipulator.EndManipulationHandling();
        }
        private void OnGUI()
        {
            if (camera == null)
            {
                camera = Player.Camera;
                return;
            }

            var current = Event.current;

            RuntimeHandles.SetCamera(camera.pixelRect, camera);
            RuntimeHandlesUtility.BeginHandles();
            RuntimeHandles.currentCamera = camera;
            WorldProp selection = RuntimeSelection.activeProp;

            if (selection != null)
            {
                switch (Tools.current)
                {
                case RuntimeTool.Move:
                    MoveToolGUI(MoveToolGUI);
                    break;

                case RuntimeTool.Rotate:
                    RuntimeEditorGUI.BeginChangeCheck();
                    Quaternion rotation = RuntimeHandles.DoRotationHandle(selection.Rotation, Tools.handlePosition);
                    if (RuntimeEditorGUI.EndChangeCheck())
                    {
                        UndoManager.PushUndo("Rotate", r => selection.SetRotation((Quaternion)r, true), selection.Rotation);
                    }
                    selection.SetRotation(rotation, true);
                    break;

                case RuntimeTool.Scale:
                    Vector3 scale = RuntimeHandles.DoScaleHandle(selection.Scale, Tools.handlePosition, Tools.handleRotation);
                    selection.SetScale(scale, true);
                    break;
                }
            }
            RuntimeHandlesUtility.EndHandles();
        }