private static void EditorSceneManagerOnSceneOpened(Scene scene, OpenSceneMode mode) { if (mode == OpenSceneMode.Single) { SceneVisibilityState.isolation = false; } if (mode == OpenSceneMode.Additive) { //make sure added scenes are isolated when opened if main stage is isolated if (StageNavigationManager.instance.currentStage is MainStage) { Undo.ClearUndo(SceneVisibilityState.GetInstance()); } } }
private static void EditorSceneManagerOnSceneOpened(Scene scene, OpenSceneMode mode) { if (mode == OpenSceneMode.Single) { SceneVisibilityState.isolation = false; } if (mode == OpenSceneMode.Additive) { //make sure added scenes are isolated when opened if main stage is isolated if (!StageNavigationManager.instance.currentItem.isPrefabStage) { Undo.ClearUndo(SceneVisibilityState.GetInstance()); } } instance.VisibilityChanged(); instance.PickableContentChanged(); }
static bool CreateAnimation(GameObject gameObject, Object[] frames, ShowFileDialogDelegate saveFileDialog) { saveFileDialog = saveFileDialog ?? EditorUtility.SaveFilePanelInProject; // Use same name compare as when we sort in the backend: See AssetDatabase.cpp: SortChildren System.Array.Sort(frames, (a, b) => EditorUtility.NaturalCompare(a.name, b.name)); Animator animator = AnimationWindowUtility.EnsureActiveAnimationPlayer(gameObject) ? AnimationWindowUtility.GetClosestAnimatorInParents(gameObject.transform) : null; bool createSuccess = animator != null; if (animator != null) { // Go forward with presenting user a save clip dialog string message = string.Format(SpriteUtilityStrings.saveAnimDialogMessage.text, gameObject.name); string newClipDirectory = ProjectWindowUtil.GetActiveFolderPath(); string newClipPath = saveFileDialog(SpriteUtilityStrings.saveAnimDialogTitle.text, SpriteUtilityStrings.saveAnimDialogName.text, "anim", message, newClipDirectory); if (string.IsNullOrEmpty(newClipPath)) { Undo.ClearUndo(animator); Object.DestroyImmediate(animator); return(false); } else { AnimationClip newClip = AnimationWindowUtility.CreateNewClipAtPath(newClipPath); if (newClip != null) { AddSpriteAnimationToClip(newClip, frames); createSuccess = AnimationWindowUtility.AddClipToAnimatorComponent(animator, newClip); } } } if (createSuccess == false) { Debug.LogError(SpriteUtilityStrings.failedToCreateAnimationError.text); } return(createSuccess); }
private void RefreshRects() { if (this.m_RectsCache) { this.m_RectsCache.ClearAll(); Undo.ClearUndo(this.m_RectsCache); UnityEngine.Object.DestroyImmediate(this.m_RectsCache); } this.m_RectsCache = ScriptableObject.CreateInstance <SpriteRectCache>(); if (this.m_TextureImporterSprites != null) { if (this.multipleSprites) { for (int i = 0; i < this.m_TextureImporterSprites.arraySize; i++) { SpriteRect spriteRect = new SpriteRect(); spriteRect.LoadFromSerializedProperty(this.m_TextureImporterSprites.GetArrayElementAtIndex(i)); this.m_RectsCache.AddRect(spriteRect); EditorUtility.DisplayProgressBar(SpriteEditorWindow.SpriteEditorWindowStyles.loadProgressTitle.text, string.Format(SpriteEditorWindow.SpriteEditorWindowStyles.loadContentText.text, i, this.m_TextureImporterSprites.arraySize), (float)i / (float)this.m_TextureImporterSprites.arraySize); } } else if (this.validSprite) { SpriteRect spriteRect2 = new SpriteRect(); spriteRect2.rect = new Rect(0f, 0f, (float)this.m_Texture.width, (float)this.m_Texture.height); spriteRect2.name = this.m_OriginalTexture.name; spriteRect2.alignment = (SpriteAlignment)this.m_TextureImporterSO.FindProperty("m_Alignment").intValue; spriteRect2.border = this.m_TextureImporter.spriteBorder; spriteRect2.pivot = SpriteEditorUtility.GetPivotValue(spriteRect2.alignment, this.m_TextureImporter.spritePivot); spriteRect2.tessellationDetail = this.m_TextureImporterSO.FindProperty("m_SpriteTessellationDetail").floatValue; SerializedProperty outlineSP = this.m_TextureImporterSO.FindProperty("m_SpriteSheet.m_Outline"); spriteRect2.outline = SpriteRect.AcquireOutline(outlineSP); SerializedProperty outlineSP2 = this.m_TextureImporterSO.FindProperty("m_SpriteSheet.m_PhysicsShape"); spriteRect2.physicsShape = SpriteRect.AcquireOutline(outlineSP2); this.m_RectsCache.AddRect(spriteRect2); } EditorUtility.ClearProgressBar(); if (this.m_RectsCache.Count > 0) { this.selectedSpriteRect = this.m_RectsCache.RectAt(0); } } }
private static void EditorSceneManagerOnSceneOpened(Scene scene, OpenSceneMode mode) { if (mode == OpenSceneMode.Single) { //force out of isolation when loading single SceneVisibilityState.mainStageIsolated = false; } if (mode == OpenSceneMode.Additive) { //make sure added scenes are isolated when opened if main stage is isolated if (!StageNavigationManager.instance.currentItem.isPrefabStage) { Undo.ClearUndo(SceneVisibilityState.GetInstance()); if (SceneVisibilityState.mainStageIsolated) { SceneVisibilityState.SetSceneIsolation(scene, true); } } } instance.VisibilityChanged(); }
private void OnDisable() { Undo.undoRedoPerformed = (Undo.UndoRedoCallback)Delegate.Remove(Undo.undoRedoPerformed, new Undo.UndoRedoCallback(this.UndoRedoPerformed)); if (this.m_RectsCache != null) { Undo.ClearUndo(this.m_RectsCache); } this.HandleApplyRevertDialog(); this.InvalidatePropertiesCache(); EditorApplication.modifierKeysChanged = (EditorApplication.CallbackFunction)Delegate.Remove(EditorApplication.modifierKeysChanged, new EditorApplication.CallbackFunction(this.ModifierKeysChanged)); SpriteEditorWindow.s_Instance = null; if (this.m_OutlineTexture != null) { UnityEngine.Object.DestroyImmediate(this.m_OutlineTexture); this.m_OutlineTexture = null; } if (this.m_ReadableTexture) { UnityEngine.Object.DestroyImmediate(this.m_ReadableTexture); this.m_ReadableTexture = null; } }