示例#1
0
    void ReadOSC()
    {
        OSCHandler.Instance.UpdateLogs();

          Dictionary<string, ServerLog> servers = new Dictionary<string, ServerLog>();
          servers = OSCHandler.Instance.Servers;
          foreach( KeyValuePair<string, ServerLog> item in servers )
          {
         // If we have received at least one packet,
         // show the last received from the log in the Debug console
         if(item.Value.log.Count > 0)
         {
            foreach (UnityOSC.OSCPacket packet in item.Value.packets)
            {
               if (packet.TimeStamp <= mLastPacketTimestamp)
                  continue;

               Debug.Log("Receive OSC: " + packet.Address);

               if (packet.Address == "/pong")
               {
                  NoMaxMode = false;
               }

               List<OSCReceiver> toRemove = new List<OSCReceiver>();;
               foreach (OSCReceiver currEvent in mScheduledEvents)
               {
                  if (currEvent.mResponseAddress == packet.Address)
                  {
                     toRemove.Add(currEvent);
                     OSCCallbackData data = new OSCCallbackData();
                     data.Data = packet.Data;
                     data.Address = packet.Address;
                     currEvent.mCallback(data);
                     break;
                  }
               }

               foreach (OSCReceiver remove in toRemove)
                  mScheduledEvents.Remove(remove);

               foreach (OSCReceiver persistent in mPersistent)
               {
                  if (persistent.mResponseAddress == packet.Address)
                  {
                     OSCCallbackData data = new OSCCallbackData();
                     data.Data = packet.Data;
                     data.Address = packet.Address;
                     persistent.mCallback(data);
                  }
               }

               foreach (OSCReceiver listener in mListeners)
               {
                  if (listener.mResponseAddress == packet.Address)
                  {
                     OSCCallbackData data = new OSCCallbackData();
                     data.Data = packet.Data;
                     data.Address = packet.Address;
                     listener.mCallback(data);
                  }
               }
            }

            mLastPacketTimestamp = item.Value.packets[item.Value.packets.Count-1].TimeStamp;
         }
          }
    }
示例#2
0
    void HandleNoMax()
    {
        foreach (OSCReceiver scheduled in mScheduledEvents)
          {
         if (scheduled.mValue != 0)
         {
            OSCCallbackData empty = new OSCCallbackData();
            scheduled.mCallback(empty);
         }
          }
          mScheduledEvents.Clear();

          noMaxEventTimer += Time.deltaTime;

          if (noMaxEventTimer > noMaxEventDelay)
          {
         foreach (OSCReceiver persistent in mPersistent)
         {
            if (persistent.mValue != 0)
            {
               OSCCallbackData empty = new OSCCallbackData();
               persistent.mCallback(empty);
            }
         }

         noMaxEventTimer = 0f;
          }
    }