public void SetData(StateControllerData data) { if (data == null) { return; } currentState = GameObject.Instantiate(ResourceManager.GetAiState(data.currentState)); defaultState = GameObject.Instantiate(ResourceManager.GetAiState(data.defaultState)); string currentStateName = currentState.name; string defaultStateName = defaultState.name; currentState.name = currentStateName.Contains("(") ? currentStateName.Substring(0, currentStateName.IndexOf("(")).Trim() : currentStateName; defaultState.name = defaultStateName.Contains("(") ? defaultStateName.Substring(0, defaultStateName.IndexOf("(")).Trim() : defaultStateName; chaseTarget = data.chaseTargetId != -1 ? Player.GetObjectById(data.chaseTargetId) : null; controlledObject = data.controlledObjectId != -1 ? Player.GetObjectById(data.controlledObjectId) : null; attacking = data.attacking; aiActive = data.aiActive; }
public void TransitionToState(AI.State nextState) { if (nextState != remainState) { currentState = nextState; // OnExitState(); } }
public void TransitionToNextState(AI.State next) { if (next != _noState) { Debug.Log($"<color=purple>FSM:</color>Monster {_monsterData.DisplayName} at {Coords} changes State from {_currentState.name} to {next.name}"); _currentState = next; OnExitState(); } }
private void Start() { AwakeObj(); controlledObject = GetComponent <WorldObject>(); targetManager = transform.root.GetComponentInChildren <TargetManager>(); // for now the default state is the one that a indicatedObject/building has on Awake(), // later defaultState can be made a separate public variable to be set in the Inspector defaultState = currentState; // nearbyEnemies = new List<WorldObject>(); // nearbyAllies = new List<WorldObject>(); attacking = false; InvokeRepeating("DoExpensiveStateUpdate", 0.5f, 0.2f); }
protected override void DoInit(BaseEntityDependencies deps) { _monsterData = ((MonsterData)_entityData); name = _monsterData.name; _hpTrait = new HPTrait(); _hpTrait.Init(this, _monsterData.HPData, deps.GameEvents.Health); _decisionDelay = _monsterData.ThinkingDelay; _elapsedNextAction = 0.0f; _elapsedPathUpdate = 0.0f; _movingTrait = _monsterData.MovingTraitData.CreateRuntimeTrait(); _monsterEvents = deps.GameEvents.Monsters; _currentState = _monsterData.InitialState; _currentStateTimeUnitsElapsed = 0.0f; _battleTrait = new BattleTrait(); _battleTrait.Init(_entityController, _mapController, _monsterData.BattleData, this, deps.GameEvents); }