Esempio n. 1
0
 public void OnCombatStateSelected(OTGCombatState _selectedState)
 {
     SelectedCombatState     = new SerializedObject(_selectedState);
     AllActionsAvailable     = new List <OTGCombatAction>();
     AllTransitionsAvailable = new List <OTGTransitionDecision>();
     DiscoverActionsOnState();
 }
        public void PopulateState(ref OTGCombatState _state)
        {
            SerializedObject obj = new SerializedObject(_state);

            SetPropertyValues(obj, "m_onEnterActions", m_onEnterActions);
            SetPropertyValues(obj, "m_onUpdateActions", m_onUpdateActions);
            SetPropertyValues(obj, "m_animUpdateActions", m_onAnimatorMoveActions);
            SetPropertyValues(obj, "m_onExitActions", m_onExitActions);
        }
Esempio n. 3
0
        private void CreateInitialState(NewCharacterCreationData _data, EditorConfig _config)
        {
            OTGCombatState initialState = ScriptableObject.CreateInstance <OTGCombatState>();

            initialState.name = OTGEditorUtility.GetCombatStateName(_data.CharacterName, "Inititial");

            string stateFolder      = OTGEditorUtility.GetCharacterStateFolder(_data.CharacterName, _config.CharacterPathRoot);
            string initialStateGUID = AssetDatabase.CreateFolder(stateFolder, "InitialState");
            string initialStatePath = AssetDatabase.GUIDToAssetPath(initialStateGUID);

            AssetDatabase.CreateAsset(initialState, initialStatePath + "/" + initialState.name + ".asset");

            m_characterSMCObj.FindProperty("m_startingState").objectReferenceValue = initialState;
            m_characterSMCObj.ApplyModifiedProperties();
        }
        private void CreateNewState(string _stateName)
        {
            string         folder    = OTGEditorUtility.GetCharacterStateFolder(m_charViewData.SelectedCharacter.name, m_editorConfig.CharacterPathRoot);
            string         stateName = OTGEditorUtility.GetCombatStateName(m_charViewData.SelectedCharacter.name, _stateName);
            OTGCombatState newState  = ScriptableObject.CreateInstance <OTGCombatState>();

            newState.name = stateName;

            if (m_copiedStateCache != null)
            {
                PopulateStateWithStartingActionsAndTransitions(ref newState, m_copiedStateCache);
            }

            AssetDatabase.CreateAsset(newState, folder + "/" + stateName + ".asset");

            PopulateAvailableStates();
            m_stateGraph.OnNewStateButtonPressed();
        }
        private void GetStatesFromTransition(SerializedProperty _currentTransitions)
        {
            if (_currentTransitions == null || _currentTransitions.arraySize == 0)
            {
                return;
            }

            int amountOfTransitions = _currentTransitions.arraySize;

            for (int i = 0; i < amountOfTransitions; i++)
            {
                SerializedProperty nextStateProp = _currentTransitions.GetArrayElementAtIndex(i).FindPropertyRelative("m_nextState");
                OTGCombatState     nextState     = (OTGCombatState)nextStateProp.objectReferenceValue;
                if (nextState != null && !AvailableStates.Contains(nextState))
                {
                    SerializedObject stateSOBJ = new SerializedObject(nextState);
                    GetStatesFromTransition(stateSOBJ.FindProperty("m_stateTransitions"));
                    AvailableStates.Add(nextState);
                }
            }
        }
Esempio n. 6
0
        public StateNode(OTGCombatState _newState, int _level, Dictionary <OTGCombatState, int> _stateRecord, int _order)
        {
            IsRepeatNode     = false;
            StateTransitions = new Dictionary <OTGCombatState, StateNodeTransition>();

            Level      = _level;
            Order      = _order;
            OwnerState = _newState;
            PopulateStateObject();

            if (_stateRecord.ContainsKey(OwnerState))
            {
                IsRepeatNode = true;
                return;
            }
            else
            {
                _stateRecord.Add(OwnerState, 1);
            }

            FindTransitions(OwnerStateObject, _stateRecord, _level + 1);
        }
Esempio n. 7
0
        private void FindTransitions(SerializedObject _ownerObj, Dictionary <OTGCombatState, int> _stateRecord, int _currentLevel)
        {
            int amountOfTransitions = _ownerObj.FindProperty("m_stateTransitions").arraySize;

            for (int i = 0; i < amountOfTransitions; i++)
            {
                Object nextStateObj = _ownerObj.FindProperty("m_stateTransitions").GetArrayElementAtIndex(i).FindPropertyRelative("m_nextState").objectReferenceValue;
                if (nextStateObj != null)
                {
                    OTGCombatState state             = (OTGCombatState)nextStateObj;
                    bool           transitionRepeats = (_stateRecord.ContainsKey(state)) ? true : false;



                    StateNode           n      = new StateNode(state, _currentLevel + 1, _stateRecord, i);
                    StateNodeTransition nTrans = new StateNodeTransition(transitionRepeats, n);
                    if (!StateTransitions.ContainsKey(state))
                    {
                        StateTransitions.Add(state, nTrans);
                    }
                }
            }
        }
Esempio n. 8
0
 public CharacterStateTree(OTGCombatState _startingState)
 {
     RecordOfStates = new Dictionary <OTGCombatState, int>();
     RootNode       = new StateNode(_startingState, 0, RecordOfStates, 0);
 }
 private void PopulateStateWithStartingActionsAndTransitions(ref OTGCombatState _state, StateDataCache _data)
 {
     _data.PopulateState(ref _state);
 }
 private void DetermineCombatStateObj(OTGCombatState _selectedState)
 {
     SObj_InitialState = new SerializedObject(_selectedState);
 }
 public void SetSelectedCombatState(OTGCombatState _selectedState)
 {
     SelectedState = _selectedState;
     DetermineCombatStateObj(SelectedState);
     DetermineSelectedAnimationClip();
 }