Object2ObjectBoxSnapData.cs 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #if UNITY_EDITOR
  2. using UnityEngine;
  3. using System.Collections.Generic;
  4. namespace O3DWB
  5. {
  6. public class Object2ObjectBoxSnapData
  7. {
  8. public enum SnapBoxID
  9. {
  10. Left = 0,
  11. Right,
  12. Bottom,
  13. Top,
  14. Back,
  15. Front,
  16. }
  17. private static SnapBoxID[] _snapBoxIDs;
  18. static Object2ObjectBoxSnapData()
  19. {
  20. _snapBoxIDs = new SnapBoxID[]
  21. {
  22. SnapBoxID.Left,
  23. SnapBoxID.Right,
  24. SnapBoxID.Bottom,
  25. SnapBoxID.Top,
  26. SnapBoxID.Back,
  27. SnapBoxID.Front
  28. };
  29. }
  30. private GameObject _meshObject;
  31. private List<Box> _modelSnapBoxes = new List<Box>();
  32. public GameObject MeshObject { get { return _meshObject; } }
  33. public static SnapBoxID[] GetAllSnapBoxIDs()
  34. {
  35. return _snapBoxIDs.Clone() as SnapBoxID[];
  36. }
  37. public static BoxFace[] GetBoxFaceToSnapBoxIDMap()
  38. {
  39. return new BoxFace[]
  40. {
  41. BoxFace.Left, BoxFace.Right, BoxFace.Bottom, BoxFace.Top, BoxFace.Back, BoxFace.Front
  42. };
  43. }
  44. public Object2ObjectBoxSnapData(GameObject meshObject, List<Box> modelSnapBoxes)
  45. {
  46. _meshObject = meshObject;
  47. _modelSnapBoxes = new List<Box>(modelSnapBoxes);
  48. }
  49. public List<Box> GetModelSnapBoxes()
  50. {
  51. return new List<Box>(_modelSnapBoxes);
  52. }
  53. public List<OrientedBox> GetWorldSnapBoxes()
  54. {
  55. if (_meshObject == null) return new List<OrientedBox>();
  56. Transform meshObjectTransform = _meshObject.transform;
  57. var worldSnapBoxes = new List<OrientedBox>(_modelSnapBoxes.Count);
  58. foreach(var modelBox in _modelSnapBoxes)
  59. {
  60. worldSnapBoxes.Add(new OrientedBox(modelBox, meshObjectTransform));
  61. }
  62. return worldSnapBoxes;
  63. }
  64. public Box GetModelSnapBox(SnapBoxID snapBox)
  65. {
  66. return _modelSnapBoxes[(int)snapBox];
  67. }
  68. }
  69. }
  70. #endif