public void RpcAddPoint(int id, Vector3 position, int senderID) { if (NetPlayer.local.playerID == senderID) { return; } else { PointPacket ep = new PointPacket(); ep.id = id; ep.requirements = new int[0]; ep.type = ElementType.point; ep.position = position; Receive(ep); } }
void Create(ElementPacket packet) { switch (packet.type) { case ElementType.point: PointPacket p = packet as PointPacket; new Point(p.position, p.id); break; case ElementType.edge: List <Point> points = new List <Point>(); foreach (int reqid in packet.requirements) { points.Add(DCGBase.all[reqid] as Point); } new Edge(points, packet.id); break; case ElementType.face: List <Edge> edges = new List <Edge>(); foreach (int reqid in packet.requirements) { edges.Add(DCGBase.all[reqid] as Edge); } new Face(edges, packet.id); break; case ElementType.solid: List <Face> faces = new List <Face>(); foreach (int reqid in packet.requirements) { faces.Add(DCGBase.all[reqid] as Face); } new Solid(faces, packet.id); break; default: Debug.LogError("Network sent unfamiliar item type!"); break; } if (waiting.ContainsKey(packet.id)) //if this item is in the waitlist, remove it. { waiting.Remove(packet.id); } if (expectations.ContainsKey(packet.id)) { foreach (int reqer in expectations[packet.id].requirers) { bool hasAll = true; foreach (int req in waiting[reqer].requirements) { hasAll = hasAll && DCGBase.all.ContainsKey(req); } if (hasAll) { Create(waiting[reqer]); } } expectations.Remove(packet.id); } }