00001 #ifndef __RENDERABLE__
00002 #define __RENDERABLE__
00003
00004 #include "Vec3.h"
00005
00006 namespace apig {
00007
00009 class Renderable {
00010 public:
00011 virtual ~Renderable() {}
00012 virtual void init() {}
00013 virtual void render() const = 0;
00014 virtual Vec3 center() const { return Vec3(0,0,0); }
00015 virtual float radius() const { return 1.0f; }
00016 };
00017
00019 class RenderableCube : public Renderable {
00020 public:
00021 RenderableCube(float c) : c(c) {}
00022
00023 virtual void render() const;
00024
00025
00026 virtual float radius() const;
00027
00028 private:
00029 float c;
00030 };
00031
00033 class RenderableTeapot : public Renderable {
00034 public:
00035 RenderableTeapot(float r) : r(r) {}
00036
00037 virtual void render() const;
00038
00039
00040 virtual float radius() const;
00041
00042 private:
00043 float r;
00044 };
00045
00046 }
00047
00048 #endif
00049