1
0
mirror of https://github.com/Halofreak1990/XFXFramework synced 2024-12-26 13:49:34 +01:00
XFXFramework/include/BoundingFrustum.h

91 lines
2.8 KiB
C
Raw Permalink Normal View History

/*****************************************************************************
* BoundingFrustum.h *
* *
* XFX::BoundingFrustum class definition file *
* Copyright (c) XFX Team. All Rights Reserved *
*****************************************************************************/
#ifndef _XFX_BOUNDINGFRUSTRUM_
#define _XFX_BOUNDINGFRUSTRUM_
#include "Enums.h"
#include "Matrix.h"
#include "Plane.h"
#include <System/Object.h>
#include <System/Types.h>
using namespace System;
namespace XFX
{
struct BoundingBox;
struct BoundingSphere;
struct Ray;
struct Vector3;
/**
* Defines a frustum and helps determine whether shapes intersect with it.
*/
class BoundingFrustum : public IEquatable<BoundingFrustum>, public 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 SupportMapping(Vector3 v, out Vector3& result);
public:
Plane Bottom();
static const int CornerCount;
Plane Far();
Plane Left();
Matrix getMatrix();
void setMatrix(Matrix value);
Plane Near();
Plane Right();
Plane Top();
BoundingFrustum();
BoundingFrustum(Matrix value);
BoundingFrustum(const BoundingFrustum &obj); // copy constructor
ContainmentType_t Contains(BoundingBox box);
ContainmentType_t Contains(BoundingFrustum 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(Object const * const obj) const;
bool Equals(const BoundingFrustum other) const;
Vector3* GetCorners();
void GetCorners(Vector3 corners[]);
int GetHashCode() const;
static const Type& GetType();
bool Intersects(BoundingBox box);
bool Intersects(BoundingFrustum 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);
2013-07-11 20:00:07 +02:00
const String ToString() const;
bool operator==(const BoundingFrustum& other) const;
bool operator!=(const BoundingFrustum& other) const;
};
}
#endif //_XFX_BOUNDINGFRUSTRUM_