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); }
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); } } }
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); }
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); } } } }
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(); }