private void CreateIdleState() { _idleState = (fsm, fsmGameObject) => { // reset data content ResetActionData(); HashSet <KeyValuePair <string, object> > worldStates = _dataProvider.GetWorldStates(); HashSet <KeyValuePair <string, object> > goals = _dataProvider.GetGoals(); // planning _plan = _planner.Plan(this, _actions, worldStates, goals); // if has no plan... if (_plan == null) { _dataProvider.PlanFailed(goals); } else { _dataProvider.PlanFound(goals, _plan); fsm.PopState(); fsm.PushState(_performState); } }; }