Esempio n. 1
0
    // Process Data Frame OscBundle
    private void FrameParser(OscPacket packet)
    {
        //LogPacket(packet); //Used for debugging to see all received packets
        if (packet.IsBundle)
        {
            foreach (OscMessage message in ((OscBundle)packet).Messages)
            {
                if (String.Compare(message.Address, "/NewUserIndexCreated/") == 0)
                {
                    int clientIndex  = (int)message.Data[0];
                    int newUserIndex = (int)message.Data[1];
                    UnityEngine.Debug.Log("OSCInterface received new user index from server: " + newUserIndex);
                    // call all methods that have been registered to listen for it
                    NewUserIndexReceivedEventArgs args = new NewUserIndexReceivedEventArgs();
                    args.newUserIndex = newUserIndex;
                    OnNewUserIndexReceivedEvent(args);

                    List <object> oscMessage        = new List <object>();
                    string        oscMessageAddress = "/NewUserIndexReceived/";
                    oscMessage.Add(newUserIndex);
                    AppendMessage(oscMessageAddress, oscMessage);
                }
                if (String.Compare(message.Address, "/UserDataToClients/") == 0)
                {
                    int clientIndex = (int)message.Data[0];
                    UnityEngine.Debug.Log("received user data from server from client Index: " + clientIndex);
                    int    userIndex = (int)message.Data[1];
                    double timeInMS  = (double)message.Data[2];
                    float  positionX = (float)message.Data[3];
                    float  positionY = (float)message.Data[4];
                    float  positionZ = (float)message.Data[5];
                    float  hue       = (float)message.Data[6];

                    // call all methods that have been registered to listen for it
                    OtherUserDataReceivedEventArgs args = new OtherUserDataReceivedEventArgs();
                    args.clientIndex = clientIndex;
                    args.position    = new Vector3(positionX, positionY, positionZ);
                    args.hue         = hue;
                    OnOtherUserDataReceivedEvent(args);

                    // FIX THIS TO FIRE AN EVENT WHEN PARTICLE DATA FOR OTHER USERS ARE RECEIVED
                    //if (clientIndex != newUserCreator.clientIndex)
                    //{
                    //    otherUserParticleEmissionControl.EmitOtherUserParticles(new Vector3(positionX, positionY, positionZ));
                    //}
                    //UnityEngine.Debug.Log("received other position: " + positionX + ", " + positionY + ", " + positionZ);
                }
            }
        }
        else
        { // if the packet is not a bundle and is just one message
            if (String.Compare(((OscMessage)packet).Address, "/ExampleOSCAddressOfMessage/") == 0)
            {
                //string theStringMessageIKnowIsBeingSent = (string)(OscBundle)packet[0].Messages.Data[0];
                //UnityEngine.Debug.Log("received example message string: " + theStringMessageIKnowIsBeingSent);
            }
        }
    }
Esempio n. 2
0
    protected virtual void OnOtherUserDataReceivedEvent(OtherUserDataReceivedEventArgs e)
    {
        EventHandler <OtherUserDataReceivedEventArgs> handler = OtherUserDataReceivedEvent;

        if (handler != null)
        {
            handler(this, e);
        }
    }
Esempio n. 3
0
 public void EmitOtherUserParticles(object sender, OtherUserDataReceivedEventArgs e)
 {
     //UnityEngine.Debug.Log("EmitOtherUserParticles.. received client index: " +e.clientIndex);
     if (otherClientIndex == e.clientIndex)
     {
         //UnityEngine.Debug.Log("setting other users hue: " + e.hue);
         particleColor = new Color(e.hue, 1, 1);
         particleColor = Color.HSVToRGB(particleColor.r, particleColor.g, particleColor.b);
     }
 }