Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_DeleteSelectedContextAction.c
Go to the documentation of this file.
1//------------------------------------------------------------------------------------------------
4{
5 [Attribute(desc: "When enabled, the action will not be available if target entity is a player or a vehicle containing players.")]
6 protected bool m_bCannotDeletePlayer;
7
8 override bool CanBeShown(SCR_EditableEntityComponent selectedEntity, vector cursorWorldPosition, int flags)
9 {
10 return CanBePerformed(selectedEntity, cursorWorldPosition, flags);
11 }
12
13 override bool CanBePerformed(SCR_EditableEntityComponent selectedEntity, vector cursorWorldPosition, int flags)
14 {
15 //--- Prevent deleting players. Check the entity and compartments directly; don't rely on PLAYER state, as PLAYER filter may not be present in this editor mode.
17 {
18 SCR_PossessingManagerComponent possessionManager = SCR_PossessingManagerComponent.GetInstance();
19
20 //--- Scan all children; player may be occupying a turret inside a composition
21 set<SCR_EditableEntityComponent> children = new set<SCR_EditableEntityComponent>();
22 selectedEntity.GetChildren(children);
23 foreach (SCR_EditableEntityComponent child: children)
24 {
25 IEntity owner = child.GetOwner();
26 SCR_BaseCompartmentManagerComponent compartmentManager = SCR_BaseCompartmentManagerComponent.Cast(owner.FindComponent(SCR_BaseCompartmentManagerComponent));
27 if (compartmentManager)
28 {
29 //--- Entity has compartment manager, check if one of the occupants is a player
30 array<IEntity> occupants = {};
31 compartmentManager.GetOccupants(occupants);
32 foreach (IEntity occupant: occupants)
33 {
34 if (possessionManager)
35 {
36 if (possessionManager.GetIdFromMainEntity(occupant) != 0)
37 return false;
38 }
39 else
40 {
41 if ((GetGame().GetPlayerManager().GetPlayerIdFromControlledEntity(occupant) != 0))
42 return false;
43 }
44 }
45 }
46 else
47 {
48 //--- Check if the entity itself is a player
49 if (possessionManager)
50 {
51 if (possessionManager.GetIdFromMainEntity(owner) != 0)
52 return false;
53 }
54 else
55 {
56 if ((GetGame().GetPlayerManager().GetPlayerIdFromControlledEntity(owner) != 0))
57 return false;
58 }
59 }
60 }
61 }
62
63 return selectedEntity
64 && !selectedEntity.HasEntityFlag(EEditableEntityFlag.NON_DELETABLE)
65 && !selectedEntity.HasEntityFlag(EEditableEntityFlag.NON_INTERACTIVE);
66 //&& !selectedEntity.HasEntityState(EEditableEntityState.PLAYER);
67 }
68
69 override void Perform(SCR_EditableEntityComponent selectedEntity, vector cursorWorldPosition)
70 {
71 if (selectedEntity)
72 selectedEntity.Delete(true, true);
73 }
74};
SCR_EAIThreatSectorFlags flags
ArmaReforgerScripted GetGame()
Definition game.c:1398
SCR_AIAnimation_Loitering BaseContainerProps
Commanding menu commanding element class.
class SCR_ArsenalGameModeUIDataHolder SCR_BaseContainerCustomTitleUIInfo("m_UIInfo")
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
proto external Managed FindComponent(typename typeName)
override bool CanBeShown(SCR_EditableEntityComponent selectedEntity, vector cursorWorldPosition, int flags)
override void Perform(SCR_EditableEntityComponent selectedEntity, vector cursorWorldPosition)
override bool CanBePerformed(SCR_EditableEntityComponent selectedEntity, vector cursorWorldPosition, int flags)
void GetChildren(out notnull set< SCR_EditableEntityComponent > entities, bool onlyDirect=false, bool skipIgnored=false)
bool HasEntityFlag(EEditableEntityFlag flag)
bool Delete(bool changedByUser=false, bool updateNavmesh=false)
EEditableEntityFlag
Unique flags of the entity.
SCR_FieldOfViewSettings Attribute