Ejemplo n.º 1
0
	bool State::UpdateTransitions(Agent* pAgent, const BehaviorNode* node, const behaviac::vector<Transition*>* transitions, int& nextStateId, EBTStatus result)
	{
		BEHAVIAC_UNUSED_VAR(node);
		bool bTransitioned = false;

		if (transitions && transitions->size() > 0)
		{
			for (uint32_t i = 0; i < transitions->size(); ++i)
			{
				Transition* transition = (*transitions)[i];

				if (transition->Evaluate(pAgent, result))
				{
					nextStateId = transition->GetTargetStateId();
					BEHAVIAC_ASSERT(nextStateId != -1);

					//transition actions
					transition->ApplyEffects(pAgent, Effector::E_BOTH);

#if !BEHAVIAC_RELEASE
					if (Config::IsLoggingOrSocketing())
					{
						CHECK_BREAKPOINT(pAgent, node, "transition", EAR_none);
					}
#endif
					bTransitioned = true;

					break;
				}
			}
		}

		return bTransitioned;
	}