16 [
Attribute(defvalue:
"30",
params:
"1 inf",
desc:
"Maximum distance for teleporting characters out of slot.",
category:
"Entity Spawner")]
19 [
Attribute(defvalue:
"3",
params:
"1 inf",
desc:
"Size of Cylinder used to search empty terrain position. Should be big enough to prevent empty position being too close to slot center.",
category:
"Entity Spawner")]
72 protected bool m_bShowDebugShape;
74 protected ref Shape m_DebugShape;
96 return vector.DistanceSqXZ(labelComp.GetOwner().GetOrigin(),
GetOwner().
GetOrigin()) > maxDistance * maxDistance;
160 return trace.TraceEnt;
179 array<ChimeraCharacter> characterArray = {};
182 if (characterArray.IsEmpty())
186 array <vector> positions = {};
191 PlayerController playerController;
192 SCR_SpawnerRequestComponent requestComp;
200 if (!positions.IsIndexValid(i))
203 playerId = playerManager.GetPlayerIdFromControlledEntity(character);
206 playerController = playerManager.GetPlayerController(playerId);
207 requestComp = SCR_SpawnerRequestComponent.Cast(playerController.FindComponent(SCR_SpawnerRequestComponent));
209 requestComp.RequestPlayerTeleport(positions[i]);
217 character.GetWorldTransform(transform);
218 transform[3] = positions[i];
243 return characterArray.Count();
255 set<SCR_EditableEntityComponent> childrenSet =
new set<SCR_EditableEntityComponent> ();
263 if (!editableChildren)
335 SCR_DamageManagerComponent damageManager = SCR_DamageManagerComponent.Cast(entity.
FindComponent(SCR_DamageManagerComponent));
337 return damageManager.IsDestroyed();
358 SCR_EntityLabelPointComponent labelComp = SCR_EntityLabelPointComponent.Cast(ent.
FindComponent(SCR_EntityLabelPointComponent));
372 if (m_bShowDebugShape)
382 Print(
"Gamemode is missing SCR_SlotManagerComponent, which is required for functionality of SCR_EntitySpawnerSlotComponent",
LogLevel.WARNING);
390 Print(
"SCR_EntitySpawnerSlotComponent is missing RplComponent. It won't work properly without it",
LogLevel.WARNING);
396 super.OnPostInit(owner);
400 if (m_bShowDebugShape)
420 SCR_EntitySpawnerSlotComponentClass prefabData = SCR_EntitySpawnerSlotComponentClass.Cast(
GetComponentData(
GetOwner()));
431 m_DebugShape.SetMatrix(transform);
437 if (m_bShowDebugShape && m_DebugShape)
441 m_DebugShape.SetMatrix(transform);
448 return EEntityFrameUpdateSpecs.CALL_WHEN_ENTITY_VISIBLE;
454 if (m_bShowDebugShape && m_DebugShape)
458 m_DebugShape.SetMatrix(transform);
ArmaReforgerScripted GetGame()
RplComponent m_RplComponent
SCR_CharacterSoundComponentClass GetComponentData()
enum SCR_ECompassType EntityEditorProps(category:"GameScripted/Gadgets", description:"Compass", color:"0 0 255 255")
Prefab data class for compass component.
int GetCharactersInSlot(out array< ChimeraCharacter > characterArray)
bool IsOccupied()
Returns true, if slot is occupied.
void SetRallyPoint(notnull SCR_EntityLabelPointComponent labelComp)
bool FilterCharactersCallback(IEntity ent)
void ~SCR_EntitySpawnerSlotComponent()
ref array< ChimeraCharacter > m_aCharacterArray
bool IsEntityDestroyed(IEntity entity)
SCR_EntityLabelPointComponent m_RallyPointLabelComponent
bool RallyPointSearchCallback(IEntity ent)
Callback for Query in GetRallyPoint. Returns false, once SCR_EntityLabelPointComponent matching param...
ref array< IEntity > m_aExcludedEntities
void OnRallyPointUpdated()
Called when Rally Point gets moved.
SCR_EEntitySpawnerSlotType GetSlotType()
bool TraceCallback(IEntity ent)
SCR_EntityLabelPointComponent GetRallyPoint()
void FillExcludedEntities()
SCR_EEntitySpawnerSlotType
bool IsEntityLabelInRange(notnull SCR_EntityLabelPointComponent labelComp)
bool CharacterFoundCallback(IEntity ent)
void MoveCharactersFromSlot()
Moves away all characters from slot, if there is suitable empty position in vicinity.
enum EFuelFlowCapacityIn VEHICLE_SMALL
enum EFuelFlowCapacityIn VEHICLE_MEDIUM
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
void DrawDebugShape(bool draw)
SCR_SlotServiceComponentClass m_SlotManager
Service with basic slot handling functionalities.
enum EVehicleType IEntity
event int _WB_GetAfterWorldUpdateSpecs(IEntity owner, IEntitySource src)
Called after _WB_OnInit or also later when editor needs to know whether _WB_AfterWorldUpdate needs to...
proto external int SetEventMask(notnull IEntity owner, int mask)
proto external GenericComponent FindComponent(typename typeName)
event void _WB_AfterWorldUpdate(IEntity owner, float timeSlice)
Called after updating world in Workbench. The entity must be selected. You can use editor API here an...
proto external EntityFlags GetFlags()
proto external Managed FindComponent(typename typeName)
proto external vector GetOrigin()
proto external Physics GetPhysics()
proto external void GetWorldTransform(out vector mat[])
See IEntity::GetTransform.
proto external bool IsLoaded()
proto external void GetTransform(out vector mat[])
void GetChildren(out notnull set< SCR_EditableEntityComponent > entities, bool onlyDirect=false, bool skipIgnored=false)
bool SetTransform(vector transform[4], bool changedByUser=false)
SCR_EditableEntityComponent GetParentEntity()
float GetTeleportMaximumDistance()
SCR_EEntitySpawnerSlotType m_eSlotType
float GetTeleportSearchSize()
vector GetMaxBoundsVector()
float GetMaxRallyPointDistance()
float m_fTeleportMaxDistance
vector GetMinBoundsVector()
float m_fTeleportSearchSize
SCR_EEntitySpawnerSlotType GetSlotType()
float m_fMaxRallyPointDistance
static bool OrientToTerrain(out vector transform[4], BaseWorld world=null, bool noUnderwater=false, TraceParam trace=null)
void EOnFrame(IEntity owner, float timeSlice)
proto external GenericEntity GetOwner()
Get owner entity.
void EOnInit(IEntity owner)
enum EPhysicsLayerPresets Vehicle
EPhysicsLayerPresets
Enum is filled by C++ by data in project config PhysicsSettings.LayerPresets.
IEntity GetOwner()
Owner entity of the fuel tank.
proto void Print(void var, LogLevel level=LogLevel.NORMAL)
Prints content of variable to console/log.
LogLevel
Enum with severity of the logging message.
SCR_FieldOfViewSettings Attribute
EntityEvent
Various entity events.
EntityFlags
Various entity flags.
@ INVALID
Missing components, or obstruction test was not possible.