efgeo.h 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. #ifndef _efgeo_H_
  2. #define _efgeo_H_
  3. //////////////////////////////////////////////////////////////////////////////
  4. //
  5. // effect geos
  6. //
  7. //////////////////////////////////////////////////////////////////////////////
  8. TRef<Geo> CreateDebrisGeo(Modeler* pmodeler, Number* ptime, Viewport* pviewport);
  9. TRef<Geo> CreateCullGeo(Geo* pgeo);
  10. TRef<Geo> CreateCopyModeGeo(Geo* pgeo);
  11. TRef<Geo> CreateWireSphereGeo(float minDot, int hSegments);
  12. TRef<Geo> CreateBoltGeo(VectorValue* pstart, VectorValue* pend, float size, Surface* psurface);
  13. TRef<Geo> CreateConeGeo(Number* pangle);
  14. TRef<Geo> CreateTrailGeo(
  15. Modeler* pmodeler,
  16. const Color& color,
  17. VectorValue* pvectorPosition,
  18. VectorValue* pvectorRight,
  19. Boolean* pbooleanMoving,
  20. Number* ptime
  21. );
  22. //////////////////////////////////////////////////////////////////////////////
  23. //
  24. // Aleph Geo
  25. //
  26. //////////////////////////////////////////////////////////////////////////////
  27. TRef<Geo> CreateAlephGeo(Modeler* pmodeler, TEvent<float>::Source* pevent, Number* ptime);
  28. //////////////////////////////////////////////////////////////////////////////
  29. //
  30. // MineField Geo
  31. //
  32. //////////////////////////////////////////////////////////////////////////////
  33. class MineFieldGeo : public Geo {
  34. public:
  35. virtual void SetStrength(float strength) = 0;
  36. };
  37. TRef<MineFieldGeo> CreateMineFieldGeo(Surface* psurface, float strength, float radius);
  38. //////////////////////////////////////////////////////////////////////////////
  39. //
  40. // Build Effect Geo
  41. //
  42. //////////////////////////////////////////////////////////////////////////////
  43. class BuildEffectGeo : public Geo {
  44. protected:
  45. BuildEffectGeo(Number* ptime) :
  46. Geo(ptime)
  47. {
  48. }
  49. Number* GetTime() { return Number::Cast(GetChild(0)); }
  50. public:
  51. virtual float GetRadius() = 0;
  52. virtual void SetRadius(float r) = 0;
  53. virtual const Vector& GetPosition() = 0;
  54. virtual void SetPosition(const Vector& p) = 0;
  55. virtual void SetColors(float aInner, float fInner, float fOuter) = 0;
  56. };
  57. TRef<BuildEffectGeo> CreateBuildEffectGeo(
  58. Modeler* pmodeler,
  59. Number* ptime,
  60. const Color& color
  61. );
  62. //////////////////////////////////////////////////////////////////////////////
  63. //
  64. // Pulse Geo
  65. //
  66. //////////////////////////////////////////////////////////////////////////////
  67. class PulseGeo : public Geo {
  68. protected:
  69. PulseGeo(Number* ptime) :
  70. Geo(ptime)
  71. {
  72. }
  73. Number* GetTime() { return Number::Cast(GetChild(0)); }
  74. public:
  75. virtual void AddPulse (float fExplodeTime, float fRadius, const Vector& vecPosition, const Color& color) = 0;
  76. };
  77. TRef<PulseGeo> CreatePulseGeo(Modeler* pmodeler, Number* ptime);
  78. //////////////////////////////////////////////////////////////////////////////
  79. //
  80. // HullHitGeo
  81. //
  82. //////////////////////////////////////////////////////////////////////////////
  83. class HullHitGeo : public Geo {
  84. protected:
  85. HullHitGeo(Number* ptime) :
  86. Geo(ptime)
  87. {
  88. }
  89. public:
  90. virtual void AddHullHit(const Vector& vecPosition, const Vector& vecNormal) = 0;
  91. };
  92. TRef<HullHitGeo> CreateHullHitGeo(Modeler* pmodeler, Number* ptime);
  93. //////////////////////////////////////////////////////////////////////////////
  94. //
  95. // BitsGeo
  96. //
  97. //////////////////////////////////////////////////////////////////////////////
  98. class BitsGeo : public Geo {
  99. public:
  100. BitsGeo(Number* ptime) :
  101. Geo(ptime)
  102. {
  103. }
  104. virtual void AddBit(
  105. const Vector& vecPosition,
  106. const Vector& dvecPosition,
  107. float size
  108. ) = 0;
  109. //
  110. // Value methods
  111. //
  112. ZString GetFunctionName() { return "BitsGeo"; }
  113. };
  114. TRef<BitsGeo> CreateBitsGeo(Modeler* pmodeler, Number* ptime);
  115. #endif