- Home /
UnityOSC and timer
Hi, I'm using UnityOSC and I'm trying to implement a timer so that, whenever a new message is received, there's a couple of seconds of delay before sending a new message. I think I missed something on the logical side because the timer is not working. The application displays a primitive shape based on the value received. The OSC is working, just the OSC message is not waiting for the timer. Thanks!
How it works:
- Check the received OSC message and its value 
- If different from the previous one, destroy the old shape and create a new one 
- If timer has expired, send a new OSC message 
 using System.Collections;
 using System.Collections.Generic;
 using UnityEngine;
 using UnityOSC;
 using System.Net;
 
 public class ScreenR : MonoBehaviour
 {
 
     public KinectController kinect;
     public OSCController oscController;
     private GameObject shape;
     //time to wait
     public float waitTime = 100f;
     private float timer;
     public string outIP = "127.0.0.1";
     public int outPort = 9999;
 
     // current shape (1 cube, 2 sphere, 3 capsule)
     private int index;
 
     public int Index
     {
         get { return index; }
         set { index = value; }
     }
 
     void Start()
     {
         //initial index
         index = 1;
         // initial shape
         shape = GameObject.CreatePrimitive(PrimitiveType.Cube);
         //send the first message
         oscController.sendOsc(index);
 
         GetComponent<Renderer>().material.color = Color.black;
     }
 
     void Update()
     {
         //print("TIMER: " + timer);
 
         // check the received osc message
         // depending on its value, destroy the old shape
         // create a new shape
         // if timer expired, send a new osc message
 
         if (oscController.ReceivedVal == 1)
         {
             if (shape.name != "Cube") {
                 Destroy(shape);
                 shape = GameObject.CreatePrimitive(PrimitiveType.Cube);
             }
             timer += Time.deltaTime;
             if (timer > waitTime)
             {
                 index = 3;
                 oscController.sendOsc(index); //send new osc message
                 timer = 0f; //reset timer
             }
         }
         else if (oscController.ReceivedVal == 2)
         {
             if (shape.name != "Sphere")
             {
                 Destroy(shape);
                 shape = GameObject.CreatePrimitive(PrimitiveType.Sphere);
             }
             timer += Time.deltaTime;
             if (timer > waitTime)
             {
                 index = 1;
                 oscController.sendOsc(index); //send new osc message
                 timer = 0f; //reset timer
             }
         }
         else if (oscController.ReceivedVal == 3)
         {
             if (shape.name != "Capsule")
             {
                 Destroy(shape);
                 shape = GameObject.CreatePrimitive(PrimitiveType.Capsule);
             }
             timer += Time.deltaTime;
             if (timer > waitTime)
             {
                 index = 2;
                 oscController.sendOsc(index); //send new osc message
                 timer = 0f; //reset timer
             }
         }
         else
             print("ZERO: " + oscController.ReceivedVal);
     }
 
 }
Your answer
 
 
             Follow this Question
Related Questions
How to make reverse countdown timer in unity? 1 Answer
Stop and Pause Timer 2 Answers
timer not ticking down 2 Answers
How do I make the timeScale not affect the timer? 1 Answer
Trying to make a timer work.. 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                