Aller au contenu

Envoi d'OSC

Pour envoyer l'OSC, vous devrez ajouter certains éléments à votre script OSC.

// On ne veut pas envoyer un message OSC à chaque frame pour éviter de surcharger notre jeu. On doit ainsi créer une variable pour ralentir l'envoi: 
private float myChrono;

// On utilise la méthode LateUpdate puisque c'est la fonction qui sera appelée en dernier pendant notre frame. 
private void LateUpdate()
    {
        // Si 100 millisecondes se sont écoulées depuis le dernier envoi :
        if(Time.realtimeSinceStartup - myChrono >= 0.1f)
        {
            myChrono = Time.realtimeSinceStartup;

            // Créer le message
            var myOscMessage = new OSCMessage("/adresse");

            // Ajouter une valeur au message, maValeur doit être remplacé par le int de votre jeu que vous souhaitez envoyer.
            myOscMessage.AddValue(OSCValue.Int( (int) maValeur) ); // Le (int) entre parenthèses convertit le type.

            // Envoyer le message
            oscTransmitter.Send(myOscMessage);


        }
    }

Si vous préférez envoyer un float, voici la syntaxe à utiliser:

myOscMessage.AddValue(OSCValue.Float( (float) maValeur) ); // Le (float) entre parenthèses convertit le type.

Vous aimeriez envoyer plusieurs messages? Voici un exemple pour vous aider:

 private void LateUpdate()
    {
        if(Time.realtimeSinceStartup - myChrono >= 0.1f)
        {
            myChrono = Time.realtimeSinceStartup;

            // Créer un bundle, celui-ci contiendra les différents messages OSC afin qu'on puisse les envoyer en une seule fois.
            var bundle = new OSCBundle();

            var myOscMessage1 = new OSCMessage("/nomMessage1");
            myOscMessage1.AddValue(OSCValue.Float( (float) maValeur));

            var myOscMessage2 = new OSCMessage("/fantome2x");
            myOscMessage2.AddValue(OSCValue.Float( (float) maValeur));

            // Ajouter les messages au bundle
            bundle.AddPacket(myOscMessage1);
            bundle.AddPacket(myOscMessage2);

            //Envoyer les messages: 
            oscTransmit.Send(bundle);
        }
    }

Inspiration

Inspiré des notes de Thomas O. Fredericks.