internal void Initialize(SerializedSceneManager serializedManager,
                                 SerializedSceneModel serializedScene)
        {
            SerializedSceneManager = serializedManager;
            this.serializedScene   = serializedScene;
            selectedTransitionProp = null;

            // Need this to reset transition prop because for some reason Redo isn't
            // resulting in this being called properly when the SceneManagerEditor reinitializes
            Undo.undoRedoPerformed -= OnUndoRedo;
            Undo.undoRedoPerformed += OnUndoRedo;

            transitionListDisplay = new ReorderableList(serializedScene.SerializedObject,
                                                        serializedScene.TransitionsProp, true, true, false, true);

            transitionListDisplay.drawHeaderCallback  = OnDrawHeader;
            transitionListDisplay.drawElementCallback = DrawElement;
            transitionListDisplay.onSelectCallback    = OnSelected;
            transitionListDisplay.onRemoveCallback    = OnRemoved;

            transitionListDisplay.index = -1;

            if (serializedScene.TransitionsProp.arraySize > 0)
            {
                transitionListDisplay.index = 0;
                OnSelected(transitionListDisplay);
            }
        }
        public void Initialize(SerializedSceneManager serializedManager)
        {
            serializedSceneManager = serializedManager;

            sceneHunterTypeFilter = new ClassExtendsAttribute(typeof(SceneHunter))
            {
                AllowAbstract = false,
                AllowStructs  = false,
                RemoveNamespaceFromSelected = true,
                Grouping       = ClassGrouping.ByNamespaceFlat,
                ShowNoneOption = false
            };

            selectedSceneHunterType = serializedManager.
                                      ScenePopulator.targetObject.GetType().AssemblyQualifiedName;

            RefreshPopulatorEditor();

            if (assetFilterEditor != null)
            {
                DestroyImmediate(assetFilterEditor);
            }

            assetFilterEditor = CreateEditor(serializedManager.SerializedSceneFilter.
                                             targetObject, typeof(AssetFilterEditor)) as AssetFilterEditor;
        }
Example #3
0
        public void Initialize(SerializedSceneManager serializedManager,
                               SceneManagerEditorWindow editorWindow)
        {
            SerializedManager = serializedManager;
            this.editorWindow = editorWindow;

            NodeEditor.ClearAll();
            NodeEditor.ClearInputModes();

            NodeEditor.CanDeleteNode = CanDeleteNode;

            NodeEditor.OnNodeRemoved      += NodeEditor_OnNodeRemoved;
            NodeEditor.OnConnectorRemoved += NodeEditor_OnConnectorRemoved;

            NodeEditor.OnSelectionChanged += NodeEditor_OnSelectionChanged;

            new DefaultInputModeConfig().ApplyToNodeEditor(NodeEditor);

            ConnectNodeInputMode nodeConnectorMode = NodeEditor.GetInputMode <ConnectNodeInputMode>();

            nodeConnectorMode.ConnectorFactory        = TransitionConnector.TransitionConnectorFactory;
            nodeConnectorMode.OnConnectionsFinalized += NodeConnectorMode_OnConnectionsFinalized;

            InitializeContextMenus();

            PopulateNodes(nodeContextMenu);
            PopulateConnections(connectorContextMenu);

            NodeEditor.RaiseSelectionChanged();
            NodeEditor.SetPanOffset(SerializedManager.SceneNodes.PanOffset);
        }
Example #4
0
        private void ManagerWindow_OnRefresh(object sender, EventArgs e)
        {
            SceneManagerEditorWindow managerWindow = sender as SceneManagerEditorWindow;

            managerWindow.NodeEditor.NodeEditor.OnSelectionChanged -= NodeEditor_OnSelectionChanged;
            managerWindow.NodeEditor.NodeEditor.OnSelectionChanged += NodeEditor_OnSelectionChanged;

            serializedManager = managerWindow.SerializedSceneManager;
        }
        public void Initialize(SerializedSceneManager serializedManager)
        {
            this.serializedManager = serializedManager;

            sceneOrderList = new ReorderableList(serializedManager.SerializedManager, 
                serializedManager.ScenesProp, true, true, false, false);

            sceneOrderList.drawHeaderCallback = OnDrawHeader;
            sceneOrderList.elementHeight = EditorGUIUtility.singleLineHeight;
            sceneOrderList.drawElementBackgroundCallback = OnDrawBackground;
            sceneOrderList.drawElementCallback = OnDrawElement;
        }
        private void OnUndoRedo()
        {
            isInitialized = false;

            AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(sceneManager));

            SerializedSceneManager = new SerializedSceneManager(sceneManager);

            if (Selection.activeObject != serializedSceneManager.SceneNodesObject.targetObject)
            {
                Selection.activeObject = SerializedSceneManager.SceneNodesObject.targetObject;
            }

            FlagRefresh();

            Repaint();
        }
Example #7
0
        private SceneManagerEditorWindow RefreshManager()
        {
            SceneManagerEditorWindow managerWindow =
                SceneManagerEditorWindow.RefreshOpenSceneManagementWindow();

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

            serializedManager = managerWindow.SerializedSceneManager;

            managerWindow.OnRefresh -= ManagerWindow_OnRefresh;
            managerWindow.OnRefresh += ManagerWindow_OnRefresh;

            return(managerWindow);
        }
        public void Initialize(SerializedSceneManager serializedManager,
                               SerializedProperty conditionsListProperty)
        {
            this.conditionsListProperty = conditionsListProperty;
            this.serializedManager      = serializedManager;

            conditionList = new ReorderableList(conditionsListProperty.serializedObject,
                                                conditionsListProperty, showElements, true, showElements, showElements);

            conditionList.drawHeaderCallback    = OnDrawHeader;
            conditionList.elementHeightCallback = OnElementHeight;
            conditionList.drawElementCallback   = OnDrawElement;
            conditionList.onAddDropdownCallback = OnAddDropDown;
            conditionList.onRemoveCallback      = OnDeleteCondition;

            ClearEditors();
        }
        private void Refresh()
        {
            EditorApplication.playModeStateChanged -= EditorApplication_playModeStateChanged;
            EditorApplication.playModeStateChanged += EditorApplication_playModeStateChanged;

            Undo.undoRedoPerformed -= OnUndoRedo;
            Undo.undoRedoPerformed += OnUndoRedo;

            EditorSceneManager.sceneOpened -= EditorSceneManager_sceneOpened;
            EditorSceneManager.sceneOpened += EditorSceneManager_sceneOpened;

            if (sceneManager == null)
            {
                return;
            }

            if (sceneManager.Transitioner != null)
            {
                sceneManager.Transitioner.OnTransitionCompleted.RemoveListener(OnTransitioned);
                sceneManager.Transitioner.OnTransitionCompleted.AddListener(OnTransitioned);

                sceneManager.Transitioner.OnTransitionStarted.RemoveListener(OnTransitionStarted);
                sceneManager.Transitioner.OnTransitionStarted.AddListener(OnTransitionStarted);
            }

            sceneManager.SceneVariables.OnVariableChanged -= SceneVariables_OnVariableChanged;
            sceneManager.SceneVariables.OnVariableChanged += SceneVariables_OnVariableChanged;

            SerializedSceneManager = new SerializedSceneManager(sceneManager);
            serializedSceneManager.SetActiveScene();

            isInitialized = false;

            if (!EditorApplication.isPlaying)
            {
                sceneManager.SceneVariables.ResetVariables();
            }

            needsRefresh = false;

            OnRefresh.SafeInvoke(this, System.EventArgs.Empty);

            Repaint();
        }