LayerExtensions.cs 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using System.Collections.Generic;
  4. public static class LayerExtensions
  5. {
  6. #region Utilities
  7. public static int GetDefaultLayer()
  8. {
  9. return 0;
  10. }
  11. public static int GetMinLayerNumber()
  12. {
  13. return 0;
  14. }
  15. public static int GetMaxLayerNumber()
  16. {
  17. return 31;
  18. }
  19. public static bool IsLayerNumberValid(int layerNumber)
  20. {
  21. return layerNumber >= GetMinLayerNumber() && layerNumber <= GetMaxLayerNumber();
  22. }
  23. public static List<string> GetAllAvailableLayerNames()
  24. {
  25. int minLayerNumber = GetMinLayerNumber();
  26. int maxLayerNumber = GetMaxLayerNumber();
  27. var layerNames = new List<string>();
  28. for (int layerIndex = minLayerNumber; layerIndex <= maxLayerNumber; ++layerIndex)
  29. {
  30. if (DoesLayerExist(layerIndex)) layerNames.Add(LayerMask.LayerToName(layerIndex));
  31. }
  32. return layerNames;
  33. }
  34. public static List<int> GetAllAvailableLayers()
  35. {
  36. int minLayerNumber = GetMinLayerNumber();
  37. int maxLayerNumber = GetMaxLayerNumber();
  38. var layerNumbers = new List<int>();
  39. for (int layerIndex = minLayerNumber; layerIndex <= maxLayerNumber; ++layerIndex)
  40. {
  41. if (DoesLayerExist(layerIndex)) layerNumbers.Add(layerIndex);
  42. }
  43. return layerNumbers;
  44. }
  45. public static bool DoesLayerExist(int layerNumber)
  46. {
  47. string layerName = LayerMask.LayerToName(layerNumber);
  48. return !string.IsNullOrEmpty(layerName);
  49. }
  50. public static int ClearMaskOfInvalidLayers(int layerMask)
  51. {
  52. int minLayerNumber = GetMinLayerNumber();
  53. int maxLayerNumber = GetMaxLayerNumber();
  54. int newLayerMask = layerMask;
  55. for (int layerIndex = minLayerNumber; layerIndex <= maxLayerNumber; ++layerIndex)
  56. {
  57. if (!DoesLayerExist(layerIndex)) newLayerMask &= ~(1 << layerIndex);
  58. }
  59. return newLayerMask;
  60. }
  61. #endregion
  62. }
  63. #endif