private static Collider BuildBoundingCollider(FrustumV2 Frustum, RangeGameObjectV2 RangeGameObject) { var boxCollider = RangeGameObject.RangeGameObject.AddComponent <BoxCollider>(); boxCollider.center = new Vector3(0, 0, Frustum.F2.FaceOffsetFromCenter.z / 4f); boxCollider.size = new Vector3(Mathf.Max(Frustum.F1.Width, Frustum.F2.Width), Math.Max(Frustum.F1.Height, Frustum.F2.Height), Frustum.F2.FaceOffsetFromCenter.z / 2f); boxCollider.isTrigger = true; return(boxCollider); }
private static Collider BuildBoundingCollider(FrustumV2 Frustum, RangeGameObjectV2 RangeGameObject) { Frustum.BuildLocalBoundingBox(out Vector3 localSize, out Vector3 localCenter); var boxCollider = RangeGameObject.RangeGameObject.AddComponent <BoxCollider>(); boxCollider.center = localCenter; boxCollider.size = localSize; boxCollider.isTrigger = true; return(boxCollider); }
public FrustumRangeObjectPositioningSystem(FrustumV2 Frustum, RangeObjectV2 RoundedFrustumRangeObjectV2) : base(RoundedFrustumRangeObjectV2) { Frustum.CalculateFrustumWorldPositionyFace(out FrustumPointsPositions LocalFrustumPointPositions, new TransformStruct { WorldPosition = Vector3.zero, WorldRotationEuler = Vector3.zero, LossyScale = Vector3.one }); this.RangeFrustumWorldPositioning = new RangeFrustumWorldPositioning { LocalFrustumPositions = LocalFrustumPointPositions }; }
private void CreateAndAddFrustumV2(Vector3 lC1, Vector3 lC2, Vector3 lC3, Vector3 lC4) { var frustum = new FrustumV2(); frustum.FaceDistance = 9999f; frustum.F2v3 = new FrustumFaceV3(); frustum.F1v3.LocalC1 = lC1; frustum.F1v3.LocalC2 = lC2; frustum.F1v3.LocalC3 = lC3; frustum.F1v3.LocalC4 = lC4; FaceFrustums.Add(frustum); }
private static void DrawFrustum(FrustumV2 frustum, Transform transform, bool isRounded) { frustum.CalculateFrustumWorldPositionyFace(out var LocalFrustumPointPositions, new TransformStruct { WorldPosition = Vector3.zero, WorldRotationEuler = Vector3.zero, LossyScale = Vector3.one }); var frustumWorldPositions = new RangeFrustumWorldPositioning { LocalFrustumPositions = LocalFrustumPointPositions }.GetWorldFrustumPositions(transform.localToWorldMatrix); DrawFace(frustumWorldPositions.FC1, frustumWorldPositions.FC2, frustumWorldPositions.FC3, frustumWorldPositions.FC4); DrawFace(frustumWorldPositions.FC1, frustumWorldPositions.FC5, frustumWorldPositions.FC6, frustumWorldPositions.FC2); DrawFace(frustumWorldPositions.FC2, frustumWorldPositions.FC6, frustumWorldPositions.FC7, frustumWorldPositions.FC3); DrawFace(frustumWorldPositions.FC3, frustumWorldPositions.FC7, frustumWorldPositions.FC8, frustumWorldPositions.FC4); DrawFace(frustumWorldPositions.FC4, frustumWorldPositions.FC8, frustumWorldPositions.FC5, frustumWorldPositions.FC1); DrawFace(frustumWorldPositions.FC5, frustumWorldPositions.FC6, frustumWorldPositions.FC7, frustumWorldPositions.FC8); if (isRounded) { Handles.DrawWireDisc(transform.position, transform.up, frustum.FaceDistance); } }