99 lines
2.7 KiB
C++
99 lines
2.7 KiB
C++
/************************************************************************************************
|
|
*
|
|
* Copyright (C) 2001-2002 Raven Software
|
|
*
|
|
* RM_Area.h
|
|
*
|
|
************************************************************************************************/
|
|
|
|
#pragma once
|
|
#if !defined(RM_AREA_H_INC)
|
|
#define RM_AREA_H_INC
|
|
|
|
#ifdef DEBUG_LINKING
|
|
#pragma message("...including RM_Area.h")
|
|
#endif
|
|
|
|
class CRMArea
|
|
{
|
|
private:
|
|
|
|
float mPaddingSize;
|
|
float mSpacingRadius;
|
|
float mConfineRadius;
|
|
float mRadius;
|
|
float mAngle;
|
|
int mMoveCount;
|
|
vec3_t mOrigin;
|
|
vec3_t mConfineOrigin;
|
|
vec3_t mLookAtOrigin;
|
|
bool mCollision;
|
|
bool mFlatten;
|
|
bool mLookAt;
|
|
bool mLockOrigin;
|
|
int mSymmetric;
|
|
|
|
public:
|
|
|
|
CRMArea ( float spacing, float padding, float confine, vec3_t confineOrigin, vec3_t lookAtOrigin, bool flatten = true, int symmetric = 0 );
|
|
|
|
void Mirror ( void );
|
|
|
|
void SetOrigin(vec3_t origin) { VectorCopy ( origin, mOrigin ); }
|
|
void SetAngle(float angle) { mAngle = angle; }
|
|
void SetSymmetric(int sym) { mSymmetric = sym; }
|
|
|
|
void EnableCollision(bool e) { mCollision = e; }
|
|
void EnableLookAt(bool la) {mLookAt = la; }
|
|
|
|
float LookAt(vec3_t lookat);
|
|
void LockOrigin( void ) { mLockOrigin = true; }
|
|
|
|
void AddMoveCount() { mMoveCount++; }
|
|
void ClearMoveCount() { mMoveCount=0; }
|
|
|
|
float GetPaddingSize() { return mPaddingSize; }
|
|
float GetSpacingRadius() { return mSpacingRadius; }
|
|
float GetRadius() { return mRadius; }
|
|
float GetConfineRadius() { return mConfineRadius; }
|
|
float GetAngle() { return mAngle; }
|
|
int GetMoveCount() { return mMoveCount; }
|
|
vec_t* GetOrigin() { return mOrigin; }
|
|
vec_t* GetConfineOrigin() { return mConfineOrigin; }
|
|
vec_t* GetLookAtOrigin() { return mLookAtOrigin; }
|
|
bool GetLookAt() { return mLookAt;}
|
|
bool GetLockOrigin() { return mLockOrigin; }
|
|
int GetSymmetric() { return mSymmetric; }
|
|
|
|
void SetRadius(float r) { mRadius = r; }
|
|
|
|
bool IsCollisionEnabled(){ return mCollision; }
|
|
bool IsFlattened (){ return mFlatten; }
|
|
};
|
|
|
|
typedef vector<CRMArea*> rmAreaVector_t;
|
|
|
|
class CRMAreaManager
|
|
{
|
|
private:
|
|
|
|
rmAreaVector_t mAreas;
|
|
vec3_t mMins;
|
|
vec3_t mMaxs;
|
|
float mWidth;
|
|
float mHeight;
|
|
|
|
public:
|
|
|
|
CRMAreaManager ( const vec3_t mins, const vec3_t maxs );
|
|
~CRMAreaManager ( );
|
|
|
|
CRMArea* CreateArea ( vec3_t origin, float spacing, int spacingline, float padding, float confine, vec3_t confineOrigin, vec3_t lookAtOrigin, bool flatten=true, bool collide=true, bool lockorigin=false, int symmetric=0);
|
|
void MoveArea ( CRMArea* area, vec3_t origin);
|
|
CRMArea* EnumArea ( const int index );
|
|
|
|
// void CreateMap ( void );
|
|
};
|
|
|
|
#endif
|
|
|