Main Page | Namespace List | Class Hierarchy | Alphabetical List | Data Structures | File List | Namespace Members | Data Fields | Globals

/Users/blackie/Documents/myRepository/phobosengine-vc2005/phobosengine/phobosengine/SkyBox.cpp

Go to the documentation of this file.
00001 
00002 
00003 #include "SkyBox.h"
00004 
00005 #include "DayNightCycle.h"
00006 #include "Renderer.h"
00007 #include "Sprite.h"
00008 #include "Texture.h"
00009 #include "TextureDatabase.h"
00010 
00011 
00012 namespace pge {
00013 
00014 
00015         //****************************************************************************
00016         //
00017         //
00018         //
00019         //****************************************************************************
00020         SkyBox::SkyBox(const std::string &skyPrefix, float size) {
00021                 m_size = size;
00022 
00023                 m_frontTopLeft = Vector3f(-m_size, m_size, m_size);
00024                 m_frontTopRight = Vector3f(m_size, m_size, m_size);
00025                 m_frontBottomLeft = Vector3f(-m_size, -m_size, m_size);
00026                 m_frontBottomRight = Vector3f(m_size, -m_size, m_size);
00027                 m_backTopLeft = Vector3f(-m_size, m_size, -m_size);
00028                 m_backTopRight = Vector3f(m_size, m_size, -m_size);
00029                 m_backBottomLeft = Vector3f(-m_size, -m_size, -m_size);
00030                 m_backBottomRight = Vector3f(m_size, -m_size, -m_size);
00031 
00032                 m_front = new Sprite(m_frontTopRight, m_frontTopLeft, m_frontBottomLeft, m_frontBottomRight);
00033                 m_back = new Sprite(m_backTopLeft, m_backTopRight, m_backBottomRight, m_backBottomLeft);
00034                 m_left = new Sprite(m_backTopRight, m_frontTopRight, m_frontBottomRight, m_backBottomRight);
00035                 m_right = new Sprite(m_frontTopLeft, m_backTopLeft, m_backBottomLeft, m_frontBottomLeft);
00036                 m_bottom = new Sprite(m_backBottomRight, m_frontBottomRight, m_frontBottomLeft, m_backBottomLeft);
00037                 m_top = new Sprite(m_backTopRight, m_backTopLeft, m_frontTopLeft, m_frontTopRight);
00038 
00039                 std::string file = skyPrefix;
00040                 m_skyBack = TextureDatabase::getInstance()->addTexture(file.append("_back.jpg"), "sky_back.jpg", false, GL_CLAMP, GL_CLAMP, GL_NEAREST, GL_NEAREST, false, 0, 0, 0);
00041                 file = skyPrefix;
00042                 m_skyFront = TextureDatabase::getInstance()->addTexture(file.append("_front.jpg"), "sky_front.jpg", false, GL_CLAMP, GL_CLAMP, GL_NEAREST, GL_NEAREST, false, 0, 0, 0);
00043                 file = skyPrefix;
00044                 m_skyRight = TextureDatabase::getInstance()->addTexture(file.append("_right.jpg"), "sky_right.jpg", false, GL_CLAMP, GL_CLAMP, GL_NEAREST, GL_NEAREST, false, 0, 0, 0);
00045                 file = skyPrefix;
00046                 m_skyLeft = TextureDatabase::getInstance()->addTexture(file.append("_left.jpg"), "sky_left.jpg", false, GL_CLAMP, GL_CLAMP, GL_NEAREST, GL_NEAREST, false, 0, 0, 0);
00047                 file = skyPrefix;
00048                 m_skyBottom = TextureDatabase::getInstance()->addTexture(file.append("_bottom.jpg"), "sky_bottom.jpg", false, GL_CLAMP, GL_CLAMP, GL_NEAREST, GL_NEAREST, false, 0, 0, 0);
00049                 file = skyPrefix;
00050                 m_skyTop = TextureDatabase::getInstance()->addTexture(file.append("_top.jpg"), "sky_top.jpg", false, GL_CLAMP, GL_CLAMP, GL_NEAREST, GL_NEAREST, false, 0, 0, 0);
00051         }
00052 
00053 
00054         //****************************************************************************
00055         //
00056         //
00057         //
00058         //****************************************************************************
00059         SkyBox::~SkyBox(void) {
00060                 if(m_front != NULL) {
00061                         delete m_front;
00062                         m_front = NULL;
00063                 }
00064                 if(m_back != NULL) {
00065                         delete m_back;
00066                         m_back = NULL;
00067                 }
00068                 if(m_left != NULL) {
00069                         delete m_left;
00070                         m_left = NULL;
00071                 }
00072                 if(m_right != NULL) {
00073                         delete m_right;
00074                         m_right = NULL;
00075                 }
00076                 if(m_bottom != NULL) {
00077                         delete m_bottom;
00078                         m_bottom = NULL;
00079                 }
00080                 if(m_top != NULL) {
00081                         delete m_top;
00082                         m_top = NULL;
00083                 }
00084         }
00085 
00086 
00087         //****************************************************************************
00088         //
00089         //
00090         //
00091         //****************************************************************************
00092         bool SkyBox::init(void) {
00093                 return true;
00094         }
00095 
00096 
00097         //****************************************************************************
00098         //
00099         //
00100         //
00101         //****************************************************************************
00102         void SkyBox::render(void) {
00103                 Vector3f color;
00104 
00105                 if(DayNightCycle::getInstance()->getDayNightCycle() >= 0.1f) {
00106                         color = Vector3f(1.0f, 1.0f, 1.0f) * DayNightCycle::getInstance()->getDayNightCycle();
00107                 } else {
00108                         color = Vector3f(0.1f, 0.1f, 0.1f);
00109                 }
00110 
00111                 renderer::color4f(color.m_v[0], color.m_v[1], color.m_v[2], 1.0f);
00112                 renderer::setTexture(m_skyBack, GL_MODULATE);
00113                 m_back->render();
00114                 renderer::setTexture(m_skyFront);
00115                 m_front->render();
00116                 renderer::setTexture(m_skyLeft);
00117                 m_left->render();
00118                 renderer::setTexture(m_skyRight);
00119                 m_right->render();
00120                 renderer::setTexture(m_skyTop);
00121                 m_top->render();
00122                 renderer::setTexture(m_skyBottom);
00123                 m_bottom->render();
00124         }
00125 
00126 
00127         //****************************************************************************
00128         //
00129         //
00130         //
00131         //****************************************************************************
00132         void SkyBox::timer(unsigned int delay) {
00133         }
00134 };

Generated on Mon Oct 16 12:08:11 2006 for Phobosengine by doxygen 1.3.4