DayZ 1.30
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
UndergroundTrigger.c
См. документацию.
1
4{
6 UndergroundTrigger m_Trigger;
7
9 {
10 RegisterNetSyncVariableInt("m_TriggerIndex", -1, 4095); // beware of limit and max number of triggers in cfgundergroundtrigger.json file
11 RegisterNetSyncVariableInt("m_ParentObjectNetIdLow");
12 RegisterNetSyncVariableInt("m_ParentObjectNetIdHigh");
13 }
14
16 {
17 if (m_Trigger && !m_Trigger.IsSetForDeletion() && g_Game)
18 {
19 m_Trigger.Delete();
20 }
21 }
22
24 {
25 super.OnVariablesSynchronized();
26
27 if (g_Game.IsMultiplayer())
29
30 if (!m_Trigger)
32 }
33
35 {
37 }
38
40 {
41 g_Game.GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(SpawnTrigger, 100);
42 }
43
45 {
46 if (!CanSpawnTrigger())
47 {
49 return;
50 }
51
53 {
55 UndergroundTrigger trigger = UndergroundTrigger.Cast(g_Game.CreateObjectEx("UndergroundTrigger", GetPosition(), ECE_LOCAL));
56 if (trigger)
57 {
58 #ifdef DIAG_DEVELOPER
59 trigger.m_Local = true;
60 #endif
61 trigger.SetPosition(vector.Zero);
62 AddChild(trigger, -1);
63 trigger.Init(data);
64 trigger.SetTriggerParentObject(m_ParentObject);
65
66 m_Trigger = trigger;
67 }
68 }
69 }
70}
71
72enum EUndergroundTriggerType
73{
77 INNER
78}
79
80class UndergroundTrigger : ManTrigger
81{
83
84 EUndergroundTriggerType m_Type;
87
89
91 {
92 m_Data = data;
93 //Print("Spawning trigger " + this + "at pos: " + GetPosition());
94 vector extMax = data.GetSize() * 0.5;
95 vector extMin = -extMax;
96 SetExtents(extMin, extMax);
99
100 if (data.Breadcrumbs && data.Breadcrumbs.Count() > 0) //TODO: simpler check
101 {
102 if (data.Breadcrumbs.Count() > 32)
103 {
104 ErrorEx("max 'Breadcrumb' count is 32, found: " + data.Breadcrumbs.Count());
105 }
106 m_Type = EUndergroundTriggerType.TRANSITIONING;
107 }
108 else
109 {
110 if (m_Accommodation == 1.0)
111 {
112 m_Type = EUndergroundTriggerType.OUTER;
113 }
114 else
115 {
116 m_Type = EUndergroundTriggerType.INNER;
117 }
118 }
119 }
120
123 {
124 m_ParentObject = parent;
125 }
126
131
132 override protected bool CanAddObjectAsInsider(Object object)
133 {
134 if (!super.CanAddObjectAsInsider(object))
135 {
136 return false;
137 }
138
139 return ManBase.Cast(object).IsControlledPlayer();
140 }
141
142
143 override void EOnInit(IEntity other, int extra)
144 {
145 //disable parent behaviour
146 }
147
148 #ifdef DEVELOPER
149 override protected void OnEnterServerEvent(TriggerInsider insider)
150 {
151 #ifndef SERVER//to make it work in single during development
152 OnEnterClientEvent(insider);
153 #endif
154 }
155
156 override protected void OnLeaveServerEvent(TriggerInsider insider)
157 {
158 #ifndef SERVER//to make it work in single during development
159 OnLeaveClientEvent(insider);
160 #endif
161 }
162 #endif
163
164 override protected void OnEnterClientEvent(TriggerInsider insider)
165 {
166 PlayerBase player = PlayerBase.Cast(insider.GetObject());
167 if (player)
168 {
169 UndergroundHandlerClient handler = player.GetUndergroundHandler();
170 if (handler)
171 {
172 handler.OnTriggerEnter(this);
173 }
174 }
175 }
176
177 override protected void OnLeaveClientEvent(TriggerInsider insider)
178 {
179 PlayerBase player = PlayerBase.Cast(insider.GetObject());
180 if (player)
181 {
182 UndergroundHandlerClient handler = player.GetUndergroundHandler();
183 if (handler)
184 {
185 handler.OnTriggerLeave(this);
186 }
187 }
188 }
189
191 {
193
194 if (m_Type == EUndergroundTriggerType.OUTER)
195 presence = EUndergroundPresence.OUTER;
196 else if (m_Type == EUndergroundTriggerType.TRANSITIONING)
197 presence = EUndergroundPresence.TRANSITIONING;
198 else if (m_Type == EUndergroundTriggerType.INNER)
199 presence = EUndergroundPresence.FULL;
200
201 return presence;
202 }
203}
eBleedingSourceType m_Type
void SetExtents(vector mins, vector maxs)
Определения AreaDamageManager.c:233
override void OnLeaveClientEvent(TriggerInsider insider)
Определения AreaDamageManager.c:183
override void OnLeaveServerEvent(TriggerInsider insider)
Определения AreaDamageManager.c:179
override void OnEnterServerEvent(TriggerInsider insider)
Определения AreaDamageManager.c:107
override void OnEnterClientEvent(TriggerInsider insider)
Определения AreaDamageManager.c:111
const int ECE_LOCAL
Определения CentralEconomy.c:25
DayZGame g_Game
Определения DayZGame.c:4074
class DayZProfilesOptions UNDEFINED
override Widget Init()
Определения DayZGame.c:127
Object m_ParentObject
Cached parent.
Определения Effect.c:39
override void EOnInit(IEntity other, int extra)
Определения TestFramework.c:235
bool CanAddObjectAsInsider(Object object)
Определения TrapTrigger.c:93
void UndergroundHandlerClient(PlayerBase player)
Определения UndergroundHandlerClient.c:37
EUndergroundPresence
Определения UndergroundHandlerClient.c:2
@ TRANSITIONING
Определения UndergroundHandlerClient.c:5
@ OUTER
Определения UndergroundHandlerClient.c:4
void SetTriggerParentObject(Object parent)
sets parent "virtual" parent object that trigger is registered to, eg. building
Определения UndergroundTrigger.c:122
Object GetTriggerParentObject()
Определения UndergroundTrigger.c:127
float m_Accommodation
Определения UndergroundTrigger.c:85
EUndergroundPresence TranslateTriggerTypeToPresence()
Определения UndergroundTrigger.c:190
UndergroundTriggerCarrier m_Data
float m_InterpolationSpeed
Определения UndergroundTrigger.c:86
Определения EnEntity.c:165
ref array< ref JsonUndergroundAreaBreadcrumb > Breadcrumbs
Определения UndergroundAreaLoader.c:85
ref array< ref JsonUndergroundAreaTriggerData > Triggers
Определения UndergroundAreaLoader.c:3
Определения PlayerBase.c:50
Trigger only accepting Object which IsMan()
Определения ManTrigger.c:3
Определения ObjectTyped.c:2
Определения PlayerBaseClient.c:2
Object GetObject()
Определения Trigger.c:28
The object which is in a trigger and its metadata.
Определения Trigger.c:3
static ref JsonUndergroundTriggers m_JsonData
Определения UndergroundAreaLoader.c:107
bool CanSpawnTrigger()
Определения UndergroundTrigger.c:34
void UndergroundTriggerCarrier()
Определения UndergroundTrigger.c:8
void RequestDelayedTriggerSpawn()
Определения UndergroundTrigger.c:39
override void OnVariablesSynchronized()
Определения UndergroundTrigger.c:23
UndergroundTrigger m_Trigger
Определения UndergroundTrigger.c:6
void SpawnTrigger()
Определения UndergroundTrigger.c:44
void ~UndergroundTriggerCarrier()
Определения UndergroundTrigger.c:15
ref JsonUndergroundAreaTriggerData m_Data
Определения UndergroundTrigger.c:5
static const vector Zero
Определения EnConvert.c:123
Определения EnConvert.c:119
enum ShapeType ErrorEx
vector GetPosition()
Get the world position of the Effect.
Определения Effect.c:473
const int CALL_CATEGORY_SYSTEM
Определения 3_Game/DayZ/tools/tools.c:8
proto native void AddChild(Widget child, bool immedUpdate=true)