//------------------------------------------------------------------------ int CScriptBind_Vehicle::EnterVehicle(IFunctionHandler* pH, ScriptHandle actorHandle, int seatId, bool isAnimationEnabled) { CVehicle* pVehicle = GetVehicle(pH); if (!pVehicle || !actorHandle.n) return pH->EndFunction(0); IVehicleSeat* pSeat = pVehicle->GetSeatById(seatId); bool ret = false; if (pSeat) ret = pSeat->Enter((EntityId)actorHandle.n, isAnimationEnabled); return pH->EndFunction(ret); }
void CFlowVehicleTurret::ProcessEvent(EFlowEvent event, SActivationInfo* pActInfo) { CFlowVehicleBase::ProcessEvent(event, pActInfo); // handles eFE_SetEntityId if (event == eFE_Activate) { if (IsPortActive(pActInfo, eIn_Trigger)) { bool bSuccess = false; const string seatName = GetPortString(pActInfo, eIn_Seat); Vec3 aimPos = GetPortVec3(pActInfo, eIn_AimPos); CVehicle* pVehicle = static_cast<CVehicle*>(GetVehicle()); if (pVehicle) { CVehicleSeat* pSeat = static_cast<CVehicleSeat*>(pVehicle->GetSeatById(pVehicle->GetSeatId(seatName))); if (pSeat) { TVehicleSeatActionVector &seatActions = pSeat->GetSeatActions(); for (TVehicleSeatActionVector::iterator ite = seatActions.begin(); ite != seatActions.end(); ++ite) { IVehicleSeatAction* pSeatAction = ite->pSeatAction; CVehicleSeatActionRotateTurret* pActionRotateTurret = CAST_VEHICLEOBJECT(CVehicleSeatActionRotateTurret, pSeatAction); if (pActionRotateTurret) { if (!aimPos.IsZero()) { pActionRotateTurret->SetAimGoal(aimPos); } bSuccess = true; break; } } } } ActivateOutput( pActInfo, eOut_Success, bSuccess ); } } }