// в потоке клиента нельзя вызывать, только из потока событий unity static private int create_manipulator1(PacketHeader packet) { maxid++; PacketCreate create = UnityEngine.JsonUtility.FromJson <PacketCreate>(packet.json_data); delete(create.idname); device dev = new manipulator1(); ((manipulator1)dev).config = UnityEngine.JsonUtility.FromJson <configmanipulator1>(packet.json_data); dev.Place(); devices[maxid] = dev; idnames[create.idname] = maxid; return(maxid); }
// вызывается из потока собыйти unity static private void setpos(PacketSetpos setpos) { if (!idnames.ContainsKey(setpos.idname)) { return; } int id = idnames[setpos.idname]; if (devices.ContainsKey(id)) { switch (devices[id].GetType().ToString()) { case "manipulator1": { manipulator1 manipulator = (manipulator1)devices[id]; manipulator.SetPos(setpos.a0, setpos.a1, setpos.a2); } break; case "manipulator2": { manipulator2 manipulator = (manipulator2)devices[id]; manipulator.SetPos(setpos.a0, setpos.a1, setpos.a2, setpos.a3, setpos.a4, setpos.a5, setpos.a6 != 0.0f); } break; default: return; } } if (things.ContainsKey(id)) { things[id].SetPos(setpos.a0, setpos.a1, setpos.a2, setpos.a3, setpos.a4, setpos.a5, setpos.a6, setpos.a7 != 0.0f); } if (tables.ContainsKey(id)) { tables[id].SetPos(setpos.a0, setpos.a1, setpos.a2, setpos.a3, setpos.a4, setpos.a5, setpos.a6, setpos.a7 != 0.0f); } return; }