RM_Area.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. /************************************************************************************************
  2. *
  3. * Copyright (C) 2001-2002 Raven Software
  4. *
  5. * RM_Area.h
  6. *
  7. ************************************************************************************************/
  8. #pragma once
  9. #if !defined(RM_AREA_H_INC)
  10. #define RM_AREA_H_INC
  11. #ifdef DEBUG_LINKING
  12. #pragma message("...including RM_Area.h")
  13. #endif
  14. class CRMArea
  15. {
  16. private:
  17. float mPaddingSize;
  18. float mSpacingRadius;
  19. float mConfineRadius;
  20. float mRadius;
  21. float mAngle;
  22. int mMoveCount;
  23. vec3_t mOrigin;
  24. vec3_t mConfineOrigin;
  25. vec3_t mLookAtOrigin;
  26. bool mCollision;
  27. bool mFlatten;
  28. bool mLookAt;
  29. bool mLockOrigin;
  30. int mSymmetric;
  31. public:
  32. CRMArea ( float spacing, float padding, float confine, vec3_t confineOrigin, vec3_t lookAtOrigin, bool flatten = true, int symmetric = 0 );
  33. void Mirror ( void );
  34. void SetOrigin(vec3_t origin) { VectorCopy ( origin, mOrigin ); }
  35. void SetAngle(float angle) { mAngle = angle; }
  36. void SetSymmetric(int sym) { mSymmetric = sym; }
  37. void EnableCollision(bool e) { mCollision = e; }
  38. void EnableLookAt(bool la) {mLookAt = la; }
  39. float LookAt(vec3_t lookat);
  40. void LockOrigin( void ) { mLockOrigin = true; }
  41. void AddMoveCount() { mMoveCount++; }
  42. void ClearMoveCount() { mMoveCount=0; }
  43. float GetPaddingSize() { return mPaddingSize; }
  44. float GetSpacingRadius() { return mSpacingRadius; }
  45. float GetRadius() { return mRadius; }
  46. float GetConfineRadius() { return mConfineRadius; }
  47. float GetAngle() { return mAngle; }
  48. int GetMoveCount() { return mMoveCount; }
  49. vec_t* GetOrigin() { return mOrigin; }
  50. vec_t* GetConfineOrigin() { return mConfineOrigin; }
  51. vec_t* GetLookAtOrigin() { return mLookAtOrigin; }
  52. bool GetLookAt() { return mLookAt;}
  53. bool GetLockOrigin() { return mLockOrigin; }
  54. int GetSymmetric() { return mSymmetric; }
  55. void SetRadius(float r) { mRadius = r; }
  56. bool IsCollisionEnabled(){ return mCollision; }
  57. bool IsFlattened (){ return mFlatten; }
  58. };
  59. typedef vector<CRMArea*> rmAreaVector_t;
  60. class CRMAreaManager
  61. {
  62. private:
  63. rmAreaVector_t mAreas;
  64. vec3_t mMins;
  65. vec3_t mMaxs;
  66. float mWidth;
  67. float mHeight;
  68. public:
  69. CRMAreaManager ( const vec3_t mins, const vec3_t maxs );
  70. ~CRMAreaManager ( );
  71. 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);
  72. void MoveArea ( CRMArea* area, vec3_t origin);
  73. CRMArea* EnumArea ( const int index );
  74. // void CreateMap ( void );
  75. };
  76. #endif