// вызывается из потока событий unity static private PacketSetcameraReady setcamera(PacketHeader packet) { PacketSetcamera setcamera = UnityEngine.JsonUtility.FromJson <PacketSetcamera>(packet.json_data); setcamera.idname = (setcamera.idname == null) ? activecamera : setcamera.idname; if (!idnames.ContainsKey(setcamera.idname)) { return(new PacketSetcameraReady(0)); } int id = idnames[setcamera.idname]; if (cameras.ContainsKey(id)) { UnityEngine.GameObject obj = cameras[id]; camera bhv = obj.GetComponent <camera>(); bhv.targetposition = new UnityEngine.Vector3(setcamera.x0, setcamera.y0, setcamera.z0); obj.transform.position = new UnityEngine.Vector3(setcamera.x1, setcamera.y1, setcamera.z1); bhv.Init(); return(new PacketSetcameraReady(1)); } return(new PacketSetcameraReady(0)); }
// в потоке клиента нельзя вызывать, только из потока событий unity static private int create_camera(PacketHeader packet) { maxid++; PacketCreate create = UnityEngine.JsonUtility.FromJson <PacketCreate>(packet.json_data); delete(create.idname); UnityEngine.GameObject obj = UnityEngine.GameObject.Instantiate(UnityEngine.Resources.Load("camera/camera", typeof(UnityEngine.GameObject)) as UnityEngine.GameObject); PacketSetcamera setcamera = UnityEngine.JsonUtility.FromJson <PacketSetcamera>(packet.json_data); obj.GetComponent <camera>().targetposition = new UnityEngine.Vector3(setcamera.x0, setcamera.y0, setcamera.z0); obj.transform.position = new UnityEngine.Vector3(setcamera.x1, setcamera.y1, setcamera.z1); cameras[maxid] = obj; idnames[create.idname] = maxid; return(maxid); }
// в потоке клиента нельзя вызывать, только из потока событий unity // может вызываться в случае, если нет ни одной камеры static void create_main_camera() { PacketSetcamera packet = new PacketSetcamera(); packet.idname = "maincamera"; packet.x0 = 0; packet.y0 = 0; packet.z0 = 0; packet.x1 = 0; packet.y1 = 1; packet.z1 = -10; PacketHeader header = new PacketHeader(); header.json_data = UnityEngine.JsonUtility.ToJson(packet);; create_camera(header); }