- Timestamp:
- Jul 18, 2006, 11:04:32 AM (18 years ago)
- Location:
- branches/proxy/src
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/proxy/src/lib/graphics/effects/snow_effect.cc
r9235 r9320 1 1 /* 2 3 4 5 6 7 8 9 2 orxonox - the future of 3D-vertical-scrollers 3 4 Copyright (C) 2004 orx 5 6 This program is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2, or (at your option) 9 any later version. 10 10 11 11 ### File Specific: 12 12 main-programmer: hdavid, amaechler 13 13 */ 14 14 … … 35 35 SHELL_COMMAND(deactivate, SnowEffect, deactivateSnow); 36 36 37 using namespace std;38 37 39 38 CREATE_SCRIPTABLE_CLASS(SnowEffect, CL_SNOW_EFFECT, … … 46 45 SnowEffect::SnowEffect(const TiXmlElement* root) 47 46 { 48 this->setClassID(CL_SNOW_EFFECT, "SnowEffect"); 49 50 this->init(); 51 52 if (root != NULL) 53 this->loadParams(root); 54 55 //load wind sound 56 if (this->snowWindForce >= 1) { 57 if (this->windBuffer != NULL) 58 ResourceManager::getInstance()->unload(this->windBuffer); 59 this->windBuffer = (OrxSound::SoundBuffer*)ResourceManager::getInstance()->load("sound/atmosphere/wind.wav", WAV); 60 } 47 this->setClassID(CL_SNOW_EFFECT, "SnowEffect"); 48 49 this->init(); 50 51 if (root != NULL) 52 this->loadParams(root); 53 54 this->windBuffer = NULL; 55 //load wind sound 56 if (this->snowWindForce >= 1) { 57 this->windBuffer = (OrxSound::SoundBuffer*)ResourceManager::getInstance()->load("sound/atmosphere/wind.wav", WAV); 58 } 61 59 62 60 if(snowActivate) { 63 61 this->activate(); 64 62 SnowEffect::snowParticles->precache((int) this->snowLife); 65 63 } … … 69 67 SnowEffect::~SnowEffect() 70 68 { 71 69 this->deactivate(); 72 70 } 73 71 … … 76 74 void SnowEffect::loadParams(const TiXmlElement* root) 77 75 { 78 79 80 81 82 83 84 85 86 87 88 89 76 WeatherEffect::loadParams(root); 77 78 LoadParam(root, "numParticles", this, SnowEffect, numParticles); 79 LoadParam(root, "materialTexture", this, SnowEffect, materialTexture); 80 LoadParam(root, "lifeSpans", this, SnowEffect, lifeSpan); 81 LoadParam(root, "radius", this, SnowEffect, radius); 82 LoadParam(root, "mass", this, SnowEffect, mass); 83 LoadParam(root, "emissionRate", this, SnowEffect, emissionRate); 84 LoadParam(root, "emissionVelocity", this, SnowEffect, emissionVelocity); 85 LoadParam(root, "wind", this, SnowEffect, wind); 86 LoadParam(root, "size", this, SnowEffect, size); 87 LoadParam(root, "coord", this, SnowEffect, coord); 90 88 LoadParam(root, "cloudcolor", this, SnowEffect, setCloudColor); 91 89 LoadParam(root, "skycolor", this, SnowEffect, setSkyColor); 92 90 LoadParam(root, "fadetime", this, SnowEffect, setFadeTime); 93 91 94 95 96 97 98 92 LOAD_PARAM_START_CYCLE(root, element); 93 { 94 LoadParam_CYCLE(element, "option", this, SnowEffect, setSnowOption); 95 } 96 LOAD_PARAM_END_CYCLE(element); 99 97 } 100 98 101 99 void SnowEffect::init() 102 100 { 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 101 this->emitter = new PlaneEmitter(); 102 103 // Default values 104 this->snowActivate = false; 105 this->snowMove = false; 106 this->particles = 12000; 107 this->texture = "maps/snow_flake_01_32x32.png"; 108 this->snowLife = 8; 109 this->randomLife = 2; 110 this->snowRadius = 3.5; 111 this->randomRadius = 1; 112 this->snowMass = 1.0; 113 this->randomMass = 0.3; 114 this->rate = 900; 115 this->velocity = -100; 116 this->randomVelocity = 5; 117 this->angle = 0.5; 118 this->randomAngle = 0.2; 119 this->alpha = 0.5; 120 this->snowSize = Vector2D(2500, 2500); 121 this->snowCoord = Vector(100,450,400); 122 this->snowWindForce = 1; 123 126 124 this->fadeTime = 10; 127 125 this->cloudColor = Vector(0.2f, 0.2f, 0.2f); … … 131 129 void SnowEffect::activate() 132 130 { 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 131 PRINTF(3)("Activating SnowEffect\n"); 132 133 this->snowActivate = true; 134 135 SnowEffect::snowParticles = new SpriteParticles(particles); 136 SnowEffect::snowParticles->setName("SnowEffectTrailParticles"); 137 SnowEffect::snowParticles->setMaterialTexture(texture); 138 SnowEffect::snowParticles->setLifeSpan(snowLife, randomLife); 139 SnowEffect::snowParticles->setRadius(0.0, snowRadius, randomRadius); 140 SnowEffect::snowParticles->setRadius(0.2, snowRadius, randomRadius*0.8); 141 SnowEffect::snowParticles->setRadius(1.0, snowRadius, randomRadius*0.5); 142 SnowEffect::snowParticles->setMass(0, snowMass, randomMass); 143 SnowEffect::snowParticles->setColor(0,1, 1, 1, alpha); 144 SnowEffect::snowParticles->setColor(.5, .6, .6, .6, alpha/2); 145 SnowEffect::snowParticles->setColor(1, .0, .0, .0, .0); 146 147 this->emitter->setSystem(SnowEffect::snowParticles); 148 149 this->emitter->setRelCoor(snowCoord); 150 this->emitter->setEmissionRate(rate); 151 this->emitter->setEmissionVelocity(velocity, randomVelocity); 152 this->emitter->setSpread(angle * this->snowWindForce , randomAngle * this->snowWindForce); 153 this->emitter->setSize(snowSize); 156 154 157 155 if (this->snowWindForce != 0) 158 156 this->soundSource.play(this->windBuffer, 0.1f * this->snowWindForce, true); 159 157 160 158 // Store cloud- and sky color before the snow 161 159 this->oldCloudColor = CloudEffect::cloudColor; … … 171 169 void SnowEffect::deactivate() 172 170 { 173 174 175 176 177 178 179 180 171 PRINTF(3)("Deactivating SnowEffect\n"); 172 173 this->snowActivate = false; 174 this->emitter->setSystem(NULL); 175 176 if (this->windBuffer != NULL) 177 ResourceManager::getInstance()->unload(this->windBuffer); 178 181 179 // Restore the old cloud- and sky color 182 180 CloudEffect::changeCloudColor(this->oldCloudColor, this->fadeTime); … … 186 184 void SnowEffect::draw() const 187 185 { 188 189 186 if (!this->snowActivate) 187 return; 190 188 } 191 189 192 190 void SnowEffect::tick(float dt) 193 191 { 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 } 192 if (!this->snowActivate) 193 return; 194 195 /* 196 float distance = (State::getCameraNode()->getAbsCoor() - Vector(snowCoord.x, State::getCameraNode()->getAbsCoor().y, snowCoord.z)).len(); 197 198 if(activated) 199 { 200 if(distance > 0.3*snowSize.x || distance > 0.3*snowSize.y) 201 this->deactivate(); 202 else if(distance > 0.25*snowSize.x || distance > 0.25*snowSize.y) 203 this->alpha = 0.15; 204 else if(distance > 0.2*snowSize.x || distance > 0.2*snowSize.y) 205 this->alpha = 0.25; 206 else if(distance > 0.1*snowSize.x || distance > 0.1*snowSize.y) 207 this->alpha = 0.4; 208 209 SnowEffect::snowParticles->setColor(0,1, 1, 1, alpha); 210 SnowEffect::snowParticles->setColor(.5, .6, .6, .6, alpha/2); 211 SnowEffect::snowParticles->setColor(1, .0, .0, .0, .0); 212 } 213 else 214 { 215 if(distance < 0.3*snowSize.x || distance < 0.3*snowSize.y ) 216 this->activate(); 217 if( distance < 0.25*snowSize.x || distance < 0.25*snowSize.y ) 218 this->alpha = 0.25; 219 else if( distance < 0.2*snowSize.x || distance < 0.2*snowSize.y ) 220 this->alpha = 0.4; 221 else if( distance < 0.1*snowSize.x || distance < 0.1*snowSize.y ) 222 this->alpha = 0.5; 223 224 SnowEffect::snowParticles->setColor(0,1, 1, 1, alpha); 225 SnowEffect::snowParticles->setColor(.5, .6, .6, .6, alpha/2); 226 SnowEffect::snowParticles->setColor(1, .0, .0, .0, .0); 227 }*/ 228 229 if (this->snowMove) { 230 this->snowCoord = State::getCameraNode()->getAbsCoor(); 231 this->emitter->setRelCoor(this->snowCoord.x , this->snowCoord.y+300, this->snowCoord.z); 232 } 233 } -
branches/proxy/src/lib/graphics/effects/snow_effect.h
r9235 r9320 101 101 102 102 private: 103 int particles;103 int particles; 104 104 std::string texture; 105 float snowLife, randomLife;106 float snowRadius, randomRadius;107 float snowMass, randomMass;108 float rate;109 float velocity, randomVelocity;110 float angle, randomAngle;111 float alpha;112 float fadeTime;113 Vector snowCoord;114 Vector2D snowSize;115 int snowWindForce;105 float snowLife, randomLife; 106 float snowRadius, randomRadius; 107 float snowMass, randomMass; 108 float rate; 109 float velocity, randomVelocity; 110 float angle, randomAngle; 111 float alpha; 112 float fadeTime; 113 Vector snowCoord; 114 Vector2D snowSize; 115 int snowWindForce; 116 116 117 bool snowMove;118 bool snowActivate;117 bool snowMove; 118 bool snowActivate; 119 119 120 120 PlaneEmitter* emitter; 121 121 122 122 static SpriteParticles* snowParticles; 123 OrxSound::SoundSource soundSource;123 OrxSound::SoundSource soundSource; 124 124 OrxSound::SoundBuffer* windBuffer; 125 125 126 Vector oldSkyColor;127 Vector oldCloudColor;128 Vector skyColor;129 Vector cloudColor;126 Vector oldSkyColor; 127 Vector oldCloudColor; 128 Vector skyColor; 129 Vector cloudColor; 130 130 }; 131 131 -
branches/proxy/src/subprojects/recapture_mouse/Makefile.am
r9317 r9320 27 27 28 28 recapturemouse_SOURCES= \ 29 ../framework.cc \ 30 recapturer.cc \ 31 $(MAINSRCDIR)/world_entities/space_ships/space_ship.cc \ 32 $(MAINSRCDIR)/world_entities/weapons/test_gun.cc 33 29 recapturer.cc -
branches/proxy/src/subprojects/recapture_mouse/recapturer.cc
r9318 r9320 16 16 */ 17 17 18 #include " framework.h"18 #include "event_handler.h" 19 19 20 #include "light.h" 20 int verbose = 3; 21 21 22 #include "objModel.h" 23 #include "md2/md2Model.h" 24 #include "primitive_model.h" 25 #include <stdlib.h> 26 27 #include "vertex_array_model.h" 28 29 #include "util/loading/resource_manager.h" 30 31 Model* obj; 32 33 void Framework::moduleInit(int argc, char** argv) 22 int main(int argc, char** argv) 34 23 { 35 ResourceManager::getInstance()->addImageDir("./"); 36 37 for (int i = 0; i < argc; i++) 38 { 39 printf("%s\n", argv[i]); 40 } 41 ResourceManager::getInstance()->addImageDir(""); 42 43 44 if (argc>=3) 45 { 46 if( strstr(argv[1], ".obj") != NULL) 47 obj = new OBJModel (argv[1], atof(argv[2])); 48 else if( strstr(argv[1], ".md2") != NULL) 49 { 50 obj = new MD2Model(argv[1], argv[2]); 51 ((MD2Model*)obj)->tick(0.1f); 52 } 53 } 54 else if (argc>=2) 55 { 56 if( strstr(argv[1], ".obj") != NULL) 57 obj = new OBJModel(argv[1]); 58 else if( strstr(argv[1], ".md2") != NULL) { 59 obj = new MD2Model(argv[1], "fake_texture.bad"); 60 obj = new MD2Model(argv[1], argv[2]); 61 ((MD2Model*)obj)->tick(0.1f); 62 } 63 } 64 // else 65 obj = new PrimitiveModel(PRIM_CYLINDER); 66 67 68 ResourceManager::getInstance()->debug(); 69 70 LightManager* lightMan = LightManager::getInstance(); 71 lightMan->setAmbientColor(.1,.1,.1); 72 (new Light())->setAbsCoor(5.0, 10.0, 40.0); 73 (new Light())->setAbsCoor(-10, -20, -100); 24 EventHandler::getInstance()->grabEvents(true); 25 EventHandler::getInstance()->grabEvents(false); 26 exit(-1); 74 27 } 75 76 void Framework::moduleEventHandler(SDL_Event* event)77 {78 switch (event->type)79 {80 case SDL_KEYDOWN:81 switch (event->key.keysym.sym)82 {83 case SDLK_i:84 break;85 }86 }87 }88 89 void Framework::moduleTick(float dt)90 {91 92 }93 94 void Framework::moduleDraw(void) const95 {96 LightManager::getInstance()->draw();97 obj->draw();98 99 }100 101 102 void Framework::moduleHelp(void) const103 {104 105 }
Note: See TracChangeset
for help on using the changeset viewer.