#if UNITY_EDITOR using UnityEngine; using System.Collections.Generic; namespace O3DWB { public class Object2ObjectBoxSnapData { public enum SnapBoxID { Left = 0, Right, Bottom, Top, Back, Front, } private static SnapBoxID[] _snapBoxIDs; static Object2ObjectBoxSnapData() { _snapBoxIDs = new SnapBoxID[] { SnapBoxID.Left, SnapBoxID.Right, SnapBoxID.Bottom, SnapBoxID.Top, SnapBoxID.Back, SnapBoxID.Front }; } private GameObject _meshObject; private List _modelSnapBoxes = new List(); public GameObject MeshObject { get { return _meshObject; } } public static SnapBoxID[] GetAllSnapBoxIDs() { return _snapBoxIDs.Clone() as SnapBoxID[]; } public static BoxFace[] GetBoxFaceToSnapBoxIDMap() { return new BoxFace[] { BoxFace.Left, BoxFace.Right, BoxFace.Bottom, BoxFace.Top, BoxFace.Back, BoxFace.Front }; } public Object2ObjectBoxSnapData(GameObject meshObject, List modelSnapBoxes) { _meshObject = meshObject; _modelSnapBoxes = new List(modelSnapBoxes); } public List GetModelSnapBoxes() { return new List(_modelSnapBoxes); } public List GetWorldSnapBoxes() { if (_meshObject == null) return new List(); Transform meshObjectTransform = _meshObject.transform; var worldSnapBoxes = new List(_modelSnapBoxes.Count); foreach(var modelBox in _modelSnapBoxes) { worldSnapBoxes.Add(new OrientedBox(modelBox, meshObjectTransform)); } return worldSnapBoxes; } public Box GetModelSnapBox(SnapBoxID snapBox) { return _modelSnapBoxes[(int)snapBox]; } } } #endif