Dayz
Build 1.29.163047, Scripts Rev. 123548
Dayz Code Explorer by Zeroy
Toggle main menu visibility
Loading...
Searching...
No Matches
areadamagetrigger.c
Go to the documentation of this file.
1
// DEPRECATED: Left for backwards compatibility with mods
2
// This file is NOT AN EXAMPLE of how to use triggers
3
// As overriding UpdateInsiders should ideally no longer be done
4
// Look at "AreaDamageTriggerBase.c" instead and use that as base
5
class
AreaDamageTrigger
extends
AreaDamageTriggerBase
6
{
7
protected
ref
AreaDamageBase
m_AreaDamageType
;
8
9
protected
vector
m_ExtentMin
;
10
protected
vector
m_ExtentMax
;
11
protected
float
m_InnerDistance
;
12
13
protected
int
m_TriggerUpdateMs
;
14
15
void
AreaDamageTrigger
()
16
{
17
// Backwards compat, revert the flags back to what they used to be
18
ClearEventMask(
EntityEvent
.ENTER |
EntityEvent
.LEAVE);
19
SetEventMask(
EntityEvent
.TOUCH);
20
21
m_AreaDamageType
= null;
22
23
m_ExtentMin
=
vector
.
Zero
;
24
m_ExtentMax
=
vector
.
Zero
;
25
m_InnerDistance
= 0;
26
27
m_TriggerUpdateMs
= 100;
28
}
29
30
// Backwards compat
31
override
void
EOnTouch
(
IEntity
other,
int
extra)
32
{
33
Object
obj;
34
if
(
Class
.
CastTo
(obj, other))
35
AddInsider
(obj);
36
}
37
38
override
void
SetExtents
(
vector
mins,
vector
maxs )
39
{
40
m_ExtentMax
= maxs;
41
m_ExtentMin
= mins;
42
43
m_InnerDistance
= (
GetRadius
(
m_ExtentMin
,
m_ExtentMax
) * 0.5) + 0.2;
44
45
super.SetExtents(mins, maxs);
46
}
47
48
override
void
SetAreaDamageManager
(
AreaDamageManager
adType )
49
{
50
super.SetAreaDamageManager( adType );
51
52
m_AreaDamageType
=
AreaDamageBase
.Cast(adType);
53
}
54
55
void
SetAreaDamageType
(
AreaDamageBase
adType )
56
{
57
super.SetAreaDamageManager( adType );
58
59
m_AreaDamageType
= adType;
60
}
61
62
override
void
OnEnter
(
Object
obj )
63
{
64
super.OnEnter( obj );
65
66
if
(
g_Game
.IsServer() &&
m_AreaDamageType
)
67
m_AreaDamageType
.OnEnter( obj );
68
}
69
70
override
void
OnLeave
(
Object
obj )
71
{
72
super.OnLeave( obj );
73
74
if
(
g_Game
.IsServer() &&
m_AreaDamageType
)
75
m_AreaDamageType
.OnLeave( obj );
76
}
77
78
override
protected
void
UpdateInsiders
(
int
timeout)
79
{
80
if
(
g_Game
.IsServer() )
81
{
82
for
(
int
n = 0; n < m_insiders.Count(); )
83
{
84
TriggerInsider
ins = m_insiders.Get(n);
85
if
( ins.
GetObject
() == null )
86
{
87
//object has been deleted. Remove it
88
m_insiders.Remove(n);
89
continue
;
90
}
91
92
Object
insObj = ins.
GetObject
();
93
if
( insObj && ( !insObj.IsAlive() ||
vector
.
DistanceSq
(insObj.GetPosition(),
GetPosition
()) > (
m_InnerDistance
*
m_InnerDistance
) ) )
94
{
95
int
timeDiff =
g_Game
.GetTime() - ins.
timeStamp
;
96
if
(timeDiff > 500)
97
{
98
//object left. Remove it
99
OnLeave
(ins.
GetObject
());
100
m_insiders.Remove(n);
101
102
continue
;
103
}
104
else
105
{
106
//Print("" + this + " :: " + insObj + " :: " + timeDiff);
107
}
108
}
109
110
++n;
111
}
112
114
#ifdef DEVELOPER
115
DebugSendDmgTrigger();
116
#endif
117
}
118
}
119
}
AreaDamageManager
void AreaDamageManager(EntityAI parent)
Definition
areadamagemanager.c:22
AddInsider
void AddInsider(Object obj)
Adding of new TriggerInsider.
Definition
areadamagetriggerbase.c:224
AreaDamageBase
Definition
areadamage.c:4
AreaDamageTriggerBase
Definition
areadamagetriggerdirect.c:2
AreaDamageTriggerBase::SetAreaDamageManager
override void SetAreaDamageManager(AreaDamageManager adType)
Definition
areadamagetrigger.c:48
AreaDamageTriggerBase::m_ExtentMin
vector m_ExtentMin
Definition
areadamagetrigger.c:9
AreaDamageTriggerBase::m_ExtentMax
vector m_ExtentMax
Definition
areadamagetrigger.c:10
AreaDamageTriggerBase::UpdateInsiders
void UpdateInsiders(int timeout)
Definition
areadamagetrigger.c:78
AreaDamageTriggerBase::EOnTouch
override void EOnTouch(IEntity other, int extra)
Definition
areadamagetrigger.c:31
AreaDamageTriggerBase::SetExtents
override void SetExtents(vector mins, vector maxs)
Definition
areadamagetrigger.c:38
AreaDamageTriggerBase::m_AreaDamageType
ref AreaDamageBase m_AreaDamageType
Definition
areadamagetrigger.c:7
AreaDamageTriggerBase::m_TriggerUpdateMs
int m_TriggerUpdateMs
Definition
areadamagetrigger.c:13
AreaDamageTriggerBase::SetAreaDamageType
void SetAreaDamageType(AreaDamageBase adType)
Definition
areadamagetrigger.c:55
AreaDamageTriggerBase::OnEnter
override void OnEnter(Object obj)
Definition
areadamagetrigger.c:62
AreaDamageTriggerBase::OnLeave
override void OnLeave(Object obj)
Definition
areadamagetrigger.c:70
AreaDamageTriggerBase::AreaDamageTrigger
void AreaDamageTrigger()
Definition
areadamagetrigger.c:15
AreaDamageTriggerBase::m_InnerDistance
float m_InnerDistance
Definition
areadamagetrigger.c:11
Class
Super root of all classes in Enforce script.
Definition
enscript.c:11
IEntity
Internal ancestor of all Entity implementations.
Definition
enentity.c:165
Object
Definition
objecttyped.c:2
TriggerInsider
The object which is in a trigger and its metadata.
Definition
trigger.c:3
TriggerInsider::timeStamp
int timeStamp
Last time the object was seen in ms.
Definition
trigger.c:10
TriggerInsider::GetObject
Object GetObject()
Definition
trigger.c:28
vector
Definition
enconvert.c:119
vector::Zero
static const vector Zero
Definition
enconvert.c:123
vector::DistanceSq
static proto native float DistanceSq(vector v1, vector v2)
Returns the square distance between tips of two 3D vectors.
g_Game
DayZGame g_Game
Definition
dayzgame.c:3942
Class::CastTo
static proto bool CastTo(out Class to, Class from)
Try to safely down-cast base class to child class.
EntityEvent
EntityEvent
Entity events for event-mask, or throwing event from code.
Definition
enentity.c:45
GetPosition
vector GetPosition()
Get the world position of the Effect.
Definition
effect.c:473
GetRadius
float GetRadius()
Definition
radialmenu.c:372
Games
Dayz
scripts
4_world
classes
areadamage
areadamagetrigger.c
Generated by
1.17.0