Changeset 7221 in orxonox.OLD for trunk/src/world_entities
- Timestamp:
 - Mar 15, 2006, 3:10:45 PM (20 years ago)
 - Location:
 - trunk/src/world_entities
 - Files:
 - 
          
- 41 edited
 
- 
          creatures/md2_creature.cc (modified) (3 diffs)
 - 
          creatures/md2_creature.h (modified) (1 diff)
 - 
          elements/image_entity.cc (modified) (1 diff)
 - 
          elements/image_entity.h (modified) (1 diff)
 - 
          elements/text_element.cc (modified) (1 diff)
 - 
          elements/text_element.h (modified) (1 diff)
 - 
          movie_entity.cc (modified) (1 diff)
 - 
          movie_entity.h (modified) (1 diff)
 - 
          planet.cc (modified) (4 diffs)
 - 
          planet.h (modified) (3 diffs)
 - 
          power_ups/param_power_up.cc (modified) (1 diff)
 - 
          power_ups/param_power_up.h (modified) (2 diffs)
 - 
          power_ups/power_up.cc (modified) (6 diffs)
 - 
          power_ups/power_up.h (modified) (2 diffs)
 - 
          power_ups/weapon_power_up.cc (modified) (1 diff)
 - 
          power_ups/weapon_power_up.h (modified) (1 diff)
 - 
          projectiles/projectile.cc (modified) (2 diffs)
 - 
          projectiles/projectile.h (modified) (1 diff)
 - 
          recorder.cc (modified) (18 diffs)
 - 
          recorder.h (modified) (3 diffs)
 - 
          skybox.cc (modified) (8 diffs)
 - 
          skybox.h (modified) (3 diffs)
 - 
          space_ships/helicopter.cc (modified) (3 diffs)
 - 
          space_ships/helicopter.h (modified) (1 diff)
 - 
          space_ships/hover.cc (modified) (2 diffs)
 - 
          space_ships/hover.h (modified) (1 diff)
 - 
          space_ships/space_ship.cc (modified) (2 diffs)
 - 
          space_ships/space_ship.h (modified) (1 diff)
 - 
          space_ships/turbine_hover.cc (modified) (2 diffs)
 - 
          space_ships/turbine_hover.h (modified) (1 diff)
 - 
          terrain.cc (modified) (10 diffs)
 - 
          terrain.h (modified) (2 diffs)
 - 
          weapons/aim.cc (modified) (1 diff)
 - 
          weapons/aim.h (modified) (1 diff)
 - 
          weapons/aiming_turret.cc (modified) (1 diff)
 - 
          weapons/crosshair.cc (modified) (2 diffs)
 - 
          weapons/crosshair.h (modified) (1 diff)
 - 
          weapons/weapon.cc (modified) (6 diffs)
 - 
          weapons/weapon.h (modified) (4 diffs)
 - 
          world_entity.cc (modified) (4 diffs)
 - 
          world_entity.h (modified) (2 diffs)
 
 
Legend:
- Unmodified
 - Added
 - Removed
 
- 
        
trunk/src/world_entities/creatures/md2_creature.cc
r7193 r7221 52 52 * @param fileName the name of the File to load the MD2Creature from (absolute path) 53 53 */ 54 MD2Creature::MD2Creature(const char*fileName)54 MD2Creature::MD2Creature(const std::string& fileName) 55 55 { 56 56 this->init(); … … 59 59 if(!doc.LoadFile()) 60 60 { 61 PRINTF(2)("Loading file %s failed for md2 creature.\n", fileName );61 PRINTF(2)("Loading file %s failed for md2 creature.\n", fileName.c_str()); 62 62 return; 63 63 } … … 255 255 this->shiftCoor (move); 256 256 257 if( this->bJump )257 if( this->bJump && likely(this->getModel(0) != NULL)) 258 258 { 259 259 ((MD2Model*)this->getModel(0))->setAnim(JUMP); 260 260 } 261 else if( this->bFire )261 else if( this->bFire && likely(this->getModel(0) != NULL)) 262 262 { 263 263 if( ((MD2Model*)this->getModel(0))->getAnim() != ATTACK) ((MD2Model*)this->getModel(0))->setAnim(ATTACK); 264 264 } 265 else if( fabs(move.len()) > 0.0f )265 else if( fabs(move.len()) > 0.0f && likely(this->getModel(0) != NULL)) 266 266 { 267 267 if( ((MD2Model*)this->getModel(0))->getAnim() != RUN) ((MD2Model*)this->getModel(0))->setAnim(RUN); 268 268 } 269 else 269 else if (likely(this->getModel(0) != NULL)) 270 270 { 271 271 if( ((MD2Model*)this->getModel(0))->getAnim() != STAND) ((MD2Model*)this->getModel(0))->setAnim(STAND);  - 
        
trunk/src/world_entities/creatures/md2_creature.h
r7092 r7221 19 19 public: 20 20 21 MD2Creature(const char*fileName);21 MD2Creature(const std::string& fileName); 22 22 MD2Creature(const TiXmlElement* root = NULL); 23 23 virtual ~MD2Creature();  - 
        
trunk/src/world_entities/elements/image_entity.cc
r7193 r7221 106 106 * @param textureFile The texture-file to load onto the crosshair 107 107 */ 108 void ImageEntity::setTexture(const char*textureFile)108 void ImageEntity::setTexture(const std::string& textureFile) 109 109 { 110 110 this->material->setDiffuseMap(textureFile);  - 
        
trunk/src/world_entities/elements/image_entity.h
r7016 r7221 30 30 31 31 void setSize(float sizeX, float sizeY); 32 void setTexture(const char*textureFile);32 void setTexture(const std::string& textureFile); 33 33 /** @param rotationSpeed the speed at what the crosshair should rotate */ 34 34 void setRotationSpeed(float rotationSpeed) { this->rotationSpeed = rotationSpeed; };  - 
        
trunk/src/world_entities/elements/text_element.cc
r7193 r7221 70 70 } 71 71 72 void TextElement::setText(const char*text)72 void TextElement::setText(const std::string& text) 73 73 { 74 74 Text::setText(text); 75 75 } 76 76 77 void TextElement::setFont(const char*font)77 void TextElement::setFont(const std::string& font) 78 78 { 79 79 Text::setFont(font, (unsigned int)this->getSizeY2D());  - 
        
trunk/src/world_entities/elements/text_element.h
r7019 r7221 29 29 virtual void loadParams(const TiXmlElement* root); 30 30 31 void setText(const char*text);32 void setFont(const char*font);31 void setText(const std::string& text); 32 void setFont(const std::string& font); 33 33 34 34 private:  - 
        
trunk/src/world_entities/movie_entity.cc
r7193 r7221 74 74 } 75 75 76 void MovieEntity::loadMovie(const char*filename)76 void MovieEntity::loadMovie(const std::string& filename) 77 77 { 78 78 if(media_container->loadMedia(filename))  - 
        
trunk/src/world_entities/movie_entity.h
r7010 r7221 37 37 virtual void loadParams(const TiXmlElement* root); 38 38 39 void loadMovie(const char*filename);39 void loadMovie(const std::string& filename); 40 40 void setAxis(float axis); 41 41 void setRotation(float rotation);  - 
        
trunk/src/world_entities/planet.cc
r7193 r7221 45 45 this->toList(OM_GROUP_01); 46 46 47 this->material = new Material();48 47 //this->material->setIllum(20); 49 48 //this->material->setAmbient(0.1, 0.1, 0.1); … … 71 70 { 72 71 PRINTF(5)("Deleting Planet\n"); 73 if( this->material)74 delete this->material;75 72 } 76 73 … … 92 89 * @param textureName the top texture. 93 90 */ 94 void Planet::setTexture(const char*textureName)91 void Planet::setTexture(const std::string& textureName) 95 92 { 96 this->material ->setDiffuseMap(textureName);93 this->material.setDiffuseMap(textureName); 97 94 } 98 95 … … 124 121 glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z ); 125 122 126 this->material ->select();123 this->material.select(); 127 124 128 125 // /WorldEntity::draw();  - 
        
trunk/src/world_entities/planet.h
r6959 r7221 9 9 /* INCLUDES */ 10 10 #include "world_entity.h" 11 11 #include "material.h" 12 12 /* FORWARD DECLARATION */ 13 class Material;14 13 class Texture; 15 14 … … 26 25 void setSize(float size); 27 26 /** assumes jpg as input-format */ 28 void setTexture(const char*textureName);27 void setTexture(const std::string& textureName); 29 28 30 29 … … 34 33 35 34 private: 36 Material *material; //!< Materials for the Planet. sorted by number (0-5) top, bottom, left, right, front, back35 Material material; //!< Materials for the Planet. sorted by number (0-5) top, bottom, left, right, front, back 37 36 Texture* texture; //!< Textures for the CubeMap. 38 37  - 
        
trunk/src/world_entities/power_ups/param_power_up.cc
r7193 r7221 81 81 } 82 82 83 void ParamPowerUp::setType(const char*type)83 void ParamPowerUp::setType(const std::string& type) 84 84 { 85 85 for(int i = 0; i < POWERUP_PARAM_size; ++i) { 86 if( strcmp(type, paramTypes[i]) == 0) {86 if(type == paramTypes[i]) { 87 87 this->type = (EnumParamPowerUpType)i; 88 88 break;  - 
        
trunk/src/world_entities/power_ups/param_power_up.h
r7065 r7221 28 28 void setMaxValue(float value); 29 29 void setMinValue(float value); 30 void setType(const char*type);30 void setType(const std::string& type); 31 31 EnumParamPowerUpType getType(); 32 32 float getValue(); … … 43 43 44 44 private: 45 static const char* paramTypes[]; 46 EnumParamPowerUpType type; 47 float value; 48 float max_value; 49 float min_value; 45 EnumParamPowerUpType type; 46 float value; 47 float max_value; 48 float min_value; 49 50 static const char* paramTypes[]; 51 50 52 }; 51 53  - 
        
trunk/src/world_entities/power_ups/power_up.cc
r7193 r7221 33 33 this->respawnStart = 10; 34 34 this->model = NULL; 35 /* if(!PowerUp::sphereModel) {*/35 /* if(!PowerUp::sphereModel) {*/ 36 36 37 37 Model* sphereModel = new PrimitiveModel(PRIM_SPHERE, 7, 5); … … 75 75 76 76 77 void PowerUp::loadPickupSound(const char*pickupSound)77 void PowerUp::loadPickupSound(const std::string& pickupSound) 78 78 { 79 79 if (this->pickupBuffer != NULL) 80 80 ResourceManager::getInstance()->unload(this->pickupBuffer); 81 81 82 else if ( pickupSound != NULL)83 {84 this->pickupBuffer = (SoundBuffer*)ResourceManager::getInstance()->load(pickupSound, WAV);85 if (this->pickupBuffer != NULL)86 {87 PRINTF(4)("Loaded sound %s to Pickup: %s.\n", pickupSound, this->getName());88 }89 else90 {91 PRINTF(2)("Failed to load sound %s to pickup %s.\n.", pickupSound, this->getName());92 }93 }82 else if (!pickupSound.empty()) 83 { 84 this->pickupBuffer = (SoundBuffer*)ResourceManager::getInstance()->load(pickupSound, WAV); 85 if (this->pickupBuffer != NULL) 86 { 87 PRINTF(4)("Loaded sound %s to Pickup: %s.\n", pickupSound.c_str(), this->getName()); 88 } 89 else 90 { 91 PRINTF(2)("Failed to load sound %s to pickup %s.\n.", pickupSound.c_str(), this->getName()); 92 } 93 } 94 94 else 95 95 this->pickupBuffer = NULL; 96 96 } 97 97 98 void PowerUp::loadRespawnSound(const char*respawnSound)98 void PowerUp::loadRespawnSound(const std::string& respawnSound) 99 99 { 100 100 if (this->respawnBuffer != NULL) 101 101 ResourceManager::getInstance()->unload(this->respawnBuffer); 102 102 103 else if ( respawnSound != NULL)103 else if (!respawnSound.empty()) 104 104 { 105 105 this->respawnBuffer = (SoundBuffer*)ResourceManager::getInstance()->load(respawnSound, WAV); 106 106 if (this->respawnBuffer != NULL) 107 107 { 108 PRINTF(4)("Loaded sound %s to Pickup: %s.\n", respawnSound , this->getName());108 PRINTF(4)("Loaded sound %s to Pickup: %s.\n", respawnSound.c_str(), this->getName()); 109 109 } 110 110 else 111 111 { 112 PRINTF(2)("Failed to load sound %s to respawn %s.\n.", respawnSound , this->getName());112 PRINTF(2)("Failed to load sound %s to respawn %s.\n.", respawnSound.c_str(), this->getName()); 113 113 } 114 114 } … … 128 128 this->soundSource.play(this->pickupBuffer); 129 129 130 switch(respawnType) { 131 case RESPAWN_NONE: 132 this->toList(OM_DEAD); 133 break; 134 case RESPAWN_TIME: 135 this->toList(OM_DEAD_TICK); 136 this->respawnTime = this->respawnStart; 137 break; 130 switch(respawnType) 131 { 132 case RESPAWN_NONE: 133 this->toList(OM_DEAD); 134 break; 135 case RESPAWN_TIME: 136 this->toList(OM_DEAD_TICK); 137 this->respawnTime = this->respawnStart; 138 break; 138 139 } 139 140 } … … 141 142 } 142 143 143 void PowerUp::tick(float dt) { 144 if(this->getOMListNumber() != OM_COMMON) { 144 void PowerUp::tick(float dt) 145 { 146 if(this->getOMListNumber() != OM_COMMON) 147 { 145 148 this->respawnTime -= dt; 146 149 if(this->respawnTime <= 0) … … 157 160 void PowerUp::draw() const 158 161 { 159 if(this->model != NULL) { 162 if(this->model != NULL) 163 { 160 164 glMatrixMode(GL_MODELVIEW); 161 165 glPushMatrix(); … … 172 176 } 173 177 174 const char* PowerUp::respawnTypes[] = { 175 "none", 176 "time" 177 }; 178 179 void PowerUp::setRespawnType(const char* type) 180 { 181 for(int i = 0; i < RESPAWN_size; ++i) { 182 if(!strcmp(type, respawnTypes[i])) { 178 const char* PowerUp::respawnTypes[] = 179 { 180 "none", 181 "time" 182 }; 183 184 185 void PowerUp::setRespawnType(const std::string& type) 186 { 187 for(int i = 0; i < RESPAWN_size; ++i) 188 { 189 if(type == respawnTypes[i]) 190 { 183 191 this->respawnType = (PowerUpRespawn)i; 184 192 break;  - 
        
trunk/src/world_entities/power_ups/power_up.h
r7102 r7221 26 26 void collidesWith (WorldEntity* entity, const Vector& location); 27 27 28 void loadPickupSound(const char*pickupSound);29 void loadRespawnSound(const char* pickupSound);28 void loadPickupSound(const std::string& pickupSound); 29 void loadRespawnSound(const std::string& respawnSound); 30 30 31 31 virtual void draw () const; 32 32 virtual void tick(float dt); 33 void setRespawnType(const char*type);33 void setRespawnType(const std::string& type); 34 34 void setRespawnTime(const float respawn); 35 35 … … 45 45 46 46 private: 47 SoundSource soundSource;48 SoundBuffer* pickupBuffer;49 SoundBuffer* respawnBuffer;50 Material* sphereMaterial;51 PowerUpRespawn respawnType;52 float respawnTime;53 float respawnStart;54 static const char* respawnTypes[];47 SoundSource soundSource; 48 SoundBuffer* pickupBuffer; 49 SoundBuffer* respawnBuffer; 50 Material* sphereMaterial; 51 PowerUpRespawn respawnType; 52 float respawnTime; 53 float respawnStart; 54 static const char* respawnTypes[]; 55 55 56 WorldEntity* collider;56 WorldEntity* collider; 57 57 }; 58 58  - 
        
trunk/src/world_entities/power_ups/weapon_power_up.cc
r7193 r7221 92 92 } 93 93 94 void WeaponPowerUp::setWeaponClass(const char*name)94 void WeaponPowerUp::setWeaponClass(const std::string& name) 95 95 { 96 96 this->weapon = dynamic_cast<Weapon*>(Factory::fabricate(name)); 97 97 if (this->weapon == NULL) 98 98 { 99 PRINTF(1)("Unable to load Weapon. %s\n", name );99 PRINTF(1)("Unable to load Weapon. %s\n", name.c_str()); 100 100 this->weapon = dynamic_cast<Weapon*>(Factory::fabricate("Turret")); 101 101 }  - 
        
trunk/src/world_entities/power_ups/weapon_power_up.h
r7065 r7221 22 22 23 23 Weapon* getWeapon(); 24 void setWeaponClass(const char*name);24 void setWeaponClass(const std::string& name); 25 25 26 26 virtual int writeBytes(const byte* data, int length, int sender);  - 
        
trunk/src/world_entities/projectiles/projectile.cc
r7193 r7221 61 61 62 62 63 void Projectile::loadExplosionSound(const char*explosionSound)63 void Projectile::loadExplosionSound(const std::string& explosionSound) 64 64 { 65 65 if (this->explosionBuffer != NULL) 66 66 ResourceManager::getInstance()->unload(this->explosionBuffer); 67 67 68 else if ( explosionSound != NULL)68 else if (!explosionSound.empty()) 69 69 { 70 70 this->explosionBuffer = (SoundBuffer*)ResourceManager::getInstance()->load(explosionSound, WAV); 71 71 if (this->explosionBuffer != NULL) 72 72 { 73 PRINTF(4)("Loaded sound %s to Pickup: %s.\n", explosionSound , this->getName());73 PRINTF(4)("Loaded sound %s to Pickup: %s.\n", explosionSound.c_str(), this->getName()); 74 74 } 75 75 else 76 76 { 77 PRINTF(2)("Failed to load sound %s to explosion %s.\n.", explosionSound , this->getName());77 PRINTF(2)("Failed to load sound %s to explosion %s.\n.", explosionSound.c_str(), this->getName()); 78 78 } 79 79 } … … 83 83 84 84 85 void Projectile::loadEngineSound(const char*engineSound)85 void Projectile::loadEngineSound(const std::string& engineSound) 86 86 { 87 87 if (this->engineBuffer != NULL) 88 88 ResourceManager::getInstance()->unload(this->engineBuffer); 89 89 90 else if ( engineSound != NULL)90 else if (!engineSound.empty()) 91 91 { 92 92 this->engineBuffer = (SoundBuffer*)ResourceManager::getInstance()->load(engineSound, WAV); 93 93 if (this->engineBuffer != NULL) 94 94 { 95 PRINTF(4)("Loaded sound %s to Pickup: %s.\n", engineSound , this->getName());95 PRINTF(4)("Loaded sound %s to Pickup: %s.\n", engineSound.c_str(), this->getName()); 96 96 } 97 97 else 98 98 { 99 PRINTF(2)("Failed to load sound %s to engine %s.\n.", engineSound , this->getName());99 PRINTF(2)("Failed to load sound %s to engine %s.\n.", engineSound.c_str(), this->getName()); 100 100 } 101 101 }  - 
        
trunk/src/world_entities/projectiles/projectile.h
r7193 r7221 26 26 void setLifeSpan(float lifeSpan); 27 27 28 void loadExplosionSound(const char*explosionSound);29 void loadEngineSound(const char*engineSound);28 void loadExplosionSound(const std::string& explosionSound); 29 void loadEngineSound(const std::string& engineSound); 30 30 void setMinEnergy(float energyMin); 31 31 /** @returns the minimal charched energy */  - 
        
trunk/src/world_entities/recorder.cc
r7193 r7221 54 54 55 55 LoadParam(root, "duration", this, Recorder, setStreamDuration); 56 56 57 LoadParam(root, "fps", this, Recorder, setFPS); 58 57 59 LoadParam(root, "name", this, Recorder, initVideo); 58 60 } … … 71 73 72 74 73 void Recorder::initVideo(const char*filename)75 void Recorder::initVideo(const std::string& filename) 74 76 { 75 77 frame_count = 0; … … 78 80 79 81 // auto detect the output format from the name, default is mpeg 80 output_format = guess_format(NULL, filename , NULL);82 output_format = guess_format(NULL, filename.c_str(), NULL); 81 83 if (!output_format) 82 84 { … … 93 95 94 96 format_context->oformat = output_format; 95 snprintf(format_context->filename, sizeof(format_context->filename), "%s", filename );97 snprintf(format_context->filename, sizeof(format_context->filename), "%s", filename.c_str()); 96 98 97 99 // add video stream using the default format codec and initialize the codec … … 104 106 105 107 // print some information 106 dump_format(format_context, 0, filename , 1);108 dump_format(format_context, 0, filename.c_str(), 1); 107 109 108 110 // now that all the parameters are set, we can open the … … 110 112 if(video_stream) 111 113 this->openVideo(); 112 114 113 115 // open the output file, if needed 114 116 if(!(output_format->flags & AVFMT_NOFILE)) 115 117 { 116 if(url_fopen(&format_context->pb, filename , URL_WRONLY) < 0)117 PRINTF(1)("Could not open %s\n", filename );118 if(url_fopen(&format_context->pb, filename.c_str(), URL_WRONLY) < 0) 119 PRINTF(1)("Could not open %s\n", filename.c_str()); 118 120 } 119 121 120 122 // write the stream header, if any 121 av_write_header(format_context); 123 av_write_header(format_context); 122 124 } 123 125 … … 129 131 av_free(buffer); 130 132 131 // write the trailer, if any 133 // write the trailer, if any 132 134 av_write_trailer(format_context); 133 135 134 136 // free the streams 135 137 for(int i = 0; i < format_context->nb_streams; i++) … … 175 177 176 178 void Recorder::allocPicture() 177 { 179 { 178 180 picture = avcodec_alloc_frame(); 179 181 if(!picture) … … 189 191 return; 190 192 } 191 avpicture_fill((AVPicture *)picture, picture_buf, 193 avpicture_fill((AVPicture *)picture, picture_buf, 192 194 codec_context->pix_fmt, width, height); 193 195 … … 211 213 if (!video_stream) 212 214 PRINTF(1)("Could not alloc stream\n"); 213 215 214 216 codec_context = video_stream->codec; 215 217 codec_context->codec_id = output_format->video_codec; … … 219 221 codec_context->bit_rate = 400000; 220 222 // resolution must be a multiple of two 221 codec_context->width = State::getResX(); 223 codec_context->width = State::getResX(); 222 224 codec_context->height = State::getResY(); 223 225 … … 229 231 // timebase should be 1/framerate and timestamp increments should be 230 232 // identically 1 231 codec_context->time_base.den = (int)stream_frame_rate; 233 codec_context->time_base.den = (int)stream_frame_rate; 232 234 codec_context->time_base.num = 1; 233 235 codec_context->gop_size = 12; // emit one intra frame every twelve frames at most … … 235 237 236 238 if (codec_context->codec_id == CODEC_ID_MPEG1VIDEO) 237 // needed to avoid using macroblocks in which some coeffs overflow 238 // this doesnt happen with normal video, it just happens here as the 239 // needed to avoid using macroblocks in which some coeffs overflow 240 // this doesnt happen with normal video, it just happens here as the 239 241 // motion of the chroma plane doesnt match the luma plane 240 242 codec_context->mb_decision=2; … … 275 277 { 276 278 int out_size, err; 277 279 278 280 codec_context = video_stream->codec; 279 281 280 282 if(frame_count >= stream_nb_frames) 281 283 { … … 287 289 this->fillYuvImage(); 288 290 289 291 290 292 if(format_context->oformat->flags & AVFMT_RAWPICTURE) 291 293 { … … 293 295 // futur for that 294 296 av_init_packet(&packet); 295 297 296 298 packet.flags |= PKT_FLAG_KEY; 297 299 packet.stream_index= video_stream->index; 298 300 packet.data= (uint8_t *)picture; 299 301 packet.size= sizeof(AVPicture); 300 302 301 303 err = av_write_frame(format_context, &packet); 302 304 } … … 309 311 { 310 312 av_init_packet(&packet); 311 313 312 314 packet.pts= av_rescale_q(codec_context->coded_frame->pts, codec_context->time_base, video_stream->time_base); 313 315 if(codec_context->coded_frame->key_frame) … … 316 318 packet.data= buffer; 317 319 packet.size= out_size; 318 320 319 321 // write the compressed frame in the media file 320 322 err = av_write_frame(format_context, &packet);  - 
        
trunk/src/world_entities/recorder.h
r6981 r7221 20 20 class Recorder : public WorldEntity 21 21 { 22 private:23 AVFrame* picture;24 uint8_t* buffer;25 int frame_count;26 int buffer_size;27 28 AVOutputFormat* output_format;29 AVFormatContext* format_context;30 AVCodecContext* codec_context;31 AVCodec *codec;32 AVStream* video_stream;33 AVPacket packet;34 double video_pts;35 36 uint8_t *picture_buf;37 int size;38 39 int height;40 int width;41 float time;42 43 float stream_duration;44 float stream_frame_rate;45 int stream_nb_frames;46 47 AVFrame* RGB_frame;48 22 public: 49 23 Recorder (const TiXmlElement* root = NULL); … … 56 30 57 31 private: 58 void initVideo(const char*filename);32 void initVideo(const std::string& filename); 59 33 void addVideoStream(); 60 34 void openVideo(); … … 66 40 void setStreamDuration(float duration); 67 41 void setFPS(float fps); 42 43 44 private: 45 AVFrame* picture; 46 uint8_t* buffer; 47 int frame_count; 48 int buffer_size; 49 50 AVOutputFormat* output_format; 51 AVFormatContext* format_context; 52 AVCodecContext* codec_context; 53 AVCodec* codec; 54 AVStream* video_stream; 55 AVPacket packet; 56 double video_pts; 57 58 uint8_t* picture_buf; 59 int size; 60 61 int height; 62 int width; 63 float time; 64 65 float stream_duration; 66 float stream_frame_rate; 67 int stream_nb_frames; 68 69 AVFrame* RGB_frame; 68 70 }; 69 71  - 
        
trunk/src/world_entities/skybox.cc
r7193 r7221 38 38 * @param fileName the file to take as input for the SkyBox 39 39 */ 40 SkyBox::SkyBox(const char*fileName)40 SkyBox::SkyBox(const std::string& fileName) 41 41 { 42 42 this->preInit(); 43 if ( fileName)43 if (!fileName.empty()) 44 44 this->setTextureAndType(fileName, ".jpg"); 45 45 this->postInit(); … … 89 89 this->setParentMode(PNODE_MOVEMENT); 90 90 91 this->textureName = NULL;91 this->textureName = ""; 92 92 } 93 93 … … 106 106 for (int i = 0; i < 6; i++) 107 107 { 108 if (this->material[i])108 if (this->material[i]) 109 109 delete this->material[i]; 110 if (this->cubeTexture[i])110 if (this->cubeTexture[i]) 111 111 ResourceManager::getInstance()->unload(this->cubeTexture[i]); 112 112 } 113 113 } 114 115 void SkyBox::setTexture(const std::string& name) 116 { 117 this->textureName = name; 118 this->setTextureAndType (name, "jpg"); 119 }; 120 114 121 115 122 /** … … 122 129 "skybox_right.jpg", "skybox_front.jpg", "skybox_back.jpg"); 123 130 */ 124 void SkyBox::setTextureAndType(const char* name, const char* extension) 125 { 126 char* top = new char[strlen(name)+strlen(extension)+ 10]; 127 char* bottom = new char[strlen(name)+strlen(extension)+ 10]; 128 char* left = new char[strlen(name)+strlen(extension)+ 10]; 129 char* right = new char[strlen(name)+strlen(extension)+ 10]; 130 char* front = new char[strlen(name)+strlen(extension)+ 10]; 131 char* back = new char[strlen(name)+strlen(extension)+ 10]; 132 133 sprintf(top, "%s_top.%s", name, extension); 134 sprintf(bottom, "%s_bottom.%s", name, extension); 135 sprintf(left, "%s_left.%s", name, extension); 136 sprintf(right, "%s_right.%s", name, extension); 137 sprintf(front, "%s_front.%s", name, extension); 138 sprintf(back, "%s_back.%s", name, extension); 131 void SkyBox::setTextureAndType(const std::string& name, const std::string& extension) 132 { 133 std::string top = name + "_top." + extension; 134 std::string bottom = name + "_bottom." + extension; 135 std::string left = name + "_left." + extension; 136 std::string right = name + "_right." + extension; 137 std::string front = name + "_front." + extension; 138 std::string back = name + "_back." + extension; 139 139 140 140 this->setTextures(top, bottom, left, right, front, back); 141 142 // deleted alocated memory of this function143 delete []top;144 delete []bottom;145 delete []left;146 delete []right;147 delete []front;148 delete []back;149 141 } 150 142 … … 158 150 * @param back the back texture. 159 151 */ 160 void SkyBox::setTextures(const char* top, const char* bottom, const char*left,161 const char* right, const char* front, const char*back)152 void SkyBox::setTextures(const std::string& top, const std::string& bottom, const std::string& left, 153 const std::string& right, const std::string& front, const std::string& back) 162 154 { 163 155 this->material[0]->setDiffuseMap(top); … … 171 163 } 172 164 173 void SkyBox::loadCubeMapTextures(const char* top, const char* bottom, const char*left,174 const char* right, const char* front, const char*back)165 void SkyBox::loadCubeMapTextures(const std::string& top, const std::string& bottom, const std::string& left, 166 const std::string& right, const std::string& front, const std::string& back) 175 167 { 176 168 this->cubeTexture[0] = (Texture*)ResourceManager::getInstance()->load(top, RP_LEVEL, IMAGE, GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT); … … 304 296 305 297 SYNCHELP_READ_FLOAT( size, NWT_SB_SIZE ); 306 if ( textureName)298 if ( !this->textureName.empty() ) 307 299 { 308 delete[] textureName; 309 textureName = NULL; 300 textureName = ""; 310 301 } 311 SYNCHELP_READ_STRINGM( textureName, NWT_SB_TEXTURENAME ); 302 char* texName; 303 SYNCHELP_READ_STRINGM( texName, NWT_SB_TEXTURENAME ); 312 304 313 305 this->setSize( size ); 314 this->setTextureAndType( tex tureName, "jpg" );306 this->setTextureAndType( texName, "jpg" ); 315 307 this->rebuild(); 316 308 … … 338 330 339 331 SYNCHELP_WRITE_FLOAT(this->size, NWT_SB_SIZE); 340 SYNCHELP_WRITE_STRING(this->textureName , NWT_SB_TEXTURENAME);332 SYNCHELP_WRITE_STRING(this->textureName.c_str(), NWT_SB_TEXTURENAME); 341 333 342 334 return SYNCHELP_WRITE_N;  - 
        
trunk/src/world_entities/skybox.h
r6771 r7221 28 28 { 29 29 public: 30 SkyBox(const char* fileName = NULL);30 SkyBox(const std::string& fileName = ""); 31 31 SkyBox(const TiXmlElement* root); 32 32 … … 44 44 void setSize(float size); 45 45 /** assumes jpg as input-format */ 46 void setTexture(const char* name) { if (textureName) delete[] textureName; textureName = new char[strlen(name)+1]; strcpy(textureName, name); this->setTextureAndType (name, "jpg"); };46 void setTexture(const std::string& name); 47 47 48 void setTextureAndType(const char* name, const char*extension);49 void setTextures(const char* top, const char* bottom, const char*left,50 const char* right, const char* front, const char*back);48 void setTextureAndType(const std::string& name, const std::string& extension); 49 void setTextures(const std::string& top, const std::string& bottom, const std::string& left, 50 const std::string& right, const std::string& front, const std::string& back); 51 51 52 void loadCubeMapTextures(const char* top, const char* bottom, const char*left,53 const char* right, const char* front, const char*back);52 void loadCubeMapTextures(const std::string& top, const std::string& bottom, const std::string& left, 53 const std::string& right, const std::string& front, const std::string& back); 54 54 55 55 GLuint getTexture(SKY_SIDE side) const { return (this->material[side]) ? this->material[side]->getDiffuseTexture(): 0; }; … … 71 71 float size; //!< Size of the SkyBox. This should match the frustum maximum range. 72 72 float textureSize; //!< this is the length of a texture (assumes a square texture) 73 char*textureName; //!< Name of the Texture73 std::string textureName; //!< Name of the Texture 74 74 75 75 };  - 
        
trunk/src/world_entities/space_ships/helicopter.cc
r7193 r7221 55 55 * @param fileName the name of the File to load the helicopter from (absolute path) 56 56 */ 57 Helicopter::Helicopter(const char*fileName)57 Helicopter::Helicopter(const std::string& fileName) 58 58 { 59 59 this->init(); … … 62 62 if(!doc.LoadFile()) 63 63 { 64 PRINTF(2)("Loading file %s failed for Helicopter.\n", fileName );64 PRINTF(2)("Loading file %s failed for Helicopter.\n", fileName.c_str()); 65 65 return; 66 66 } … … 110 110 this->loadModel("models/ships/helicopter_#.obj", 1.0); 111 111 112 EventHandler::getInstance()->grabEvents(true);112 //EventHandler::getInstance()->grabEvents(true); 113 113 114 114 bUp = bDown = bLeft = bRight = bAscend = bDescend = bRollL = bRollR = false;  - 
        
trunk/src/world_entities/space_ships/helicopter.h
r7092 r7221 17 17 18 18 Helicopter(); 19 Helicopter(const char*fileName);19 Helicopter(const std::string& fileName); 20 20 Helicopter(const TiXmlElement* root); 21 21 virtual ~Helicopter();  - 
        
trunk/src/world_entities/space_ships/hover.cc
r7193 r7221 47 47 * @param fileName the name of the File to load the hover from (absolute path) 48 48 */ 49 Hover::Hover(const char*fileName)49 Hover::Hover(const std::string& fileName) 50 50 { 51 51 this->init(); … … 54 54 if(!doc.LoadFile()) 55 55 { 56 PRINTF(2)("Loading file %s failed for Hover.\n", fileName );56 PRINTF(2)("Loading file %s failed for Hover.\n", fileName.c_str()); 57 57 return; 58 58 }  - 
        
trunk/src/world_entities/space_ships/hover.h
r7092 r7221 14 14 public: 15 15 16 Hover(const char*fileName);16 Hover(const std::string& fileName); 17 17 Hover(const TiXmlElement* root = NULL); 18 18 virtual ~Hover();  - 
        
trunk/src/world_entities/space_ships/space_ship.cc
r7193 r7221 69 69 * @param fileName the name of the File to load the spaceship from (absolute path) 70 70 */ 71 SpaceShip::SpaceShip(const char*fileName)71 SpaceShip::SpaceShip(const std::string& fileName) 72 72 { 73 73 this->init(); … … 76 76 if(!doc.LoadFile()) 77 77 { 78 PRINTF(2)("Loading file %s failed for spaceship.\n", fileName );78 PRINTF(2)("Loading file %s failed for spaceship.\n", fileName.c_str()); 79 79 return; 80 80 }  - 
        
trunk/src/world_entities/space_ships/space_ship.h
r7116 r7221 21 21 22 22 public: 23 SpaceShip(const char*fileName);23 SpaceShip(const std::string& fileName); 24 24 SpaceShip(const TiXmlElement* root = NULL); 25 25 virtual ~SpaceShip();  - 
        
trunk/src/world_entities/space_ships/turbine_hover.cc
r7193 r7221 49 49 * @param fileName the name of the File to load the turbine_hover from (absolute path) 50 50 */ 51 TurbineHover::TurbineHover(const char*fileName)51 TurbineHover::TurbineHover(const std::string& fileName) 52 52 { 53 53 this->init(); … … 56 56 if(!doc.LoadFile()) 57 57 { 58 PRINTF(2)("Loading file %s failed for TurbineHover.\n", fileName );58 PRINTF(2)("Loading file %s failed for TurbineHover.\n", fileName.c_str()); 59 59 return; 60 60 }  - 
        
trunk/src/world_entities/space_ships/turbine_hover.h
r7092 r7221 18 18 public: 19 19 20 TurbineHover(const char*fileName);20 TurbineHover(const std::string& fileName); 21 21 TurbineHover(const TiXmlElement* root = NULL); 22 22 virtual ~TurbineHover();  - 
        
trunk/src/world_entities/terrain.cc
r7193 r7221 48 48 this->loadParams(root); 49 49 50 // if (this->model != NULL)51 //this->ssp = new SpatialSeparation((Model*)this->model, 10.0f);50 // if (this->model != NULL) 51 //this->ssp = new SpatialSeparation((Model*)this->model, 10.0f); 52 52 } 53 53 … … 59 59 this either loads out of an OBJ-file, or loads a heightmap if no .obj-extension is found. 60 60 */ 61 Terrain::Terrain(const char*fileName)61 Terrain::Terrain(const std::string& fileName) 62 62 { 63 63 this->init(); 64 64 65 if ( !strstr(fileName, ".obj") || !strstr(fileName, ".OBJ"))66 {67 this->loadModel(fileName);68 }65 if (fileName.rfind(".obj" ) != -1 || fileName.rfind(".OBJ") != -1 ) 66 { 67 this->loadModel(fileName); 68 } 69 69 else 70 {71 // load the hightMap here.72 }70 { 71 // load the hightMap here. 72 } 73 73 } 74 74 … … 98 98 99 99 if(this->heightMap) 100 delete heightMap;100 delete heightMap; 101 101 } 102 102 … … 122 122 123 123 LoadParam(root, "scale", this, Terrain, setScale) 124 .describe("The scale in x,y,z direction");124 .describe("The scale in x,y,z direction"); 125 125 126 126 LoadParam(root, "texture", this, Terrain, loadTexture) 127 .describe("The name of the Texture for this heightMap");127 .describe("The name of the Texture for this heightMap"); 128 128 129 129 LoadParam(root, "vegetation", this, Terrain, loadVegetation) 130 .describe("the fileName of the vegetation, that should be loaded onto this terrain. (must be relative to the data-dir)") ;130 .describe("the fileName of the vegetation, that should be loaded onto this terrain. (must be relative to the data-dir)") ; 131 131 132 132 LoadParam(root, "height-map", this, Terrain, loadHeightMap) 133 .describe("The HeightMap, splitted into two strings seperated by ','. 1: HeighMap, 2: ColorMap");133 .describe("The HeightMap, splitted into two strings seperated by ','. 1: HeighMap, 2: ColorMap"); 134 134 135 135 } … … 140 140 } 141 141 142 void Terrain::loadHeightMap(const char* heightMapFile, const char*colorMap)142 void Terrain::loadHeightMap(const std::string& heightMapFile, const std::string& colorMap) 143 143 { 144 144 if (this->heightMap != NULL) … … 146 146 this->heightMap = NULL; 147 147 148 char*hmName = ResourceManager::getFullName(heightMapFile);149 char*hmColorName = ResourceManager::getFullName(colorMap);148 std::string hmName = ResourceManager::getFullName(heightMapFile); 149 std::string hmColorName = ResourceManager::getFullName(colorMap); 150 150 151 151 152 152 this->heightMap = new HeightMap(hmName, hmColorName); 153 // heightMap->scale(Vector(43.0f,4.7f,43.0f));153 // heightMap->scale(Vector(43.0f,4.7f,43.0f)); 154 154 heightMap->scale(this->terrainScale); 155 155 heightMap->setAbsCoor(this->getAbsCoor()); 156 156 heightMap->load(); 157 delete[] hmName; 158 delete[] hmColorName; 159 160 } 161 162 163 void Terrain::loadTexture(const char* textureName) 164 { 165 PRINTF(0)("Load texture: %s\n", textureName); 166 167 heightMapMaterial->setDiffuse(1.0,1.0,1.0); 168 heightMapMaterial->setAmbient(1.0,1.0,1.0 ); 169 heightMapMaterial->setSpecular(1.0,1.0,1.0); 170 heightMapMaterial->setShininess(.5); 171 heightMapMaterial->setTransparency(1.0); 172 173 heightMapMaterial->setDiffuseMap(textureName); 174 heightMapMaterial->setAmbientMap(textureName); 175 heightMapMaterial->setSpecularMap(textureName); 176 } 177 178 179 180 void Terrain::loadVegetation(const char* vegetationFile) 181 { 182 PRINTF(0)("loadVegetation: %s\n", vegetationFile); 157 } 158 159 160 void Terrain::loadTexture(const std::string& textureName) 161 { 162 PRINTF(4)("Load texture: %s\n", textureName.c_str()); 163 164 heightMapMaterial->setDiffuse(1.0,1.0,1.0); 165 heightMapMaterial->setAmbient(1.0,1.0,1.0 ); 166 heightMapMaterial->setSpecular(1.0,1.0,1.0); 167 heightMapMaterial->setShininess(.5); 168 heightMapMaterial->setTransparency(1.0); 169 170 heightMapMaterial->setDiffuseMap(textureName); 171 // heightMapMaterial->setAmbientMap(textureName); 172 // heightMapMaterial->setSpecularMap(textureName); 173 } 174 175 176 177 void Terrain::loadVegetation(const std::string& vegetationFile) 178 { 179 PRINTF(4)("loadVegetation: %s\n", vegetationFile.c_str()); 183 180 if (this->vegetation) 184 181 ResourceManager::getInstance()->unload(this->vegetation, RP_LEVEL); 185 if ( vegetationFile != NULL)186 { 187 PRINTF(4)("fetching %s\n", vegetationFile );182 if (!vegetationFile.empty()) 183 { 184 PRINTF(4)("fetching %s\n", vegetationFile.c_str()); 188 185 this->vegetation = dynamic_cast<Model*>(ResourceManager::getInstance()->load(vegetationFile, OBJ, RP_CAMPAIGN)); 189 186 } … … 205 202 this->getAbsCoor ().z); 206 203 /* rotate */ 207 // Vector tmpRot = this->getAbsDir().getSpacialAxis();204 // Vector tmpRot = this->getAbsDir().getSpacialAxis(); 208 205 //glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z ); 209 206 … … 227 224 228 225 229 /*230 glMatrixMode(GL_MODELVIEW);231 glPushMatrix();232 glLoadIdentity();233 Vector camera = State::getCameraNode()->getAbsCoor(); // Go on here ..........!!!234 235 float height = heightMap->getHeight(camera.x, camera.z);236 237 glEnable (GL_COLOR_MATERIAL) ;238 glBegin(GL_QUADS); // Draw The Cube Using quads239 glColor3f(0.0f,1.0f,0.0f); // Color Blue240 glVertex3f(camera.x + 63.0f,Terrain->getHeight(camera.x+63.0f, camera.z-10.0f)+13.0f,camera.z-10.0f); // Top Right Of The Quad (Top)241 glVertex3f(camera.x-63.0f, getHeight(camera.x+63.0f, camera.z-10.0f)+13.0f,camera.z-10.0f); // Top Left Of The Quad (Top)242 glVertex3f(camera.x-63.0f, getHeight(camera.x+63.0f, camera.z+10.0f)+13.0f, camera.z+10.0f); // Bottom Left Of The Quad (Top)243 glVertex3f(camera.x+ 63.0f, getHeight(camera.x+63.0f, camera.z+10.0f)+13.0f, camera.z+10.0f); // Bottom Right Of The Quad (Top)244 glEnd(); // End Drawing The Plan245 246 glPopMatrix();*/247 248 249 /* THIS IS ONLY FOR DEBUGGING INFORMATION */226 /* 227 glMatrixMode(GL_MODELVIEW); 228 glPushMatrix(); 229 glLoadIdentity(); 230 Vector camera = State::getCameraNode()->getAbsCoor(); // Go on here ..........!!! 231 232 float height = heightMap->getHeight(camera.x, camera.z); 233 234 glEnable (GL_COLOR_MATERIAL) ; 235 glBegin(GL_QUADS); // Draw The Cube Using quads 236 glColor3f(0.0f,1.0f,0.0f); // Color Blue 237 glVertex3f(camera.x + 63.0f,Terrain->getHeight(camera.x+63.0f, camera.z-10.0f)+13.0f,camera.z-10.0f); // Top Right Of The Quad (Top) 238 glVertex3f(camera.x-63.0f, getHeight(camera.x+63.0f, camera.z-10.0f)+13.0f,camera.z-10.0f); // Top Left Of The Quad (Top) 239 glVertex3f(camera.x-63.0f, getHeight(camera.x+63.0f, camera.z+10.0f)+13.0f, camera.z+10.0f); // Bottom Left Of The Quad (Top) 240 glVertex3f(camera.x+ 63.0f, getHeight(camera.x+63.0f, camera.z+10.0f)+13.0f, camera.z+10.0f); // Bottom Right Of The Quad (Top) 241 glEnd(); // End Drawing The Plan 242 243 glPopMatrix();*/ 244 245 246 /* THIS IS ONLY FOR DEBUGGING INFORMATION */ 250 247 if (this->ssp != NULL) 251 248 this->ssp->drawQuadtree(); … … 257 254 // if the terrain is the Terrain of Dave 258 255 if (debugTerrain == TERRAIN_DAVE) 259 {260 objectList = glGenLists(1);261 glNewList (objectList, GL_COMPILE);262 263 glColor3f(1.0,0,0);264 265 int sizeX = 100;266 int sizeZ = 80;267 float length = 1000;268 float width = 200;269 float widthX = float (length /sizeX);270 float widthZ = float (width /sizeZ);271 272 float height [sizeX][sizeZ];273 Vector normal_vectors[sizeX][sizeZ];274 275 276 for ( int i = 0; i<sizeX-1; i+=1)277 for (int j = 0; j<sizeZ-1;j+=1)278 //height[i][j] = rand()/20046 + (j-25)*(j-25)/30;256 { 257 objectList = glGenLists(1); 258 glNewList (objectList, GL_COMPILE); 259 260 glColor3f(1.0,0,0); 261 262 int sizeX = 100; 263 int sizeZ = 80; 264 float length = 1000; 265 float width = 200; 266 float widthX = float (length /sizeX); 267 float widthZ = float (width /sizeZ); 268 269 float height [sizeX][sizeZ]; 270 Vector normal_vectors[sizeX][sizeZ]; 271 272 273 for ( int i = 0; i<sizeX-1; i+=1) 274 for (int j = 0; j<sizeZ-1;j+=1) 275 //height[i][j] = rand()/20046 + (j-25)*(j-25)/30; 279 276 #ifdef __WIN32__ 280 height[i][j]=(sin((float)j/3)*rand()*i/182400)*.5;277 height[i][j]=(sin((float)j/3)*rand()*i/182400)*.5; 281 278 #else 282 height[i][j]=(sin((float)j/3)*rand()*(long)i/6282450500.0)*.5;279 height[i][j]=(sin((float)j/3)*rand()*(long)i/6282450500.0)*.5; 283 280 #endif 284 281 285 //Die Huegel ein wenig glaetten 286 for (int h=1; h<2;h++) 287 for (int i=1;i<sizeX-2 ;i+=1 ) 288 for(int j=1;j<sizeZ-2;j+=1) 289 height[i][j]=(height[i+1][j]+height[i][j+1]+height[i-1][j]+height[i][j-1])/4; 290 291 //Berechnung von normalen Vektoren 292 for(int i=1;i<sizeX-2;i+=1) 293 for(int j=1;j<sizeZ-2 ;j+=1) 294 { 295 Vector v1 = Vector (widthX*(1), height[i][j], widthZ*(j) ); 296 Vector v2 = Vector (widthX*(i-1), height[i-1][j], widthZ*(j)); 297 Vector v3 = Vector (widthX*(i), height[i][j+1], widthZ*(j+1)); 298 Vector v4 = Vector (widthX*(i+1), height[i+1][j], widthZ*(j)); 299 Vector v5 = Vector (widthX*(i), height[i][j-1], widthZ*(j-1)); 300 301 Vector c1 = v2 - v1; 302 Vector c2 = v3 - v1; 303 Vector c3= v4 - v1; 304 Vector c4 = v5 - v1; 305 Vector zero = Vector (0,0,0); 306 normal_vectors[i][j]=c1.cross(v3-v5)+c2.cross(v4-v2)+c3.cross(v5-v3)+c4.cross(v2-v4); 307 normal_vectors[i][j].normalize(); 308 } 309 310 glBegin(GL_QUADS); 311 int snowheight=3; 312 for ( int i = 0; i<sizeX; i+=1) 313 for (int j = 0; j<sizeZ;j+=1) 314 { 315 Vector v1 = Vector (widthX*(i), height[i][j]-20, widthZ*(j) -width/2); 316 Vector v2 = Vector (widthX*(i+1), height[i+1][j]-20, widthZ*(j) -width/2); 317 Vector v3 = Vector (widthX*(i+1), height[i+1][j+1]-20, widthZ*(j+1)-width/2); 318 Vector v4 = Vector (widthX*(i), height[i][j+1]-20, widthZ*(j+1)-width/2); 319 float a[3]; 320 if(height[i][j]<snowheight){ 321 a[0]=0; 322 a[1]=1.0-height[i][j]/10-.3; 323 a[2]=0; 324 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 325 } 326 else{ 327 a[0]=1.0; 328 a[1]=1.0; 329 a[2]=1.0; 330 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 331 332 } 333 glNormal3f(normal_vectors[i][j].x, normal_vectors[i][j].y, normal_vectors[i][j].z); 334 glVertex3f(v1.x, v1.y, v1.z); 335 if(height[i+1][j]<snowheight){ 336 a[0]=0; 337 a[1] =1.0-height[i+1][j]/10-.3; 338 a[2]=0; 339 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 340 } 341 else{ 342 a[0]=1.0; 343 a[1]=1.0; 344 a[2]=1.0; 345 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 346 347 } 348 glNormal3f(normal_vectors[i+1][j].x, normal_vectors[i+1][j].y, normal_vectors[i+1][j].z); 349 glVertex3f(v2.x, v2.y, v2.z); 350 if(height[i+1][j+1]<snowheight){ 351 a[0]=0; 352 a[1] =1.0-height[i+1][j+1]/10-.3; 353 a[2]=0; 354 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 355 } 356 else{ 357 a[0]=1.0; 358 a[1]=1.0; 359 a[2]=1.0; 360 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 361 362 363 } 364 glNormal3f(normal_vectors[i+1][j+1].x, normal_vectors[i+1][j+1].y, normal_vectors[i+1][j+1].z); 365 glVertex3f(v3.x, v3.y, v3.z); 366 if(height[i][j+1]<snowheight){ 367 a[0]=0; 368 a[1] =1.0-height[i+1][j+1]/10-.3; 369 a[2]=0; 370 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 371 } 372 else{ 373 a[0]=1.0; 374 a[1]=1.0; 375 a[2]=1.0; 376 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 377 } 378 glNormal3f(normal_vectors[i][j+1].x, normal_vectors[i][j+1].y, normal_vectors[i][j+1].z); 379 glVertex3f(v4.x, v4.y, v4.z); 380 381 } 382 glEnd(); 383 glEndList(); 384 } 282 //Die Huegel ein wenig glaetten 283 for (int h=1; h<2;h++) 284 for (int i=1;i<sizeX-2 ;i+=1 ) 285 for(int j=1;j<sizeZ-2;j+=1) 286 height[i][j]=(height[i+1][j]+height[i][j+1]+height[i-1][j]+height[i][j-1])/4; 287 288 //Berechnung von normalen Vektoren 289 for(int i=1;i<sizeX-2;i+=1) 290 for(int j=1;j<sizeZ-2 ;j+=1) 291 { 292 Vector v1 = Vector (widthX*(1), height[i][j], widthZ*(j) ); 293 Vector v2 = Vector (widthX*(i-1), height[i-1][j], widthZ*(j)); 294 Vector v3 = Vector (widthX*(i), height[i][j+1], widthZ*(j+1)); 295 Vector v4 = Vector (widthX*(i+1), height[i+1][j], widthZ*(j)); 296 Vector v5 = Vector (widthX*(i), height[i][j-1], widthZ*(j-1)); 297 298 Vector c1 = v2 - v1; 299 Vector c2 = v3 - v1; 300 Vector c3= v4 - v1; 301 Vector c4 = v5 - v1; 302 Vector zero = Vector (0,0,0); 303 normal_vectors[i][j]=c1.cross(v3-v5)+c2.cross(v4-v2)+c3.cross(v5-v3)+c4.cross(v2-v4); 304 normal_vectors[i][j].normalize(); 305 } 306 307 glBegin(GL_QUADS); 308 int snowheight=3; 309 for ( int i = 0; i<sizeX; i+=1) 310 for (int j = 0; j<sizeZ;j+=1) 311 { 312 Vector v1 = Vector (widthX*(i), height[i][j]-20, widthZ*(j) -width/2); 313 Vector v2 = Vector (widthX*(i+1), height[i+1][j]-20, widthZ*(j) -width/2); 314 Vector v3 = Vector (widthX*(i+1), height[i+1][j+1]-20, widthZ*(j+1)-width/2); 315 Vector v4 = Vector (widthX*(i), height[i][j+1]-20, widthZ*(j+1)-width/2); 316 float a[3]; 317 if(height[i][j]<snowheight) 318 { 319 a[0]=0; 320 a[1]=1.0-height[i][j]/10-.3; 321 a[2]=0; 322 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 323 } 324 else 325 { 326 a[0]=1.0; 327 a[1]=1.0; 328 a[2]=1.0; 329 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 330 331 } 332 glNormal3f(normal_vectors[i][j].x, normal_vectors[i][j].y, normal_vectors[i][j].z); 333 glVertex3f(v1.x, v1.y, v1.z); 334 if(height[i+1][j]<snowheight) 335 { 336 a[0]=0; 337 a[1] =1.0-height[i+1][j]/10-.3; 338 a[2]=0; 339 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 340 } 341 else 342 { 343 a[0]=1.0; 344 a[1]=1.0; 345 a[2]=1.0; 346 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 347 348 } 349 glNormal3f(normal_vectors[i+1][j].x, normal_vectors[i+1][j].y, normal_vectors[i+1][j].z); 350 glVertex3f(v2.x, v2.y, v2.z); 351 if(height[i+1][j+1]<snowheight) 352 { 353 a[0]=0; 354 a[1] =1.0-height[i+1][j+1]/10-.3; 355 a[2]=0; 356 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 357 } 358 else 359 { 360 a[0]=1.0; 361 a[1]=1.0; 362 a[2]=1.0; 363 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 364 365 366 } 367 glNormal3f(normal_vectors[i+1][j+1].x, normal_vectors[i+1][j+1].y, normal_vectors[i+1][j+1].z); 368 glVertex3f(v3.x, v3.y, v3.z); 369 if(height[i][j+1]<snowheight) 370 { 371 a[0]=0; 372 a[1] =1.0-height[i+1][j+1]/10-.3; 373 a[2]=0; 374 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 375 } 376 else 377 { 378 a[0]=1.0; 379 a[1]=1.0; 380 a[2]=1.0; 381 glMaterialfv(GL_FRONT,GL_DIFFUSE,a); 382 } 383 glNormal3f(normal_vectors[i][j+1].x, normal_vectors[i][j+1].y, normal_vectors[i][j+1].z); 384 glVertex3f(v4.x, v4.y, v4.z); 385 386 } 387 glEnd(); 388 glEndList(); 389 } 385 390 386 391 if (debugTerrain == TERRAIN_BENSCH) 387 {388 /*389 this->model = (OBJModel*) new Model();390 this->model->setName("CUBE");391 this->model->addVertex (-0.5, -0.5, 0.5);392 this->model->addVertex (0.5, -0.5, 0.5);393 this->model->addVertex (-0.5, 0.5, 0.5);394 this->model->addVertex (0.5, 0.5, 0.5);395 this->model->addVertex (-0.5, 0.5, -0.5);396 this->model->addVertex (0.5, 0.5, -0.5);397 this->model->addVertex (-0.5, -0.5, -0.5);398 this->model->addVertex (0.5, -0.5, -0.5);399 400 this->model->addVertexTexture (0.0, 0.0);401 this->model->addVertexTexture (1.0, 0.0);402 this->model->addVertexTexture (0.0, 1.0);403 this->model->addVertexTexture (1.0, 1.0);404 this->model->addVertexTexture (0.0, 2.0);405 this->model->addVertexTexture (1.0, 2.0);406 this->model->addVertexTexture (0.0, 3.0);407 this->model->addVertexTexture (1.0, 3.0);408 this->model->addVertexTexture (0.0, 4.0);409 this->model->addVertexTexture (1.0, 4.0);410 this->model->addVertexTexture (2.0, 0.0);411 this->model->addVertexTexture (2.0, 1.0);412 this->model->addVertexTexture (-1.0, 0.0);413 this->model->addVertexTexture (-1.0, 1.0);414 415 this->model->finalize();416 */417 }392 { 393 /* 394 this->model = (OBJModel*) new Model(); 395 this->model->setName("CUBE"); 396 this->model->addVertex (-0.5, -0.5, 0.5); 397 this->model->addVertex (0.5, -0.5, 0.5); 398 this->model->addVertex (-0.5, 0.5, 0.5); 399 this->model->addVertex (0.5, 0.5, 0.5); 400 this->model->addVertex (-0.5, 0.5, -0.5); 401 this->model->addVertex (0.5, 0.5, -0.5); 402 this->model->addVertex (-0.5, -0.5, -0.5); 403 this->model->addVertex (0.5, -0.5, -0.5); 404 405 this->model->addVertexTexture (0.0, 0.0); 406 this->model->addVertexTexture (1.0, 0.0); 407 this->model->addVertexTexture (0.0, 1.0); 408 this->model->addVertexTexture (1.0, 1.0); 409 this->model->addVertexTexture (0.0, 2.0); 410 this->model->addVertexTexture (1.0, 2.0); 411 this->model->addVertexTexture (0.0, 3.0); 412 this->model->addVertexTexture (1.0, 3.0); 413 this->model->addVertexTexture (0.0, 4.0); 414 this->model->addVertexTexture (1.0, 4.0); 415 this->model->addVertexTexture (2.0, 0.0); 416 this->model->addVertexTexture (2.0, 1.0); 417 this->model->addVertexTexture (-1.0, 0.0); 418 this->model->addVertexTexture (-1.0, 1.0); 419 420 this->model->finalize(); 421 */ 422 } 418 423 } 419 424 … … 453 458 454 459 void Terrain::writeDebug( ) const 455 { 456 } 460 {} 457 461 458 462 void Terrain::readDebug( ) const 459 { 460 } 463 {} 461 464 462 465 float Terrain::getHeight(float x, float y) 463 466 { 464 if(this->heightMap != NULL)465 return (this->heightMap->getHeight(x, y));466 return 0;467 } 467 if(this->heightMap != NULL) 468 return (this->heightMap->getHeight(x, y)); 469 return 0; 470 }  - 
        
trunk/src/world_entities/terrain.h
r7046 r7221 29 29 public: 30 30 Terrain(const TiXmlElement* root = NULL); 31 Terrain(const char*fileName);31 Terrain(const std::string& fileName); 32 32 Terrain(DebugTerrain debugTerrain); 33 33 virtual ~Terrain(); … … 41 41 virtual void loadParams(const TiXmlElement* root); 42 42 43 void loadVegetation(const char*vegetationFile);43 void loadVegetation(const std::string& vegetationFile); 44 44 45 void loadHeightMap(const char* heightMapFile, const char* colorMap = NULL);46 void loadTexture(const char*textureName);45 void loadHeightMap(const std::string& heightMapFile, const std::string& colorMap); 46 void loadTexture(const std::string& textureName); 47 47 void setScale(float x, float y, float z); 48 48  - 
        
trunk/src/world_entities/weapons/aim.cc
r7193 r7221 147 147 * @param textureFile The texture-file to load onto the crosshair 148 148 */ 149 void Aim::setTexture(const char*textureFile)149 void Aim::setTexture(const std::string& textureFile) 150 150 { 151 151 this->material->setDiffuseMap(textureFile);  - 
        
trunk/src/world_entities/weapons/aim.h
r6724 r7221 46 46 47 47 void setSize(float size); 48 void setTexture(const char*textureFile);48 void setTexture(const std::string& textureFile); 49 49 /** @param rotationSpeed the speed at what the crosshair should rotate */ 50 50 inline void setRotationSpeed(float rotationSpeed) { this->rotationSpeed = rotationSpeed; };  - 
        
trunk/src/world_entities/weapons/aiming_turret.cc
r7193 r7221 168 168 glRotatef (this->getAbsDir().getSpacialAxisAngle(), tmpRot.x, tmpRot.y, tmpRot.z ); 169 169 170 this->getModel()->draw(); 170 if (this->getModel()) 171 this->getModel()->draw(); 171 172 glPopMatrix(); 172 173 }  - 
        
trunk/src/world_entities/weapons/crosshair.cc
r7193 r7221 79 79 EventListener::loadParams(root); 80 80 81 LoadParam(root, "texture", this , Crosshair, setTexture)81 LoadParam(root, "texture", this->material, Material, setDiffuseMap) 82 82 .describe("the texture-file to load onto the Crosshair"); 83 83 … … 103 103 * @param textureFile The texture-file to load onto the crosshair 104 104 */ 105 void Crosshair::setTexture(const char*textureFile)105 void Crosshair::setTexture(const std::string& textureFile) 106 106 { 107 107 this->material->setDiffuseMap(textureFile);  - 
        
trunk/src/world_entities/weapons/crosshair.h
r6512 r7221 31 31 32 32 void setSize(float size); 33 void setTexture(const char*textureFile);33 void setTexture(const std::string& textureFile); 34 34 /** @param rotationSpeed the speed at what the crosshair should rotate */ 35 35 void setRotationSpeed(float rotationSpeed) { this->rotationSpeed = rotationSpeed; };  - 
        
trunk/src/world_entities/weapons/weapon.cc
r7193 r7221 165 165 * @param projectile the Name of the Projectile. 166 166 */ 167 void Weapon::setProjectileTypeC(const char* projectile) 168 { 169 if (projectile == NULL) 170 return; 167 void Weapon::setProjectileTypeC(const std::string& projectile) 168 { 171 169 FastFactory* tmpFac = FastFactory::searchFastFactory(projectile); 172 170 if (tmpFac != NULL) … … 176 174 else 177 175 { 178 PRINTF(1)("Projectile %s does not exist for weapon %s\n", projectile , this->getName());176 PRINTF(1)("Projectile %s does not exist for weapon %s\n", projectile.c_str(), this->getName()); 179 177 } 180 178 } … … 232 230 * @param soundFile the soundFile's relative position to the data-directory (will be looked for by the ResourceManager) 233 231 */ 234 void Weapon::setActionSound(WeaponAction action, const char*soundFile)232 void Weapon::setActionSound(WeaponAction action, const std::string& soundFile) 235 233 { 236 234 if (action >= WA_ACTION_COUNT) … … 239 237 ResourceManager::getInstance()->unload(this->soundBuffers[action]); 240 238 241 else if ( soundFile != NULL)239 else if (!soundFile.empty()) 242 240 { 243 241 this->soundBuffers[action] = (SoundBuffer*)ResourceManager::getInstance()->load(soundFile, WAV); 244 242 if (this->soundBuffers[action] != NULL) 245 243 { 246 PRINTF(4)("Loaded sound %s to action %s.\n", soundFile , actionToChar(action));244 PRINTF(4)("Loaded sound %s to action %s.\n", soundFile.c_str(), actionToChar(action)); 247 245 } 248 246 else 249 247 { 250 PRINTF(2)("Failed to load sound %s to %s.\n.", soundFile , actionToChar(action));248 PRINTF(2)("Failed to load sound %s to %s.\n.", soundFile.c_str(), actionToChar(action)); 251 249 } 252 250 } … … 613 611 * @return The Action if known, WA_NONE otherwise. 614 612 */ 615 WeaponAction Weapon::charToAction(const char*action)616 { 617 if ( !strcmp(action, "none"))613 WeaponAction Weapon::charToAction(const std::string& action) 614 { 615 if (action == "none") 618 616 return WA_NONE; 619 else if ( !strcmp(action, "shoot"))617 else if (action == "shoot") 620 618 return WA_SHOOT; 621 else if ( !strcmp(action, "charge"))619 else if (action == "charge") 622 620 return WA_CHARGE; 623 else if ( !strcmp(action, "reload"))621 else if (action == "reload") 624 622 return WA_RELOAD; 625 else if ( !strcmp(action, "acitvate"))623 else if (action == "acitvate") 626 624 return WA_ACTIVATE; 627 else if ( !strcmp(action, "deactivate"))625 else if (action == "deactivate") 628 626 return WA_DEACTIVATE; 629 else if ( !strcmp(action, "special1"))627 else if (action == "special1") 630 628 return WA_SPECIAL1; 631 629 else 632 630 { 633 PRINTF(2)("action %s could not be identified.\n", action );631 PRINTF(2)("action %s could not be identified.\n", action.c_str()); 634 632 return WA_NONE; 635 633 } … … 674 672 * @return The State if known, WS_NONE otherwise. 675 673 */ 676 WeaponState Weapon::charToState(const char*state)677 { 678 if ( !strcmp(state, "none"))674 WeaponState Weapon::charToState(const std::string& state) 675 { 676 if (state == "none") 679 677 return WS_NONE; 680 else if ( !strcmp(state, "shooting"))678 else if (state == "shooting") 681 679 return WS_SHOOTING; 682 else if ( !strcmp(state, "charging"))680 else if (state == "charging") 683 681 return WS_CHARGING; 684 else if ( !strcmp(state, "reloading"))682 else if (state == "reloading") 685 683 return WS_RELOADING; 686 else if ( !strcmp(state, "activating"))684 else if (state == "activating") 687 685 return WS_ACTIVATING; 688 else if ( !strcmp(state, "deactivating"))686 else if (state == "deactivating") 689 687 return WS_DEACTIVATING; 690 else if ( !strcmp(state, "inactive"))688 else if (state == "inactive") 691 689 return WS_INACTIVE; 692 else if ( !strcmp(state, "idle"))690 else if (state == "idle") 693 691 return WS_IDLE; 694 692 else 695 693 { 696 PRINTF(2)("state %s could not be identified.\n", state );694 PRINTF(2)("state %s could not be identified.\n", state.c_str()); 697 695 return WS_NONE; 698 696 }  - 
        
trunk/src/world_entities/weapons/weapon.h
r7102 r7221 111 111 inline long getCapability() const { return this->capability; }; 112 112 void setProjectileType(ClassID projectile); 113 void setProjectileTypeC(const char*projectile);113 void setProjectileTypeC(const std::string& projectile); 114 114 /** @returns The projectile's classID */ 115 115 inline ClassID getProjectileType() { return this->projectile; }; … … 132 132 // STATE CHANGES // 133 133 /** @param state the State to time @param duration the duration of the State */ 134 inline void setStateDuration(const char*state, float duration) { setStateDuration(charToState(state), duration); };134 inline void setStateDuration(const std::string& state, float duration) { setStateDuration(charToState(state), duration); }; 135 135 /** @param state the State to time @param duration the duration of the State */ 136 136 inline void setStateDuration(WeaponState state, float duration) { /*(state < WS_STATE_COUNT)?*/this->times[state] = duration; }; … … 148 148 inline void setAmmoContainer(const CountPointer<AmmoContainer>& ammoContainer) { this->ammoContainer = ammoContainer;} 149 149 150 void setActionSound(WeaponAction action, const char*soundFile);151 /** @see void setActionSound(WeaponAction action, const char*soundFile); */152 void setActionSound(const char* action, const char*soundFile) { this->setActionSound(charToAction(action), soundFile); };150 void setActionSound(WeaponAction action, const std::string& soundFile); 151 /** @see void setActionSound(WeaponAction action, const std::string& soundFile); */ 152 void setActionSound(const std::string& action, const std::string& soundFile) { this->setActionSound(charToAction(action), soundFile); }; 153 153 154 154 Animation3D* getAnimation(WeaponState state, PNode* node = NULL); … … 176 176 177 177 // utility: 178 static WeaponAction charToAction(const char*action);178 static WeaponAction charToAction(const std::string& action); 179 179 static const char* actionToChar(WeaponAction action); 180 static WeaponState charToState(const char*state);180 static WeaponState charToState(const std::string& state); 181 181 static const char* stateToChar(WeaponState state); 182 182  - 
        
trunk/src/world_entities/world_entity.cc
r7198 r7221 61 61 this->bCollide = true; 62 62 63 this->md2TextureFileName = NULL;64 65 63 this->objectListNumber = OM_INIT; 66 64 this->objectListIterator = NULL; … … 120 118 * @param fileName the name of the model to load 121 119 * @param scaling the Scaling of the model 122 * 123 * @todo fix this, so it only has one loadModel-Function. 124 */ 125 void WorldEntity::loadModel(const char* fileName, float scaling, unsigned int modelNumber) 120 */ 121 void WorldEntity::loadModel(const std::string& fileName, float scaling, unsigned int modelNumber) 126 122 { 127 123 this->modelLODName = fileName; 128 124 this->scaling = scaling; 129 if ( fileName != NULL && strcmp(fileName, ""))125 if (!fileName.empty()) 130 126 { 131 127 // search for the special character # in the LoadParam 132 if (strchr(fileName, '#') != NULL) 133 { 134 PRINTF(4)("Found # in %s... searching for LOD's\n", fileName); 135 char* lodFile = new char[strlen(fileName)+1]; 136 strcpy(lodFile, fileName); 137 char* depth = strchr(lodFile, '#'); 128 if (fileName.find('#') != std::string::npos) 129 { 130 PRINTF(4)("Found # in %s... searching for LOD's\n", fileName.c_str()); 131 std::string lodFile = fileName; 132 unsigned int offset = lodFile.find('#'); 138 133 for (unsigned int i = 0; i < 3; i++) 139 134 { 140 *depth= 48+(int)i;135 lodFile[offset] = 48+(int)i; 141 136 if (ResourceManager::isInDataDir(lodFile)) 142 137 this->loadModel(lodFile, scaling, i); … … 149 144 this->scaling = 1.0; 150 145 } 151 if( strstr(fileName, ".obj"))152 { 153 PRINTF(4)("fetching OBJ file: %s\n", fileName );146 if(fileName.find(".obj") != std::string::npos) 147 { 148 PRINTF(4)("fetching OBJ file: %s\n", fileName.c_str()); 154 149 BaseObject* loadedModel = ResourceManager::getInstance()->load(fileName, OBJ, RP_CAMPAIGN, this->scaling); 155 150 if (loadedModel != NULL) 156 151 this->setModel(dynamic_cast<Model*>(loadedModel), modelNumber); 152 else 153 PRINTF(1)("OBJ-File %s not found.\n", fileName.c_str()); 157 154 158 155 if( modelNumber == 0) 159 156 this->buildObbTree(4); 160 157 } 161 else if( strstr(fileName, ".md2"))162 { 163 PRINTF(4)("fetching MD2 file: %s\n", fileName );158 else if(fileName.find(".md2") != std::string::npos) 159 { 160 PRINTF(4)("fetching MD2 file: %s\n", fileName.c_str()); 164 161 Model* m = new MD2Model(fileName, this->md2TextureFileName, this->scaling); 165 162 //this->setModel((Model*)ResourceManager::getInstance()->load(fileName, MD2, RP_CAMPAIGN), 0); … … 575 572 char* name = (char*)(getModel( 0 )->getName()); 576 573 577 if ( strstr(name, ResourceManager::getInstance()->getDataDir()))578 { 579 name += strlen(ResourceManager::getInstance()->getDataDir());574 if ( ResourceManager::getInstance()->getDataDir() == name ) /// FIXME (do not know what to do here.) 575 { 576 name += ResourceManager::getInstance()->getDataDir().size(); 580 577 } 581 578  - 
        
trunk/src/world_entities/world_entity.h
r7095 r7221 36 36 virtual void loadParams(const TiXmlElement* root); 37 37 38 void loadModel(const char*fileName, float scaling = 1.0f, unsigned int modelNumber = 0);38 void loadModel(const std::string& fileName, float scaling = 1.0f, unsigned int modelNumber = 0); 39 39 void setModel(Model* model, unsigned int modelNumber = 0); 40 40 Model* getModel(unsigned int modelNumber = 0) const { return (this->models.size() > modelNumber)? this->models[modelNumber] : NULL; }; 41 41 42 inline void loadMD2Texture(const char*fileName) { this->md2TextureFileName = fileName; }42 inline void loadMD2Texture(const std::string& fileName) { this->md2TextureFileName = fileName; } 43 43 44 44 bool buildObbTree(unsigned int depth); … … 113 113 114 114 std::vector<Model*> models; //!< The model that should be loaded for this entity. 115 const char*md2TextureFileName; //!< the file name of the md2 model texture, only if this116 const char*modelLODName; //!< the name of the model lod file115 std::string md2TextureFileName; //!< the file name of the md2 model texture, only if this 116 std::string modelLODName; //!< the name of the model lod file 117 117 BVTree* obbTree; //!< this is the obb tree reference needed for collision detection 118 118  
Note: See TracChangeset
          for help on using the changeset viewer.
      


            






