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(); }
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(); }
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); } } }
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()); } }
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); }
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); } }
//================================ 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) } }); }
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(); }
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(); }
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); } }
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); }
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)); }
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); } }
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); } } }
public static void DoEditModeInspectorModeButton(SceneViewEditMode mode, string label, GUIContent icon, Func <Bounds> getBoundsOfTargets, Editor caller) { DoEditModeInspectorModeButton(mode, label, icon, getBoundsOfTargets, (IToolModeOwner)caller); }
public static void DoEditModeInspectorModeButton(SceneViewEditMode mode, string label, GUIContent icon, Bounds bounds, Editor caller) { DoEditModeInspectorModeButton(mode, label, icon, () => bounds, (IToolModeOwner)caller); }
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); } } }
internal static void ChangeEditMode(SceneViewEditMode mode, IToolModeOwner owner) { ChangeEditMode(mode, owner.GetWorldBoundsOfTargets(), owner); }
public static void ChangeEditMode(SceneViewEditMode mode, Bounds bounds, Editor caller) { ChangeEditMode(mode, bounds, (IToolModeOwner)caller); }
internal static void DoEditModeInspectorModeButton(SceneViewEditMode mode, string label, GUIContent icon, IToolModeOwner owner) { DoEditModeInspectorModeButton(mode, label, icon, null, owner); }
public static void QuitEditMode() { ownerId = 0; _editMode = SceneViewEditMode.None; _contoller.EndEditing(); }