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; } } }
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; } }