/// <summary> /// Tell all clients to add this object /// to object list, and create it. /// /// If this is a GamePlayer we must /// prevent the invoking client from /// receiving this packet. Tell everyone /// else to add him /// </summary> /// <param name="o"></param> public static void AddToWorld(GameObject o) { o.ObjectID = _indexer.GetIndex(); _worldObjects[o.ObjectID] = o; foreach (GameClient c in _clients) { if (c == null) continue; if (o is GamePlayer) { GamePlayer p = o as GamePlayer; if (p.Client == c) continue; } c.PacketLib.SendCreateObject(o); } GamePlayer player = o as GamePlayer; if (player != null) { foreach (GameObject obj in _worldObjects) { if (obj == null) continue; if (obj == o) continue; player.Client.PacketLib.SendCreateObject(obj); } } }
public void SendDestroyObject(GameObject o) { using (var pak = new PacketOut(eServerPackets.PlayerDestroy)) { pak.WriteInt((uint)o.ObjectID); SendTCP(pak); } }
public void SendCreateObject(GameObject o) { using (var pak = new PacketOut(eServerPackets.PlayerCreate)) { pak.WriteInt((uint)o.ObjectID); pak.WriteFloat(o.Position.X); pak.WriteFloat(o.Position.Y); pak.WriteFloat(o.Position.Z); SendTCP(pak); } Console.WriteLine("Client: " + this._client.Index + " added object " + o.ObjectID); }
public void SendMovementUpdate(GameObject o) { using (var pak = new PacketOut(eServerPackets.PlayerPosition)) { pak.WriteInt((uint)o.ObjectID); pak.WriteFloat(o.Position.X); pak.WriteFloat(o.Position.Y); pak.WriteFloat(o.Position.Z); pak.WriteFloat(o.Velocity.X); pak.WriteFloat(o.Velocity.Y); pak.WriteFloat(o.Velocity.Z); SendTCP(pak); } }
/// <summary> /// Tell all the clients to remove this /// object from their object list and /// destroy it /// </summary> /// <param name="o"></param> public static void RemoveFromWorld(GameObject o) { _worldObjects[o.ObjectID] = null; _indexer.SetAvailable(o.ObjectID); foreach (GameClient c in _clients) { if (c == null) continue; if (o is GamePlayer) { GamePlayer p = o as GamePlayer; if (p.Client == c) continue; } c.PacketLib.SendDestroyObject(o); } }
public void SendRotationUpdate(GameObject o) { using (var pak = new PacketOut(eServerPackets.PlayerRotation)) { pak.WriteInt((uint)o.ObjectID); pak.WriteFloat(o.Rotation.X); pak.WriteFloat(o.Rotation.Y); pak.WriteFloat(o.Rotation.Z); SendTCP(pak); } }