Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_FlagComponent.c
Go to the documentation of this file.
1[EntityEditorProps(category: "GameScripted/Campaign", description: "Simple component for changing material of flags and signs.", color: "0 0 255 255")]
3{
4 [Attribute("1", UIWidgets.CheckBox, "Is Owner entity Flag Pole?", "")]
5 protected bool m_bIsFlagPole;
6
7 [Attribute("{9BE1341F99D33483}Assets/Props/Fabric/Flags/Data/Flag_1_2_EVERON.emat", UIWidgets.ResourcePickerThumbnail, "Default material to be used.", params: "emat")]
9
10 [Attribute("", UIWidgets.ResourcePickerThumbnail, "Optional MLOD, if required.", params: "emat")]
12
13 //------------------------------------------------------------------------------------------------
16 {
17 return m_bIsFlagPole;
18 }
19
20 //------------------------------------------------------------------------------------------------
26
27 //------------------------------------------------------------------------------------------------
33}
34
35//------------------------------------------------------------------------------------------------
36class SCR_FlagComponent : SCR_MilitaryBaseLogicComponent
37{
38 //------------------------------------------------------------------------------------------------
41
42 //------------------------------------------------------------------------------------------------
46 void ChangeMaterial(ResourceName flagResource, ResourceName resourceMLOD = string.Empty)
47 {
49 if (!flag)
50 return;
53
54 if (flagResource.IsEmpty())
55 {
56 flag.ClearFlags(EntityFlags.VISIBLE);
57
58 if (signalsManager)
59 signalsManager.SetSignalValue(signalsManager.AddOrFindSignal("Trigger"), 0);
60
61 return;
62 }
63
64 flag.SetFlags(EntityFlags.VISIBLE);
66 if (signalsManager)
67 signalsManager.SetSignalValue(signalsManager.AddOrFindSignal("Trigger"), 1);
68
69 //Custom set material. Finds original material "slot" with MLOD and assigns appropriate new one, if possible.
70 VObject mesh = flag.GetVObject();
71 if (!mesh)
72 return;
73
74 string remap;
75 string materials[256];
76 int numMats = mesh.GetMaterials(materials);
77
78 for (int i = 0; i < numMats; i++)
79 {
80 if (materials[i].Contains("MLOD"))
81 remap += string.Format("$remap '%1' '%2';", materials[i], resourceMLOD);
82 else
83 remap += string.Format("$remap '%1' '%2';", materials[i], flagResource);
84 }
85
86 flag.SetObject(mesh, remap);
87 }
88
89 //------------------------------------------------------------------------------------------------
92 {
94 if (prefabData && !prefabData.IsFlagPole())
95 return GetOwner();
96
97 SlotManagerComponent slotManager = SlotManagerComponent.Cast(GetOwner().FindComponent(SlotManagerComponent));
98 if (!slotManager)
99 return null;
100
101 array<EntitySlotInfo> slots = {};
102 slotManager.GetSlotInfos(slots);
103
104 foreach (EntitySlotInfo slot : slots)
105 {
106 IEntity flag = slot.GetAttachedEntity();
107 if (!flag)
108 continue;
109
110 return flag;
111 }
112
113 return null;
114 }
115
116 //------------------------------------------------------------------------------------------------
117 override void EOnInit(IEntity owner)
118 {
119 super.EOnInit(owner);
120
122 if (prefabData)
123 ChangeMaterial(prefabData.GetDefaultMaterial(), prefabData.GetDefaultMLOD());
124 }
125
126 //------------------------------------------------------------------------------------------------
127 override void OnPostInit(IEntity owner)
128 {
129 super.OnPostInit(owner);
130 SetEventMask(owner, EntityEvent.INIT);
131 }
132}
SCR_CharacterSoundComponentClass GetComponentData()
enum SCR_ECompassType EntityEditorProps(category:"GameScripted/Gadgets", description:"Compass", color:"0 0 255 255")
Prefab data class for compass component.
SCR_FlagComponentClass SCR_MilitaryBaseLogicComponentClass ChangeMaterial(ResourceName flagResource, ResourceName resourceMLOD=string.Empty)
IEntity GetFlagEntity()
Adds ability to attach an object to a slot.
proto external Managed FindComponent(typename typeName)
proto external EntityFlags SetFlags(EntityFlags flags, bool recursively=false)
proto external EntityFlags ClearFlags(EntityFlags flags, bool recursively=false)
proto external VObject GetVObject()
Returns visual object set to this Entity. No reference is added.
ResourceName m_sDefaultMaterial
ResourceName GetDefaultMaterial()
ResourceName GetDefaultMLOD()
Visual object.
Definition VObject.c:14
IEntity GetOwner()
Owner entity of the fuel tank.
override void EOnInit(IEntity owner)
SCR_FieldOfViewSettings Attribute
EntityEvent
Various entity events.
Definition EntityEvent.c:14
EntityFlags
Various entity flags.
Definition EntityFlags.c:14
proto bool Contains(T value)