1
0

SharedPowerMonitoringConsoleSystem.cs 835 B

12345678910111213141516171819202122232425262728
  1. using System.Runtime.CompilerServices;
  2. using JetBrains.Annotations;
  3. namespace Content.Shared.Power;
  4. [UsedImplicitly]
  5. public abstract class SharedPowerMonitoringConsoleSystem : EntitySystem
  6. {
  7. // Chunk size is limited as we require ChunkSize^2 <= 32 (number of bits in an int)
  8. public const int ChunkSize = 5;
  9. /// <summary>
  10. /// Converts the chunk's tile into a bitflag for the slot.
  11. /// </summary>
  12. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  13. public static int GetFlag(Vector2i relativeTile)
  14. {
  15. return 1 << (relativeTile.X * ChunkSize + relativeTile.Y);
  16. }
  17. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  18. public static Vector2i GetTileFromIndex(int index)
  19. {
  20. var x = index / ChunkSize;
  21. var y = index % ChunkSize;
  22. return new Vector2i(x, y);
  23. }
  24. }