void CFlowNode_AISequenceAction_ApproachAndEnterVehicle::ProcessEvent(IFlowNode::EFlowEvent event, IFlowNode::SActivationInfo* pActInfo)
{
	if (!pActInfo->pEntity)
		return;

	switch(event)
	{
	case eFE_Activate:
		{
			m_actInfo = *pActInfo;
			m_stopFlowGraphNodeFromGettingUpdatedWhenSequenceActionFinishesOrCancels = true;
			m_movementRequestID = MovementRequestID::Invalid();

			if (IsPortActive(pActInfo, InputPort_Start))
			{
				if (const AIActionSequence::SequenceId assignedSequenceId = GetAssignedSequenceId())
				{
					gEnv->pAISystem->GetSequenceManager()->RequestActionStart(assignedSequenceId, pActInfo->myID);
					m_actInfo.pGraph->SetRegularlyUpdated(m_actInfo.myID, true);
				}
			}
		}
		break;
	}
}
void CFlowNode_AISequenceAction_VehicleRotateTurret::ProcessEvent(IFlowNode::EFlowEvent event, IFlowNode::SActivationInfo* pActInfo)
{
	if (!pActInfo->pEntity)
		return;

	switch(event)
	{
	case eFE_Activate:
		{
			m_actInfo = *pActInfo;
			m_stopFlowGraphNodeFromGettingUpdatedWhenSequenceActionFinishesOrCancels = true;
			m_pActionRotateTurret = NULL;

			if (IsPortActive(pActInfo, InputPort_Start))
			{
				if (const AIActionSequence::SequenceId assignedSequenceId = GetAssignedSequenceId())
				{
					gEnv->pAISystem->GetSequenceManager()->RequestActionStart(assignedSequenceId, pActInfo->myID);
					m_actInfo.pGraph->SetRegularlyUpdated(m_actInfo.myID, true);
				}
			}
		}
		break;

	case eFE_Update:
		{
			if (m_pActionRotateTurret)
			{
				float pitch, yaw;
				m_pActionRotateTurret->GetRemainingAnglesToAimGoalInDegrees(pitch, yaw);
				if (fabsf(pitch) <= m_pitchThreshold && fabs(yaw) <= m_yawThreshold)
				{
					FinishSequenceActionAndActivateOutputPort(OutputPort_Done);
				}
			}
		}
		break;
	}
}
void CFlowNode_AISequenceAction_WeaponDrawFromInventory::ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo)
{
	if (!pActInfo->pEntity)
		return;

	switch(event)
	{
	case eFE_Activate:
		{
			m_actInfo = *pActInfo;

			if (IsPortActive(pActInfo, InputPort_Start))
			{
				if (const AIActionSequence::SequenceId assignedSequenceId = GetAssignedSequenceId())
				{
					gEnv->pAISystem->GetSequenceManager()->RequestActionStart(assignedSequenceId, m_actInfo.myID);
				}
			}
		}
		break;
	}
}
void CryAction_AIActionSequenceFlowNodeBase::CancelSequenceAndActivateOutputPort(int port)
{
	gEnv->pAISystem->GetSequenceManager()->CancelSequence(GetAssignedSequenceId());
	SequenceActionFinishedOrCanceled();
	ActivateOutput(&m_actInfo, port, true);
}
void CryGame_AIActionSequenceFlowNodeBase::FinishSequenceActionAndActivateOutputPort(int port)
{
	gEnv->pAISystem->GetSequenceManager()->ActionCompleted(GetAssignedSequenceId());
	ActivateOutput(&m_actInfo, port, true);
}