public void SendOSCMessage(string address, Vector2 vec2)
 {
     UnityOSC.OSCMessage newMsg = new UnityOSC.OSCMessage(address);
     newMsg.AppendFloat(vec2.x);
     newMsg.AppendFloat(vec2.y);
     SendMessageToAllClients(newMsg);
 }
Example #2
0
    //OSC part

    /*
     *  0: pid (int)                        // Personal ID ex : 42th person to enter stage has pid=42
     *  1: oid (int)                        // Ordered ID ex : if 3 person on stage, 43th person might have oid=2
     *  2: age (int)                        // Time on stage (in frame number)
     *  3: centroid.x (float 0:1)           // Position projected to the ground
     *  4: centroid.y (float 0:1)
     *  5: velocity.x (float -1:1)           // Speed and direction vector
     *  6: velocity.y (float -1:1)
     *  7: depth (float 0:1)                // Distance to sensor (in m) (not implemented)
     *  8: boundingRect.x (float 0:1)       // Top view bounding box
     *  9: boundingRect.y (float 0:1)
     *  10: boundingRect.width (float 0:1)
     *  11: boundingRect.height (float 0:1)
     *  12: highest.x (float 0:1)           // Highest point placement
     *  13: highest.y (float 0:1)
     *  14: highest.z (float 0:1)           // Height of the person
     *
     *  /au/scene   args0 arg1 ... argn
     *
     *  0: currentTime (int)                // Time (in frame number)
     *  1: percentCovered (float 0:1)       // Percent covered
     *  2: numPeople (int)                  // Number of person
     *  3: averageMotion.x (float 0:1)          // Average motion
     *  4: averageMotion.y (float 0:1)
     *  5: scene.width (int)                // Scene size
     *  6: scene.height (int)
     *  7: scene.depth (int)
     */

    public void SendSceneUpdated()
    {
        if (Mute)
        {
            return;
        }

        var msg = new UnityOSC.OSCMessage("/au/scene");

        msg.Append(_frameCounter);
        //Compute point size
        msg.Append(InstanceNumber * PointSize.x * PointSize.y);
        msg.Append(NbPoints);
        //Compute average motion
        var velocitySum = Vector3.zero;

        foreach (var element in InstanciatedPoints)
        {
            velocitySum += -element.Value.GetComponent <PointBehaviour>().NormalizedVelocity;
        }
        velocitySum /= InstanciatedPoints.Count;

        msg.Append(velocitySum.x);
        msg.Append(velocitySum.y);
        msg.Append(Width);
        msg.Append(Height);
        msg.Append(100);

        OSCMaster.Clients["AugmentaSimulatorOutput"].Send(msg);
    }
    void SendMessage()
    {
        UnityOSC.OSCMessage msg = new UnityOSC.OSCMessage(messageAddress);
        msg.Append(Time.time);

        client.Send(msg);
        client.Flush();
        Debug.Log("sent");
    }
Example #4
0
    public void SendAugmentaMessage(string address, GameObject obj)
    {
        if (Mute)
        {
            return;
        }

        var msg             = new UnityOSC.OSCMessage(address);
        var behaviour       = obj.GetComponent <PointBehaviour>();
        var worldToViewPort = Camera.main.WorldToViewportPoint(obj.transform.position);

        worldToViewPort = new Vector3(worldToViewPort.x, Mathf.Abs(worldToViewPort.y - 1), worldToViewPort.z); //Switch from bot-left (0;0) to top-left(0;0)

        msg.Append(behaviour.pid);
        //oid

        if (CursorPoint != null)
        {
            msg.Append(behaviour.pid);
        }
        else
        {
            msg.Append(behaviour.pid - 1);
        }

        msg.Append((int)behaviour.Age);
        //centroid
        msg.Append(worldToViewPort.x);
        msg.Append(worldToViewPort.y);
        //Velocity
        var normalizedVelocity = behaviour.NormalizedVelocity;

        msg.Append(-normalizedVelocity.x);
        msg.Append(-normalizedVelocity.y);
        msg.Append((float)behaviour.pid);

        //Bounding
        msg.Append(worldToViewPort.x - PointSize.x / 2);
        msg.Append(worldToViewPort.y - PointSize.y / 2);

        msg.Append(PointSize.x);
        msg.Append(PointSize.y);

        msg.Append(worldToViewPort.x);
        msg.Append(worldToViewPort.y);
        msg.Append(0.5f);

        OSCMaster.Clients["AugmentaSimulatorOutput"].Send(msg);
    }
 public void OutputCurrentState()
 {
     foreach (OSCInputMapping map in m_OSCInputMappings)
     {
         try
         {
             if (map.m_AssignmentType == "Property" && map.m_FeedbackState)
             {
                 float val = map.GetCurrentValue();
                 if (val != float.MinValue)
                 {
                     string address          = map.m_MapAddress;
                     UnityOSC.OSCMessage msg = new UnityOSC.OSCMessage(address);
                     msg.AppendFloat(val);
                     OSCHandler.Instance.SendOSCMessage(msg);
                 }
             }
         }
         catch (Exception e)
         {
             MonoBehaviour.print(e.ToString());
         }
     }
 }
Example #6
0
        /// <summary>
        /// Unpacks an OSC message.
        /// </summary>
        /// <param name="data">
        /// A <see cref="System.Byte[]"/>
        /// </param>
        /// <param name="start">
        /// A <see cref="System.Int32"/>
        /// </param>
        /// <returns>
        /// A <see cref="OSCMessage"/>
        /// </returns>
        public static OSCMessage Unpack(byte[] data, ref int start)
        {
            string     address = OSCPacket.UnpackValue <string>(data, ref start);
            OSCMessage message = new OSCMessage(address);

            char[] tags = OSCPacket.UnpackValue <string>(data, ref start).ToCharArray();
            foreach (char tag in tags)
            {
                object value;
                switch (tag)
                {
                case DEFAULT:
                    //UnityEngine.Debug.LogWarning("DEFAULT TAG");
                    continue;

                case INTEGER:
                    value = OSCPacket.UnpackValue <int>(data, ref start);
                    break;

                case LONG:
                    value = OSCPacket.UnpackValue <long>(data, ref start);
                    break;

                case FLOAT:
                    value = OSCPacket.UnpackValue <float>(data, ref start);
                    break;

                case DOUBLE:
                    value = OSCPacket.UnpackValue <double>(data, ref start);
                    break;

                case STRING:
                    value = OSCPacket.UnpackValue <string>(data, ref start);
                    break;

                case BYTE:
                    value = OSCPacket.UnpackValue <byte[]>(data, ref start);
                    break;

                /*
                 * case TRUE:
                 *      value = true;
                 *      break;
                 * case FALSE:
                 *      value = false;
                 *      break;
                 */
                default:
                    //UnityEngine.Debug.LogWarning("Unknown tag: " + tag);
                    Console.WriteLine("Unknown tag: " + tag);
                    continue;
                }

                message.Append(value);
            }

            if (message.TimeStamp == 0)
            {
                message.TimeStamp = DateTime.Now.Ticks;
            }

            return(message);
        }
 public void SendOSCMessage(string address, byte[] bytes)
 {
     UnityOSC.OSCMessage newMsg = new UnityOSC.OSCMessage(address, bytes);
     SendMessageToAllClients(newMsg);
 }
 public void SendOSCMessage(string address, string val)
 {
     UnityOSC.OSCMessage newMsg = new UnityOSC.OSCMessage(address, val);
     SendMessageToAllClients(newMsg);
 }
 public void SendBlankOSCMessage(string address)
 {
     UnityOSC.OSCMessage newMsg = new UnityOSC.OSCMessage(address);
     SendMessageToAllClients(newMsg);
 }