#ifndef _efgeo_H_ #define _efgeo_H_ ////////////////////////////////////////////////////////////////////////////// // // effect geos // ////////////////////////////////////////////////////////////////////////////// TRef CreateDebrisGeo(Modeler* pmodeler, Number* ptime, Viewport* pviewport); TRef CreateCullGeo(Geo* pgeo); TRef CreateCopyModeGeo(Geo* pgeo); TRef CreateWireSphereGeo(float minDot, int hSegments); TRef CreateBoltGeo(VectorValue* pstart, VectorValue* pend, float size, Surface* psurface); TRef CreateConeGeo(Number* pangle); TRef CreateTrailGeo( Modeler* pmodeler, const Color& color, VectorValue* pvectorPosition, VectorValue* pvectorRight, Boolean* pbooleanMoving, Number* ptime ); ////////////////////////////////////////////////////////////////////////////// // // Aleph Geo // ////////////////////////////////////////////////////////////////////////////// TRef CreateAlephGeo(Modeler* pmodeler, TEvent::Source* pevent, Number* ptime); ////////////////////////////////////////////////////////////////////////////// // // MineField Geo // ////////////////////////////////////////////////////////////////////////////// class MineFieldGeo : public Geo { public: virtual void SetStrength(float strength) = 0; }; TRef CreateMineFieldGeo(Surface* psurface, float strength, float radius); ////////////////////////////////////////////////////////////////////////////// // // Build Effect Geo // ////////////////////////////////////////////////////////////////////////////// class BuildEffectGeo : public Geo { protected: BuildEffectGeo(Number* ptime) : Geo(ptime) { } Number* GetTime() { return Number::Cast(GetChild(0)); } public: virtual float GetRadius() = 0; virtual void SetRadius(float r) = 0; virtual const Vector& GetPosition() = 0; virtual void SetPosition(const Vector& p) = 0; virtual void SetColors(float aInner, float fInner, float fOuter) = 0; }; TRef CreateBuildEffectGeo( Modeler* pmodeler, Number* ptime, const Color& color ); ////////////////////////////////////////////////////////////////////////////// // // Pulse Geo // ////////////////////////////////////////////////////////////////////////////// class PulseGeo : public Geo { protected: PulseGeo(Number* ptime) : Geo(ptime) { } Number* GetTime() { return Number::Cast(GetChild(0)); } public: virtual void AddPulse (float fExplodeTime, float fRadius, const Vector& vecPosition, const Color& color) = 0; }; TRef CreatePulseGeo(Modeler* pmodeler, Number* ptime); ////////////////////////////////////////////////////////////////////////////// // // HullHitGeo // ////////////////////////////////////////////////////////////////////////////// class HullHitGeo : public Geo { protected: HullHitGeo(Number* ptime) : Geo(ptime) { } public: virtual void AddHullHit(const Vector& vecPosition, const Vector& vecNormal) = 0; }; TRef CreateHullHitGeo(Modeler* pmodeler, Number* ptime); ////////////////////////////////////////////////////////////////////////////// // // BitsGeo // ////////////////////////////////////////////////////////////////////////////// class BitsGeo : public Geo { public: BitsGeo(Number* ptime) : Geo(ptime) { } virtual void AddBit( const Vector& vecPosition, const Vector& dvecPosition, float size ) = 0; // // Value methods // ZString GetFunctionName() { return "BitsGeo"; } }; TRef CreateBitsGeo(Modeler* pmodeler, Number* ptime); #endif