本文整理汇总了C++中IActor::MountedGunControllerEnabled方法的典型用法代码示例。如果您正苦于以下问题:C++ IActor::MountedGunControllerEnabled方法的具体用法?C++ IActor::MountedGunControllerEnabled怎么用?C++ IActor::MountedGunControllerEnabled使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IActor
的用法示例。
在下文中一共展示了IActor::MountedGunControllerEnabled方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: HandleSequenceEvent
void CFlowNode_AISequenceAction_ApproachAndEnterVehicle::HandleSequenceEvent(AIActionSequence::SequenceEvent sequenceEvent)
{
switch(sequenceEvent)
{
case AIActionSequence::StartAction:
{
if (!m_actInfo.pEntity)
{
// the entity has gone for some reason, at least make sure the action gets finished properly and the FG continues
UnregisterFromVehicleEvent(NULL);
CancelSequenceAndActivateOutputPort(OutputPort_Done);
return;
}
m_entityId = m_actInfo.pEntity->GetId();
m_vehicleId = GetPortEntityId(&m_actInfo, InputPort_VehicleId);
m_seatNumber = GetPortInt(&m_actInfo, InputPort_SeatNumber);
m_fast = GetPortBool(&m_actInfo, InputPort_Fast);
const bool alsoCheckForCrewHostility = true;
IVehicle* pVehicle = GetVehicle(alsoCheckForCrewHostility);
if (!pVehicle)
{
CryLog("Actor %s failed to enter vehicle (specified vehicle not found or its crew is hostile towards the actor returned true)", m_actInfo.pEntity->GetName());
CancelSequenceAndActivateOutputPort(OutputPort_Done);
return;
}
IVehicleSeat* pSeat = GetVehicleSeat(pVehicle);
if (!pSeat)
{
CryLog("Actor %s failed to enter vehicle (bad seat number provided: %i)", m_actInfo.pEntity->GetName(), m_seatNumber);
CancelSequenceAndActivateOutputPort(OutputPort_Done);
return;
}
const IVehicleHelper* pEnterHelper = static_cast<CVehicleSeat*>(pSeat)->GetEnterHelper();
if (!pEnterHelper)
{
CryLog("Actor %s failed to enter vehicle (vehicle has no enter-helper)", m_actInfo.pEntity->GetName());
CancelSequenceAndActivateOutputPort(OutputPort_Done);
return;
}
m_vehicleSeatEnterPosition = pEnterHelper->GetWorldSpaceTranslation();
assert(gEnv && gEnv->pGame && gEnv->pGame->GetIGameFramework() && gEnv->pGame->GetIGameFramework()->GetIActorSystem());
IActor* pActor = gEnv->pGame->GetIGameFramework()->GetIActorSystem()->GetActor(m_actInfo.pEntity->GetId());
// if it's the player, have him enter quickly (we assume that the user moved him close enough to the vehicle)
if (pActor && pActor->IsPlayer())
{
EnterVehicleSeat(true, pSeat);
}
else if (m_actInfo.pEntity->GetAI())
{
if (m_fast)
{
TeleportToVehicleSeat();
EnterVehicleSeat(false, pSeat);
}
else
{
MovementRequest request;
request.callback = functor(*this, &CFlowNode_AISequenceAction_ApproachAndEnterVehicle::MovementRequestCallback);
request.entityID = m_actInfo.pEntity->GetId();
request.type = MovementRequest::MoveTo;
request.destination = m_vehicleSeatEnterPosition;
request.style.SetSpeed((MovementStyle::Speed)GetPortInt(&m_actInfo, InputPort_Speed));
request.style.SetStance((MovementStyle::Stance)GetPortInt(&m_actInfo, InputPort_Stance));
m_movementRequestID = gEnv->pAISystem->GetMovementSystem()->QueueRequest(request);
}
}
else if (pActor)
{
pActor->HolsterItem(true);
pActor->MountedGunControllerEnabled(false);
pActor->GetGameObject()->SetAspectProfile(eEA_Physics, eAP_Alive);
TeleportToVehicleSeat();
EnterVehicleSeat(GetAnimationTransitionEnabled(), pSeat);
}
else
{
CRY_ASSERT_MESSAGE(0, "no compatible entity was provided");
CryWarning(VALIDATOR_MODULE_AI, VALIDATOR_WARNING, "Actor %s failed to enter vehicle (no compatible entity was provided)", m_actInfo.pEntity->GetName());
CancelSequenceAndActivateOutputPort(OutputPort_Done);
}
}
break;
case AIActionSequence::SequenceStopped:
{
if (m_movementRequestID)
{
gEnv->pAISystem->GetMovementSystem()->CancelRequest(m_movementRequestID);
m_movementRequestID = MovementRequestID::Invalid();
UnregisterFromVehicleEvent(NULL);
}
}
break;
//.........这里部分代码省略.........