コード例 #1
0
 public static void NewTrash_Postfix(int __result, TrashObject trashObj, TrashData trashData)
 {
     //Notify other that trash was created
     if (SimulatedWorld.Initialized && !TrashManager.NewTrashFromOtherPlayers)
     {
         LocalPlayer.SendPacket(new TrashSystemNewTrashCreatedPacket(__result, trashObj, trashData, LocalPlayer.PlayerId, GameMain.mainPlayer.planetId));
     }
 }
コード例 #2
0
 public TrashData GetTrashData()
 {
     using (BinaryUtils.Reader reader = new BinaryUtils.Reader(TrashDataByte))
     {
         TrashData result = new TrashData();
         result.Import(reader.BinaryReader);
         return(result);
     }
 }
コード例 #3
0
 public static void NewTrash_Postfix(int __result, TrashObject trashObj, TrashData trashData)
 {
     //Notify other that trash was created
     if (SimulatedWorld.Initialized && !TrashManager.NewTrashFromOtherPlayers)
     {
         //Refresh trash to assign local planet Id and local position
         GameMain.data.trashSystem.Gravity(ref trashData, GameMain.data.galaxy.astroPoses, 0, 0, 0, (GameMain.data.localPlanet != null) ? GameMain.data.localPlanet.id : 0, (GameMain.data.localPlanet != null) ? GameMain.data.localPlanet.data : null);
         LocalPlayer.SendPacket(new TrashSystemNewTrashCreatedPacket(__result, trashObj, trashData, LocalPlayer.PlayerId, GameMain.mainPlayer.planetId));
     }
 }
コード例 #4
0
 public static void NewTrash_Postfix(int __result, TrashObject trashObj, TrashData trashData)
 {
     //Notify other that trash was created
     if (Multiplayer.IsActive && !Multiplayer.Session.Trashes.NewTrashFromOtherPlayers)
     {
         //Refresh trash to assign local planet Id and local position
         GameMain.data.trashSystem.Gravity(ref trashData, GameMain.data.galaxy.astroPoses, 0, 0, 0, (GameMain.data.localPlanet != null) ? GameMain.data.localPlanet.id : 0, (GameMain.data.localPlanet != null) ? GameMain.data.localPlanet.data : null);
         Multiplayer.Session.Network.SendPacket(new TrashSystemNewTrashCreatedPacket(__result, trashObj, trashData, Multiplayer.Session.LocalPlayer.Id, GameMain.mainPlayer.planetId));
     }
 }
コード例 #5
0
        public static void SwitchTrashWithIds(int itemId1, int itemId2)
        {
            TrashContainer container = GameMain.data.trashSystem.container;
            TrashObject    to        = container.trashObjPool[itemId1];
            TrashData      td        = container.trashDataPool[itemId1];

            container.trashObjPool[itemId1]  = container.trashObjPool[itemId2];
            container.trashDataPool[itemId1] = container.trashDataPool[itemId2];
            container.trashObjPool[itemId2]  = to;
            container.trashDataPool[itemId2] = td;
        }
コード例 #6
0
        public TrashData GetTrashData()
        {
            TrashData result = new TrashData();

            result.lPos            = LPos.ToUnity();
            result.uPos            = new VectorLF3(UPos.x, UPos.y, UPos.z);
            result.lRot            = LRot.ToUnity();
            result.uRot            = URot.ToUnity();
            result.uVel            = new VectorLF3(UVel.x, UVel.y, UVel.z);
            result.uAgl            = UAgl.ToUnity();
            result.landPlanetId    = LandPlanetId;
            result.nearPlanetId    = NearPlanetId;
            result.nearStarId      = NearStarId;
            result.nearStarGravity = NearStarGravity;
            return(result);
        }
コード例 #7
0
ファイル: SimulatedWorld.cs プロジェクト: mrbrist/nebula
        public static int GenerateTrashOnPlayer(TrashSystemNewTrashCreatedPacket packet)
        {
            if (remotePlayersModels.TryGetValue(packet.PlayerId, out RemotePlayerModel player))
            {
                TrashData trashData = packet.GetTrashData();
                //Calculate trash position based on the current player's model position
                RemotePlayerMovement.Snapshot lastPosition = player.Movement.GetLastPosition();
                trashData.uPos = new VectorLF3(lastPosition.UPosition.x, lastPosition.UPosition.y, lastPosition.UPosition.z);

                TrashManager.NewTrashFromOtherPlayers = true;
                int myId = GameMain.data.trashSystem.container.NewTrash(packet.GetTrashObject(), trashData);
                TrashManager.NewTrashFromOtherPlayers = false;

                return(myId);
            }
            return(0);
        }
コード例 #8
0
 public TrashSystemNewTrashCreatedPacket(int trashId, TrashObject trashObj, TrashData trashData, ushort playerId, int localPlanetId)
 {
     TrashId = trashId;
     using (BinaryUtils.Writer writer = new BinaryUtils.Writer())
     {
         trashObj.Export(writer.BinaryWriter);
         TrashObjectByte = writer.CloseAndGetBytes();
     }
     using (BinaryUtils.Writer writer = new BinaryUtils.Writer())
     {
         trashData.Export(writer.BinaryWriter);
         TrashDataByte = writer.CloseAndGetBytes();
     }
     // Fix overflow in TrashObj.Export() for item.count
     Count         = trashObj.count;
     LocalPlanetId = localPlanetId;
     PlayerId      = playerId;
 }
コード例 #9
0
 public TrashSystemNewTrashCreatedPacket(int trashId, TrashObject trashObj, TrashData trashData, ushort playerId, int localPlanetId)
 {
     TrashId         = trashId;
     RPos            = new Float3(trashObj.rPos);
     LPos            = new Float3(trashData.lPos);
     LocalPlanetId   = localPlanetId;
     PlayerId        = playerId;
     UPos            = new Double3(trashData.uPos.x, trashData.uPos.y, trashData.uPos.z);
     RRot            = new Float4(trashObj.rRot);
     LRot            = new Float4(trashData.lRot);
     URot            = new Float4(trashData.uRot);
     UVel            = new Double3(trashData.uVel.x, trashData.uVel.y, trashData.uVel.z);
     UAgl            = new Float3(trashData.uAgl);
     Item            = (short)trashObj.item;
     Count           = (byte)trashObj.count;
     Expire          = trashObj.expire;
     LandPlanetId    = trashData.landPlanetId;
     NearPlanetId    = trashData.nearPlanetId;
     NearStarId      = trashData.nearStarId;
     NearStarGravity = trashData.nearStarGravity;
 }