00001 00014 #ifndef _EXPLOSION_H_ 00015 #define _EXPLOSION_H_ 00016 00017 #include "bubble.h" 00018 #include "graphical_node.h" 00019 #include "time_updateable.h" 00020 #include "templates/callable_back.h" 00021 00029 class Explosion: public TimeUpdateable, public GraphicalNode 00030 { 00031 private: 00032 00034 SoTranslation *_position; 00035 00036 private: 00037 00038 // Disable copy constructor and assignment operator 00039 Explosion(const Explosion &); 00040 Explosion & operator=(const Explosion &); 00041 00042 protected: 00043 00046 Templates::CallableBack<Explosion> *_explodeDone; 00047 00049 const SbColor _color; 00050 00052 bool _isActive; 00053 00054 public: 00055 00061 Explosion(SbColor color); 00062 00066 virtual ~Explosion(); 00067 00073 virtual Explosion *clone() const =0; 00074 00083 void explode(Templates::CallableBack<Explosion> *explodeDone); 00084 00093 void setPosition(SbVec3f position) 00094 { 00095 _position->translation.setValue(position); 00096 } 00097 }; 00098 00099 #endif