/******************************************************** * BoundingFrustrum.h * * * * XFX BoundingFrustrum definition file * * Copyright © XFX Team. All Rights Reserved * ********************************************************/ #ifndef _XFX_BOUNDINGFRUSTRUM_ #define _XFX_BOUNDINGFRUSTRUM_ #include "Enums.h" #include "Matrix.h" #include "Plane.h" #include #include using namespace System; namespace XFX { struct BoundingBox; struct BoundingSphere; struct Ray; struct Vector3; // Defines a frustum and helps determine whether forms intersect with it. class BoundingFrustrum : virtual Object { private: static const int BottomPlaneIndex; Vector3 cornerArray[8]; static const int FarPlaneIndex; static const int LeftPlaneIndex; Matrix matrix; static const int NearPlaneIndex; static const int NumPlanes; Plane planes[6]; static const int RightPlaneIndex; static const int TopPlaneIndex; static Vector3 ComputeIntersection(Plane plane, Ray ray); static Ray ComputeIntersectionLine(Plane p1, Plane p2); void SetMatrix(Matrix value); void SupportMapping(Vector3 v, out Vector3 result); public: Plane Bottom(); static const int CornerCount; Plane Far(); Plane Left(); Matrix Matrix_(); void Matrix_(Matrix value); Plane Near(); Plane Right(); Plane Top(); BoundingFrustrum(); BoundingFrustrum(Matrix value); BoundingFrustrum(const BoundingFrustrum &obj); // copy constructor ContainmentType_t Contains(BoundingBox box); ContainmentType_t Contains(BoundingFrustrum frustrum); ContainmentType_t Contains(BoundingSphere sphere); ContainmentType_t Contains(Vector3 point); void Contains(BoundingBox box, out ContainmentType_t result); void Contains(BoundingSphere sphere, out ContainmentType_t result); void Contains(Vector3 point, out ContainmentType_t result); bool Equals(BoundingFrustrum other); Vector3* GetCorners(); void GetCorners(Vector3 corners[]); int GetHashCode(); bool Intersects(BoundingBox box); bool Intersects(BoundingFrustrum frustrum); bool Intersects(BoundingSphere sphere); PlaneIntersectionType_t Intersects(Plane plane); float Intersects(Ray ray); void Intersects(BoundingBox box, out bool result); void Intersects(BoundingSphere sphere, out bool result); void Intersects(Plane plane, out PlaneIntersectionType_t result); void Intersects(Ray ray, out float result); bool operator==(BoundingFrustrum other); bool operator!=(BoundingFrustrum other); }; } #endif //_XFX_BOUNDINGFRUSTRUM_