00001 #ifndef __SHADOWABLE_H__ 00002 #define __SHADOWABLE_H__ 00003 #include "mlib/points.H" 00004 #include "geom/geom.H" 00005 #ifndef SHADOW_PTR_DEFINED 00006 #define SHADOW_PTR_DEFINED 00007 MAKE_PTR_SUBC(Shadow, GEOM); 00008 #endif 00009 00010 class Shadowable { 00011 public: 00012 //**** PUBLIC INTERFACE **** 00013 void init_shadow(const mlib::Wplane &pln); 00014 void show_shadow(); 00015 void hide_shadow(); 00016 protected: 00017 virtual ~Shadowable() {} 00018 00019 //**** OVERRIDES **** 00020 virtual Shadowptr create_shadow(const mlib::Wplane &pln) = 0; 00021 virtual void cast_shadow() = 0; 00022 virtual GEOMptr get_geom() = 0; 00023 00024 //**** MEMBER VARIABLES **** 00025 REFptr<Shadow> _shadow; 00026 }; 00027 #endif