DayZ 1.29
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено
UndergroundTrigger.c
См. документацию.
1
4{
6 UndergroundTrigger m_Trigger;
7
9 {
10 RegisterNetSyncVariableInt("m_TriggerIndex", -1, 255);
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 override protected void OnLeaveServerEvent(TriggerInsider insider)
156 {
157 #ifndef SERVER//to make it work in single during development
158 OnLeaveClientEvent(insider);
159 #endif
160 }
161 #endif
162
163 override protected void OnEnterClientEvent(TriggerInsider insider)
164 {
165 PlayerBase player = PlayerBase.Cast(insider.GetObject());
166 if (player)
167 {
168 UndergroundHandlerClient handler = player.GetUndergroundHandler();
169 if (handler)
170 {
171 handler.OnTriggerEnter(this);
172 }
173 }
174 }
175
176 override protected void OnLeaveClientEvent(TriggerInsider insider)
177 {
178 PlayerBase player = PlayerBase.Cast(insider.GetObject());
179 if (player)
180 {
181 UndergroundHandlerClient handler = player.GetUndergroundHandler();
182 if (handler)
183 {
184 handler.OnTriggerLeave(this);
185 }
186 }
187 }
188
189};
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:24
DayZGame g_Game
Определения DayZGame.c:3942
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
@ 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
float m_InterpolationSpeed
Определения UndergroundTrigger.c:86
string m_Data
Определения UniversalTemperatureSource.c:267
Определения EnEntity.c:165
ref array< ref JsonUndergroundAreaBreadcrumb > Breadcrumbs
Определения UndergroundAreaLoader.c:97
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:106
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)