Exemplo n.º 1
0
        //! function parsing received message and executing change
        //! @param  message         message string received by server
        public void parseTransformation(string message)
        {
            string[] splitMessage = message.Split('|');
            if (splitMessage.Length > 1)
            {
                if (splitMessage[2] == "cam")
                {
                    if (!camObject.GetComponent <Renderer>().enabled)
                    {
                        camObject.GetComponent <Renderer>().enabled = true;
                    }
                    lastNcamReceivedTime = Time.time;
                    switch (splitMessage[1])
                    {
                    case "t":
                        if (splitMessage.Length == 6)
                        {
                            if (receiveNcam)
                            {
                                Camera.main.transform.position = new Vector3(float.Parse(splitMessage[3]), float.Parse(splitMessage[4]), float.Parse(splitMessage[5]));
                            }
                            else
                            {
                                camObject.position = new Vector3(float.Parse(splitMessage[3]), float.Parse(splitMessage[4]), float.Parse(splitMessage[5]));
                            }
                        }
                        break;

                    case "r":
                        if (splitMessage.Length == 7)
                        {
                            Quaternion quat = new Quaternion(float.Parse(splitMessage[3]), float.Parse(splitMessage[4]), float.Parse(splitMessage[5]), float.Parse(splitMessage[6]));
                            Vector3    rot  = quat.eulerAngles;

                            if (receiveNcam)
                            {
                                Camera.main.transform.rotation = Quaternion.Euler(new Vector3(rot.x, -rot.y, -rot.z + 180));
                            }
                            else
                            {
                                camObject.rotation = Quaternion.Euler(new Vector3(rot.x, -rot.y, -rot.z + 180));
                            }
                        }
                        break;

                    case "f":
                        if (splitMessage.Length == 4)
                        {
                            if (receiveNcam)
                            {
                                Camera.main.fieldOfView = float.Parse(splitMessage[3]);
                            }
                        }
                        break;

                    default:
                        break;
                    }
                }
                else
                {
                    Transform obj = getOjectFromString(splitMessage[2]);
                    if (obj && obj != currentlyLockedObject && splitMessage[0] != id)
                    {
                        switch (splitMessage[1])
                        {
                        case "t":
                            if (splitMessage.Length == 6)
                            {
                                if (obj.GetComponent <SceneObject>())
                                {
                                    obj.GetComponent <SceneObject>().tempLock = true;
                                }
                                try
                                {
                                    // obj.position = new Vector3(float.Parse(splitMessage[3]), float.Parse(splitMessage[4]), float.Parse(splitMessage[5]));
                                    obj.localPosition = new Vector3(float.Parse(splitMessage[3]), float.Parse(splitMessage[4]), float.Parse(splitMessage[5]));
                                }
                                catch {}
                            }
                            break;

                        case "r":
                            if (splitMessage.Length == 7)
                            {
                                if (obj.GetComponent <SceneObject>())
                                {
                                    obj.GetComponent <SceneObject>().tempLock = true;
                                }
                                try
                                {
                                    // obj.rotation = new Quaternion(float.Parse(splitMessage[3]), float.Parse(splitMessage[4]), float.Parse(splitMessage[5]), float.Parse(splitMessage[6]));
                                    obj.localRotation = new Quaternion(float.Parse(splitMessage[3]), float.Parse(splitMessage[4]), float.Parse(splitMessage[5]), float.Parse(splitMessage[6]));
                                }
                                catch {}
                            }
                            break;

                        case "s":
                            if (splitMessage.Length == 6)
                            {
                                try
                                {
                                    obj.localScale = new Vector3(float.Parse(splitMessage[3]), float.Parse(splitMessage[4]), float.Parse(splitMessage[5]));
                                }
                                catch {}
                            }
                            break;

                        case "c":
                            if (splitMessage.Length == 6)
                            {
                                try
                                {
                                    obj.GetChild(0).GetComponent <Light>().color = new Color(float.Parse(splitMessage[3]), float.Parse(splitMessage[4]), float.Parse(splitMessage[5]));
                                    //obj.GetComponent<Light>().color = new Color(float.Parse(splitMessage[3]), float.Parse(splitMessage[4]), float.Parse(splitMessage[5]));
                                    //obj.GetChild(0).GetComponent<Renderer>().material.color = new Color(float.Parse(splitMessage[3]), float.Parse(splitMessage[4]), float.Parse(splitMessage[5]));
                                }
                                catch {}
                            }
                            break;

                        case "i":
                            if (splitMessage.Length == 4)
                            {
                                try
                                {
                                    obj.GetChild(0).GetComponent <Light>().intensity = float.Parse(splitMessage[3]);
                                }
                                catch {}
                            }
                            break;

                        case "a":
                            if (splitMessage.Length == 4)
                            {
                                try
                                {
                                    obj.GetChild(0).GetComponent <Light>().spotAngle = float.Parse(splitMessage[3]);
                                }
                                catch {}
                            }
                            break;

                        case "d":
                            if (splitMessage.Length == 4)
                            {
                                try
                                {
                                    obj.GetChild(0).GetComponent <Light>().range = float.Parse(splitMessage[3]);
                                }
                                catch {}
                            }
                            break;

                        case "k":
                            if (splitMessage.Length == 4)
                            {
                                try
                                {
                                    obj.GetComponent <SceneObject>().setKinematic(bool.Parse(splitMessage[3]), false);
                                }
                                catch {}
                            }
                            break;

                        case "l":
                            if (splitMessage.Length == 4)
                            {
                                if (bool.Parse(splitMessage[3]))
                                {
                                    mainController.unselectIfSelected(obj);
                                }
                            }
                            try
                            {
                                obj.GetComponent <SceneObject>().locked = bool.Parse(splitMessage[3]);
                            }
                            catch {}
                            break;

                        case "b":     // move bbox/collider
                            if (splitMessage.Length == 6)
                            {
                                try
                                {
                                    obj.GetComponent <SceneObject>().colliderOffset(new Vector3(float.Parse(splitMessage[3]), float.Parse(splitMessage[4]), float.Parse(splitMessage[5])));
                                }
                                catch { }
                            }
                            break;

                        case "m":     // trigger mocap data
                            if (splitMessage.Length == 4 && obj.GetComponent <SceneObjectServer>() != null)
                            {
                                try
                                {
                                    obj.GetComponent <SceneObjectServer>().AnimatorCommand(int.Parse(splitMessage[3]));
                                }
                                catch { }
                            }
                            break;

                        default:
                            break;
                        }
                    }
                }
            }
        }