- Added particle support to g3d viewer

This commit is contained in:
Mark Vejvoda
2010-05-25 18:06:42 +00:00
parent 69d7070f54
commit 4b6e017241
14 changed files with 1043 additions and 286 deletions

View File

@@ -77,11 +77,17 @@ Renderer::Renderer(){
grid= true;
modelRenderer = NULL;
textureManager = NULL;
particleRenderer = NULL;
particleManager = NULL;
}
Renderer::~Renderer(){
delete modelRenderer;
delete textureManager;
delete particleRenderer;
//resources
delete particleManager;
}
Renderer * Renderer::getInstance(){
@@ -130,6 +136,11 @@ void Renderer::checkExtension(const string &extension, const string &msg){
}
}
Texture2D * Renderer::getNewTexture2D() {
Texture2D *newTexture = textureManager->newTexture2D();
return newTexture;
}
void Renderer::init(){
assertGl();
@@ -141,6 +152,10 @@ void Renderer::init(){
modelRenderer= gf->newModelRenderer();
textureManager= gf->newTextureManager();
particleRenderer= gf->newParticleRenderer();
//resources
particleManager= gf->newParticleManager();
//red tex
customTextureRed= textureManager->newTexture2D();
@@ -299,4 +314,51 @@ void Renderer::renderTheModel(Model *model, float f){
}
}
void Renderer::manageParticleSystem(ParticleSystem *particleSystem){
particleManager->manage(particleSystem);
}
void Renderer::updateParticleManager(){
particleManager->update();
}
void Renderer::renderParticleManager(){
glPushAttrib(GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
glDepthFunc(GL_LESS);
particleRenderer->renderManager(particleManager, modelRenderer);
glPopAttrib();
}
Texture2D * Renderer::getPlayerColorTexture(PlayerColor playerColor) {
Texture2D *customTexture;
switch(playerColor){
case pcRed:
customTexture= customTextureRed;
break;
case pcBlue:
customTexture= customTextureBlue;
break;
case pcYellow:
customTexture= customTextureYellow;
break;
case pcGreen:
customTexture= customTextureGreen;
break;
default:
assert(false);
}
return customTexture;
}
void Renderer::initTextureManager() {
textureManager->init();
}
void Renderer::end() {
//delete resources
//textureManager->end();
particleManager->end();
}
}}//end namespace