Exemple #1
0
        public void DeleteTransitionAtIndex(int index)
        {
            if (index < 0 || index >= TransitionsProp.arraySize)
            {
                return;
            }

            SerializedTransition currentTrans = GetTransitionAtIndex(index);

            Undo.SetCurrentGroupName("Delete Transition");
            int currentGroup = Undo.GetCurrentGroup();

            Undo.RegisterCompleteObjectUndo(SerializedObject.targetObject, "Scene Data");

            for (int i = 0; i < currentTrans.ConditionsProp.arraySize; i++)
            {
                SerializedProperty currentCond = currentTrans.ConditionsProp.GetArrayElementAtIndex(i);
                Undo.DestroyObjectImmediate(currentCond.objectReferenceValue);
            }

            TransitionsProp.DeleteArrayElementAtIndex(index);
            Undo.CollapseUndoOperations(currentGroup);

            SerializedObject.ApplyModifiedProperties();
            AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(SerializedObject.targetObject));
        }
        public void SetSelectedTransition(int destId)
        {
            for (int i = 0; i < serializedScene.TransitionsProp.arraySize; i++)
            {
                SerializedTransition serializedTrans = serializedScene.GetTransitionAtIndex(i);

                if (serializedTrans.DestSceneIdProp.intValue == destId)
                {
                    transitionListDisplay.index = i;
                    selectedTransitionProp      = serializedTrans.TransitionProperty;
                    break;
                }
            }
        }
        private void RenderSelectedTransition()
        {
            SerializedTransition transitionProps = new SerializedTransition(selectedTransitionProp);

            selectedTransitionProp.serializedObject.Update();

            EditorGUILayout.BeginVertical(GUI.skin.box);

            EditorGUILayout.BeginVertical(GUI.skin.box);

            EditorGUILayout.LabelField("Selected Transition: ");
            EditorGUI.indentLevel++;
            EditorGUILayout.LabelField(GetTransitionDisplayName(transitionProps));
            EditorGUI.indentLevel--;
            EditorGUILayout.BeginHorizontal();

            EditorGUI.BeginChangeCheck();

            transitionProps.TransitionLabelProp.stringValue =
                EditorGUILayout.TextField(transitionProps.TransitionLabelProp.stringValue,
                                          SceneManagerResources.TransitionNameStyle);

            GUI.SetNextControlName("ClearButton");

            if (GUILayout.Button("Clear", GUILayout.Width(50f)))
            {
                transitionProps.TransitionLabelProp.stringValue = string.Empty;
                // Steal focus from the text field to force it to update
                GUI.FocusControl("ClearButton");
            }

            if (EditorGUI.EndChangeCheck())
            {
                transitionProps.TransitionLabelProp.serializedObject.ApplyModifiedProperties();
            }

            EditorGUILayout.EndHorizontal();

            EditorGUILayout.EndVertical();

            EditorGUILayout.Space();

            if (conditionsEditor != null)
            {
                conditionsEditor.OnInspectorGUI();
            }

            EditorGUILayout.EndVertical();
        }
        /// <summary>
        /// Get the display name for the transition
        /// </summary>
        /// <param name="transition">The extracted serialized properties</param>
        /// <returns>The text to display as the transition identifier</returns>
        private string GetTransitionDisplayName(SerializedTransition transition, bool forceArrowFormat = false)
        {
            SceneModel destinationScene = SerializedSceneManager.TargetManager.
                                          GetSceneById(transition.DestSceneIdProp.intValue);

            string displayName = transition.TransitionLabelProp.stringValue;

            if (string.IsNullOrEmpty(displayName) || forceArrowFormat)
            {
                displayName = serializedScene.SceneNameProp.stringValue +
                              " -> " + destinationScene.SceneName;
            }

            return(displayName);
        }
Exemple #5
0
        public void DeleteTransitionsInvolving(int sceneId)
        {
            Undo.SetCurrentGroupName("Delete Transitions");
            int currentGroup = Undo.GetCurrentGroup();

            for (int t = TransitionsProp.arraySize - 1; t >= 0; t--)
            {
                SerializedTransition currentTrans = GetTransitionAtIndex(t);

                if (currentTrans.DestSceneIdProp.intValue == sceneId ||
                    SceneIdProp.intValue == sceneId)
                {
                    DeleteTransitionAtIndex(t);
                }
            }

            Undo.CollapseUndoOperations(currentGroup);
        }
        /// <summary>
        /// Draws a scene variable element of the lsit
        /// </summary>
        /// <param name="rect">The rectangle to render the variable in</param>
        /// <param name="index">The index of the property</param>
        /// <param name="isActive">True if the element is active, false if not</param>
        /// <param name="isSelected">True if the element is selected, false if not</param>
        private void DrawElement(Rect rect, int index, bool isActive, bool isSelected)
        {
            SerializedTransition transitionProps = serializedScene.GetTransitionAtIndex(index);

            Rect muteToggleRect = new Rect(rect);

            muteToggleRect.xMin = rect.width - 10f;

            Rect nameRect = new Rect(rect);

            nameRect.xMax = muteToggleRect.xMin;

            GUI.Label(nameRect, GetTransitionDisplayName(transitionProps));

            EditorGUI.BeginChangeCheck();

            transitionProps.IsMutedProp.boolValue = GUI.Toggle(muteToggleRect,
                                                               transitionProps.IsMutedProp.boolValue, GUIContent.none);

            if (EditorGUI.EndChangeCheck())
            {
                serializedScene.SerializedObject.ApplyModifiedProperties();
            }
        }