private void OnTransformBarricadeRequested(CSteamID instigator, byte x, byte y, ushort plant, uint instanceId, // lgtm [cs/too-many-ref-parameters] ref Vector3 point, ref byte angleX, ref byte angleY, ref byte angleZ, ref bool shouldAllow) { if (!BarricadeManager.tryGetRegion(x, y, plant, out var region)) { return; } var index = region.barricades.FindIndex(k => k.instanceID == instanceId); var data = region.barricades[index]; var drop = region.drops[index]; var nativePlayer = PlayerTool.getPlayer(instigator); var player = GetUnturnedPlayer(nativePlayer); var rot = Quaternion.Euler(angleX * 2, angleY * 2, angleZ * 2); // lgtm [cs/loss-of-precision] var @event = new UnturnedBarricadeTransformingEvent( new UnturnedBarricadeBuildable(data, drop), player !, instigator, point, rot) { IsCancelled = !shouldAllow }; Emit(@event); shouldAllow = [email protected]; point = @event.Point; var eulerAngles = @event.Rotation.eulerAngles; angleX = MeasurementTool.angleToByte(Mathf.RoundToInt(eulerAngles.x / 2f) * 2); // lgtm [cs/loss-of-precision] angleY = MeasurementTool.angleToByte(Mathf.RoundToInt(eulerAngles.y / 2f) * 2); // lgtm [cs/loss-of-precision] angleZ = MeasurementTool.angleToByte(Mathf.RoundToInt(eulerAngles.z / 2f) * 2); // lgtm [cs/loss-of-precision] }
private void OnTransformBarricadeRequested(CSteamID instigator, byte x, byte y, ushort plant, uint instanceId, ref Vector3 point, ref byte angleX, ref byte angleY, ref byte angleZ, ref bool shouldAllow) { if (!BarricadeManager.tryGetRegion(x, y, plant, out var region)) { return; } var index = region.barricades.FindIndex(k => k.instanceID == instanceId); var data = region.barricades[index]; var drop = region.drops[index]; var nativePlayer = Provider.clients.FirstOrDefault(cl => cl?.playerID.steamID == instigator)?.player; var player = nativePlayer == null ? null : new UnturnedPlayer(nativePlayer); var @event = new UnturnedBarricadeTransformingEvent( new UnturnedBarricadeBuildable(data, drop), player, instigator, point, Quaternion.Euler(angleX * 2, angleY * 2, angleZ * 2)); Emit(@event); shouldAllow = [email protected]; point = @event.Point; var eulerAngles = @event.Rotation.eulerAngles; angleX = MeasurementTool.angleToByte(Mathf.RoundToInt(eulerAngles.x / 2f) * 2); angleY = MeasurementTool.angleToByte(Mathf.RoundToInt(eulerAngles.y / 2f) * 2); angleZ = MeasurementTool.angleToByte(Mathf.RoundToInt(eulerAngles.z / 2f) * 2); }
public static bool AskClaimBed_Prefix(BarricadeManager __instance, CSteamID steamID, byte x, byte y, ushort plant, ushort index) { BarricadeRegion barricadeRegion; if (Provider.isServer && BarricadeManager.tryGetRegion(x, y, plant, out barricadeRegion)) { Player player = PlayerTool.getPlayer(steamID); if (player == null) { return(false); } if (player.life.isDead) { return(false); } if (index >= barricadeRegion.drops.Count) { return(false); } if ((barricadeRegion.drops[index].model.transform.position - player.transform.position).sqrMagnitude > 400f) { return(false); } InteractableBed interactableBed = barricadeRegion.drops[index].interactable as InteractableBed; if (interactableBed != null && interactableBed.isClaimable && interactableBed.checkClaim(player.channel.owner.playerID.steamID)) { if (interactableBed.isClaimed) { var home = HomesHelper.GetPlayerHome(steamID, interactableBed); HomesHelper.RemoveHome(steamID, home); home.Unclaim(); } else { var playerData = HomesHelper.GetOrCreatePlayer(steamID); int maxHomes = VipHelper.GetPlayerMaxHomes(steamID.ToString()); if (maxHomes == 1 && playerData.Homes.Count == 1) { foreach (var home in playerData.Homes.ToArray()) { HomesHelper.RemoveHome(steamID, home); home.Unclaim(); } } else if (maxHomes <= playerData.Homes.Count) { UnturnedChat.Say(steamID, MoreHomesPlugin.Instance.Translate("MaxHomesWarn"), MoreHomesPlugin.Instance.MessageColor); return(false); } var playerHome = new PlayerHome(playerData.GetUniqueHomeName(), interactableBed); playerData.Homes.Add(playerHome); playerHome.Claim(steamID); UnturnedChat.Say(steamID, MoreHomesPlugin.Instance.Translate("HomeClaimed", playerHome.Name), MoreHomesPlugin.Instance.MessageColor); } } } return(false); }
public static void TellTakeBarricade_Prefix(BarricadeManager __instance, CSteamID steamID, byte x, byte y, ushort plant, ushort index) { if (BarricadeManager.tryGetRegion(x, y, plant, out BarricadeRegion barricadeRegion)) { InteractableBed interactableBed = barricadeRegion.drops[index].interactable as InteractableBed; if (interactableBed != null) { HomesHelper.TryRemoveHome(interactableBed.owner, interactableBed); } } }
private void OnSalvageBarricadeRequested(CSteamID steamID, byte x, byte y, ushort plant, ushort index, ref bool shouldAllow) { if (!BarricadeManager.tryGetRegion(x, y, plant, out BarricadeRegion region)) { return; } if (GetDoorOrItem(region.drops[index].model) != null) { shouldAllow = false; } }
private static void AskTransformBarricade(byte x, byte y, ushort plant, uint instanceID) { ThreadUtil.assertIsGameThread(); if (!BarricadeManager.tryGetRegion(x, y, plant, out var region)) { return; } var index = region.barricades.FindIndex(k => k.instanceID == instanceID); var data = region.barricades[index]; var drop = region.drops[index]; OnBarricadeTransformed?.Invoke(data, drop); }
private void OnHarvested(CSteamID steamID, byte x, byte y, ushort plant, ushort index, ref bool shouldAllow) { if (BarricadeManager.tryGetRegion(x, y, plant, out BarricadeRegion region) && steamID != (CSteamID)0) { BarricadeData data = region.barricades[index]; UnturnedPlayer instigator = UnturnedPlayer.FromCSteamID(steamID); if ((CSteamID)data.owner != instigator.CSteamID && ((CSteamID)data.group != instigator.Player.quests.groupID || data.group == 0) && !R.Permissions.HasPermission(new RocketPlayer(steamID.ToString()), "antigrief.bypass")) { if (Instance.Configuration.Instance.ShowHarvestBlockMessage) { UnturnedChat.Say(steamID, Instance.Translate("antigrief_harvest_blocked"), Color.red); } shouldAllow = false; } } }
public void askSalvageBarricade(CSteamID steamID, byte x, byte y, ushort plant, ushort index) { BarricadeRegion barricadeRegion; bool cancel = false; if (BarricadeManager.tryGetRegion(x, y, plant, out barricadeRegion)) { BarricadeData data = barricadeRegion.barricades[(int)index]; BarricadeEvents.RunBarricadeSalvage(UnturnedBarricade.Create(data), ref cancel); } if (!cancel) { DetourManager.CallOriginal(typeof(BarricadeManager).GetMethod("askSalvageBarricade", BindingFlags.Public | BindingFlags.Instance), BarricadeManager.instance, steamID, x, y, plant, index); } }
private void OnSalvageBarricadeRequested(CSteamID steamId, byte x, byte y, ushort plant, ushort index, ref bool shouldAllow) { if (!BarricadeManager.tryGetRegion(x, y, plant, out var region)) { return; } var data = region.barricades[index]; var drop = region.drops[index]; var @event = new UnturnedBarricadeSalvagingEvent(new UnturnedBarricadeBuildable(data, drop)); Emit(@event); shouldAllow = [email protected]; }
public static bool Prefix(CSteamID steamID, byte x, byte y, ushort plant, ushort index, BarricadeManager __instance) { BarricadeRegion region; BarricadeManager.tryGetRegion(x, y, plant, out region); uint UID = region.barricades[index].instanceID; C4Manager.ActiveC4.ToList().ForEach(c4 => { if (c4.Drop.instanceID == UID) { c4.Defused = true; InterfaceManager.SendEffectLocationUnsafe(61, c4.Drop.model.position); BarricadeManager.destroyBarricade(region, x, y, plant, index); C4Manager.ActiveC4.Remove(c4); } }); return(false); }
public override Task DestroyAsync() { async UniTask DestroyTask() { await UniTask.SwitchToMainThread(); if (BarricadeDrop.GetNetId().IsNull()) { return; } if (BarricadeManager.tryGetRegion(BarricadeDrop.model, out var x, out var y, out var plant, out _)) { BarricadeManager.destroyBarricade(BarricadeDrop, x, y, plant); } } return(DestroyTask().AsTask()); }
public static void TellTakeBarricade_Prefix(byte x, byte y, ushort plant, ushort index) { if (BarricadeManager.tryGetRegion(x, y, plant, out BarricadeRegion barricadeRegion)) { InteractableBed interactableBed = barricadeRegion.drops[index].interactable as InteractableBed; if (interactableBed != null) { var home = HomesHelper.GetPlayerHome(interactableBed.owner, interactableBed); if (home != null) { HomesHelper.RemoveHome(interactableBed.owner, home); if (PlayerTool.getPlayer(interactableBed.owner) != null) { UnturnedChat.Say(interactableBed.owner, MoreHomesPlugin.Instance.Translate("HomeDestroyed", home.Name), MoreHomesPlugin.Instance.MessageColor); } } } } }
private static void TellTransformBarricade(BarricadeManager __instance, CSteamID steamID, byte x, byte y, ushort plant, uint instanceID) { ThreadUtil.assertIsGameThread(); if (!__instance.channel.checkServer(steamID) || !BarricadeManager.tryGetRegion(x, y, plant, out var region)) { return; } var index = region.barricades.FindIndex(k => k.instanceID == instanceID); if (index < 0) { return; } var data = region.barricades[index]; var drop = region.drops[index]; OnBarricadeTransformed?.Invoke(data, drop, CurrentTransformingPlayerId); }
internal static void ReceiveTransformBarricade(byte x, byte y, ushort plant, uint instanceID) { var buildable = BuildableDirectory.GetBuildable(instanceID, false); if (buildable == null) { if (!BarricadeManager.tryGetRegion(x, y, plant, out var region)) { return; } var data = region.barricades.FirstOrDefault(k => k.instanceID == instanceID); var drop = region.drops.FirstOrDefault(k => k.instanceID == instanceID); if (data == null || drop == null) { return; } buildable = new BarricadeBuildable(data, drop); } OnBuildableTransformed?.Invoke(buildable !); }
public static bool AskClaimBed_Prefix(BarricadeManager __instance, CSteamID steamID, byte x, byte y, ushort plant, ushort index) { BarricadeRegion barricadeRegion; if (Provider.isServer && BarricadeManager.tryGetRegion(x, y, plant, out barricadeRegion)) { Player player = PlayerTool.getPlayer(steamID); if (player == null) { return(false); } if (player.life.isDead) { return(false); } if (index >= barricadeRegion.drops.Count) { return(false); } if ((barricadeRegion.drops[index].model.transform.position - player.transform.position).sqrMagnitude > 400f) { return(false); } InteractableBed interactableBed = barricadeRegion.drops[index].interactable as InteractableBed; if (interactableBed != null && interactableBed.isClaimable && interactableBed.checkClaim(player.channel.owner.playerID.steamID)) { if (interactableBed.isClaimed) { #region RemoveHome HomesHelper.TryRemoveHome(steamID, interactableBed); #endregion if (plant == 65535) { BarricadeManager.instance.channel.send("tellClaimBed", ESteamCall.ALL, x, y, BarricadeManager.BARRICADE_REGIONS, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[] { x, y, plant, index, CSteamID.Nil }); } else { BarricadeManager.instance.channel.send("tellClaimBed", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[] { x, y, plant, index, CSteamID.Nil }); } } else { #region AddHome if (!HomesHelper.TryClaimHome(steamID, interactableBed)) { return(false); } #endregion // THIS HAS TO BE COMMENT OUT //BarricadeManager.unclaimBeds(player.channel.owner.playerID.steamID); if (plant == 65535) { BarricadeManager.instance.channel.send("tellClaimBed", ESteamCall.ALL, x, y, BarricadeManager.BARRICADE_REGIONS, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[] { x, y, plant, index, player.channel.owner.playerID.steamID }); } else { BarricadeManager.instance.channel.send("tellClaimBed", ESteamCall.ALL, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[] { x, y, plant, index, player.channel.owner.playerID.steamID }); } } BitConverter.GetBytes(interactableBed.owner.m_SteamID).CopyTo(barricadeRegion.barricades[index].barricade.state, 0); } } return(true); }
public static Transform dropBarricade(Barricade barricade, Transform hit, Vector3 point, float angle_x, float angle_y, float angle_z, ulong owner, ulong group) { // #Nelson doesn't know how to optimize!!! ItemBarricadeAsset itemBarricadeAsset = (ItemBarricadeAsset)Assets.find(EAssetType.ITEM, barricade.id); Transform result = null; if (itemBarricadeAsset == null) { return(result); } Vector3 eulerAngles = BarricadeManager.getRotation(itemBarricadeAsset, angle_x, angle_y, angle_z).eulerAngles; angle_x = (float)(Mathf.RoundToInt(eulerAngles.x / 2f) * 2); angle_y = (float)(Mathf.RoundToInt(eulerAngles.y / 2f) * 2); angle_z = (float)(Mathf.RoundToInt(eulerAngles.z / 2f) * 2); byte b3; byte b4; BarricadeRegion barricadeRegion2; bool cancel = false; if (hit != null && hit.transform.CompareTag("Vehicle")) // Placed on vehicle??? { byte b; byte b2; ushort num; BarricadeRegion barricadeRegion; if (!BarricadeManager.tryGetPlant(hit, out b, out b2, out num, out barricadeRegion)) { return(result); } BarricadeData barricadeData = new BarricadeData(barricade, point, MeasurementTool.angleToByte(angle_x), MeasurementTool.angleToByte(angle_y), MeasurementTool.angleToByte(angle_z), owner, @group, Provider.time); ServerEvents.RunBarricadeCreated(barricadeData, ref cancel); if (cancel) { return(null); } barricadeRegion.barricades.Add(barricadeData); uint num2 = (uint)typeof(BarricadeManager).GetField("", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null) + 1u; result = (Transform)typeof(BarricadeManager).GetMethod("spawnBarricade", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(BarricadeManager.instance, new object[] { barricadeRegion, barricade.id, barricade.state, barricadeData.point, barricadeData.angle_x, barricadeData.angle_y, barricadeData.angle_z, 100, barricadeData.owner, barricadeData.@group, num2 }); BarricadeManager.instance.channel.send("tellBarricade", ESteamCall.OTHERS, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[] { b, b2, num, barricade.id, barricade.state, barricadeData.point, barricadeData.angle_x, barricadeData.angle_y, barricadeData.angle_z, barricadeData.owner, barricadeData.@group, num2 }); } else if (Regions.tryGetCoordinate(point, out b3, out b4) && BarricadeManager.tryGetRegion(b3, b4, 65535, out barricadeRegion2)) { BarricadeData barricadeData2 = new BarricadeData(barricade, point, MeasurementTool.angleToByte(angle_x), MeasurementTool.angleToByte(angle_y), MeasurementTool.angleToByte(angle_z), owner, @group, Provider.time); ServerEvents.RunBarricadeCreated(barricadeData2, ref cancel); if (cancel) { return(null); } barricadeRegion2.barricades.Add(barricadeData2); uint num3 = (uint)typeof(BarricadeManager).GetField("", BindingFlags.Static | BindingFlags.NonPublic).GetValue(null) + 1u; result = (Transform)typeof(BarricadeManager).GetMethod("spawnBarricade", BindingFlags.NonPublic | BindingFlags.Instance).Invoke(BarricadeManager.instance, new object[] { barricadeRegion2, barricade.id, barricade.state, barricadeData2.point, barricadeData2.angle_x, barricadeData2.angle_y, barricadeData2.angle_z, 100, barricadeData2.owner, barricadeData2.@group, num3 }); BarricadeManager.instance.channel.send("tellBarricade", ESteamCall.OTHERS, b3, b4, BarricadeManager.BARRICADE_REGIONS, ESteamPacket.UPDATE_RELIABLE_BUFFER, new object[] { b3, b4, 65535, barricade.id, barricade.state, barricadeData2.point, barricadeData2.angle_x, barricadeData2.angle_y, barricadeData2.angle_z, barricadeData2.owner, barricadeData2.@group, num3 }); } return(result); }
public virtual void read(SteamChannel channel) { this.sequence = (int)channel.read(Types.INT32_TYPE); this.recov = (int)channel.read(Types.INT32_TYPE); this.keys = (ushort)channel.read(Types.UINT16_TYPE); byte b = (byte)channel.read(Types.BYTE_TYPE); if (b > 0) { this.serversideInputs = new Queue <InputInfo>((int)b); for (byte b2 = 0; b2 < b; b2 += 1) { InputInfo inputInfo = new InputInfo(); inputInfo.type = (ERaycastInfoType)((byte)channel.read(Types.BYTE_TYPE)); switch (inputInfo.type) { case ERaycastInfoType.NONE: inputInfo.point = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.normal = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.material = (EPhysicsMaterial)((byte)channel.read(Types.BYTE_TYPE)); break; case ERaycastInfoType.SKIP: inputInfo = null; break; case ERaycastInfoType.OBJECT: { inputInfo.point = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.direction = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.normal = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.material = (EPhysicsMaterial)((byte)channel.read(Types.BYTE_TYPE)); inputInfo.section = (byte)channel.read(Types.BYTE_TYPE); byte x = (byte)channel.read(Types.BYTE_TYPE); byte y = (byte)channel.read(Types.BYTE_TYPE); ushort index = (ushort)channel.read(Types.UINT16_TYPE); LevelObject @object = ObjectManager.getObject(x, y, index); if (@object != null && @object.transform != null && (inputInfo.point - @object.transform.position).sqrMagnitude < 256f) { inputInfo.transform = @object.transform; } else { inputInfo.type = ERaycastInfoType.NONE; } break; } case ERaycastInfoType.PLAYER: { inputInfo.point = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.direction = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.normal = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.limb = (ELimb)((byte)channel.read(Types.BYTE_TYPE)); CSteamID steamID = (CSteamID)channel.read(Types.STEAM_ID_TYPE); Player player = PlayerTool.getPlayer(steamID); if (player != null && (inputInfo.point - player.transform.position).sqrMagnitude < 256f) { inputInfo.material = EPhysicsMaterial.FLESH_DYNAMIC; inputInfo.player = player; inputInfo.transform = player.transform; } else { inputInfo = null; } break; } case ERaycastInfoType.ZOMBIE: { inputInfo.point = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.direction = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.normal = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.limb = (ELimb)((byte)channel.read(Types.BYTE_TYPE)); ushort id = (ushort)channel.read(Types.UINT16_TYPE); Zombie zombie = ZombieManager.getZombie(inputInfo.point, id); if (zombie != null && (inputInfo.point - zombie.transform.position).sqrMagnitude < 256f) { if (zombie.isRadioactive) { inputInfo.material = EPhysicsMaterial.ALIEN_DYNAMIC; } else { inputInfo.material = EPhysicsMaterial.FLESH_DYNAMIC; } inputInfo.zombie = zombie; inputInfo.transform = zombie.transform; } else { inputInfo = null; } break; } case ERaycastInfoType.ANIMAL: { inputInfo.point = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.direction = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.normal = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.limb = (ELimb)((byte)channel.read(Types.BYTE_TYPE)); ushort index2 = (ushort)channel.read(Types.UINT16_TYPE); Animal animal = AnimalManager.getAnimal(index2); if (animal != null && (inputInfo.point - animal.transform.position).sqrMagnitude < 256f) { inputInfo.material = EPhysicsMaterial.FLESH_DYNAMIC; inputInfo.animal = animal; inputInfo.transform = animal.transform; } else { inputInfo = null; } break; } case ERaycastInfoType.VEHICLE: { inputInfo.point = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.normal = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.material = (EPhysicsMaterial)((byte)channel.read(Types.BYTE_TYPE)); uint instanceID = (uint)channel.read(Types.UINT32_TYPE); InteractableVehicle vehicle = VehicleManager.getVehicle(instanceID); if (vehicle != null && (vehicle == channel.owner.player.movement.getVehicle() || (inputInfo.point - vehicle.transform.position).sqrMagnitude < 4096f)) { inputInfo.vehicle = vehicle; inputInfo.transform = vehicle.transform; } else { inputInfo = null; } break; } case ERaycastInfoType.BARRICADE: { inputInfo.point = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.normal = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.material = (EPhysicsMaterial)((byte)channel.read(Types.BYTE_TYPE)); byte x2 = (byte)channel.read(Types.BYTE_TYPE); byte y2 = (byte)channel.read(Types.BYTE_TYPE); ushort plant = (ushort)channel.read(Types.UINT16_TYPE); ushort num = (ushort)channel.read(Types.UINT16_TYPE); BarricadeRegion barricadeRegion; if (BarricadeManager.tryGetRegion(x2, y2, plant, out barricadeRegion) && (int)num < barricadeRegion.drops.Count) { Transform model = barricadeRegion.drops[(int)num].model; if (model != null && (inputInfo.point - model.transform.position).sqrMagnitude < 256f) { inputInfo.transform = model; } else { inputInfo = null; } } else { inputInfo = null; } break; } case ERaycastInfoType.STRUCTURE: { inputInfo.point = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.direction = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.normal = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.material = (EPhysicsMaterial)((byte)channel.read(Types.BYTE_TYPE)); byte x3 = (byte)channel.read(Types.BYTE_TYPE); byte y3 = (byte)channel.read(Types.BYTE_TYPE); ushort num2 = (ushort)channel.read(Types.UINT16_TYPE); StructureRegion structureRegion; if (StructureManager.tryGetRegion(x3, y3, out structureRegion) && (int)num2 < structureRegion.drops.Count) { Transform model2 = structureRegion.drops[(int)num2].model; if (model2 != null && (inputInfo.point - model2.transform.position).sqrMagnitude < 256f) { inputInfo.transform = model2; } else { inputInfo = null; } } else { inputInfo = null; } break; } case ERaycastInfoType.RESOURCE: { inputInfo.point = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.direction = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.normal = (Vector3)channel.read(Types.VECTOR3_TYPE); inputInfo.material = (EPhysicsMaterial)((byte)channel.read(Types.BYTE_TYPE)); byte x4 = (byte)channel.read(Types.BYTE_TYPE); byte y4 = (byte)channel.read(Types.BYTE_TYPE); ushort index3 = (ushort)channel.read(Types.UINT16_TYPE); Transform resource = ResourceManager.getResource(x4, y4, index3); if (resource != null && (inputInfo.point - resource.transform.position).sqrMagnitude < 256f) { inputInfo.transform = resource; } else { inputInfo = null; } break; } } if (inputInfo != null) { this.serversideInputs.Enqueue(inputInfo); } } } }