Tick() public méthode

public Tick ( StoryInstance instance, long delta ) : void
instance StoryInstance
delta long
Résultat void
 public void Tick(long curTime)
 {
     if (m_IsPaused)
     {
         m_LastTickTime = curTime;
         return;
     }
     try {
         m_IsInTick = true;
         const int c_MaxMsgCountPerTick = 256;
         long      delta = 0;
         if (m_LastTickTime == 0)
         {
             m_LastTickTime = curTime;
         }
         else
         {
             delta          = curTime - m_LastTickTime;
             m_LastTickTime = curTime;
             m_CurTime     += delta;
         }
         int ct = m_MessageHandlers.Count;
         for (int ix = ct - 1; ix >= 0; --ix)
         {
             long dt = delta;
             StoryMessageHandler handler = m_MessageHandlers[ix];
             if (handler.IsTriggered)
             {
                 handler.Tick(this, dt);
                 dt = 0;
             }
             if (!handler.IsTriggered)
             {
                 string msgId = handler.MessageId;
                 Queue <MessageInfo> queue;
                 if (m_MessageQueues.TryGetValue(msgId, out queue))
                 {
                     for (int msgCt = 0; msgCt < c_MaxMsgCountPerTick && queue.Count > 0 && !handler.IsTriggered; ++msgCt)
                     {
                         MessageInfo info = queue.Dequeue();
                         UpdateMessageTriggerTime(info.m_MsgId, curTime);
                         handler.Trigger(this, info.m_Args);
                         handler.Tick(this, dt);
                         dt = 0;
                     }
                 }
             }
         }
     } finally {
         m_IsInTick = false;
     }
 }
Exemple #2
0
 static public int Tick(IntPtr l)
 {
     try {
         StorySystem.StoryMessageHandler self = (StorySystem.StoryMessageHandler)checkSelf(l);
         StorySystem.StoryInstance       a1;
         checkType(l, 2, out a1);
         System.Int64 a2;
         checkType(l, 3, out a2);
         self.Tick(a1, a2);
         pushValue(l, true);
         return(1);
     }
     catch (Exception e) {
         return(error(l, e));
     }
 }
 public void Tick(long curTime)
 {
     if (m_IsPaused)
     {
         m_LastTickTime = curTime;
         return;
     }
     try {
         m_IsInTick = true;
         const int c_MaxMsgCountPerTick           = 256;
         const int c_MaxConcurrentMsgCountPerTick = 256;
         long      delta = 0;
         if (m_LastTickTime == 0)
         {
             m_LastTickTime = curTime;
         }
         else
         {
             delta          = curTime - m_LastTickTime;
             m_LastTickTime = curTime;
             m_CurTime     += delta;
         }
         int ct = m_MessageHandlers.Count;
         for (int ix = ct - 1; ix >= 0; --ix)
         {
             long dt = delta;
             StoryMessageHandler handler = m_MessageHandlers[ix];
             if (handler.IsTriggered)
             {
                 handler.Tick(this, dt);
                 dt = 0;
             }
             if (!handler.IsTriggered)
             {
                 string msgId = handler.MessageId;
                 Queue <MessageInfo> queue;
                 if (m_MessageQueues.TryGetValue(msgId, out queue))
                 {
                     for (int msgCt = 0; msgCt < c_MaxMsgCountPerTick && queue.Count > 0 && !handler.IsTriggered; ++msgCt)
                     {
                         MessageInfo info = queue.Dequeue();
                         UpdateMessageTriggerTime(info.m_MsgId, curTime);
                         handler.Trigger(this, info.m_Args);
                         handler.Tick(this, dt);
                         dt = 0;
                     }
                 }
             }
         }
         ct = m_ConcurrentMessageHandlers.Count;
         int concurrentMsgCt = 0;
         foreach (var pair in m_ConcurrentMessageQueues)
         {
             Queue <MessageInfo> queue = pair.Value;
             if (concurrentMsgCt < c_MaxConcurrentMsgCountPerTick && queue.Count > 0)
             {
                 MessageInfo         info    = queue.Dequeue();
                 StoryMessageHandler handler = NewConcurrentMessageHandler(info.m_MsgId);
                 if (null != handler)
                 {
                     UpdateMessageTriggerTime(info.m_MsgId, curTime);
                     handler.Trigger(this, info.m_Args);
                     handler.Tick(this, 0);
                     if (handler.IsTriggered)
                     {
                         m_ConcurrentMessageHandlers.Add(handler);
                     }
                     else
                     {
                         RecycleConcurrentMessageHandler(handler);
                     }
                 }
             }
         }
         for (int ix = ct - 1; ix >= 0; --ix)
         {
             long dt = delta;
             StoryMessageHandler handler = m_ConcurrentMessageHandlers[ix];
             if (handler.IsTriggered)
             {
                 handler.Tick(this, dt);
                 dt = 0;
             }
             if (!handler.IsTriggered)
             {
                 m_ConcurrentMessageHandlers.RemoveAt(ix);
                 RecycleConcurrentMessageHandler(handler);
             }
         }
     } finally {
         m_IsInTick = false;
     }
 }