/* orxonox - the future of 3D-vertical-scrollers Copyright (C) 2004 orx This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. ### File Specific: main-programmer: hdavid, amaechler */ #include "volfog_effect.h" #include "util/loading/load_param.h" #include "util/loading/factory.h" #include "glincl.h" #include "shell_command.h" using namespace std; CREATE_FACTORY(VolFogEffect, CL_VOLFOG_EFFECT); VolFogEffect::VolFogEffect(const TiXmlElement* root) { this->setClassID(CL_VOLFOG_EFFECT, "VolFogEffect"); if (root != NULL) this->loadParams(root); this->activate(); } VolFogEffect::~VolFogEffect() { this->deactivate(); } void VolFogEffect::loadParams(const TiXmlElement* root) { WeatherEffect::loadParams(root); //LoadParam(root, "fog-altitude", this, VolFogEffect, setFogAltitude); //LoadParam(root, "fog-color", this, VolFogEffect, startFogColor); LoadParam(root, "test", this, VolFogEffect, test); } void VolFogEffect::test(int t) { PRINTF(0)("Test: %i\n", t); } bool VolFogEffect::init() { PRINTF(0)("Initalize VolFogEffect\n"); }; bool VolFogEffect::activate() { //PRINTF(0)( "Enabling Volumetric Fog Effect, altitude: %i, color %f, %f, %f\n", this->fogAltitude, this->colorVector.x, this->colorVector.y, this->colorVector.z); PRINTF(0)("Activate VolFogEffect\n"); } bool VolFogEffect::deactivate() { PRINTF(0)("Deactivate VolFogEffect\n"); } /* void VolFogEffect::setFogColor(int v) { float z; float f; z = 0.0 - vertices[v].y; f = (60.0 - z) / (60.0 - 0.0); glColor4f(this->colorVector.x, this->colorVector.y, this->colorVector.z, f); } */ /** * draws the effect, if needed */ void VolFogEffect::draw() const { // PRINTF(0)("DRAW VolFogEffect\n"); glDepthMask(GL_TRUE); glEnable(GL_BLEND); glBlendFunc(GL_ONE_MINUS_SRC_ALPHA, GL_SRC_ALPHA); // glDisable(GL_TEXTURE_2D); // draw the fog panels glBegin(GL_QUADS); glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - -10.0f)) / (10.0 - 0.0)); glVertex3f( 10.0f,-10.0f, 10.0f); // Top Right Of The Quad (Bottom) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - -10.0f)) / (10.0 - 0.0)); glVertex3f(-10.0f,-10.0f, 10.0f); // Top Left Of The Quad (Bottom) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - -10.0f)) / (10.0 - 0.0)); glVertex3f(-10.0f,-10.0f,-10.0f); // Bottom Left Of The Quad (Bottom) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - -10.0f)) / (10.0 - 0.0)); glVertex3f( 10.0f,-10.0f,-10.0f); // Bottom Right Of The Quad (Bottom) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - 10.0f)) / (10.0 - 0.0)); glVertex3f( 10.0f, 10.0f, 10.0f); // Top Right Of The Quad (Front) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - 10.0f)) / (10.0 - 0.0)); glVertex3f(-10.0f, 10.0f, 10.0f); // Top Left Of The Quad (Front) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - -10.0f)) / (10.0 - 0.0)); glVertex3f(-10.0f,-10.0f, 10.0f); // Bottom Left Of The Quad (Front) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - -10.0f)) / (10.0 - 0.0)); glVertex3f( 10.0f,-10.0f, 10.0f); // Bottom Right Of The Quad (Front) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - -10.0f)) / (10.0 - 0.0)); glVertex3f( 10.0f,-10.0f,-10.0f); // Top Right Of The Quad (Back) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - -10.0f)) / (10.0 - 0.0)); glVertex3f(-10.0f,-10.0f,-10.0f); // Top Left Of The Quad (Back) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - 10.0f)) / (10.0 - 0.0)); glVertex3f(-10.0f, 10.0f,-10.0f); // Bottom Left Of The Quad (Back) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - 10.0f)) / (10.0 - 0.0)); glVertex3f( 10.0f, 10.0f,-10.0f); // Bottom Right Of The Quad (Back) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - 10.0f)) / (10.0 - 0.0)); glVertex3f(-10.0f, 10.0f, 10.0f); // Top Right Of The Quad (Left) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - 10.0f)) / (10.0 - 0.0)); glVertex3f(-10.0f, 10.0f,-10.0f); // Top Left Of The Quad (Left) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - -10.0f)) / (10.0 - 0.0)); glVertex3f(-10.0f,-10.0f,-10.0f); // Bottom Left Of The Quad (Left) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - -10.0f)) / (10.0 - 0.0)); glVertex3f(-10.0f,-10.0f, 10.0f); // Bottom Right Of The Quad (Left) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - 10.0f)) / (10.0 - 0.0)); glVertex3f( 10.0f, 10.0f,-10.0f); // Top Right Of The Quad (Right) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - 10.0f)) / (10.0 - 0.0)); glVertex3f( 10.0f, 10.0f, 10.0f); // Top Left Of The Quad (Right) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - -10.0f)) / (10.0 - 0.0)); glVertex3f( 10.0f,-10.0f, 10.0f); // Bottom Left Of The Quad (Right) glColor4f(0.6, 0.2, 0.0, (10.0 - (0.0 - -10.0f)) / (10.0 - 0.0)); glVertex3f( 10.0f,-10.0f,-10.0f); // Bottom Right Of The Quad (Right) glEnd(); // restore rendering state // glEnable(GL_TEXTURE_2D); glDisable(GL_BLEND); } /** * ticks the effect if there is any time dependancy */ void VolFogEffect::tick(float dt) { }