Arma Reforger Explorer 1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Loading...
Searching...
No Matches
SCR_AnimatedBeltComponent.c
Go to the documentation of this file.
1class SCR_AnimatedBeltComponentClass : ScriptComponentClass
2{
3 [Attribute("9", params: "1 600 1", desc: "How many bullets are visible in one UV texture (including half bullets assuming they come in pairs)", uiwidget: UIWidgets.EditBox, category: "Bullet data")]
4 protected int m_iUVBulletCount;
5
6 [Attribute("600", desc: "Rounds the gun shoots per minute. Affects belt-speed", uiwidget: UIWidgets.EditBox, category: "Bullet data")]
7 protected int m_iRoundsPerMinute;
8
9 private float m_iUVBulletCountPerMinuteInvRPM;
10 private float m_iUVBulletCountInv;
11
12 void SCR_AnimatedBeltComponentClass(IEntityComponentSource componentSource, IEntitySource parentSource, IEntitySource prefabSource)
13 {
14 int iUVBulletCountPerMinute = m_iUVBulletCount * 60;
15 m_iUVBulletCountPerMinuteInvRPM = m_iRoundsPerMinute * (1 / iUVBulletCountPerMinute);
16 m_iUVBulletCountInv = 1 / m_iUVBulletCount;
17 }
18
19 float GetUVBulletCountPerMinuteInvRPM() { return m_iUVBulletCountPerMinuteInvRPM; }
20 float GetUVBulletCountInv() { return m_iUVBulletCountInv; }
21}
22
23class SCR_AnimatedBeltComponent : ScriptComponent
24{
26 protected float m_fBeltProgress;
27 protected float m_fBeltTarget;
28 protected float m_fBeltStartPoint;
29 protected int m_iBeltSystemIdx = -1;
30
31 //------------------------------------------------------------------------------------------------
33 override void OnAddedToParent(IEntity child, IEntity parent)
34 {
35 World world = GetOwner().GetWorld();
37
38 IEntity turret = parent;
39 if (!turret)
40 return;
41
42 EventHandlerManagerComponent eventHandler = EventHandlerManagerComponent.Cast(turret.FindComponent(EventHandlerManagerComponent));
43 if (!eventHandler)
44 return;
45
46 eventHandler.RegisterScriptHandler("OnCompartmentEntered", child, OnCompartmentEntered);
47 eventHandler.RegisterScriptHandler("OnCompartmentLeft", child, OnCompartmentLeft);
48 }
49
50 //------------------------------------------------------------------------------------------------
52 void OnCompartmentEntered(IEntity vehicle, BaseCompartmentManagerComponent mgr, IEntity occupant, int managerId, int slotID)
53 {
54 EventHandlerManagerComponent eventHandlerManager = EventHandlerManagerComponent.Cast(occupant.FindComponent(EventHandlerManagerComponent));
55 if (eventHandlerManager)
56 eventHandlerManager.RegisterScriptHandler("OnProjectileShot", this, OnProjectileShot);
57 }
58
59 //------------------------------------------------------------------------------------------------
61 void OnProjectileShot(int playerID, BaseWeaponComponent weapon, IEntity entity)
62 {
63 if (s_system)
64 s_system.Register(this);
65
67
68 float newBeltTarget = Math.Mod(m_fBeltTarget - prefabData.GetUVBulletCountInv(), 1);
69 if (newBeltTarget > m_fBeltTarget)
70 {
71 m_fBeltProgress += 1;
73 }
74
75 m_fBeltTarget = newBeltTarget;
76 }
77
78 //------------------------------------------------------------------------------------------------
80 void Update(float timeSlice)
81 {
83
84 m_fBeltProgress -= timeSlice * prefabData.GetUVBulletCountPerMinuteInvRPM();
86 {
88 if (s_system)
89 s_system.Unregister(this);
90 }
91 }
92
93 //------------------------------------------------------------------------------------------------
95 void OnCompartmentLeft(IEntity vehicle, BaseCompartmentManagerComponent mgr, IEntity occupant, int managerId, int slotID)
96 {
99 }
100
101 //------------------------------------------------------------------------------------------------
103 override void OnDelete(IEntity owner)
104 {
108 }
109
110 //------------------------------------------------------------------------------------------------
112 {
113 if (!s_system)
114 return;
115
116 s_system.Unregister(this);
117 }
118
119 //------------------------------------------------------------------------------------------------
121 {
123 }
124
125 //------------------------------------------------------------------------------------------------
127 {
128 return m_iBeltSystemIdx;
129 }
130
131 //------------------------------------------------------------------------------------------------
133 {
134 IEntity turret = owner.GetParent();
135 if (!turret)
136 return;
137
138 EventHandlerManagerComponent turretEventHandler = EventHandlerManagerComponent.Cast(turret.FindComponent(EventHandlerManagerComponent));
139 if (turretEventHandler)
140 {
141 turretEventHandler.RemoveScriptHandler("OnCompartmentEntered", GetOwner(), OnCompartmentEntered);
142 turretEventHandler.RemoveScriptHandler("OnCompartmentLeft", GetOwner(), OnCompartmentLeft);
143 }
144 }
145
146 //------------------------------------------------------------------------------------------------
148 {
149 EventHandlerManagerComponent gunnerEventHandler = EventHandlerManagerComponent.Cast(owner.FindComponent(EventHandlerManagerComponent));
150 if (gunnerEventHandler)
151 gunnerEventHandler.RemoveScriptHandler("OnProjectileShot", this, OnProjectileShot);
152 }
153}
void OnCompartmentEntered(AIAgent agent, IEntity targetEntity, BaseCompartmentManagerComponent manager, int mgrID, int slotID, bool move)
void OnCompartmentLeft(AIAgent agent, IEntity targetEntity, BaseCompartmentManagerComponent manager, int mgrID, int slotID, bool move)
int m_iBeltSystemIdx
SCR_AnimatedBeltComponentClass s_system
float m_fBeltStartPoint
float m_fBeltTarget
void OnProjectileShot(int playerID, BaseWeaponComponent weapon, IEntity entity)
Start the UV shifting.
void DisconnectSystem()
float m_fBeltProgress
void RemoveTurretInvokers(IEntity owner)
int GetBeltSystemIdx()
void SetBeltSystemIdx(int index)
void RemoveCharacterInvokers(IEntity owner)
SCR_CharacterSoundComponentClass GetComponentData()
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
proto external Managed FindComponent(typename typeName)
proto external BaseWorld GetWorld()
proto external IEntity GetParent()
Definition Math.c:13
proto external GenericEntity GetOwner()
Get owner entity.
void OnAddedToParent(IEntity child, IEntity parent)
Called on child entity when it is added into hierarchy.
Definition World.c:16
SCR_FieldOfViewSettings Attribute