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)); } }
public TrashData GetTrashData() { using (BinaryUtils.Reader reader = new BinaryUtils.Reader(TrashDataByte)) { TrashData result = new TrashData(); result.Import(reader.BinaryReader); return(result); } }
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)); } }
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)); } }
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; }
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); }
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); }
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; }
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; }