Changeset 7221 in orxonox.OLD for trunk/src/world_entities
- Timestamp:
- Mar 15, 2006, 3:10:45 PM (19 years ago)
- Location:
- trunk/src/world_entities
- Files:
-
- 41 edited
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 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 68 65 if (fileName.rfind(".obj" ) != -1 || fileName.rfind(".OBJ") != -1 ) 66 { 67 this->loadModel(fileName); 68 } 69 69 else 70 71 72 70 { 71 // load the hightMap here. 72 } 73 73 } 74 74 … … 98 98 99 99 if(this->heightMap) 100 100 delete heightMap; 101 101 } 102 102 … … 122 122 123 123 LoadParam(root, "scale", this, Terrain, setScale) 124 124 .describe("The scale in x,y,z direction"); 125 125 126 126 LoadParam(root, "texture", this, Terrain, loadTexture) 127 127 .describe("The name of the Texture for this heightMap"); 128 128 129 129 LoadParam(root, "vegetation", this, Terrain, loadVegetation) 130 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 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 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 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 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 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 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 465 466 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.