00001 00002 00003 #ifndef DYNAMICCITY_H 00004 #define DYNAMICCITY_H 00005 00006 00007 #include "MeshModel.h" 00008 #include "Vector3f.h" 00009 00010 #include <vector> 00011 00012 00013 namespace pge { 00014 00015 00016 class Mesh; 00017 class SingleTexturedMesh; 00018 class Texture; 00019 00020 00021 class DynamicCity : public MeshModel { 00022 00023 00024 public: 00025 //************************************************************************ 00026 // 00027 // Constructor 00028 // 00029 //************************************************************************ 00031 DynamicCity(float width, float depth, Vector3f minHouseSize, Vector3f maxHouseSize); 00032 00033 00034 //************************************************************************ 00035 // 00036 // Destructor 00037 // 00038 //************************************************************************ 00040 virtual ~DynamicCity(void); 00041 00042 00043 //************************************************************************ 00044 // 00045 // Functions 00046 // 00047 //************************************************************************ 00048 bool init(void); 00049 00050 00051 private: 00052 //************************************************************************ 00053 // 00054 // Functions 00055 // 00056 //************************************************************************ 00057 void createCity(void); 00058 void createGround(Vector3f cityStartEdge, Vector3f cityEndEdge); 00059 Mesh* createHouse(float width, float height, float depth, Vector3f center, Texture *texture, SingleTexturedMesh *roof); 00060 00061 00062 //************************************************************************ 00063 // 00064 // Variables 00065 // 00066 //************************************************************************ 00067 std::vector<Texture*> *m_textures; 00068 Texture *m_groundTexture; 00069 Texture *m_roofTexture; 00070 float m_width; 00071 float m_depth; 00072 Vector3f m_minHouseSize; 00073 Vector3f m_maxHouseSize; 00074 }; 00075 }; 00076 00077 #endif