mirror of
				https://github.com/thunderbrewhq/thunderbrew
				synced 2025-10-28 14:56:06 +03:00 
			
		
		
		
	
		
			
				
	
	
		
			371 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			371 lines
		
	
	
		
			17 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| //-------------------------------------------------------------------------------------
 | |
| // DirectXCollision.h -- C++ Collision Math library
 | |
| //
 | |
| // Copyright (c) Microsoft Corporation.
 | |
| // Licensed under the MIT License.
 | |
| //
 | |
| // http://go.microsoft.com/fwlink/?LinkID=615560
 | |
| //-------------------------------------------------------------------------------------
 | |
| 
 | |
| #pragma once
 | |
| 
 | |
| #include "DirectXMath.h"
 | |
| 
 | |
| namespace DirectX
 | |
| {
 | |
| 
 | |
|     enum ContainmentType
 | |
|     {
 | |
|         DISJOINT = 0,
 | |
|         INTERSECTS = 1,
 | |
|         CONTAINS = 2
 | |
|     };
 | |
| 
 | |
|     enum PlaneIntersectionType
 | |
|     {
 | |
|         FRONT = 0,
 | |
|         INTERSECTING = 1,
 | |
|         BACK = 2
 | |
|     };
 | |
| 
 | |
|     struct BoundingBox;
 | |
|     struct BoundingOrientedBox;
 | |
|     struct BoundingFrustum;
 | |
| 
 | |
| #ifdef _MSC_VER
 | |
| #pragma warning(push)
 | |
| #pragma warning(disable:4324 4820)
 | |
|     // C4324: alignment padding warnings
 | |
|     // C4820: Off by default noise
 | |
| #endif
 | |
| 
 | |
|     //-------------------------------------------------------------------------------------
 | |
|     // Bounding sphere
 | |
|     //-------------------------------------------------------------------------------------
 | |
|     struct BoundingSphere
 | |
|     {
 | |
|         XMFLOAT3 Center;            // Center of the sphere.
 | |
|         float Radius;               // Radius of the sphere.
 | |
| 
 | |
|         // Creators
 | |
|         BoundingSphere() noexcept : Center(0, 0, 0), Radius(1.f) {}
 | |
| 
 | |
|         BoundingSphere(const BoundingSphere&) = default;
 | |
|         BoundingSphere& operator=(const BoundingSphere&) = default;
 | |
| 
 | |
|         BoundingSphere(BoundingSphere&&) = default;
 | |
|         BoundingSphere& operator=(BoundingSphere&&) = default;
 | |
| 
 | |
|         constexpr BoundingSphere(_In_ const XMFLOAT3& center, _In_ float radius) noexcept
 | |
|             : Center(center), Radius(radius) {}
 | |
| 
 | |
|         // Methods
 | |
|         void    XM_CALLCONV     Transform(_Out_ BoundingSphere& Out, _In_ FXMMATRIX M) const noexcept;
 | |
|         void    XM_CALLCONV     Transform(_Out_ BoundingSphere& Out, _In_ float Scale, _In_ FXMVECTOR Rotation, _In_ FXMVECTOR Translation) const noexcept;
 | |
|         // Transform the sphere
 | |
| 
 | |
|         ContainmentType    XM_CALLCONV     Contains(_In_ FXMVECTOR Point) const noexcept;
 | |
|         ContainmentType    XM_CALLCONV     Contains(_In_ FXMVECTOR V0, _In_ FXMVECTOR V1, _In_ FXMVECTOR V2) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingSphere& sh) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingBox& box) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingOrientedBox& box) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingFrustum& fr) const noexcept;
 | |
| 
 | |
|         bool Intersects(_In_ const BoundingSphere& sh) const noexcept;
 | |
|         bool Intersects(_In_ const BoundingBox& box) const noexcept;
 | |
|         bool Intersects(_In_ const BoundingOrientedBox& box) const noexcept;
 | |
|         bool Intersects(_In_ const BoundingFrustum& fr) const noexcept;
 | |
| 
 | |
|         bool    XM_CALLCONV     Intersects(_In_ FXMVECTOR V0, _In_ FXMVECTOR V1, _In_ FXMVECTOR V2) const noexcept;
 | |
|         // Triangle-sphere test
 | |
| 
 | |
|         PlaneIntersectionType    XM_CALLCONV     Intersects(_In_ FXMVECTOR Plane) const noexcept;
 | |
|         // Plane-sphere test
 | |
| 
 | |
|         bool    XM_CALLCONV     Intersects(_In_ FXMVECTOR Origin, _In_ FXMVECTOR Direction, _Out_ float& Dist) const noexcept;
 | |
|         // Ray-sphere test
 | |
| 
 | |
|         ContainmentType     XM_CALLCONV     ContainedBy(_In_ FXMVECTOR Plane0, _In_ FXMVECTOR Plane1, _In_ FXMVECTOR Plane2,
 | |
|             _In_ GXMVECTOR Plane3, _In_ HXMVECTOR Plane4, _In_ HXMVECTOR Plane5) const noexcept;
 | |
|         // Test sphere against six planes (see BoundingFrustum::GetPlanes)
 | |
| 
 | |
|         // Static methods
 | |
|         static void CreateMerged(_Out_ BoundingSphere& Out, _In_ const BoundingSphere& S1, _In_ const BoundingSphere& S2) noexcept;
 | |
| 
 | |
|         static void CreateFromBoundingBox(_Out_ BoundingSphere& Out, _In_ const BoundingBox& box) noexcept;
 | |
|         static void CreateFromBoundingBox(_Out_ BoundingSphere& Out, _In_ const BoundingOrientedBox& box) noexcept;
 | |
| 
 | |
|         static void CreateFromPoints(_Out_ BoundingSphere& Out, _In_ size_t Count,
 | |
|             _In_reads_bytes_(sizeof(XMFLOAT3) + Stride * (Count - 1)) const XMFLOAT3* pPoints, _In_ size_t Stride) noexcept;
 | |
| 
 | |
|         static void CreateFromFrustum(_Out_ BoundingSphere& Out, _In_ const BoundingFrustum& fr) noexcept;
 | |
|     };
 | |
| 
 | |
|     //-------------------------------------------------------------------------------------
 | |
|     // Axis-aligned bounding box
 | |
|     //-------------------------------------------------------------------------------------
 | |
|     struct BoundingBox
 | |
|     {
 | |
|         static constexpr size_t CORNER_COUNT = 8;
 | |
| 
 | |
|         XMFLOAT3 Center;            // Center of the box.
 | |
|         XMFLOAT3 Extents;           // Distance from the center to each side.
 | |
| 
 | |
|         // Creators
 | |
|         BoundingBox() noexcept : Center(0, 0, 0), Extents(1.f, 1.f, 1.f) {}
 | |
| 
 | |
|         BoundingBox(const BoundingBox&) = default;
 | |
|         BoundingBox& operator=(const BoundingBox&) = default;
 | |
| 
 | |
|         BoundingBox(BoundingBox&&) = default;
 | |
|         BoundingBox& operator=(BoundingBox&&) = default;
 | |
| 
 | |
|         constexpr BoundingBox(_In_ const XMFLOAT3& center, _In_ const XMFLOAT3& extents) noexcept
 | |
|             : Center(center), Extents(extents) {}
 | |
| 
 | |
|         // Methods
 | |
|         void    XM_CALLCONV     Transform(_Out_ BoundingBox& Out, _In_ FXMMATRIX M) const noexcept;
 | |
|         void    XM_CALLCONV     Transform(_Out_ BoundingBox& Out, _In_ float Scale, _In_ FXMVECTOR Rotation, _In_ FXMVECTOR Translation) const noexcept;
 | |
| 
 | |
|         void GetCorners(_Out_writes_(8) XMFLOAT3* Corners) const noexcept;
 | |
|         // Gets the 8 corners of the box
 | |
| 
 | |
|         ContainmentType    XM_CALLCONV     Contains(_In_ FXMVECTOR Point) const noexcept;
 | |
|         ContainmentType    XM_CALLCONV     Contains(_In_ FXMVECTOR V0, _In_ FXMVECTOR V1, _In_ FXMVECTOR V2) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingSphere& sh) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingBox& box) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingOrientedBox& box) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingFrustum& fr) const noexcept;
 | |
| 
 | |
|         bool Intersects(_In_ const BoundingSphere& sh) const noexcept;
 | |
|         bool Intersects(_In_ const BoundingBox& box) const noexcept;
 | |
|         bool Intersects(_In_ const BoundingOrientedBox& box) const noexcept;
 | |
|         bool Intersects(_In_ const BoundingFrustum& fr) const noexcept;
 | |
| 
 | |
|         bool    XM_CALLCONV     Intersects(_In_ FXMVECTOR V0, _In_ FXMVECTOR V1, _In_ FXMVECTOR V2) const noexcept;
 | |
|         // Triangle-Box test
 | |
| 
 | |
|         PlaneIntersectionType    XM_CALLCONV     Intersects(_In_ FXMVECTOR Plane) const noexcept;
 | |
|         // Plane-box test
 | |
| 
 | |
|         bool    XM_CALLCONV     Intersects(_In_ FXMVECTOR Origin, _In_ FXMVECTOR Direction, _Out_ float& Dist) const noexcept;
 | |
|         // Ray-Box test
 | |
| 
 | |
|         ContainmentType     XM_CALLCONV     ContainedBy(_In_ FXMVECTOR Plane0, _In_ FXMVECTOR Plane1, _In_ FXMVECTOR Plane2,
 | |
|             _In_ GXMVECTOR Plane3, _In_ HXMVECTOR Plane4, _In_ HXMVECTOR Plane5) const noexcept;
 | |
|         // Test box against six planes (see BoundingFrustum::GetPlanes)
 | |
| 
 | |
|         // Static methods
 | |
|         static void CreateMerged(_Out_ BoundingBox& Out, _In_ const BoundingBox& b1, _In_ const BoundingBox& b2) noexcept;
 | |
| 
 | |
|         static void CreateFromSphere(_Out_ BoundingBox& Out, _In_ const BoundingSphere& sh) noexcept;
 | |
| 
 | |
|         static void    XM_CALLCONV     CreateFromPoints(_Out_ BoundingBox& Out, _In_ FXMVECTOR pt1, _In_ FXMVECTOR pt2) noexcept;
 | |
|         static void CreateFromPoints(_Out_ BoundingBox& Out, _In_ size_t Count,
 | |
|             _In_reads_bytes_(sizeof(XMFLOAT3) + Stride * (Count - 1)) const XMFLOAT3* pPoints, _In_ size_t Stride) noexcept;
 | |
|     };
 | |
| 
 | |
|     //-------------------------------------------------------------------------------------
 | |
|     // Oriented bounding box
 | |
|     //-------------------------------------------------------------------------------------
 | |
|     struct BoundingOrientedBox
 | |
|     {
 | |
|         static constexpr size_t CORNER_COUNT = 8;
 | |
| 
 | |
|         XMFLOAT3 Center;            // Center of the box.
 | |
|         XMFLOAT3 Extents;           // Distance from the center to each side.
 | |
|         XMFLOAT4 Orientation;       // Unit quaternion representing rotation (box -> world).
 | |
| 
 | |
|         // Creators
 | |
|         BoundingOrientedBox() noexcept : Center(0, 0, 0), Extents(1.f, 1.f, 1.f), Orientation(0, 0, 0, 1.f) {}
 | |
| 
 | |
|         BoundingOrientedBox(const BoundingOrientedBox&) = default;
 | |
|         BoundingOrientedBox& operator=(const BoundingOrientedBox&) = default;
 | |
| 
 | |
|         BoundingOrientedBox(BoundingOrientedBox&&) = default;
 | |
|         BoundingOrientedBox& operator=(BoundingOrientedBox&&) = default;
 | |
| 
 | |
|         constexpr BoundingOrientedBox(_In_ const XMFLOAT3& center, _In_ const XMFLOAT3& extents, _In_ const XMFLOAT4& orientation) noexcept
 | |
|             : Center(center), Extents(extents), Orientation(orientation) {}
 | |
| 
 | |
|         // Methods
 | |
|         void    XM_CALLCONV     Transform(_Out_ BoundingOrientedBox& Out, _In_ FXMMATRIX M) const noexcept;
 | |
|         void    XM_CALLCONV     Transform(_Out_ BoundingOrientedBox& Out, _In_ float Scale, _In_ FXMVECTOR Rotation, _In_ FXMVECTOR Translation) const noexcept;
 | |
| 
 | |
|         void GetCorners(_Out_writes_(8) XMFLOAT3* Corners) const noexcept;
 | |
|         // Gets the 8 corners of the box
 | |
| 
 | |
|         ContainmentType    XM_CALLCONV     Contains(_In_ FXMVECTOR Point) const noexcept;
 | |
|         ContainmentType    XM_CALLCONV     Contains(_In_ FXMVECTOR V0, _In_ FXMVECTOR V1, _In_ FXMVECTOR V2) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingSphere& sh) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingBox& box) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingOrientedBox& box) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingFrustum& fr) const noexcept;
 | |
| 
 | |
|         bool Intersects(_In_ const BoundingSphere& sh) const noexcept;
 | |
|         bool Intersects(_In_ const BoundingBox& box) const noexcept;
 | |
|         bool Intersects(_In_ const BoundingOrientedBox& box) const noexcept;
 | |
|         bool Intersects(_In_ const BoundingFrustum& fr) const noexcept;
 | |
| 
 | |
|         bool    XM_CALLCONV     Intersects(_In_ FXMVECTOR V0, _In_ FXMVECTOR V1, _In_ FXMVECTOR V2) const noexcept;
 | |
|         // Triangle-OrientedBox test
 | |
| 
 | |
|         PlaneIntersectionType    XM_CALLCONV     Intersects(_In_ FXMVECTOR Plane) const noexcept;
 | |
|         // Plane-OrientedBox test
 | |
| 
 | |
|         bool    XM_CALLCONV     Intersects(_In_ FXMVECTOR Origin, _In_ FXMVECTOR Direction, _Out_ float& Dist) const noexcept;
 | |
|         // Ray-OrientedBox test
 | |
| 
 | |
|         ContainmentType     XM_CALLCONV     ContainedBy(_In_ FXMVECTOR Plane0, _In_ FXMVECTOR Plane1, _In_ FXMVECTOR Plane2,
 | |
|             _In_ GXMVECTOR Plane3, _In_ HXMVECTOR Plane4, _In_ HXMVECTOR Plane5) const noexcept;
 | |
|         // Test OrientedBox against six planes (see BoundingFrustum::GetPlanes)
 | |
| 
 | |
|         // Static methods
 | |
|         static void CreateFromBoundingBox(_Out_ BoundingOrientedBox& Out, _In_ const BoundingBox& box) noexcept;
 | |
| 
 | |
|         static void CreateFromPoints(_Out_ BoundingOrientedBox& Out, _In_ size_t Count,
 | |
|             _In_reads_bytes_(sizeof(XMFLOAT3) + Stride * (Count - 1)) const XMFLOAT3* pPoints, _In_ size_t Stride) noexcept;
 | |
|     };
 | |
| 
 | |
|     //-------------------------------------------------------------------------------------
 | |
|     // Bounding frustum
 | |
|     //-------------------------------------------------------------------------------------
 | |
|     struct BoundingFrustum
 | |
|     {
 | |
|         static constexpr size_t CORNER_COUNT = 8;
 | |
| 
 | |
|         XMFLOAT3 Origin;            // Origin of the frustum (and projection).
 | |
|         XMFLOAT4 Orientation;       // Quaternion representing rotation.
 | |
| 
 | |
|         float RightSlope;           // Positive X (X/Z)
 | |
|         float LeftSlope;            // Negative X
 | |
|         float TopSlope;             // Positive Y (Y/Z)
 | |
|         float BottomSlope;          // Negative Y
 | |
|         float Near, Far;            // Z of the near plane and far plane.
 | |
| 
 | |
|         // Creators
 | |
|         BoundingFrustum() noexcept :
 | |
|             Origin(0, 0, 0), Orientation(0, 0, 0, 1.f), RightSlope(1.f), LeftSlope(-1.f),
 | |
|             TopSlope(1.f), BottomSlope(-1.f), Near(0), Far(1.f) {}
 | |
| 
 | |
|         BoundingFrustum(const BoundingFrustum&) = default;
 | |
|         BoundingFrustum& operator=(const BoundingFrustum&) = default;
 | |
| 
 | |
|         BoundingFrustum(BoundingFrustum&&) = default;
 | |
|         BoundingFrustum& operator=(BoundingFrustum&&) = default;
 | |
| 
 | |
|         constexpr BoundingFrustum(_In_ const XMFLOAT3& origin, _In_ const XMFLOAT4& orientation,
 | |
|             _In_ float rightSlope, _In_ float leftSlope, _In_ float topSlope, _In_ float bottomSlope,
 | |
|             _In_ float nearPlane, _In_ float farPlane) noexcept
 | |
|             : Origin(origin), Orientation(orientation),
 | |
|             RightSlope(rightSlope), LeftSlope(leftSlope), TopSlope(topSlope), BottomSlope(bottomSlope),
 | |
|             Near(nearPlane), Far(farPlane) {}
 | |
|         BoundingFrustum(_In_ CXMMATRIX Projection, bool rhcoords = false) noexcept;
 | |
| 
 | |
|         // Methods
 | |
|         void    XM_CALLCONV     Transform(_Out_ BoundingFrustum& Out, _In_ FXMMATRIX M) const noexcept;
 | |
|         void    XM_CALLCONV     Transform(_Out_ BoundingFrustum& Out, _In_ float Scale, _In_ FXMVECTOR Rotation, _In_ FXMVECTOR Translation) const noexcept;
 | |
| 
 | |
|         void GetCorners(_Out_writes_(8) XMFLOAT3* Corners) const noexcept;
 | |
|         // Gets the 8 corners of the frustum
 | |
| 
 | |
|         ContainmentType    XM_CALLCONV     Contains(_In_ FXMVECTOR Point) const noexcept;
 | |
|         ContainmentType    XM_CALLCONV     Contains(_In_ FXMVECTOR V0, _In_ FXMVECTOR V1, _In_ FXMVECTOR V2) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingSphere& sp) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingBox& box) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingOrientedBox& box) const noexcept;
 | |
|         ContainmentType Contains(_In_ const BoundingFrustum& fr) const noexcept;
 | |
|         // Frustum-Frustum test
 | |
| 
 | |
|         bool Intersects(_In_ const BoundingSphere& sh) const noexcept;
 | |
|         bool Intersects(_In_ const BoundingBox& box) const noexcept;
 | |
|         bool Intersects(_In_ const BoundingOrientedBox& box) const noexcept;
 | |
|         bool Intersects(_In_ const BoundingFrustum& fr) const noexcept;
 | |
| 
 | |
|         bool    XM_CALLCONV     Intersects(_In_ FXMVECTOR V0, _In_ FXMVECTOR V1, _In_ FXMVECTOR V2) const noexcept;
 | |
|         // Triangle-Frustum test
 | |
| 
 | |
|         PlaneIntersectionType    XM_CALLCONV     Intersects(_In_ FXMVECTOR Plane) const noexcept;
 | |
|         // Plane-Frustum test
 | |
| 
 | |
|         bool    XM_CALLCONV     Intersects(_In_ FXMVECTOR rayOrigin, _In_ FXMVECTOR Direction, _Out_ float& Dist) const noexcept;
 | |
|         // Ray-Frustum test
 | |
| 
 | |
|         ContainmentType     XM_CALLCONV     ContainedBy(_In_ FXMVECTOR Plane0, _In_ FXMVECTOR Plane1, _In_ FXMVECTOR Plane2,
 | |
|             _In_ GXMVECTOR Plane3, _In_ HXMVECTOR Plane4, _In_ HXMVECTOR Plane5) const noexcept;
 | |
|         // Test frustum against six planes (see BoundingFrustum::GetPlanes)
 | |
| 
 | |
|         void GetPlanes(_Out_opt_ XMVECTOR* NearPlane, _Out_opt_ XMVECTOR* FarPlane, _Out_opt_ XMVECTOR* RightPlane,
 | |
|             _Out_opt_ XMVECTOR* LeftPlane, _Out_opt_ XMVECTOR* TopPlane, _Out_opt_ XMVECTOR* BottomPlane) const noexcept;
 | |
|         // Create 6 Planes representation of Frustum
 | |
| 
 | |
|         // Static methods
 | |
|         static void     XM_CALLCONV     CreateFromMatrix(_Out_ BoundingFrustum& Out, _In_ FXMMATRIX Projection, bool rhcoords = false) noexcept;
 | |
|     };
 | |
| 
 | |
|     //-----------------------------------------------------------------------------
 | |
|     // Triangle intersection testing routines.
 | |
|     //-----------------------------------------------------------------------------
 | |
|     namespace TriangleTests
 | |
|     {
 | |
|         bool                    XM_CALLCONV     Intersects(_In_ FXMVECTOR Origin, _In_ FXMVECTOR Direction, _In_ FXMVECTOR V0, _In_ GXMVECTOR V1, _In_ HXMVECTOR V2, _Out_ float& Dist) noexcept;
 | |
|         // Ray-Triangle
 | |
| 
 | |
|         bool                    XM_CALLCONV     Intersects(_In_ FXMVECTOR A0, _In_ FXMVECTOR A1, _In_ FXMVECTOR A2, _In_ GXMVECTOR B0, _In_ HXMVECTOR B1, _In_ HXMVECTOR B2) noexcept;
 | |
|         // Triangle-Triangle
 | |
| 
 | |
|         PlaneIntersectionType   XM_CALLCONV     Intersects(_In_ FXMVECTOR V0, _In_ FXMVECTOR V1, _In_ FXMVECTOR V2, _In_ GXMVECTOR Plane) noexcept;
 | |
|         // Plane-Triangle
 | |
| 
 | |
|         ContainmentType         XM_CALLCONV     ContainedBy(_In_ FXMVECTOR V0, _In_ FXMVECTOR V1, _In_ FXMVECTOR V2,
 | |
|             _In_ GXMVECTOR Plane0, _In_ HXMVECTOR Plane1, _In_ HXMVECTOR Plane2,
 | |
|             _In_ CXMVECTOR Plane3, _In_ CXMVECTOR Plane4, _In_ CXMVECTOR Plane5) noexcept;
 | |
|         // Test a triangle against six planes at once (see BoundingFrustum::GetPlanes)
 | |
|     }
 | |
| 
 | |
| #ifdef _MSC_VER
 | |
| #pragma warning(pop)
 | |
| #endif
 | |
| 
 | |
|     /****************************************************************************
 | |
|      *
 | |
|      * Implementation
 | |
|      *
 | |
|      ****************************************************************************/
 | |
| 
 | |
| #ifdef _MSC_VER
 | |
| #pragma warning(push)
 | |
| #pragma warning(disable : 4068 4365 4616 6001)
 | |
|      // C4068/4616: ignore unknown pragmas
 | |
|      // C4365: Off by default noise
 | |
|      // C6001: False positives
 | |
| #endif
 | |
| 
 | |
| #ifdef _PREFAST_
 | |
| #pragma prefast(push)
 | |
| #pragma prefast(disable : 25000, "FXMVECTOR is 16 bytes")
 | |
| #pragma prefast(disable : 26495, "Union initialization confuses /analyze")
 | |
| #endif
 | |
| 
 | |
| #ifdef __clang__
 | |
| #pragma clang diagnostic push
 | |
| #pragma clang diagnostic ignored "-Wfloat-equal"
 | |
| #pragma clang diagnostic ignored "-Wunknown-warning-option"
 | |
| #pragma clang diagnostic ignored "-Wunsafe-buffer-usage"
 | |
| #endif
 | |
| 
 | |
| #include "DirectXCollision.inl"
 | |
| 
 | |
| #ifdef __clang__
 | |
| #pragma clang diagnostic pop
 | |
| #endif
 | |
| #ifdef _PREFAST_
 | |
| #pragma prefast(pop)
 | |
| #endif
 | |
| #ifdef _MSC_VER
 | |
| #pragma warning(pop)
 | |
| #endif
 | |
| 
 | |
| } // namespace DirectX
 | |
| 
 | 
