コード例 #1
0
    public void Swing()
    {
        var message = new OSCMessage("/swing");

        message.AddValue(OSCValue.Int(1));
        transmitter.Send(message);
    }
コード例 #2
0
    public void SetLed(int val)
    {
        var message = new OSCMessage(MadeAxisName + "/led");

        message.AddValue(OSCValue.Int(val));  //0 -255
        transmitter.Send(message);
    }
コード例 #3
0
    public void ThrowKnife()
    {
        var message = new OSCMessage("/knife");

        message.AddValue(OSCValue.Int(1));
        transmitter.Send(message);
    }
コード例 #4
0
    public void Drums(float distance)
    {
        if (distance <= caveDrums)
        {
            if (!drumsActivated)
            {
                drumsActivated = true;
                var messageAct = new OSCMessage("/drums");
                messageAct.AddValue(OSCValue.Int(1));
                transmitter.Send(messageAct);
            }

            float volume  = ((distance - caveDrums) * 1f) / -caveDrums;
            var   message = new OSCMessage("/drumsvolume");
            message.AddValue(OSCValue.Float(volume));
            transmitter.Send(message);
        }
        else
        {
            drumsActivated = false;
            var messageAct = new OSCMessage("/drums");
            messageAct.AddValue(OSCValue.Int(0));
            transmitter.Send(messageAct);
        }
    }
コード例 #5
0
        protected virtual void Start()
        {
            // Register receive callback.
            Receiver.Bind(_address, MessageReceived);

            // Create message
            var message = OSCMessage.Create(_address);

            // Create array
            var array = OSCValue.Array();

            array.AddValue(OSCValue.Int(1)); // You can use AddValue(OSCValue) method only with OSCValue what stored Array type.
            array.AddValue(OSCValue.Float(2.5f));
            array.AddValue(OSCValue.Color(Color.red));

            // You can store another array inside array.
            // Warning! OSCValue with "Array" type cannot store itself. It can do infinite loop.
            var secondArray = OSCValue.Array();

            secondArray.AddValue(OSCValue.String("This array..."));
            secondArray.AddValue(OSCValue.String("...inside another array!"));
            array.AddValue(secondArray);

            // Add array in message
            message.AddValue(array);

            // Send message
            Transmitter.Send(message);
        }
コード例 #6
0
    public void DrinkPotion()
    {
        var message = new OSCMessage("/potion");

        message.AddValue(OSCValue.Int(400));
        transmitter.Send(message);
    }
コード例 #7
0
        private void Update()
        {
            // check input
            if (Input.GetKeyDown("space"))
            {
                print("space pressed");
                string newAddress = "/vkb_midi/1/note/70";
                var    message    = new OSCMessage(newAddress);
                message.AddValue(OSCValue.Int(1));
                Transmitter.Send(message);
            }
            else if (Input.GetKeyUp("space"))
            {
                print("space released");
                string newAddress = "i/vkb_midi/1/note/70";
                var    message    = new OSCMessage(newAddress);
                message.AddValue(OSCValue.Int(0));
                Transmitter.Send(message);
            }
            // pitch bend wheel
            float newVal = Input.GetAxis("Horizontal");

            newVal *= 100;
            print("new val: " + newVal);
            string pitchAddress = "f/vkb_midi/1/cc/80";
            var    pitchMessage = new OSCMessage(pitchAddress);

            pitchMessage.AddValue(OSCValue.Float(newVal));
            Transmitter.Send(pitchMessage);
        }
コード例 #8
0
        protected override void Invoke(OSCMessage message)
        {
            Debug.Log(message);

            if (message.Values.Count < 3)
            {
                return;
            }

            if (message.Values[0].Type != OSCValueType.String ||
                message.Values[1].Type != OSCValueType.Int ||
                message.Values[2].Type != OSCValueType.Int)
            {
                return;
            }

            var index = 3;
            var count = message.Values.Count - index;

            var taskId       = message.Values[0].StringValue;
            var command      = (RECommand)(message.Values[1].IntValue);
            var instanceId   = message.Values[2].IntValue;
            var inputValues  = message.Values.GetRange(index, count);
            var outputValues = new List <OSCValue>();

            var invokeStatus = InvokeCommand(command, instanceId, inputValues, ref outputValues);

            if (invokeStatus != REInvokeStatus.Cancel)
            {
                outputValues.Insert(0, OSCValue.String(taskId));
                outputValues.Insert(1, OSCValue.Int((int)invokeStatus));

                Send(Address, outputValues);
            }
        }
コード例 #9
0
    public void StopWalking()
    {
        var message = new OSCMessage("/walk");

        message.AddValue(OSCValue.Int(0));
        transmitter.Send(message);
    }
コード例 #10
0
    public void FollowMode(int slider, int difference)
    {
        var message = new OSCMessage(MadeAxisName + "/followMode");

        message.AddValue(OSCValue.Int(slider));     // 1 or 2
        message.AddValue(OSCValue.Int(difference)); //0  off, anything else true;
        transmitter.Send(message);
    }
コード例 #11
0
    public void Joystick(int slider, int active)  // active is int not bool - had issues mixing tyes in messages
    {
        var message = new OSCMessage(MadeAxisName + "/joystick");

        message.AddValue(OSCValue.Int(slider));  // 1 or 2
        message.AddValue(OSCValue.Int(active));  //0  off, anything else true;
        transmitter.Send(message);
    }
コード例 #12
0
    public void SnapTo(int slider, int value)
    {
        var message = new OSCMessage(MadeAxisName + "/snap");

        message.AddValue(OSCValue.Int(slider)); // 1 or 2
        message.AddValue(OSCValue.Int(value));  //0  - 255
        transmitter.Send(message);
    }
コード例 #13
0
    public void Stepped(int slider, int distance)  // set distance to 0 to turn off
    {
        var message = new OSCMessage(MadeAxisName + "/stepped");

        message.AddValue(OSCValue.Int(slider));   // 1 or 2
        message.AddValue(OSCValue.Int(distance)); //1  - 100
        transmitter.Send(message);
    }
        public void SendInt(float value)
        {
            var integerValue = RemapValue(value, 0, 1, 0, int.MaxValue);

            Send(_intAddress, OSCValue.Int(integerValue));

            TransmitterTextInt.text = integerValue.ToString();
        }
コード例 #15
0
        public void SetValue(int parentId, int fieldIndex, List <OSCValue> values, TaskComplete completeCallback)
        {
            var task = CreateTask(RECommand.SetValue, parentId, null, completeCallback);

            values.Insert(0, OSCValue.Int(fieldIndex));

            Send(Address, task, values.ToArray());
        }
コード例 #16
0
        IEnumerator End(float delay)
        {
            var message = new OSCMessage("/end");

            message.AddValue(OSCValue.Int(0));
            yield return(new WaitForSeconds(delay));

            Transmitter.Send(message);
        }
コード例 #17
0
    public void HapticPulse(int slider, int period, int value)
    {
        var message = new OSCMessage(MadeAxisName + "/haptic");

        message.AddValue(OSCValue.Int(slider)); // 1 or 2
        message.AddValue(OSCValue.Int(period)); // suggest 3-5 ms
        message.AddValue(OSCValue.Int(value));  //0 -255, but 100 up is better
        transmitter.Send(message);
    }
コード例 #18
0
        protected virtual void Start()
        {
            var message = new OSCMessage(Address);

            message.AddValue(OSCValue.Int(440));
            Transmitter.Send(message);
            StartCoroutine(End(3));
            StartCoroutine(Wind(3));
        }
コード例 #19
0
        protected override void ValueToOSCValues(List <OSCValue> values, Array value)
        {
            values.Add(OSCValue.Int(value.Length));

            foreach (var element in value)
            {
                OSCSerializer.Pack(values, element);
            }
        }
コード例 #20
0
        public static OSCValue CreateOSCValue(OSCValueType valueType)
        {
            switch (valueType)
            {
            case OSCValueType.Unknown:
                return(null);

            case OSCValueType.Int:
                return(OSCValue.Int(0));

            case OSCValueType.Long:
                return(OSCValue.Long(0));

            case OSCValueType.True:
                return(OSCValue.Bool(true));

            case OSCValueType.False:
                return(OSCValue.Bool(false));

            case OSCValueType.Float:
                return(OSCValue.Float(0));

            case OSCValueType.Double:
                return(OSCValue.Double(0));

            case OSCValueType.String:
                return(OSCValue.String(""));

            case OSCValueType.Null:
                return(OSCValue.Null());

            case OSCValueType.Impulse:
                return(OSCValue.Impulse());

            case OSCValueType.Blob:
                return(OSCValue.Blob(new byte[0]));

            case OSCValueType.Char:
                return(OSCValue.Char(' '));

            case OSCValueType.Color:
                return(OSCValue.Color(Color.white));

            case OSCValueType.TimeTag:
                return(OSCValue.TimeTag(DateTime.Now));

            case OSCValueType.Midi:
                return(OSCValue.Midi(new OSCMidi(0, 0, 0, 0)));

            case OSCValueType.Array:
                return(OSCValue.Array());

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
コード例 #21
0
        protected override void ValueToOSCValues(List <OSCValue> values, IDictionary value)
        {
            values.Add(OSCValue.Int(value.Count));

            for (var i = 0; i < value.Count; i++)
            {
                OSCSerializer.Pack(values, value.Keys.OfType <object>().ElementAt(i));
                OSCSerializer.Pack(values, value.Values.OfType <object>().ElementAt(i));
            }
        }
コード例 #22
0
ファイル: TableOpenSequence.cs プロジェクト: Klanly/Marrow
        void SendOSCofShowingPlate()
        {
            var message = new OSCMessage(showPlateOscAddress);

            message.AddValue(OSCValue.Int(showPlateNotes[Random.Range(0, 3)]));
            message.AddValue(OSCValue.Int(120));
            message.AddValue(OSCValue.Int(1));

            oSCTransmitter.Send(message);
        }
コード例 #23
0
        private REInvokeStatus InvokeGetComponentsCommand(Task task, List <OSCValue> inputValues, ref List <OSCValue> outputValues)
        {
            if (inputValues.Count != 4)
            {
                return(REInvokeStatus.Cancel);
            }

            if (inputValues[0].Type != OSCValueType.Int ||
                inputValues[1].Type != OSCValueType.Int ||
                inputValues[2].Type != OSCValueType.Int ||
                inputValues[3].Type != OSCValueType.String)
            {
                return(REInvokeStatus.Cancel);
            }

            var index         = inputValues[0].IntValue;
            var count         = inputValues[1].IntValue;
            var instanceId    = inputValues[2].IntValue;
            var componentType = inputValues[3].StringValue;

            var parentObject = GetItem(task.ParentId) as REObject;

            if (parentObject == null)
            {
                return(REInvokeStatus.Cancel);
            }

            var remoteComponent = new REComponent();

            remoteComponent.Name       = componentType;
            remoteComponent.InstanceId = instanceId;
            remoteComponent.Parent     = parentObject;

            parentObject.Components.Add(remoteComponent);

            if (_itemsDictionary.ContainsKey(remoteComponent.InstanceId))
            {
                _itemsDictionary.Remove(remoteComponent.InstanceId);
            }

            _itemsDictionary.Add(remoteComponent.InstanceId, remoteComponent);

            task.Process(instanceId);

            index++;

            if (index >= count)
            {
                return(REInvokeStatus.Cancel);
            }

            outputValues.Add(OSCValue.Int(index));

            return(REInvokeStatus.Complete);
        }
コード例 #24
0
        public void SendCorrectMessage()
        {
            var message = new OSCMessage(_address);

            message.AddValue(OSCValue.String("Correct Message"));
            message.AddValue(OSCValue.Int(137));
            message.AddValue(OSCValue.Bool(true));
            message.AddValue(OSCValue.Bool(true));

            Transmitter.Send(message);
        }
コード例 #25
0
        public void SendWrongMessage()
        {
            var message = new OSCMessage(_address);

            message.AddValue(OSCValue.Int(137));
            message.AddValue(OSCValue.String("Wrong Message"));
            message.AddValue(OSCValue.Blob(new byte[] { 0x1, 0x3, 0x3, 0x7 }));
            message.AddValue(OSCValue.Bool(true));

            Transmitter.Send(message);
        }
コード例 #26
0
        public override OSCValue GetValue()
        {
            int value;

            if (int.TryParse(Input.text, out value))
            {
                return(OSCValue.Int(value));
            }

            return(OSCValue.Int(0));
        }
コード例 #27
0
ファイル: OSCPingClient.cs プロジェクト: mauriciosousa/laphud
        protected override bool FillMessage(OSCMessage message)
        {
            if (receiver == null)
            {
                return(false);
            }

            message.AddValue(OSCValue.String(receiverAddress));
            message.AddValue(OSCValue.Int(receiver.LocalPort));

            return(true);
        }
コード例 #28
0
        private REInvokeStatus InvokeGetFieldsCommand(Task task, List <OSCValue> inputValues, ref List <OSCValue> outputValues)
        {
            if (inputValues.Count != 6)
            {
                return(REInvokeStatus.Cancel);
            }

            if (inputValues[0].Type != OSCValueType.Int ||
                inputValues[1].Type != OSCValueType.Int ||
                inputValues[2].Type != OSCValueType.String ||
                inputValues[3].Type != OSCValueType.Int ||
                inputValues[4].Type != OSCValueType.Int ||
                inputValues[5].Type != OSCValueType.String)
            {
                return(REInvokeStatus.Cancel);
            }

            var index     = inputValues[0].IntValue;
            var count     = inputValues[1].IntValue;
            var fieldName = inputValues[2].StringValue;
            var valueType = (OSCValueType)inputValues[3].IntValue;
            var fieldType = (REFieldType)inputValues[4].IntValue;
            var typeName  = inputValues[5].StringValue;

            var remoteComponent = GetItem(task.ParentId) as REComponent;

            if (remoteComponent == null)
            {
                return(REInvokeStatus.Cancel);
            }

            var remoteField = new REField();

            remoteField.Parent    = remoteComponent;
            remoteField.FieldName = fieldName;
            remoteField.FieldType = fieldType;
            remoteField.TypeName  = typeName;

            remoteComponent.Fields.Add(remoteField);

            task.Process(index);

            index++;

            if (index >= count)
            {
                return(REInvokeStatus.Cancel);
            }

            outputValues.Add(OSCValue.Int(index));

            return(REInvokeStatus.Complete);
        }
コード例 #29
0
        private REInvokeStatus InvokeGetObjectsCommand(int instanceId, List <OSCValue> inputValues, ref List <OSCValue> outputValues)
        {
            if (inputValues.Count != 1)
            {
                return(REInvokeStatus.Error);
            }

            if (inputValues[0].Type != OSCValueType.Int)
            {
                return(REInvokeStatus.Error);
            }

            var index         = inputValues[0].IntValue;
            var remoteObjects = (List <REObject>)null;

            if (instanceId == 0)
            {
                remoteObjects = _rootObjects;
            }
            else
            {
                var rootObject = _itemsDictionary[instanceId] as REObject;
                if (rootObject == null)
                {
                    return(REInvokeStatus.Error);
                }
                if (rootObject.Childs.Count == 0)
                {
                    RefreshRemoteChildObjects(rootObject);
                }

                remoteObjects = rootObject.Childs;
            }

            if (index >= remoteObjects.Count || index < 0)
            {
                return(REInvokeStatus.Error);
            }

            var remoteObject = remoteObjects[index];

            if (remoteObject == null)
            {
                return(REInvokeStatus.Error);
            }

            outputValues.Add(OSCValue.Int(index));
            outputValues.Add(OSCValue.Int(remoteObjects.Count));
            outputValues.Add(OSCValue.Int(remoteObject.InstanceId));
            outputValues.Add(OSCValue.String(remoteObject.Name));

            return(REInvokeStatus.Complete);
        }
コード例 #30
0
        protected override void Invoke(OSCMessage message)
        {
            if (message.Values.Count < 2)
            {
                return;
            }

            if (message.Values[0].Type != OSCValueType.String ||
                message.Values[1].Type != OSCValueType.Int)
            {
                return;
            }

            var index = 2;
            var count = message.Values.Count - index;

            var taskId       = message.Values[0].StringValue;
            var remoteStatus = (REInvokeStatus)message.Values[1].IntValue;

            if (!_tasksDictionary.ContainsKey(taskId))
            {
                return;
            }

            var task = _tasksDictionary[taskId];

            if (remoteStatus != REInvokeStatus.Complete)
            {
                _tasksDictionary.Remove(taskId);
                task.Complete();
                return;
            }

            var inputValues  = message.Values.GetRange(index, count);
            var outputValues = new List <OSCValue>();

            var invokeStatus = InvokeTask(task, inputValues, ref outputValues);

            if (invokeStatus != REInvokeStatus.Cancel)
            {
                outputValues.Insert(0, OSCValue.String(taskId));
                outputValues.Insert(1, OSCValue.Int((int)task.Command));
                outputValues.Insert(2, OSCValue.Int(task.ParentId));

                Send(Address, outputValues);
            }
            else
            {
                _tasksDictionary.Remove(taskId);
                task.Complete();
            }
        }