public string Parse(byte[] command) { uint cmd = command [0]; if (cmd == 0) //close { server.Restart(); return("Client lost connection"); } else if (cmd == 1) //KeyDown { string str = System.Text.Encoding.ASCII.GetString(new[] { command [1] }); KeyCode k = (KeyCode)System.Enum.Parse(typeof(KeyCode), str.ToUpper()); Evt evt = (Evt)System.Enum.Parse(typeof(Evt), "Down"); InputManager.SetKeyEvt(k, evt); return(string.Format("Key {0} Down", k.ToString())); } else if (cmd == 2) //KeyUp { string str = System.Text.Encoding.ASCII.GetString(new[] { command [1] }); KeyCode k = (KeyCode)System.Enum.Parse(typeof(KeyCode), str.ToUpper()); Evt evt = (Evt)System.Enum.Parse(typeof(Evt), "Up"); InputManager.SetKeyEvt(k, evt); return(string.Format("Key {0} Up", k.ToString())); } else if (cmd == 3) //KeyPress { string str = System.Text.Encoding.ASCII.GetString(new[] { command [1] }); KeyCode k = (KeyCode)System.Enum.Parse(typeof(KeyCode), str.ToUpper()); Evt evt = (Evt)System.Enum.Parse(typeof(Evt), "Press"); InputManager.SetKeyEvt(k, evt); return(string.Format("Key {0} Press", k.ToString())); } else if (cmd == 4) //Speed { byte[] bytes = server.GetByte(4, true); float speed = BitConverter.ToSingle(bytes, 0); this.GetComponent <UnityStandardAssets.Characters.FirstPerson.ControllerScript> ().Speed = speed; return(string.Format("Set speed to {0} ", speed)); } else if (cmd == 5) //RSpeed { byte[] bytes = server.GetByte(4, true); float speed = BitConverter.ToSingle(bytes, 0); this.GetComponent <UnityStandardAssets.Characters.FirstPerson.ControllerScript> ().RotateSpeed = speed; return(string.Format("Set RotateSpeed to {0} ", speed)); } else if (cmd == 6) //getPos { Vector3 pos = this.transform.position; byte[] buff = new byte[sizeof(float) * 3]; Buffer.BlockCopy(BitConverter.GetBytes(pos.x), 0, buff, 0, 4); Buffer.BlockCopy(BitConverter.GetBytes(pos.y), 0, buff, 4, 4); Buffer.BlockCopy(BitConverter.GetBytes(pos.z), 0, buff, 8, 4); server.Send(buff); return("Get Position"); } else if (cmd == 7) //FPS { if (FirstCamera == null || sssfc == null) { return("Get FPS failed"); } byte[] bytes = sssfc.getImage().EncodeToPNG(); server.Send(bytes.Length); server.Send(bytes); return("Get FPS"); } else if (cmd == 8) //getRot { Vector3 rot = this.transform.localEulerAngles; byte[] buff = new byte[sizeof(float) * 3]; Buffer.BlockCopy(BitConverter.GetBytes(rot.x), 0, buff, 0, 4); Buffer.BlockCopy(BitConverter.GetBytes(rot.y), 0, buff, 4, 4); Buffer.BlockCopy(BitConverter.GetBytes(rot.z), 0, buff, 8, 4); server.Send(buff); return("Get Rotation"); } else if (cmd == 9) //setPos { byte[] bytes = server.GetByte(12, true); float x = BitConverter.ToSingle(bytes, 0); float y = BitConverter.ToSingle(bytes, 4); float z = BitConverter.ToSingle(bytes, 8); this.transform.localPosition = new Vector3(x, y, z); return(string.Format("Set Position to ({0}, {1}, {2})", x, y, z)); } else if (cmd == 0x0a) //setRot { byte[] bytes = server.GetByte(12, true); float x = BitConverter.ToSingle(bytes, 0); float y = BitConverter.ToSingle(bytes, 4); float z = BitConverter.ToSingle(bytes, 8); this.transform.localRotation = Quaternion.Euler(new Vector3(x, y, z)); return(string.Format("Set Rotation to ({0}, {1}, {2})", x, y, z)); } else if (cmd == 0x0b) //getDepth { if (DepthCamera == null || sssdc == null) { return("Get Depth failed"); } //sssdc.ScreenShot (); byte[] bytes = sssdc.getImage().EncodeToPNG(); server.Send(bytes.Length); server.Send(bytes); return("Get Depth"); } else if (cmd == 0x0c) //setTimeScale { byte[] bytes = server.GetByte(4, true); float scale = BitConverter.ToSingle(bytes, 0); optionPanel.TimeScale = scale; return(string.Format("Set TimeScale to {0}", scale)); } else if (cmd == 0x0d) //getTimeScale { float scale = optionPanel.TimeScale; byte[] buff = new byte[sizeof(float)]; Buffer.BlockCopy(BitConverter.GetBytes(scale), 0, buff, 0, 4); server.Send(buff); return("Get TimeScale"); } else if (cmd == 0x0e) //setRandPos { optionPanel.OnRandPos(); return("Set Random Position"); } else if (cmd == 0x0f) //getSpherical { if (SphereCamera == null || ssssc == null) { return("Get Spherical failed"); } byte[] bytes = ssssc.getImage().EncodeToPNG(); server.Send(bytes.Length); server.Send(bytes); return("Get Spherical"); } else if (cmd == 0x10) //closelog { optionPanel.EnableLog(false); return("Close Log"); } else if (cmd == 0x11) //openlog { optionPanel.EnableLog(true); return("Open Log"); } else if (cmd == 0x12) //setPoint { byte[] bytes = server.GetByte(12, true); float x = BitConverter.ToSingle(bytes, 0); float y = BitConverter.ToSingle(bytes, 4); float z = BitConverter.ToSingle(bytes, 8); optionPanel.point.transform.position = new Vector3(x, y, z); return(string.Format("Set Point to ({0}, {1}, {2})", x, y, z)); } else if (cmd == 0x13) //getPoint { Vector3 pos = optionPanel.point.transform.position; byte[] buff = new byte[sizeof(float) * 3]; Buffer.BlockCopy(BitConverter.GetBytes(pos.x), 0, buff, 0, 4); Buffer.BlockCopy(BitConverter.GetBytes(pos.y), 0, buff, 4, 4); Buffer.BlockCopy(BitConverter.GetBytes(pos.z), 0, buff, 8, 4); server.Send(buff); return("Get Point"); } else if (cmd == 0xff) //String { uint sz = command[1]; return(server.GetString((int)sz)); } return("Some thing cannot analyze"); }