コード例 #1
0
        internal static void ChangeEditMode(SceneViewEditMode mode, Bounds bounds, IToolModeOwner owner)
        {
            IToolModeOwner oldOwner = InternalEditorUtility.GetObjectFromInstanceID(ownerID) as IToolModeOwner;

            editMode = mode;

            ownerID = mode != SceneViewEditMode.None ? owner.GetInstanceID() : 0;

            if (onEditModeEndDelegate != null && oldOwner is Editor)
            {
                onEditModeEndDelegate(oldOwner as Editor);
            }
            if (editModeEnded != null)
            {
                editModeEnded(oldOwner);
            }

            if (editMode != SceneViewEditMode.None)
            {
                if (onEditModeStartDelegate != null && owner is Editor)
                {
                    onEditModeStartDelegate(owner as Editor, editMode);
                }
                if (editModeStarted != null)
                {
                    editModeStarted(owner, editMode);
                }
            }

            EditModeChanged(bounds);

            InspectorWindow.RepaintAllInspectors();
        }
コード例 #2
0
ファイル: EditMode.cs プロジェクト: MerlinDS/SpliningPath
        public static void ChangeEditMode(SceneViewEditMode mode, UnityEditor.Editor caller)
        {
            UnityEditor.Editor objectFromInstanceId =
                InternalEditorUtility.GetObjectFromInstanceID(ownerId) as UnityEditor.Editor;
            if (SPSettings.Current.DebugMode)
            {
                Debug.LogFormat("ChangeEditMode from {0} to {1} ", editMode, mode);
            }
            editMode = mode;
            ownerId  = mode == SceneViewEditMode.None ? 0 : caller.GetInstanceID();
            _contoller.EndEditing();
            if (onEditModeEndDelegate != null)
            {
                onEditModeEndDelegate(objectFromInstanceId);
            }

            if (editMode != SceneViewEditMode.None)
            {
                _contoller.StartEditing(mode, caller);
                if (onEditModeStartDelegate != null)
                {
                    onEditModeStartDelegate(caller, editMode);
                }
            }
            SceneView.RepaintAll();
        }
コード例 #3
0
ファイル: EditMode.cs プロジェクト: sgf/Unity5.3Decompiled
 public static void DoEditModeInspectorModeButton(SceneViewEditMode mode, string label, GUIContent icon, Bounds bounds, Editor caller)
 {
     if (!EditorUtility.IsPersistent(caller.target))
     {
         DetectMainToolChange();
         if (s_EditColliderButtonStyle == null)
         {
             s_EditColliderButtonStyle         = new GUIStyle("Button");
             s_EditColliderButtonStyle.padding = new RectOffset(0, 0, 0, 0);
             s_EditColliderButtonStyle.margin  = new RectOffset(0, 0, 0, 0);
         }
         Rect       rect       = EditorGUILayout.GetControlRect(true, 23f, new GUILayoutOption[0]);
         Rect       position   = new Rect(rect.xMin + EditorGUIUtility.labelWidth, rect.yMin, 33f, 23f);
         GUIContent content    = new GUIContent(label);
         Vector2    vector     = GUI.skin.label.CalcSize(content);
         Rect       rect3      = new Rect(position.xMax + 5f, rect.yMin + ((rect.height - vector.y) * 0.5f), vector.x, rect.height);
         int        instanceID = caller.GetInstanceID();
         bool       flag       = (editMode == mode) && (ownerID == instanceID);
         EditorGUI.BeginChangeCheck();
         bool flag2 = GUI.Toggle(position, flag, icon, s_EditColliderButtonStyle);
         GUI.Label(rect3, label);
         if (EditorGUI.EndChangeCheck())
         {
             ChangeEditMode(!flag2 ? SceneViewEditMode.None : mode, bounds, caller);
         }
     }
 }
コード例 #4
0
        static void SwappingEditUVMode(ShortcutArguments args)
        {
            //If editor is not there, then the selected GameObject does not contains a DecalProjector
            DecalProjector activeDecalProjector = Selection.activeGameObject?.GetComponent <DecalProjector>();

            if (activeDecalProjector == null || activeDecalProjector.Equals(null))
            {
                return;
            }

            SceneViewEditMode targetMode = SceneViewEditMode.None;

            switch (editMode)
            {
            case k_EditShapePreservingUV:
            case k_EditUVAndPivot:
                targetMode = k_EditShapeWithoutPreservingUV;
                break;

            case k_EditShapeWithoutPreservingUV:
                targetMode = k_EditShapePreservingUV;
                break;
            }
            if (targetMode != SceneViewEditMode.None)
            {
                ChangeEditMode(targetMode, GetBoundsGetter(activeDecalProjector)(), FindEditorFromSelection());
            }
        }
コード例 #5
0
ファイル: EditMode.cs プロジェクト: demelev/projectHL
 public static void DoEditModeInspectorModeButton(SceneViewEditMode mode, string label, GUIContent icon, Bounds bounds, Editor caller)
 {
     if (!EditorUtility.IsPersistent(caller.target))
     {
         DetectMainToolChange();
         if (s_EditColliderButtonStyle == null)
         {
             s_EditColliderButtonStyle = new GUIStyle("Button");
             s_EditColliderButtonStyle.padding = new RectOffset(0, 0, 0, 0);
             s_EditColliderButtonStyle.margin = new RectOffset(0, 0, 0, 0);
         }
         Rect rect = EditorGUILayout.GetControlRect(true, 23f, new GUILayoutOption[0]);
         Rect position = new Rect(rect.xMin + EditorGUIUtility.labelWidth, rect.yMin, 33f, 23f);
         GUIContent content = new GUIContent(label);
         Vector2 vector = GUI.skin.label.CalcSize(content);
         Rect rect3 = new Rect(position.xMax + 5f, rect.yMin + ((rect.height - vector.y) * 0.5f), vector.x, rect.height);
         int instanceID = caller.GetInstanceID();
         bool flag = (editMode == mode) && (ownerID == instanceID);
         EditorGUI.BeginChangeCheck();
         bool flag2 = GUI.Toggle(position, flag, icon, s_EditColliderButtonStyle);
         GUI.Label(rect3, label);
         if (EditorGUI.EndChangeCheck())
         {
             ChangeEditMode(!flag2 ? SceneViewEditMode.None : mode, bounds, caller);
         }
     }
 }
コード例 #6
0
        internal static void ChangeEditMode(SceneViewEditMode mode, Bounds bounds, IToolModeOwner owner)
        {
            if (mode == SceneViewEditMode.None)
            {
                var activeToolIsEditModeTool = (EditorToolContext.activeTool is EditModeTool || EditorToolContext.activeTool is NoneTool);

                if (s_EditMode != SceneViewEditMode.None && activeToolIsEditModeTool)
                {
                    EditorTools.RestorePreviousPersistentTool();
                }

                EditModeToolStateChanged(owner, mode);
                return;
            }

            var tool = GetTool(owner, mode);

            if (tool != null)
            {
                EditorTools.SetActiveTool(tool);
            }
            else
            {
                // SceneViewEditModeTool doesn't exist, use old path
                EditorTools.SetActiveTool <NoneTool>();
            }

            EditModeToolStateChanged(owner, mode);
        }
コード例 #7
0
        private static void DoEditModeInspectorModeButton(SceneViewEditMode mode, string label, GUIContent icon, Func <Bounds> getBoundsOfTargets, IToolModeOwner owner)
        {
            Rect rect       = EditorGUILayout.GetControlRect(true, k_EditColliderbuttonHeight, Styles.singleButtonStyle);
            Rect buttonRect = new Rect(rect.xMin + EditorGUIUtility.labelWidth, rect.yMin, k_EditColliderbuttonWidth, k_EditColliderbuttonHeight);

            GUIContent labelContent = new GUIContent(label);
            Vector2    labelSize    = GUI.skin.label.CalcSize(labelContent);

            Rect labelRect = new Rect(
                buttonRect.xMax + k_SpaceBetweenLabelAndButton,
                rect.yMin + (rect.height - labelSize.y) * .5f,
                labelSize.x,
                rect.height);

            bool modeEnabled = IsOwner(owner);

            EditorGUI.BeginChangeCheck();

            bool toggleEnabled = false;

            using (new EditorGUI.DisabledScope(!owner.areToolModesAvailable))
            {
                toggleEnabled = GUI.Toggle(buttonRect, modeEnabled, icon, Styles.singleButtonStyle);
                GUI.Label(labelRect, label);
            }

            if (EditorGUI.EndChangeCheck())
            {
                ChangeEditMode(toggleEnabled ? mode : SceneViewEditMode.None, getBoundsOfTargets == null ? owner.GetWorldBoundsOfTargets() : getBoundsOfTargets(), owner);
            }
        }
コード例 #8
0
ファイル: EditMode.cs プロジェクト: MerlinDS/SpliningPath
 //================================ Private|Protected methods ================================
 static EditMode()
 {
     _ownerId  = 0;
     _editMode = SceneViewEditMode.None;
     _editTool = Tool.Move;
     //Initialize editors
     _contoller = new EditingContoller(new Dictionary <SceneViewEditMode, Type>
     {
         { SceneViewEditMode.Spline, typeof(SplineEditor) },
         { SceneViewEditMode.EveryPoint, typeof(EveryPointsEditor) },
         { SceneViewEditMode.OnePoint, typeof(PointsEditor) }
     });
 }
コード例 #9
0
        internal static void EditModeToolStateChanged(IToolModeOwner owner, SceneViewEditMode mode)
        {
            // In cases of domain reloads the EditorTool can be deserialized prior to the target Inspector being
            // created. The EditMode tools do not expect an editModeStarted callback on reloads.
            if (owner == null && mode != SceneViewEditMode.None)
            {
                editMode = mode;
                return;
            }

            IToolModeOwner oldOwner = InternalEditorUtility.GetObjectFromInstanceID(ownerID) as IToolModeOwner;

            editMode = mode;

            if (oldOwner != null)
            {
                if (onEditModeEndDelegate != null && oldOwner is Editor)
                {
                    onEditModeEndDelegate(oldOwner as Editor);
                }

                if (editModeEnded != null)
                {
                    editModeEnded(oldOwner);
                }
            }

            ownerID = mode != SceneViewEditMode.None ? owner.GetInstanceID() : k_OwnerIdNone;

            if (editMode != SceneViewEditMode.None)
            {
                if (onEditModeStartDelegate != null && owner is Editor)
                {
                    onEditModeStartDelegate(owner as Editor, editMode);
                }

                if (editModeStarted != null)
                {
                    editModeStarted(owner, editMode);
                }
            }

            FocusEditModeToolTarget((mode != SceneViewEditMode.None && owner != null)
                ? owner.GetWorldBoundsOfTargets()
                : new Bounds(Vector3.zero, Vector3.positiveInfinity));

            InspectorWindow.RepaintAllInspectors();
        }
コード例 #10
0
ファイル: EditMode.cs プロジェクト: demelev/projectHL
 private static void ChangeEditMode(SceneViewEditMode mode, Bounds bounds, Editor caller)
 {
     Editor objectFromInstanceID = InternalEditorUtility.GetObjectFromInstanceID(ownerID) as Editor;
     editMode = mode;
     ownerID = (mode == SceneViewEditMode.None) ? 0 : caller.GetInstanceID();
     if (onEditModeEndDelegate != null)
     {
         onEditModeEndDelegate(objectFromInstanceID);
     }
     if ((editMode != SceneViewEditMode.None) && (onEditModeStartDelegate != null))
     {
         onEditModeStartDelegate(caller, editMode);
     }
     EditModeChanged(bounds);
     InspectorWindow.RepaintAllInspectors();
 }
コード例 #11
0
ファイル: EditMode.cs プロジェクト: sgf/Unity5.3Decompiled
        private static void ChangeEditMode(SceneViewEditMode mode, Bounds bounds, Editor caller)
        {
            Editor objectFromInstanceID = InternalEditorUtility.GetObjectFromInstanceID(ownerID) as Editor;

            editMode = mode;
            ownerID  = (mode == SceneViewEditMode.None) ? 0 : caller.GetInstanceID();
            if (onEditModeEndDelegate != null)
            {
                onEditModeEndDelegate(objectFromInstanceID);
            }
            if ((editMode != SceneViewEditMode.None) && (onEditModeStartDelegate != null))
            {
                onEditModeStartDelegate(caller, editMode);
            }
            EditModeChanged(bounds);
            InspectorWindow.RepaintAllInspectors();
        }
コード例 #12
0
        static void SwappingEditUVMode(ShortcutArguments args)
        {
            SceneViewEditMode targetMode = SceneViewEditMode.None;

            switch (editMode)
            {
            case k_EditShapePreservingUV:
                targetMode = k_EditShapeWithoutPreservingUV;
                break;

            case k_EditShapeWithoutPreservingUV:
                targetMode = k_EditShapePreservingUV;
                break;
            }
            if (targetMode != SceneViewEditMode.None)
            {
                ChangeEditMode(targetMode, (s_Owner as DecalProjectorEditor).GetBoundsGetter(), s_Owner);
            }
        }
コード例 #13
0
        internal static void ChangeEditMode(SceneViewEditMode mode, Bounds bounds, IToolModeOwner owner)
        {
            if (mode == SceneViewEditMode.None)
            {
                var activeToolIsEditModeTool = EditorToolManager.activeTool is NoneTool;

                if (s_EditMode != SceneViewEditMode.None && activeToolIsEditModeTool)
                {
                    ToolManager.RestorePreviousTool();
                }

                EditModeToolStateChanged(owner, mode);
                return;
            }

            ToolManager.SetActiveTool <NoneTool>();

            EditModeToolStateChanged(owner, mode);
        }
コード例 #14
0
        static EditorTool GetTool(IToolModeOwner owner, SceneViewEditMode mode)
        {
            var editor = owner as Editor;

            if (editor == null)
            {
                return(null);
            }

            var editorType = editor.GetType();

            return(EditorToolContext.GetCustomEditorTool(x =>
            {
                var tool = x as EditModeTool;
                return tool != null &&
                tool.editorType == editorType &&
                tool.target == editor.target;
            }, true));
        }
コード例 #15
0
        private static void DoInspectorToolbar(SceneViewEditMode[] modes, GUIContent[] guiContents, Func <Bounds> getBoundsOfTargets, IToolModeOwner owner)
        {
            int callerID = owner.GetInstanceID();

            int selectedIndex = ArrayUtility.IndexOf(modes, editMode);

            if (ownerID != callerID)
            {
                selectedIndex = -1;
            }
            EditorGUI.BeginChangeCheck();
            int newSelectedIndex = selectedIndex;

            using (new EditorGUI.DisabledScope(!owner.areToolModesAvailable))
                newSelectedIndex = GUILayout.Toolbar(selectedIndex, guiContents, Styles.multiButtonStyle);
            if (EditorGUI.EndChangeCheck())
            {
                // Buttons can be toggled
                SceneViewEditMode newEditMode = newSelectedIndex == selectedIndex ? SceneViewEditMode.None : modes[newSelectedIndex];
                ChangeEditMode(newEditMode, getBoundsOfTargets == null ? owner.GetWorldBoundsOfTargets() : getBoundsOfTargets(), owner);
            }
        }
コード例 #16
0
ファイル: EditMode.cs プロジェクト: sgf/Unity5.3Decompiled
 public static void DoInspectorToolbar(SceneViewEditMode[] modes, GUIContent[] guiContents, Bounds bounds, Editor caller)
 {
     if (!EditorUtility.IsPersistent(caller.target))
     {
         DetectMainToolChange();
         if (s_ToolbarBaseStyle == null)
         {
             s_ToolbarBaseStyle = "Command";
         }
         int instanceID = caller.GetInstanceID();
         int index      = ArrayUtility.IndexOf <SceneViewEditMode>(modes, editMode);
         if (ownerID != instanceID)
         {
             index = -1;
         }
         EditorGUI.BeginChangeCheck();
         int num3 = GUILayout.Toolbar(index, guiContents, s_ToolbarBaseStyle, new GUILayoutOption[0]);
         if (EditorGUI.EndChangeCheck())
         {
             SceneViewEditMode mode = (num3 != index) ? modes[num3] : SceneViewEditMode.None;
             ChangeEditMode(mode, bounds, caller);
         }
     }
 }
コード例 #17
0
 public static void DoEditModeInspectorModeButton(SceneViewEditMode mode, string label, GUIContent icon, Func <Bounds> getBoundsOfTargets, Editor caller)
 {
     DoEditModeInspectorModeButton(mode, label, icon, getBoundsOfTargets, (IToolModeOwner)caller);
 }
コード例 #18
0
 public static void DoEditModeInspectorModeButton(SceneViewEditMode mode, string label, GUIContent icon, Bounds bounds, Editor caller)
 {
     DoEditModeInspectorModeButton(mode, label, icon, () => bounds, (IToolModeOwner)caller);
 }
コード例 #19
0
ファイル: EditMode.cs プロジェクト: demelev/projectHL
 public static void DoInspectorToolbar(SceneViewEditMode[] modes, GUIContent[] guiContents, Bounds bounds, Editor caller)
 {
     if (!EditorUtility.IsPersistent(caller.target))
     {
         DetectMainToolChange();
         if (s_ToolbarBaseStyle == null)
         {
             s_ToolbarBaseStyle = "Command";
         }
         int instanceID = caller.GetInstanceID();
         int index = ArrayUtility.IndexOf<SceneViewEditMode>(modes, editMode);
         if (ownerID != instanceID)
         {
             index = -1;
         }
         EditorGUI.BeginChangeCheck();
         int num3 = GUILayout.Toolbar(index, guiContents, s_ToolbarBaseStyle, new GUILayoutOption[0]);
         if (EditorGUI.EndChangeCheck())
         {
             SceneViewEditMode mode = (num3 != index) ? modes[num3] : SceneViewEditMode.None;
             ChangeEditMode(mode, bounds, caller);
         }
     }
 }
コード例 #20
0
 internal static void ChangeEditMode(SceneViewEditMode mode, IToolModeOwner owner)
 {
     ChangeEditMode(mode, owner.GetWorldBoundsOfTargets(), owner);
 }
コード例 #21
0
 public static void ChangeEditMode(SceneViewEditMode mode, Bounds bounds, Editor caller)
 {
     ChangeEditMode(mode, bounds, (IToolModeOwner)caller);
 }
コード例 #22
0
 internal static void DoEditModeInspectorModeButton(SceneViewEditMode mode, string label, GUIContent icon, IToolModeOwner owner)
 {
     DoEditModeInspectorModeButton(mode, label, icon, null, owner);
 }
コード例 #23
0
ファイル: EditMode.cs プロジェクト: MerlinDS/SpliningPath
 public static void QuitEditMode()
 {
     ownerId   = 0;
     _editMode = SceneViewEditMode.None;
     _contoller.EndEditing();
 }