Arma Reforger Explorer
1.7.0.54
Arma Reforger Code Explorer by Zeroy - Thanks to MisterOutofTime
Toggle main menu visibility
Loading...
Searching...
No Matches
SCR_AnimatedBeltComponent.c
Go to the documentation of this file.
1
class
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
23
class
SCR_AnimatedBeltComponent :
ScriptComponent
24
{
25
protected
static
SCR_AnimatedBeltSystem
s_system
;
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
();
36
s_system
=
SCR_AnimatedBeltSystem
.Cast(world.FindSystem(
SCR_AnimatedBeltSystem
));
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
66
auto
prefabData =
SCR_AnimatedBeltComponentClass
.Cast(
GetComponentData
(
GetOwner
()));
67
68
float
newBeltTarget =
Math
.Mod(
m_fBeltTarget
- prefabData.GetUVBulletCountInv(), 1);
69
if
(newBeltTarget >
m_fBeltTarget
)
70
{
71
m_fBeltProgress
+= 1;
72
m_fBeltStartPoint
=
m_fBeltProgress
;
73
}
74
75
m_fBeltTarget
= newBeltTarget;
76
}
77
78
//------------------------------------------------------------------------------------------------
80
void
Update
(
float
timeSlice)
81
{
82
auto
prefabData =
SCR_AnimatedBeltComponentClass
.Cast(
GetComponentData
(
GetOwner
()));
83
84
m_fBeltProgress
-= timeSlice * prefabData.GetUVBulletCountPerMinuteInvRPM();
85
if
(
m_fBeltProgress
<
m_fBeltTarget
)
86
{
87
m_fBeltProgress
=
m_fBeltTarget
;
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
{
97
DisconnectSystem
();
98
RemoveCharacterInvokers
(occupant);
99
}
100
101
//------------------------------------------------------------------------------------------------
103
override
void
OnDelete
(
IEntity
owner)
104
{
105
DisconnectSystem
();
106
RemoveTurretInvokers
(owner);
107
RemoveCharacterInvokers
(owner);
108
}
109
110
//------------------------------------------------------------------------------------------------
111
void
DisconnectSystem
()
112
{
113
if
(!
s_system
)
114
return
;
115
116
s_system
.Unregister(
this
);
117
}
118
119
//------------------------------------------------------------------------------------------------
120
void
SetBeltSystemIdx
(
int
index
)
121
{
122
m_iBeltSystemIdx
=
index
;
123
}
124
125
//------------------------------------------------------------------------------------------------
126
int
GetBeltSystemIdx
()
127
{
128
return
m_iBeltSystemIdx
;
129
}
130
131
//------------------------------------------------------------------------------------------------
132
void
RemoveTurretInvokers
(
IEntity
owner)
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
//------------------------------------------------------------------------------------------------
147
void
RemoveCharacterInvokers
(
IEntity
owner)
148
{
149
EventHandlerManagerComponent gunnerEventHandler = EventHandlerManagerComponent.Cast(owner.
FindComponent
(EventHandlerManagerComponent));
150
if
(gunnerEventHandler)
151
gunnerEventHandler.RemoveScriptHandler(
"OnProjectileShot"
,
this
,
OnProjectileShot
);
152
}
153
}
OnCompartmentEntered
void OnCompartmentEntered(AIAgent agent, IEntity targetEntity, BaseCompartmentManagerComponent manager, int mgrID, int slotID, bool move)
Definition
SCR_AIUtilityComponent.c:428
OnCompartmentLeft
void OnCompartmentLeft(AIAgent agent, IEntity targetEntity, BaseCompartmentManagerComponent manager, int mgrID, int slotID, bool move)
Definition
SCR_AIUtilityComponent.c:442
m_iBeltSystemIdx
int m_iBeltSystemIdx
Definition
SCR_AnimatedBeltComponent.c:29
s_system
SCR_AnimatedBeltComponentClass s_system
m_fBeltStartPoint
float m_fBeltStartPoint
Definition
SCR_AnimatedBeltComponent.c:28
m_fBeltTarget
float m_fBeltTarget
Definition
SCR_AnimatedBeltComponent.c:27
OnProjectileShot
void OnProjectileShot(int playerID, BaseWeaponComponent weapon, IEntity entity)
Start the UV shifting.
Definition
SCR_AnimatedBeltComponent.c:61
DisconnectSystem
void DisconnectSystem()
Definition
SCR_AnimatedBeltComponent.c:111
m_fBeltProgress
float m_fBeltProgress
Definition
SCR_AnimatedBeltComponent.c:26
RemoveTurretInvokers
void RemoveTurretInvokers(IEntity owner)
Definition
SCR_AnimatedBeltComponent.c:132
GetBeltSystemIdx
int GetBeltSystemIdx()
Definition
SCR_AnimatedBeltComponent.c:126
SetBeltSystemIdx
void SetBeltSystemIdx(int index)
Definition
SCR_AnimatedBeltComponent.c:120
RemoveCharacterInvokers
void RemoveCharacterInvokers(IEntity owner)
Definition
SCR_AnimatedBeltComponent.c:147
GetComponentData
SCR_CharacterSoundComponentClass GetComponentData()
Definition
SCR_CharacterSoundComponent.c:132
index
SCR_DestructionSynchronizationComponentClass ScriptComponentClass int index
Definition
SCR_DestructionSynchronizationComponent.c:17
desc
UI Textures DeployMenu Briefing conflict_HintBanner_1_UI desc
Definition
SCR_RespawnBriefingComponent.c:17
params
category params
Definition
SCR_SpherePointGeneratorPreviewComponent.c:21
category
params category
Definition
SCR_VehicleDamageManagerComponent.c:302
BaseCompartmentManagerComponent
Definition
BaseCompartmentManagerComponent.c:13
BaseWeaponComponent
Definition
BaseWeaponComponent.c:13
IEntityComponentSource
Definition
IEntityComponentSource.c:13
IEntity
Definition
IEntity.c:13
IEntity::FindComponent
proto external Managed FindComponent(typename typeName)
IEntity::GetWorld
proto external BaseWorld GetWorld()
IEntity::GetParent
proto external IEntity GetParent()
IEntitySource
Definition
IEntitySource.c:13
Math
Definition
Math.c:13
SCR_AnimatedBeltComponentClass
Definition
SCR_AnimatedBeltComponent.c:2
SCR_AnimatedBeltComponentClass::m_iRoundsPerMinute
int m_iRoundsPerMinute
Definition
SCR_AnimatedBeltComponent.c:7
SCR_AnimatedBeltComponentClass::m_iUVBulletCount
int m_iUVBulletCount
Definition
SCR_AnimatedBeltComponent.c:4
SCR_AnimatedBeltSystem
Definition
SCR_AnimatedBeltSystem.c:6
ScriptComponentClass
Definition
ScriptComponentClass.c:8
ScriptComponent
Definition
ScriptComponent.c:24
ScriptComponent::GetOwner
proto external GenericEntity GetOwner()
Get owner entity.
ScriptComponent::OnAddedToParent
void OnAddedToParent(IEntity child, IEntity parent)
Called on child entity when it is added into hierarchy.
UIWidgets
Definition
attributes.c:40
World
Definition
World.c:16
Attribute
SCR_FieldOfViewSettings Attribute
Definition
SendGoalMessage.c:170
Update
@ Update
Definition
SndComponentCallbacks.c:14
OnDelete
@ OnDelete
Definition
SndComponentCallbacks.c:16
scripts
Game
Weapon
SCR_AnimatedBeltComponent.c
Generated by
1.17.0