ObjectLayerObjectMask.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using System;
  4. using System.Collections.Generic;
  5. namespace O3DWB
  6. {
  7. [Serializable]
  8. public class ObjectLayerObjectMask : ScriptableObject
  9. {
  10. #region Private Variables
  11. [SerializeField]
  12. private int _layerMask = 0;
  13. [SerializeField]
  14. private ObjectLayerObjectMaskView _view;
  15. #endregion
  16. #region Public Properties
  17. public ObjectLayerObjectMaskView View { get { return _view; } }
  18. #endregion
  19. #region Constructors
  20. public ObjectLayerObjectMask()
  21. {
  22. _view = new ObjectLayerObjectMaskView(this);
  23. }
  24. #endregion
  25. #region Public Methods
  26. public bool IsMasked(int objectLayer)
  27. {
  28. return LayerExtensions.IsLayerNumberValid(objectLayer) && (_layerMask & (1 << objectLayer)) != 0;
  29. }
  30. public void Mask(int objectLayer)
  31. {
  32. if (LayerExtensions.IsLayerNumberValid(objectLayer)) _layerMask |= (1 << objectLayer);
  33. }
  34. public void MaskAll()
  35. {
  36. _layerMask = ~0;
  37. }
  38. public void Unmask(int objectLayer)
  39. {
  40. if (LayerExtensions.IsLayerNumberValid(objectLayer)) _layerMask &= ~(1 << objectLayer);
  41. }
  42. public void UnmaskAll()
  43. {
  44. _layerMask = 0;
  45. }
  46. public void RemoveInvalidLayerNumbers()
  47. {
  48. _layerMask = LayerExtensions.ClearMaskOfInvalidLayers(_layerMask);
  49. }
  50. #endregion
  51. }
  52. }
  53. #endif