vee_orderer.h

Go to the documentation of this file.
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 VEE_ORDERER_H
00021 #define VEE_ORDERER_H
00022 
00023 #include <vee_object.h>
00024 
00025 #include <map>
00026 #include <list>
00027 
00028 class VEE_ForceObject;
00029 
00048 class VEE_Orderer
00049 {
00050 public:
00051   VEE_Orderer();
00052   ~VEE_Orderer();
00053   
00054   typedef std::multimap<float, VEE_Object *>::iterator iterator;
00055 
00057   iterator begin() { return m_objects.begin();}
00059   iterator end() { return m_objects.end(); }
00060 
00061   uint size() { return m_objects.size(); }
00062 
00064   static VEE_Object *getObject(iterator & it)
00065   { return (*it).second; }
00066 
00068   void setCameraPosition(const VEE_Vector3 &p) { m_camPos = p; }
00069 
00070   void addScene(VEE_SceneBox *);
00071   void clear();
00072 
00073 protected:
00074   std::multimap<float, VEE_Object *> m_objects;
00075 
00076   VEE_Vector3 m_camPos;
00077 };
00078 
00081 
00089 class VEE_OrdererCollector
00090 {
00091 public:
00092   typedef std::multimap<float, VEE_ParticleVisualInfo>::iterator iterator;
00093   typedef std::list<VEE_ForceObject *>::iterator forceIterator;
00094 
00095   VEE_OrdererCollector();
00096   ~VEE_OrdererCollector();
00097 
00099   iterator begin() { return m_objects.begin();}
00101   iterator end() { return m_objects.end(); }
00102 
00103   uint size() { return m_objects.size(); }
00104 
00106   forceIterator forceBegin() { return m_forces.begin();}
00108   forceIterator forceEnd() { return m_forces.end(); }
00109   
00110   uint forceCount() { return m_forces.size(); }
00111 
00113   static VEE_ParticleVisualInfo & getObject(iterator & it)
00114   { return (*it).second; }
00115 
00117   static VEE_ForceObject * getForce(forceIterator & it)
00118   { return (*it); }
00119 
00121   void setCameraPosition(const VEE_Vector3 &p) { m_camPos = p; }
00122 
00123   void addScene(VEE_SceneBox *);
00124   void clear();
00125 
00126 protected:
00127 
00128   std::multimap<float, VEE_ParticleVisualInfo> m_objects;
00129   std::list<VEE_ForceObject *> m_forces;
00130   
00131   VEE_Vector3 m_camPos;
00132 
00133 private:
00134   // Disabled
00135   VEE_OrdererCollector(const VEE_OrdererCollector & ) {}
00136   VEE_OrdererCollector & operator = (const VEE_OrdererCollector & ) 
00137   { return * this; }
00138 };
00139 
00140 #endif

Generated on Mon Mar 12 21:09:01 2007 for VEE - The Visual Effects Engine by  doxygen 1.4.6