00001 /* -*- C++ -*- */ 00002 00003 /* COPYRIGHT 00004 * 00005 * This file is part of the Visual Effects Engine - VEE 00006 * 00007 * Read the "VEE-LICENSE" file for the license. 00008 * 00009 * Authors & Copyright: 00010 * 00011 * Tommi Ilmonen, Tuukka Heikura, Marko Myllymaa and 00012 * Janne Kontkanen 2001-2004 00013 * 00014 * Additional copyrights: Tekes 2003-2004 00015 * 00016 * firstname.lastname@hut.fi 00017 * 00018 */ 00019 00020 #ifndef GEE_COLLECTOR_RENDERER_H 00021 #define GEE_COLLECTOR_RENDERER_H 00022 00023 #include <gee_renderer.h> 00024 #include <gee_transparency_list.h> 00025 00026 #include <list> 00027 00028 class GEE_Geometry; 00029 00030 class GEE_CollectorRenderer : public GEE_Renderer 00031 { 00032 public: 00033 00034 GEE_CollectorRenderer(); 00035 virtual ~GEE_CollectorRenderer(); 00036 00037 virtual void renderGroupStructure(GEE_Group *); 00038 virtual void renderLines3D(GEE_Lines3D *); 00039 virtual void renderPath3D(GEE_Path3D *); 00040 virtual void renderParticleObject(GEE_ParticleObject *); 00041 virtual void renderPolygonMesh(GEE_PolygonMesh *); 00042 virtual void renderProfile(GEE_Profile *); 00043 virtual void renderSphere(GEE_Sphere *); 00044 virtual void renderTriangleMesh(GEE_TriangleMesh *); 00045 virtual void renderVeeObject(VEE_Object *, 00046 const VEE_Matrix4 * m = 0, 00047 float scale = 0.0f); 00048 00049 virtual void pushTransform(const VEE_Matrix4d &); 00050 virtual void pushTransform(const VEE_Matrix4 &); 00051 virtual void popTransform(); 00052 virtual void enableTransforms(bool enable); 00053 virtual bool enableTransforms(); 00054 00055 void clear(); 00056 00057 GEE_TransparencyList & transparencies() { return m_transparencies; } 00058 GEE_TransparencyList & solids() { return m_solids; } 00059 00060 void setCameraLocation(const VEE_Vector3 &l) 00061 { 00062 m_transparencies.setCameraLocation(l); 00063 m_solids.setCameraLocation(l); 00064 } 00065 00066 protected: 00067 GEE_TransparencyList m_transparencies; 00068 GEE_TransparencyList m_solids; 00069 00070 enum { STACK_MAXIMUM = 64 }; 00071 00072 VEE_Matrix4d m_stack[STACK_MAXIMUM]; 00073 VEE_Matrix4 m_current; 00074 int m_stackIndex; 00075 }; 00076 00077 00078 #endif