private void AddStates <TState, TTrigger>(HierarchicalStateMachine <TState, TTrigger> stateMachine) { if (_states.Count > 0) { for (int i = 0; i < _states.Count; i++) { var current = _states[i]; TState stateId = (TState)current.StateId; IState stateObject; if (current.StateObject != null) { if (current.StateObject.InstantiateThis) { stateObject = Instantiate(current.StateObject); } else { stateObject = current.StateObject; } } else { stateObject = new EmptyState(); } stateMachine.AddState(stateId, stateObject); if (stateObject is IStateEventHandler eventHandler) { stateMachine.SubscribeEventHandlerTo(stateId, eventHandler); } } stateMachine.InitialState = (TState)InitialStateId; } }