DayZ 1.27
DayZ Explorer by KGB
 
Загрузка...
Поиск...
Не найдено

◆ UpdateInsiders() [2/2]

void Trigger::UpdateInsiders ( int timeout)
inlineprotected

Update the current TriggerInsider inside the Trigger, timeout paramter is deprecated.

См. определение в файле Trigger.c строка 297

298 {
299 #ifdef DIAG_DEVELOPER
300 DebugSendDmgTrigger();
301 #endif
302
303 // Don't do anything if there aren't any insiders
304 if ( m_insiders.Count() == 0 )
305 return;
306
307 // Mark the beginning of the update loop
308 StayStart(m_insiders.Count());
309
310 // Iterate over the current insiders, backwards because we are deleting
311 for ( int n = m_insiders.Count() - 1; n >= 0 ; --n)
312 {
313 TriggerInsider insider = m_insiders.Get(n);
314 Object obj = insider.GetObject();
315
316 // Check if the Object still exists or should be removed without calling OnLeaveEvent
317 if ( !obj || ShouldRemoveInsiderNoLeave(insider) )
318 {
319 #ifdef TRIGGER_DEBUG_BASIC
320 Debug.TriggerLog(string.Format("%1: removed with no Leave.", GetDebugName(obj)), "Trigger", "", "UpdateInsiders", GetDebugName(this));
321 #endif
322
323 m_insiders.Remove(n);
324 continue;
325 }
326
327 // Check if Object left the Trigger or should be removed regardless
328 if ( ShouldRemoveInsider(insider) )
329 {
330 RemoveInsider(insider, n);
331 continue;
332 }
333
334 // Call the OnStayEvent, Object is still inside the Trigger and can be updated
335 // Pass in the time since the Object was last updated (or entered)
336 float currentTime = g_Game.GetTickTime();
337 Stay(insider, currentTime - insider.lastUpdated);
338 insider.lastUpdated = currentTime;
339 }
340
341 // Mark the end of the update loop
342 StayFinish();
343 }
DayZGame g_Game
Определения DayZGame.c:3868
void Debug()
Определения UniversalTemperatureSource.c:349
void RemoveInsider(TriggerInsider insider, int index=-1)
Removing of TriggerInsider.
Определения Trigger.c:263
bool ShouldRemoveInsider(TriggerInsider insider)
Condition whether a TriggerInsider should still be updated or not (checked in update loop and before ...
Определения Trigger.c:204
ref array< ref TriggerInsider > m_insiders
The objects and their metadata which are currently inside the Trigger.
Определения Trigger.c:44
bool ShouldRemoveInsiderNoLeave(TriggerInsider insider)
Condition whether a TriggerInsider should still be updated or not, skips OnLeaveEvent (checked in upd...
Определения Trigger.c:210
void StayStart(int nrOfInsiders)
Определения TriggerEvents.c:54
void StayFinish()
Определения TriggerEvents.c:104
void Stay(TriggerInsider insider, float deltaTime)
Определения TriggerEvents.c:79
float lastUpdated
Last time the object was updated in seconds, is used for calculating deltaTime.
Определения Trigger.c:16
Object GetObject()
Определения Trigger.c:28
override string GetDebugName()
Определения dayzplayer.c:1170
class LOD Object

Перекрестные ссылки g_Game, GetDebugName(), TriggerInsider::GetObject(), TriggerInsider::lastUpdated, m_insiders, RemoveInsider(), ShouldRemoveInsider(), ShouldRemoveInsiderNoLeave(), TriggerEvents::Stay(), TriggerEvents::StayFinish(), TriggerEvents::StayStart() и Debug::TriggerLog().