OBB3 CreateOBB() { var rootBone = RootTransform(); var localBounds = LocalBounds(); switch (targetCoordinates) { case CoordinatesEnum.World: return(new OBB3(rootBone.EncapsulateInWorldSpace(localBounds), Matrix4x4.identity)); case CoordinatesEnum.Self: var rootToSelfMatrix = transform.worldToLocalMatrix * rootBone.localToWorldMatrix; return(new OBB3(localBounds.EncapsulateInTargetSpace(rootToSelfMatrix), transform.localToWorldMatrix)); default: return(OBB3.Create(rootBone, localBounds)); } }
void LoadIfNecessary() { if (meshFilter == null) { meshFilter = GetComponent <MeshFilter>(); } if (ch2 == null) { ch2 = new ConvexHull2(new List <Vector3>()); } if (obb2 == null) { obb2 = new OBB2(ch2); } if (ch3 == null) { ch3 = new ConvexHull3(new List <Vector3>()); } if (obb3 == null) { obb3 = new OBB3(ch3); } }
public override bool UpdateConvex() { return((_obb = CreateOBB()) != null); }