public void MessageDaisyChain(ref uOSC.Message message, int callCount) { //Startされていない場合無視 if (externalReceiverManager == null || enabled == false || gameObject.activeInHierarchy == false) { return; } if (shutdown) { return; } StatusMessage = "OK"; //異常を検出して動作停止 try { ProcessMessage(ref message); } catch (Exception e) { StatusMessage = "Error: Exception"; Debug.LogError(" --- Communication Error ---"); Debug.LogError(e.ToString()); shutdown = true; return; } if (!externalReceiverManager.SendNextReceivers(message, callCount)) { StatusMessage = "Infinite loop detected!"; shutdown = true; } }
//デイジーチェーン処理 public void MessageDaisyChain(ref uOSC.Message message, int callCount) { //Startされていない場合無視 if (externalReceiverManager == null || enabled == false || gameObject.activeInHierarchy == false) { return; } //エラー・無限ループ時は処理をしない if (shutdown) { return; } //パケットリミッターが有効な場合、一定以上のパケットフレーム/フレーム数を観測した場合、次のフレームまでパケットを捨てる if (PacktLimiter && (LastPacketframeCounterInFrame > PACKET_LIMIT_MAX)) { DropPackets++; return; } //メッセージを処理 if (!Freeze) { //異常を検出して動作停止 try { ProcessMessage(ref message); } catch (Exception e) { StatusMessage = "Error: Exception"; Debug.LogError(" --- Communication Error ---"); Debug.LogError(e.ToString()); shutdown = true; return; } } //次のデイジーチェーンへ伝える if (!externalReceiverManager.SendNextReceivers(message, callCount)) { //無限ループ対策 StatusMessage = "Infinite loop detected!"; //以降の処理を全部停止 shutdown = true; } }
public void MessageDaisyChain(ref uOSC.Message message, int callCount) { //Startされていない場合無視 if (externalReceiverManager == null || enabled == false || gameObject.activeInHierarchy == false) { return; } if (shutdown) { return; } StatusMessage = "OK"; ProcessMessage(ref message); if (!externalReceiverManager.SendNextReceivers(message, callCount)) { StatusMessage = "Infinite loop detected!"; shutdown = true; } }