示例#1
0
        public virtual void testPrint()
        {
            var msgs = new string[] {
                "print: bang\n",
                "print: 0\n",
                "print: 42\n",
                "print: symbol",
                " ",
                "don't panic",
                "\n",
            };

            var i = 0;

            LibPDPrint del = delegate(string text) {
                Assert.AreEqual(msgs [i++], text);
            };

            LibPD.Print += del;

            LibPD.SendBang("foo");
            LibPD.SendFloat("foo", 0);
            LibPD.SendFloat("foo", 42);
            LibPD.SendSymbol("foo", "don't panic");

            Assert.AreEqual(msgs.Length, i);

            LibPD.Print -= del;
        }
示例#2
0
        public bool Send(string receiverName, object toSend)
        {
            int success = -1;

            if (toSend is IList && ((IList)toSend).Count == 1)
            {
                toSend = ((IList)toSend)[0];
            }

            if (toSend is int)
            {
                success = LibPD.SendFloat(receiverName, (float)((int)toSend));
            }
            else if (toSend is int[])
            {
                success = LibPD.SendList(receiverName, ((int[])toSend).ToFloatArray());
            }
            else if (toSend is float)
            {
                success = LibPD.SendFloat(receiverName, (float)toSend);
            }
            else if (toSend is float[])
            {
                success = LibPD.SendList(receiverName, (float[])toSend);
            }
            else if (toSend is double)
            {
                success = LibPD.SendFloat(receiverName, (float)((double)toSend));
            }
            else if (toSend is double[])
            {
                success = LibPD.SendList(receiverName, ((double[])toSend).ToFloatArray());
            }
            else if (toSend is bool)
            {
                success = LibPD.SendFloat(receiverName, (float)((bool)toSend).GetHashCode());
            }
            else if (toSend is bool[])
            {
                success = LibPD.SendList(receiverName, ((bool[])toSend).ToFloatArray());
            }
            else if (toSend is char)
            {
                success = LibPD.SendSymbol(receiverName, ((char)toSend).ToString());
            }
            else if (toSend is char[])
            {
                success = LibPD.SendSymbol(receiverName, new string((char[])toSend));
            }
            else if (toSend is string)
            {
                success = LibPD.SendSymbol(receiverName, (string)toSend);
            }
            else if (toSend is string[])
            {
                success = LibPD.SendList(receiverName, (string[])toSend);
            }
            else if (toSend is System.Enum)
            {
                success = LibPD.SendFloat(receiverName, (float)(toSend.GetHashCode()));
            }
            else if (toSend is System.Enum[])
            {
                success = LibPD.SendList(receiverName, ((System.Enum[])toSend).ToFloatArray());
            }
            else if (toSend is object[])
            {
                success = LibPD.SendList(receiverName, (object[])toSend);
            }
            else if (toSend is Vector2)
            {
                success = LibPD.SendList(receiverName, ((Vector2)toSend).x, ((Vector2)toSend).y);
            }
            else if (toSend is Vector3)
            {
                success = LibPD.SendList(receiverName, ((Vector3)toSend).x, ((Vector3)toSend).y, ((Vector3)toSend).z);
            }
            else if (toSend is Vector4)
            {
                success = LibPD.SendList(receiverName, ((Vector4)toSend).x, ((Vector4)toSend).y, ((Vector4)toSend).z, ((Vector4)toSend).w);
            }
            else if (toSend is Quaternion)
            {
                success = LibPD.SendList(receiverName, ((Quaternion)toSend).x, ((Quaternion)toSend).y, ((Quaternion)toSend).z, ((Quaternion)toSend).w);
            }
            else if (toSend is Rect)
            {
                success = LibPD.SendList(receiverName, ((Rect)toSend).x, ((Rect)toSend).y, ((Rect)toSend).width, ((Rect)toSend).height);
            }
            else if (toSend is Bounds)
            {
                success = LibPD.SendList(receiverName, ((Bounds)toSend).center.x, ((Bounds)toSend).center.y, ((Bounds)toSend).size.x, ((Bounds)toSend).size.y);
            }
            else if (toSend is Color)
            {
                success = LibPD.SendList(receiverName, ((Color)toSend).r, ((Color)toSend).g, ((Color)toSend).b, ((Color)toSend).a);
            }
            else
            {
                Logger.LogError("Invalid type to send to Pure Data: " + toSend);
            }

            return(success == 0);
        }
示例#3
0
    public static bool SendValue(string sendName, object toSend)
    {
        int success = -1;

        if (toSend is int)
        {
            success = LibPD.SendFloat(sendName, (float)((int)toSend));
        }
        else if (toSend is int[])
        {
            success = LibPD.SendList(sendName, ((int[])toSend).ToFloatArray());
        }
        else if (toSend is float)
        {
            success = LibPD.SendFloat(sendName, (float)toSend);
        }
        else if (toSend is float[])
        {
            success = LibPD.SendList(sendName, (float[])toSend);
        }
        else if (toSend is double)
        {
            success = LibPD.SendFloat(sendName, (float)((double)toSend));
        }
        else if (toSend is double[])
        {
            success = LibPD.SendList(sendName, ((double[])toSend).ToFloatArray());
        }
        else if (toSend is bool)
        {
            success = LibPD.SendFloat(sendName, (float)((bool)toSend).GetHashCode());
        }
        else if (toSend is bool[])
        {
            success = LibPD.SendList(sendName, ((bool[])toSend).ToFloatArray());
        }
        else if (toSend is char)
        {
            success = LibPD.SendSymbol(sendName, ((char)toSend).ToString());
        }
        else if (toSend is char[])
        {
            success = LibPD.SendSymbol(sendName, new string((char[])toSend));
        }
        else if (toSend is string)
        {
            success = LibPD.SendSymbol(sendName, (string)toSend);
        }
        else if (toSend is string[])
        {
            success = LibPD.SendList(sendName, (string[])toSend);
        }
        else if (toSend is System.Enum)
        {
            success = LibPD.SendFloat(sendName, (float)(toSend.GetHashCode()));
        }
        else if (toSend is System.Enum[])
        {
            success = LibPD.SendList(sendName, ((System.Enum[])toSend).ToFloatArray());
        }
        else if (toSend is Vector2)
        {
            success = LibPD.SendList(sendName, ((Vector2)toSend).x, ((Vector2)toSend).y);
        }
        else if (toSend is Vector3)
        {
            success = LibPD.SendList(sendName, ((Vector3)toSend).x, ((Vector3)toSend).y, ((Vector3)toSend).z);
        }
        else if (toSend is Vector4)
        {
            success = LibPD.SendList(sendName, ((Vector4)toSend).x, ((Vector4)toSend).y, ((Vector4)toSend).z, ((Vector4)toSend).w);
        }
        else if (toSend is Quaternion)
        {
            success = LibPD.SendList(sendName, ((Quaternion)toSend).x, ((Quaternion)toSend).y, ((Quaternion)toSend).z, ((Quaternion)toSend).w);
        }
        else if (toSend is Rect)
        {
            success = LibPD.SendList(sendName, ((Rect)toSend).x, ((Rect)toSend).y, ((Rect)toSend).width, ((Rect)toSend).height);
        }
        else if (toSend is Color)
        {
            success = LibPD.SendList(sendName, ((Color)toSend).r, ((Color)toSend).g, ((Color)toSend).b, ((Color)toSend).a);
        }
        else
        {
            Debug.LogError("Invalid type to send to Pure Data: " + toSend);
        }

        return(success == 0);
    }
示例#4
0
        public virtual void testReceive()
        {
            var receiver = "spam";
            var listArgs = new object[] { "hund", 1, "katze", 2.5, "maus", 3.1f };
            var msgName  = "testing";
            var msgArgs  = new object[] { "one", 1, "two", 2 };

            LibPD.Subscribe(receiver);

            var n = 0;

            LibPDBang delBang = delegate(string recv) {
                Assert.AreEqual(receiver, recv);
                n++;
            };

            LibPD.Bang += delBang;

            LibPDFloat delFloat = delegate(string recv, float x) {
                Assert.AreEqual(receiver, recv);
                Assert.AreEqual(42, x);
                n++;
            };

            LibPD.Float += delFloat;

            LibPDSymbol delSymbol = delegate(string recv, string sym) {
                Assert.AreEqual(receiver, recv);
                Assert.AreEqual("hund katze maus", sym);
                n++;
            };

            LibPD.Symbol += delSymbol;

            LibPDList delList = delegate(string recv, object[] args) {
                Assert.AreEqual(receiver, recv);
                Assert.AreEqual(listArgs.Length, args.Length);

                for (int i = 0; i < args.Length; i++)
                {
                    Assert.AreEqual(listArgs [i], args [i]);
                }
                n++;
            };

            LibPD.List += delList;

            LibPDMessage delMessage = delegate(string recv, string msg, object[] args) {
                Assert.AreEqual(receiver, recv);
                Assert.AreEqual(msgName, msg);
                Assert.AreEqual(msgArgs.Length, args.Length);

                for (int i = 0; i < args.Length; i++)
                {
                    Assert.AreEqual(msgArgs [i], args [i]);
                }
                n++;
            };

            LibPD.Message += delMessage;

            LibPD.SendBang(receiver);
            LibPD.SendFloat(receiver, 42);
            LibPD.SendSymbol(receiver, "hund katze maus");
            LibPD.SendList(receiver, listArgs);
            LibPD.SendMessage(receiver, msgName, msgArgs);

            Assert.AreEqual(5, n);

            LibPD.Bang    -= delBang;
            LibPD.Float   -= delFloat;
            LibPD.Symbol  -= delSymbol;
            LibPD.List    -= delList;
            LibPD.Message -= delMessage;
        }