Changeset 5498 in orxonox.OLD for trunk/src/world_entities
- Timestamp:
- Nov 7, 2005, 10:43:22 PM (19 years ago)
- Location:
- trunk/src/world_entities
- Files:
-
- 8 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/world_entities/test_entity.cc
r5428 r5498 72 72 } 73 73 74 void TestEntity::hit (WorldEntity* weapon, Vector* loc) {}75 76 77 74 void TestEntity::destroy () {} 78 75 -
trunk/src/world_entities/test_entity.h
r5427 r5498 22 22 23 23 virtual void tick (float time); 24 virtual void hit (WorldEntity* weapon, Vector* loc);25 24 virtual void destroy (); 26 25 virtual void collidesWith(WorldEntity* entity, const Vector& location); -
trunk/src/world_entities/weapons/projectile.h
r5447 r5498 1 1 /*! 2 2 * @file projectile.h 3 * a projectile, that is been shooted by a weapon 4 5 You can use this class to make some shoots, but this isn't the real idea. If you want to just test, if the 6 shooting funcions work, use the Projectile class. But if you want to implement your own shoots its 7 different:<br> 8 Make a new class and derive it from Projectile. To have a weapon work well, reimplement the functions 9 - void tick() 10 - void draw() 11 - void hit() (only if you have working collision detection) 12 When you have implemented these functions you have just to add the projectiles to your weapon. You ll want 13 to make this by looking into the function 14 - Weapon::fire() 15 there you just change the line: 16 Projectile* pj = new Projectile(); TO Projectile* pj = new MyOwnProjectileClass(); 17 and schwups it works... :) 18 */ 3 * a projectile, that is been shooted by a weapon 4 * 5 * You can use this class to make some Projectiles/Bullets/Lasers/Rockets/etc. 6 * 7 */ 19 8 20 9 #ifndef _PROJECTILE_H … … 22 11 23 12 #include "world_entity.h" 24 25 class FastFactory;26 13 27 14 class Projectile : public WorldEntity … … 57 44 protected: 58 45 // energy 59 float energyMin; 60 float energyMax; 46 float energyMin; //!< The minimal Energy a Projectile needs to be emitted. 47 float energyMax; //!< The maximal Energy a Projectile can take, before being emitted. 61 48 bool bChargeable; //!< if the Projectile is Charegeable 62 49 -
trunk/src/world_entities/weapons/test_gun.cc
r5462 r5498 192 192 } 193 193 194 195 /**196 * is called, when the weapon gets hit (=collide with something)197 * @param from which entity it is been hit198 * @param where it is been hit199 200 this may not be used, since it would make the game relay complicated when one201 can destroy the weapons of enemies or vice versa.202 */203 void TestGun::hit (WorldEntity* entity, Vector* position)204 {}205 206 207 194 /** 208 195 * is called, when the weapon is destroyed 209 210 211 196 * 197 * this is in conjunction with the hit function, so when a weapon is able to get 198 * hit, it can also be destoryed. 212 199 */ 213 200 void TestGun::destroy () -
trunk/src/world_entities/weapons/test_gun.h
r4972 r5498 49 49 50 50 virtual void fire(); 51 virtual void hit (WorldEntity* weapon, Vector* loc);52 51 virtual void destroy(); 53 52 -
trunk/src/world_entities/weapons/weapon.cc
r5441 r5498 65 65 /** 66 66 * initializes the Weapon with ALL default values 67 * 68 * This Sets the default values of the Weapon 67 69 */ 68 70 void Weapon::init() 69 71 { 70 this->currentState = WS_INACTIVE; 71 this->requestedAction = WA_NONE; 72 this->stateDuration = 0.0; 73 for (int i = 0; i < WS_STATE_COUNT; i++) 72 this->currentState = WS_INACTIVE; //< Normaly the Weapon is Inactive 73 this->requestedAction = WA_NONE; //< No action is requested by default 74 this->stateDuration = 0.0; //< All the States have zero duration 75 for (int i = 0; i < WS_STATE_COUNT; i++) //< Every State has: 74 76 { 75 this->times[i] = 0.0; 76 this->animation[i] = NULL; 77 this->times[i] = 0.0; //< An infinitesimal duration 78 this->animation[i] = NULL; //< No animation 77 79 } 78 80 for (int i = 0; i < WA_ACTION_COUNT; i++) 79 this->soundBuffers[i] = NULL; 80 81 this->soundSource = new SoundSource(this); 82 this->emissionPoint.setParent(this); 83 84 this->projectile = CL_NULL; 85 this->projectileFactory = NULL; 86 87 this->hideInactive = true; 88 89 this->minCharge = 1.0; 90 this->maxCharge = 1.0; 91 92 this->energyLoaded = .0; 93 this->energyLoadedMax = 5.0; 94 this->energy = .0; 95 this->energyMax = 10.0; 96 this->capability = WTYPE_ALL; 97 98 this->setWeaponManager(NULL); 99 } 100 81 this->soundBuffers[i] = NULL; //< No Sounds 82 83 this->soundSource = new SoundSource(this); //< Every Weapon has exacty one SoundSource. 84 this->emissionPoint.setParent(this); //< One EmissionPoint, that is a PNode connected to the weapon. You can set this to the exitting point of the Projectiles 85 86 this->projectile = CL_NULL; //< No Projectile Class is Connected to this weapon 87 this->projectileFactory = NULL; //< No Factory generating Projectiles is selected. 88 89 this->hideInactive = true; //< The Weapon will be hidden if it is inactive (by default) 90 91 this->minCharge = 1.0; //< The minimum charge the Weapon can hold is 1 unit. 92 this->maxCharge = 1.0; //< The maximum charge is also one unit. 93 94 this->energyLoaded = .0; //< How much energy is loaded in the Gun. (Weapons must be charged befor usage) 95 this->energyLoadedMax = 5.0; //< Each Weapon has a Maximum energy that can be charged onto it 96 this->energy = .0; //< The secondary Buffer (before we have to reload) 97 this->energyMax = 10.0; //< How much energy can be carried 98 this->capability = WTYPE_ALL; //< The Weapon has all capabilities @see W_Capability. 99 100 this->setWeaponManager(NULL); //< By default the Weapon is free, and unhandled by a WeaponManager (this is good for small enemies). 101 } 102 103 /** 104 * loads the Parameters of a Weapon 105 * @param root the XML-Element to load the Weapons settings from 106 */ 101 107 void Weapon::loadParams(const TiXmlElement* root) 102 108 { … … 121 127 * @returns true, if it was sucessfull, false on error 122 128 * 123 * be aware, that this function does not create Factories, as this is job of Bullet-classes. 129 * be aware, that this function does not create Factories, as this is job of Projecitle/Bullet-classes. 130 * What it does, is telling the Weapon what Projectiles it can Emit. 124 131 */ 125 132 void Weapon::setProjectileType(ClassID projectile) … … 166 173 /** 167 174 * prepares Projectiles of the Weapon 168 * @param count how many Projectiles to create 175 * @param count how many Projectiles to create (they will be stored in the ProjectileFactory) 169 176 */ 170 177 void Weapon::prepareProjectiles(unsigned int count) … … 178 185 /** 179 186 * resurects and returns a Projectile 180 * @returns a Projectile on success, NULL on error (ProjectileFastFactory not Found) 187 * @returns a Projectile on success, NULL on error 188 * 189 * errors: 1. (ProjectileFastFactory not Found) 190 * 2. No more Projectiles availiable. 181 191 */ 182 192 Projectile* Weapon::getProjectile() … … 186 196 else 187 197 { 188 PRINTF(2)("No projectile defined for Weapon %s(%s) can t return any\n", this->getName(), this->getClassName());198 PRINTF(2)("No projectile defined for Weapon %s(%s) can't return any\n", this->getName(), this->getClassName()); 189 199 return NULL; 190 200 } … … 307 317 } 308 318 309 ////////////////////// 310 // WEAPON INTERNALS // 311 ////////////////////// 319 //////////////////////////////////////////////////////////// 320 // WEAPON INTERNALS // 321 // These are functions, that no other Weapon should over- // 322 // write. No class has direct Access to them, as it is // 323 // quite a complicated process, handling a Weapon from // 324 // the outside // 325 //////////////////////////////////////////////////////////// 312 326 /** 313 327 * executes an action, and with it starts a new State. … … 531 545 /** 532 546 * checks wether all the Weapons functions are valid, and if it is possible to go to action with it. 533 * 547 * @todo IMPLEMENT the Weapons Check 534 548 */ 535 549 bool Weapon::check() const … … 561 575 } 562 576 563 564 // static 577 //////////////////////////////////////////////////////// 578 // static Definitions (transormators for readability) // 579 //////////////////////////////////////////////////////// 565 580 /** 566 581 * Converts a String into an Action. -
trunk/src/world_entities/world_entity.cc
r5482 r5498 35 35 /** 36 36 * Loads the WordEntity-specific Part of any derived Class 37 */ 37 * 38 * @param root: Normally NULL, as the Derived Entities define a loadParams Function themeselves, 39 * that can calls WorldEntities loadParams for itself. 40 */ 38 41 WorldEntity::WorldEntity(const TiXmlElement* root) 39 42 { … … 54 57 WorldEntity::~WorldEntity () 55 58 { 56 // if( collisioncluster != NULL) delete collisioncluster;59 // Delete the model (unregister it with the ResourceManager) 57 60 if (likely(this->model != NULL)) 58 61 ResourceManager::getInstance()->unload(this->model); 62 // Delete the obbTree 59 63 if( this->obbTree != NULL) 60 64 delete this->obbTree; 61 65 } 62 66 67 /** 68 * loads the WorldEntity Specific Parameters. 69 * @param root: the XML-Element to load the Data From 70 */ 63 71 void WorldEntity::loadParams(const TiXmlElement* root) 64 72 { 73 // Do the PNode loading stuff 65 74 static_cast<PNode*>(this)->loadParams(root); 75 66 76 // Model Loading 67 77 LoadParam<WorldEntity>(root, "model", this, &WorldEntity::loadModel) … … 77 87 * @param fileName the name of the model to load 78 88 * @param scaling the Scaling of the model 89 * 90 * @todo fix this, so it only has one loadModel-Function. 79 91 */ 80 92 void WorldEntity::loadModelWithScale(const char* fileName, float scaling) … … 126 138 * these attributes don't have to be set, only use them, if you need them 127 139 */ 128 void WorldEntity::setCharacterAttributes(CharacterAttributes* charAttr) 129 {} 130 131 132 /** 133 * gets the Character attributes of this worldentity 134 * @returns character attributes 135 */ 136 CharacterAttributes* WorldEntity::getCharacterAttributes() 137 {} 140 //void WorldEntity::setCharacterAttributes(CharacterAttributes* charAttr) 141 //{} 138 142 139 143 … … 146 150 void WorldEntity::collidesWith(WorldEntity* entity, const Vector& location) 147 151 { 152 /** 153 * THIS IS A DEFAULT COLLISION-Effect. 154 * IF YOU WANT TO CREATE A SPECIFIC COLLISION ON EACH OBJECT 155 * USE:: 156 * if (entity->isA(CL_WHAT_YOU_ARE_LOOKING_FOR)) { printf "dothings"; }; 157 * 158 * You can always define a default Action.... don't be affraid just test it :) 159 */ 148 160 // PRINTF(3)("collision %s vs %s @ (%f,%f,%f)\n", this->getClassName(), entity->getClassName(), location.x, location.y, location.z); 149 161 } 150 162 151 /** 152 * this function is called, when the ship is hit by a waepon 153 * @param weapon: the laser/rocket/shoot that hits. 154 * @param loc: place where it is hit 155 * 156 * calculate the damage depending 157 */ 158 void WorldEntity::hit(WorldEntity* weapon, Vector* loc) {} 159 160 161 /** 162 * this is called immediately after the Entity has been constructed and initialized 163 * 164 * Put any initialisation code that requires knowledge of location (placement if the Entity is free) and owner of the entity here. 165 * DO NOT place such code in the constructor, those variables are set AFTER the entity is constucted. 166 */ 163 164 /** 165 * this is called immediately after the Entity has been constructed, initialized and then Spawned into the World 166 * 167 */ 167 168 void WorldEntity::postSpawn () 168 169 { … … 175 176 * For free entities this means it left the Track boundaries. With bound entities it means its Location adresses a 176 177 * place that is not in the world anymore. In both cases you might have to take extreme measures (a.k.a. call destroy). 177 */ 178 * 179 * NOT YET IMPLEMENTED 180 */ 178 181 void WorldEntity::leftWorld () 179 182 { … … 190 193 { 191 194 } 195 192 196 193 197 /** … … 216 220 } 217 221 218 222 /** 223 * DEBUG-DRAW OF THE BV-Tree. 224 * @param depth What depth to draw 225 * @param drawMode the mode to draw this entity under 226 */ 219 227 void WorldEntity::drawBVTree(unsigned int depth, int drawMode) 220 228 { -
trunk/src/world_entities/world_entity.h
r5431 r5498 11 11 12 12 // FORWARD DECLARATION 13 class CharacterAttributes;14 class SoundEngine;15 13 class SoundBuffer; 16 14 class SoundSource; 17 15 class BVTree; 16 17 //class CharacterAttributes; 18 18 19 19 … … 28 28 29 29 /** @see loadModelWithScale(const char*, float) @param fileName the File to load */ 30 void loadModel(const char* fileName) { this->loadModelWithScale(fileName, 1.0); }; 30 void loadModel(const char* fileName) { this->loadModelWithScale(fileName, 1.0f); }; 31 31 32 void loadModelWithScale(const char* fileName, float scaling); 32 33 … … 42 43 bool isVisible() const { return this->bVisible; }; 43 44 44 void setCharacterAttributes(CharacterAttributes* charAttr);45 CharacterAttributes* getCharacterAttributes();45 // void setCharacterAttributes(CharacterAttributes* charAttr); 46 // CharacterAttributes* getCharacterAttributes(); 46 47 47 48 /** @returns a reference to the obb tree of this worldentity */ … … 51 52 virtual void leftWorld (); 52 53 53 virtual void hit (WorldEntity* weapon, Vector* loc);54 54 virtual void collidesWith (WorldEntity* entity, const Vector& location); 55 55 … … 63 63 protected: 64 64 Model* model; //!< The model that should be loaded for this entity. 65 CharacterAttributes* charAttr; //!< the character attributes of a world_entity66 65 BVTree* obbTree; //!< this is the obb tree reference needed for collision detection 66 // CharacterAttributes* charAttr; //!< the character attributes of a world_entity 67 67 68 68 private:
Note: See TracChangeset
for help on using the changeset viewer.