1[
ComponentEditorProps(
category:
"GameScripted/Editor (Editables)", description:
"", icon:
"WBData/ComponentEditorProps/componentEditor.png")]
67 array<BaseCompartmentSlot> compartments = {};
84 array<BaseCompartmentSlot> compartments = {};
103 array<BaseCompartmentSlot> compartments = {};
104 int playerIdToReturn = 0;
115 if (playerIdToReturn == 0)
116 playerIdToReturn = playerId;
122 return playerIdToReturn;
133 array<BaseCompartmentSlot> compartments = {};
142 int playerId = playerManager.GetPlayerIdFromControlledEntity(occupant.GetOwner());
154 override int GetCrew(out notnull array<CompartmentAccessComponent> crewCompartmentAccess,
bool ignorePlayers =
true)
156 SCR_BaseCompartmentManagerComponent compartmentManager = SCR_BaseCompartmentManagerComponent.Cast(
GetOwner().
FindComponent(SCR_BaseCompartmentManagerComponent));
157 if (!compartmentManager)
164 playerManager =
GetGame().GetPlayerManager();
166 array<IEntity> occupants = {};
167 compartmentManager.GetOccupants(occupants);
168 CompartmentAccessComponent compartmentAccess;
171 foreach (
IEntity occupant : occupants)
177 if (ignorePlayers && playerManager.GetPlayerIdFromControlledEntity(character) > 0)
180 compartmentAccess = character.GetCompartmentAccessComponent();
181 if (compartmentAccess && compartmentAccess.IsInCompartment())
182 crewCompartmentAccess.Insert(compartmentAccess);
185 return crewCompartmentAccess.Count();
192 SCR_BaseCompartmentManagerComponent compartmentManager = SCR_BaseCompartmentManagerComponent.Cast(
GetOwner().
FindComponent(SCR_BaseCompartmentManagerComponent));
193 if (!compartmentManager)
196 array<IEntity> occupants = {};
197 SCR_EditableCharacterComponent editableCharacter;
198 compartmentManager.GetOccupants(occupants);
200 foreach (
IEntity occupant : occupants)
202 editableCharacter = SCR_EditableCharacterComponent.Cast(occupant.FindComponent(SCR_EditableCharacterComponent));
203 if (editableCharacter)
204 editableCharacter.PlayerTeleportedByParentFeedback(
true);
211 if (!super.SetTransform(transform, changedByUser))
231 bool CanOccupyVehicleWithCharacters(array<ECompartmentType> compartmentTypes,
bool checkHasDefaultOccupantsData,
int playerID,
bool checkEditorBudget =
true,
bool checkOccupyingFaction =
true,
bool checkForFreeCompartments =
true,
bool checkForFreeDefaultCompartments =
false)
238 if (checkOccupyingFaction)
245 bool hasEnoughBudgetForDefaultCompartments;
246 bool hasFreeDefaultCompartments;
248 if (checkEditorBudget || checkForFreeDefaultCompartments)
251 if (checkEditorBudget && !hasEnoughBudgetForDefaultCompartments)
254 if (checkForFreeDefaultCompartments && !hasFreeDefaultCompartments)
257 return m_CompartmentManager.CanOccupy(compartmentTypes, checkHasDefaultOccupantsData, factionKey, checkOccupyingFaction, checkForFreeCompartments);
264 noFreeDefaultCompartments =
true;
266 array<BaseCompartmentSlot> compartments = {};
274 array<ResourceName> occupantsToSpawn = {};
279 occupant = compartment.GetDefaultOccupantPrefab();
280 if (!occupant.IsEmpty())
281 occupantsToSpawn.Insert(occupant);
285 if (occupantsToSpawn.IsEmpty())
287 noFreeDefaultCompartments =
false;
347 array<ECompartmentType> compartmentsToFill = {};
355 if (!uiInfo || !uiInfo.GetEditorPlaceAsOneGroup())
358 compartmentsToFill.InsertAll(SCR_BaseCompartmentManagerComponent.CREW_COMPARTMENT_TYPES);
365 if (!uiInfo || !uiInfo.GetEditorPlaceAsOneGroup())
368 compartmentsToFill.InsertAll(SCR_BaseCompartmentManagerComponent.PASSENGER_COMPARTMENT_TYPES);
372 if (!compartmentsToFill.IsEmpty())
393 super.OnPostInit(owner);
402 EventHandlerManagerComponent eventHandlerManager = EventHandlerManagerComponent.Cast(owner.
FindComponent(EventHandlerManagerComponent));
403 if (eventHandlerManager)
404 eventHandlerManager.RegisterScriptHandler(
"OnDestroyed", owner,
OnDestroyed);
SCR_EAIThreatSectorFlags flags
ArmaReforgerScripted GetGame()
enum EAIGroupCombatMode ComponentEditorProps(category:"GameScripted/AI", description:"Component for utility AI system for groups")
IEntity GetOccupant(IEntity slot)
ref ScriptInvoker m_OnUIRefresh
bool HasEnoughBudgetForDefaultOccupants(array< ECompartmentType > compartmentTypes, int playerID, EEditorMode editorMode, out bool noFreeDefaultCompartments)
void OccupyVehicleWithDefaultCharacters(notnull array< ECompartmentType > compartmentTypes)
SCR_BaseCompartmentManagerComponent GetCompartmentManager()
void OnDestroyed(IEntity owner)
bool CanOccupyVehicleWithCharacters(array< ECompartmentType > compartmentTypes, bool checkHasDefaultOccupantsData, int playerID, bool checkEditorBudget=true, bool checkOccupyingFaction=true, bool checkForFreeCompartments=true, bool checkForFreeDefaultCompartments=false)
void ~SCR_EditableVehicleComponent()
SCR_VehicleFactionAffiliationComponent m_VehicleFactionAffiliation
void OnFactionUpdate(FactionAffiliationComponent owner, Faction previousFaction, Faction newFaction)
void UpdatePlayerCountInVehicle()
void PlayerTeleportedFeedback()
Add feedback to players that they are teleported when inside of the vehicle.
int GetPlayerCountInVehicle()
void SCR_EditorManagerEntity(IEntitySource src, IEntity parent)
override SCR_UIInfo GetInfo()
SCR_BaseCompartmentManagerComponent m_CompartmentManager
proto external GenericComponent FindComponent(typename typeName)
proto external Managed FindComponent(typename typeName)
bool SetTransform(vector transform[4], bool changedByUser=false)
SCR_EditableEntityComponent EOnEditorPlace(out SCR_EditableEntityComponent parent, SCR_EditableEntityComponent recipient, EEditorPlacingFlags flags, bool isQueue, int playerID=0)
SCR_EditableEntityComponent GetAIEntity()
ScriptInvoker GetOnUIRefresh()
static SCR_EditableEntityComponent GetEditableEntity(IEntity owner)
SCR_EditableEntityComponent SetParentEntity(SCR_EditableEntityComponent parentEntity, bool changedByUser=false)
int GetCrew(out notnull array< CompartmentAccessComponent > crewCompartmentAccess, bool ignorePlayers=true)
SCR_EditableEntityComponent GetAIGroup()
FactionKey GetFactionKey()
Core component to manage SCR_EditorManagerEntity.
SCR_EditorManagerEntity GetEditorManager()
bool IsThereEnoughBudgetToSpawnVehicleOccupants(array< ResourceName > resources)
void EOnPhysicsActive(IEntity owner, bool activeState)
proto external GenericEntity GetOwner()
Get owner entity.
EEditorMode
Editor mode that defines overall functionality.