public void LoadExternalState(StateMachineExternalStateEditorGUI state)
 {
     if (ShowOnLoadSaveChangesDialog())
     {
         StateRef stateRef = state.ExternalStateRef.GetStateRef();
         string   fileName = AssetDatabase.GetAssetPath(stateRef.GetExternalFile()._editorAsset);
         LoadFile(fileName);
     }
 }
Ejemplo n.º 2
0
            public static IEnumerator Run(StateMachineComponent stateMachine, StateRef startState, GameObject sourceObject = null)
            {
                State state = startState.GetState(sourceObject != null ? sourceObject : stateMachine.gameObject);

                if (state != null)
                {
#if UNITY_EDITOR && DEBUG
                    string debugFileName = startState.GetExternalFile().GetFilePath();
                    StateMachineDebug.OnStateStarted(stateMachine, state, debugFileName);
#endif
                    return(state.PerformState(stateMachine));
                }

                return(null);
            }
                private void RenderExternalLink(StateMachineEditorLink link, StateEditorGUI fromState, int linkIndex)
                {
                    StateMachineExternalStateEditorGUI externalState = null;

                    StateRef stateRef = link.GetStateRef();

                    //Find external link for this state
                    foreach (StateEditorGUI state in _editableObjects)
                    {
                        StateMachineExternalStateEditorGUI extState = state as StateMachineExternalStateEditorGUI;

                        if (extState != null)
                        {
                            StateRef extStateRef = extState.ExternalStateRef.GetStateRef();

                            if (extStateRef.GetStateID() == stateRef.GetStateID() && extStateRef.GetExternalFile().GetFileGUID() == stateRef.GetExternalFile().GetFileGUID())
                            {
                                externalState = extState;
                                break;
                            }
                        }
                    }

                    //If none exists, create a new one
                    if (externalState == null)
                    {
                        externalState = (StateMachineExternalStateEditorGUI)AddNewObject(new StateMachineExternalState());
                        externalState.ExternalStateRef = link;
                        _editableObjects.Add(externalState);
                    }

                    if (!externalState.ExternalHasRendered)
                    {
                        externalState.CalcBounds(_style);
                        bool  selected     = _selectedObjects.Contains(externalState);
                        Color borderColor  = selected ? _style._stateBackgroundSelected : _style._stateBackground;
                        Rect  renderedRect = GetScreenRect(externalState.GetBounds());
                        externalState.Render(renderedRect, borderColor, _style._externalStateColor, _style, selected ? 2.0f : 1.0f);
                        externalState.ExternalHasRendered = true;
                    }

                    RenderLink(link.GetDescription(), fromState, externalState, linkIndex);
                }
            public override string GetAutoDescription()
            {
                StateRef stateRef = _externalStateRef.GetStateRef();

                return(stateRef.GetExternalFile()._editorAsset != null ? stateRef.GetExternalFile()._editorAsset.name : null);
            }