00001 00014 #ifndef _FADING_EXPLOSION_H_ 00015 #define _FADING_EXPLOSION_H_ 00016 00017 #include <Inventor/nodes/SoRotation.h> 00018 #include <Inventor/nodes/SoTextureCoordinate2.h> 00019 00020 #include "camera.h" 00021 #include "explosion.h" 00022 #include "templates/observer.h" 00023 00029 class FadingExplosion: public Explosion, public Templates::Observer<Camera> 00030 { 00031 private: 00032 00034 float _actualTime; 00035 00037 Camera *_camera; 00038 00040 SoMaterial* _material; 00041 00042 public: 00043 00045 static const float FADEOFF_TIME; 00046 00047 private: 00048 00049 // Disable copy constructor and assignment operator 00050 FadingExplosion(const FadingExplosion &); 00051 FadingExplosion & operator=(const FadingExplosion &); 00052 00053 public: 00054 00064 FadingExplosion(SbColor color, Camera *camera); 00065 00069 virtual ~FadingExplosion(); 00070 00071 // Override 00072 FadingExplosion *clone() const; 00073 00074 // Override 00075 virtual void timeUpdate(float dt); 00076 00077 // Override 00078 virtual void update(Camera *subject); 00079 }; 00080 00081 #endif 00082