00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef CYBWEATHERBOXC_H
00026 #define CYBWEATHERBOXC_H
00027
00028 #include "oaw/ctk/cybgeometryc.h"
00029 #include "oaw/ctk/cybwrlfields.h"
00030 #include "../oawconfig.h"
00031
00032 OAW_BEGIN_NAMESPACE
00033
00034
00035 class OAW_DLLMAPPING CybWeatherBoxC : public CybGeometryC
00036 {
00037 public:
00038 CybWeatherBoxC(CybWorldC*);
00039 CybWeatherBoxC(const CybWeatherBoxC&);
00040 CybWeatherBoxC& operator=(const CybWeatherBoxC&);
00041
00042 protected:
00043 virtual void CreateNewCopy(CybGeometryC*);
00044
00045 public:
00046 virtual void LoadVRML(char*& iter, const char* iterEnd, long& znr);
00047 virtual void SetEvent(long srct, const void* pData, BaseI*);
00048 virtual long GetFieldDataType(long fieldID);
00049 virtual long GetFieldEventID(const char* str);
00050 virtual short GetFieldData(long nFieldID, void* dest);
00051
00052 virtual void ToChannelDefault(CybChannelC* pV, long lFlag);
00053
00054 protected:
00055
00056 SFVec3f GetNewParticle();
00057 SFBool IsParticleDead(SFVec3f &v);
00058
00059 public:
00060 void UpdateGeometry();
00061
00062 protected:
00063
00064 SFVec3f* m_particles;
00065 SFInt32 m_nNumParticles;
00066
00067 public:
00068
00069 SFString m_strType;
00070 SFVec3f m_vSize;
00071 SFVec3f m_vDirection;
00072 SFInt32 m_nMaxParticles;
00073 SFFloat m_fParticleSize;
00074 SFFloat m_fSpeedFactor;
00075
00076 private:
00077 static char VRMLKeyStrList[][30];
00078 };
00079
00080 OAW_END_NAMESPACE
00081
00082
00083 #endif