32 if (!m_OnCompartmentEntered && createNew)
34 return m_OnCompartmentEntered;
40 if (!m_OnCompartmentLeft && createNew)
42 return m_OnCompartmentLeft;
66 if (m_OnCompartmentEntered)
67 m_OnCompartmentEntered.Invoke( targetEntity, manager, mgrID, slotID, move );
72 if (!playerManager || !character)
84 int playerId = playerManager.GetPlayerIdFromControlledEntity(character);
100 if (!entered && character == localCharacter)
111 if (turretController)
113 turret =
Turret.Cast(turretController.GetOwner());
117 string turretName = slot.GetAutoConnectTurret();
118 if (turretName.IsEmpty())
124 turret =
Turret.Cast(child);
128 if (turretController && turretController.GetUniqueName() == turretName)
139 m_TurretFireModeManager = SCR_FireModeManagerComponent.Cast(turret.FindComponent(SCR_FireModeManagerComponent));
143 if (character == localCharacter)
156 if (m_OnCompartmentLeft)
157 m_OnCompartmentLeft.Invoke( targetEntity, manager, mgrID, slotID, move );
162 if (!playerManager || !character)
170 int playerId = playerManager.GetPlayerIdFromControlledEntity(character);
186 if (!vehicleFactionAff)
201 if (!compartmentManager)
204 array<BaseCompartmentSlot> compartments = {};
205 compartmentManager.GetCompartments(compartments);
209 if (!customSlot.IsCompartmentAccessible())
211 if (customSlot.IsGetInLockedFor(
GetOwner()))
213 if (customSlot.GetOccupant())
215 if (compartmentType != customSlot.GetType())
223 if (!compartment.IsCompartmentAccessible())
225 if (compartment.IsGetInLockedFor(
GetOwner()))
227 if (compartment.GetOccupant())
229 if (compartmentType != compartment.GetType())
268 IEntity slotEntity = slot.GetOwner();
269 RplComponent slotRplComponent = RplComponent.Cast(slotEntity.
FindComponent(RplComponent));
270 RplId slotEntityID = slotRplComponent.Id();
271 int slotID = slot.GetCompartmentSlotID();
283 RplComponent slotRplComponent = RplComponent.Cast(
Replication.FindItem(slotEntityID));
284 if (!slotRplComponent)
300 IEntity slotEntity = slotRplComponent.GetEntity();
345 Rpc(
GetOutOwner,
type, doorInfoIndex, closeDoor, performWhenPaused, ejectOnTheSpot);
365 character.GetTransform(mat);
366 mat[3] = character.AimingPosition();
414 [
Obsolete(
"Use GetType() on the compartment instance directly.")]
417 return compartment.GetType();
ArmaReforgerScripted GetGame()
SCR_CharacterControllerComponent GetCharacterController()
func OnPlayerEnterCompartmentMethod
func OnPlayerExitCompartmentMethod
ScriptInvokerBase< OnPlayerEnterCompartmentMethod > OnPlayerEnterCompartment
ScriptInvokerBase< OnPlayerEnterCompartmentMethod > OnPlayerExitCompartment
enum SCR_ECompassType EntityEditorProps(category:"GameScripted/Gadgets", description:"Compass", color:"0 0 255 255")
Prefab data class for compass component.
void SetCompartmentAccessible(bool val)
proto external Managed FindComponent(typename typeName)
proto external IEntity GetChildren()
proto external IEntity GetSibling()
Replication item identifier.
ref OnLifeStateChangedInvoker m_OnLifeStateChanged
OnPlayerExitCompartment GetOnPlayerCompartmentExit(bool createNew=true)
bool MoveInVehicleAny(IEntity vehicle)
void AskOwnerToGetOutFromVehicle(EGetOutType type, int doorInfoIndex, ECloseDoorAfterActions closeDoor, bool performWhenPaused, bool ejectOnTheSpot=false)
ScriptInvoker GetOnCompartmentEntered(bool createNew=true)
void OnLifeStateChanged(ECharacterLifeState previousLifeState, ECharacterLifeState newLifeState)
ref OnPlayerExitCompartment m_OnPlayerExitCompartment
SCR_FireModeManagerComponent GetControlledFireModeManager()
static ECompartmentType GetCompartmentType(notnull BaseCompartmentSlot compartment)
void OnCompartmentEntered(IEntity targetEntity, BaseCompartmentManagerComponent manager, int mgrID, int slotID, bool move)
void OnCompartmentLeft(IEntity targetEntity, BaseCompartmentManagerComponent manager, int mgrID, int slotID, bool move)
static int s_iWaitForVehicleTries
void ToggleTurretFireModeControlls(notnull BaseCompartmentSlot slot, bool entered)
OnPlayerEnterCompartment GetOnPlayerCompartmentEnter(bool createNew=true)
const int WAIT_FOR_VEHICLE_MAX_TRIES
void MoveInVehicleOwner(RplId slotEntityID, int slotID, bool performWhenPaused)
IEntity GetVehicle(out int compartmentID)
SCR_FireModeManagerComponent m_TurretFireModeManager
void GetOutOwner(EGetOutType type, int doorInfoIndex, ECloseDoorAfterActions closeDoor, bool performWhenPaused, bool ejectOnTheSpot)
BaseCompartmentSlot FindFreeAndAccessibleCompartment(IEntity vehicle, ECompartmentType compartmentType, BaseCompartmentSlot customSlot=null)
ScriptInvoker GetOnCompartmentLeft(bool createNew=true)
ref OnPlayerEnterCompartment m_OnPlayerEnterCompartment
bool MoveInVehicle(IEntity vehicle, ECompartmentType compartmentType, bool performWhenPaused=false, BaseCompartmentSlot customSlot=null)
void ~SCR_CompartmentAccessComponent()
static IEntity GetLocalControlledEntity()
void OnOccupantLifeStateChanged(ECharacterLifeState previousLifeState, ECharacterLifeState newLifeState)
IEntity GetOwner()
Owner entity of the fuel tank.
proto external bool GetOutVehicle_NoDoor(vector targetTransform[4], bool sendIntoRagdoll, bool performWhenPaused, bool isExitTeleport=false)
Uses teleport - character is teleported to targetTransform, and door state will not be changed.
proto external BaseCompartmentSlot GetCompartment()
Returns the compartent we're in.
proto external bool GetInVehicle(IEntity vehicle, BaseCompartmentSlot compartment, bool forceTeleport, int doorInfoIndex, ECloseDoorAfterActions closeDoor, bool performWhenPaused)
If force teleport, doorInfoIndex is ignored. closeDoor is still respected.
proto external bool GetOutVehicle(EGetOutType type, int doorInfoIndex, ECloseDoorAfterActions closeDoor, bool performWhenPaused, bool isExitTeleport=false)
If force teleport, doorInfoIndex is used for the teleport position and closeDoor is ignored.
void RplRpc(RplChannel channel, RplRcver rcver, RplCondition condition=RplCondition.None, string customConditionName="")
RplChannel
Communication channel. Reliable is guaranteed to be delivered. Unreliable not.