예제 #1
0
        /// <summary>
        /// This method handles the shortcut keys which are related to the undo/redo system.
        /// </summary>
        private void HandleEditorUndoRedoSystemKeys()
        {
            EditorUndoRedoSystem undoRedoSystem = EditorUndoRedoSystem.Instance;

            // Note: When the application is not running in editor mode, we will use the
            //       standard shortcut keys for Undo/Redo (CTRL/CMD + Z, CTRL/CMD + Y).
            //       Otherwise, we will add the SHIFT key into the mix in order to stop
            //       the Unity editor from invoking its own Undo/Redo system.
            if (!Application.isEditor)
            {
                if (Input.GetKeyDown(KeyCode.Z) && InputHelper.IsAnyCtrlOrCommandKeyPressed())
                {
                    undoRedoSystem.Undo();
                }
                else
                if (Input.GetKeyDown(KeyCode.Y) && InputHelper.IsAnyCtrlOrCommandKeyPressed())
                {
                    undoRedoSystem.Redo();
                }
            }
            else
            {
                if (Input.GetKeyDown(KeyCode.Z) && InputHelper.IsAnyCtrlOrCommandKeyPressed() && InputHelper.IsAnyShiftKeyPressed())
                {
                    undoRedoSystem.Undo();
                }
                else
                if (Input.GetKeyDown(KeyCode.Y) && InputHelper.IsAnyCtrlOrCommandKeyPressed() && InputHelper.IsAnyShiftKeyPressed())
                {
                    undoRedoSystem.Redo();
                }
            }
        }
        /// <summary>
        /// Creates all the necessary runtime editor subsystems.
        /// </summary>
        private static void CreateRuntimeEditorApplicationSubsystems()
        {
            // First, make sure all existing subsystems are destroyed
            DestroyExistingSubsystems();

            // Now, create each subsystem
            RuntimeEditorApplication runtimeEditorApplication = RuntimeEditorApplication.Instance;
            Transform runtimeEditorApplicationTransform       = runtimeEditorApplication.transform;

            EditorGizmoSystem editorGizmoSystem = EditorGizmoSystem.Instance;

            editorGizmoSystem.transform.parent = runtimeEditorApplicationTransform;

            EditorObjectSelection editorObjectSelection = EditorObjectSelection.Instance;

            editorObjectSelection.transform.parent = runtimeEditorApplicationTransform;

            EditorCamera editorCamera = EditorCamera.Instance;

            editorCamera.transform.parent = runtimeEditorApplicationTransform;
            editorCamera.gameObject.AddComponent <Camera>();

            EditorUndoRedoSystem editorUndoRedoSystem = EditorUndoRedoSystem.Instance;

            editorUndoRedoSystem.transform.parent = runtimeEditorApplicationTransform;

            EditorShortuctKeys editorShortcutKeys = EditorShortuctKeys.Instance;

            editorShortcutKeys.transform.parent = runtimeEditorApplicationTransform;

            EditorMeshDatabase editorMeshDatabase = EditorMeshDatabase.Instance;

            editorMeshDatabase.transform.parent = runtimeEditorApplicationTransform;

            // Create all gizmos and attach them to the gizmo system
            GameObject gizmoObject = new GameObject();

            gizmoObject.name = "Translation Gizmo";
//            TranslationGizmo translationGizmo = gizmoObject.AddComponent<TranslationGizmo>();
//            editorGizmoSystem.TranslationGizmo = translationGizmo;

            gizmoObject      = new GameObject();
            gizmoObject.name = "Rotation Gizmo";
            RotationGizmo rotationGizmo = gizmoObject.AddComponent <RotationGizmo>();

            rotationGizmo.GizmoBaseScale    = 1.3f;
            editorGizmoSystem.RotationGizmo = rotationGizmo;

            gizmoObject      = new GameObject();
            gizmoObject.name = "Scale Gizmo";
//            ScaleGizmo scaleGizmo = gizmoObject.AddComponent<ScaleGizmo>();
//            editorGizmoSystem.ScaleGizmo = scaleGizmo;
        }
 /// <summary>
 /// Called when the undo/redo system object is selected in the scene view.
 /// </summary>
 protected virtual void OnEnable()
 {
     _editorUndoRedoSystem = target as EditorUndoRedoSystem;
 }