コード例 #1
0
ファイル: WorldMgr.cs プロジェクト: icegbq/Orion
        /// <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);

                }
            }
        }
コード例 #2
0
ファイル: PacketLib.cs プロジェクト: icegbq/Orion
 public void SendDestroyObject(GameObject o)
 {
     using (var pak = new PacketOut(eServerPackets.PlayerDestroy))
     {
         pak.WriteInt((uint)o.ObjectID);
         SendTCP(pak);
     }
 }
コード例 #3
0
ファイル: PacketLib.cs プロジェクト: icegbq/Orion
 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);
 }
コード例 #4
0
ファイル: PacketLib.cs プロジェクト: icegbq/Orion
 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);
     }
 }
コード例 #5
0
ファイル: WorldMgr.cs プロジェクト: icegbq/Orion
        /// <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);
            }
        }
コード例 #6
0
ファイル: PacketLib.cs プロジェクト: icegbq/Orion
 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);
     }
 }