Changeset 6087
- Timestamp:
- Nov 18, 2009, 1:34:14 PM (15 years ago)
- Location:
- code/branches/particles2/src
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/particles2/src/modules/weapons/projectiles/Rocket.cc
r6086 r6087 52 52 RegisterObject(Rocket);// - register the Rocket class to the core 53 53 54 this->setCollisionType(WorldEntity::Kinematic);55 this->setVelocity(0,0,-100);56 this->model_ = new Model(this);57 this->model_->setMeshSource("rocket_test.mesh");58 this->attach(this->model_);59 this->lifetime_ = 100;60 this->bDestroy_ = false;61 62 54 if (GameMode::isMaster()) 63 55 { 56 this->setCollisionType(WorldEntity::Kinematic); 57 this->setVelocity(0,0,-100); 58 this->lifetime_ = 100; 59 this->bDestroy_ = false; 60 61 this->model_ = new Model(this); 62 this->model_->setMeshSource("rocket_test.mesh"); 63 this->attach(this->model_); 64 64 65 this->enableCollisionCallback(); 65 66 this->setCollisionResponse(false); … … 76 77 this->camPosition_ = new CameraPosition(this); 77 78 this->camPosition_->setPosition(0,10,40); 79 this->camPosition_->setSyncMode(0x0); 78 80 this->attach( this->camPosition_ ); 79 81 this->addCameraPosition( this->camPosition_ ); … … 88 90 if(this->isInitialized()) 89 91 { 90 this->collisionShape_->destroy();91 this->model_->destroy();92 92 93 if (GameMode::isMaster() && this->player_) 93 if (GameMode::isMaster() && this->player_.get()) 94 { 95 this->model_->destroy(); 96 this->collisionShape_->destroy(); 94 97 this->player_->stopTemporaryControl(); 98 } 95 99 this->camPosition_->destroy(); 96 100 } … … 110 114 { 111 115 this->owner_ = owner; 112 113 116 this->originalControllableEntity_ = this->owner_->getPlayer()->getControllableEntity(); 114 117 this->player_ = this->owner_->getPlayer(); … … 126 129 SUPER(Rocket, tick, dt); 127 130 128 this->setAngularVelocity(this->getOrientation() * this->localAngularVelocity_); 129 this->setVelocity( this->getOrientation()*WorldEntity::FRONT*this->getVelocity().length() ); 130 this->localAngularVelocity_ = 0; 131 132 if( this->bDestroy_ ) 133 this->destroy(); 131 if( GameMode::isMaster() ) 132 { 133 this->setAngularVelocity(this->getOrientation() * this->localAngularVelocity_); 134 this->setVelocity( this->getOrientation()*WorldEntity::FRONT*this->getVelocity().length() ); 135 this->localAngularVelocity_ = 0; 136 137 if( this->bDestroy_ ) 138 this->destroy(); 139 } 134 140 } 135 141 … … 180 186 this->destroy(); 181 187 } 188 189 void Rocket::fire(unsigned int firemode) 190 { 191 if (this->owner_) 192 { 193 { 194 ParticleSpawner* effect = new ParticleSpawner(this->owner_->getCreator()); 195 effect->setPosition(this->getPosition()); 196 effect->setOrientation(this->getOrientation()); 197 effect->setDestroyAfterLife(true); 198 effect->setSource("Orxonox/explosion3"); 199 effect->setLifetime(2.0f); 200 } 201 { 202 ParticleSpawner* effect = new ParticleSpawner(this->owner_->getCreator()); 203 effect->setPosition(this->getPosition()); 204 effect->setOrientation(this->getOrientation()); 205 effect->setDestroyAfterLife(true); 206 effect->setSource("Orxonox/smoke4"); 207 effect->setLifetime(3.0f); 208 } 209 this->destroy(); 210 } 211 } 182 212 183 213 /** -
code/branches/particles2/src/modules/weapons/projectiles/Rocket.h
r6082 r6087 110 110 inline float getDamage() const 111 111 { return this->damage_; } 112 virtual void fire(unsigned int firemode) { this->destroy(); }112 virtual void fire(unsigned int firemode); 113 113 114 114 private: … … 122 122 CameraPosition* camPosition_; 123 123 ConeCollisionShape* collisionShape_; 124 PlayerInfo*player_;124 WeakPtr<PlayerInfo> player_; 125 125 Timer destroyTimer_; 126 126 float lifetime_; -
code/branches/particles2/src/orxonox/Scene.cc
r5929 r6087 334 334 { 335 335 // get the WorldEntity pointers 336 WorldEntity* object0 = static_cast<WorldEntity*>(colObj0->getUserPointer()); 337 assert(orxonox_cast<WorldEntity*>(object0)); 338 WorldEntity* object1 = static_cast<WorldEntity*>(colObj1->getUserPointer()); 339 assert(orxonox_cast<WorldEntity*>(object1)); 336 SmartPtr<WorldEntity> object0 = static_cast<WorldEntity*>(colObj0->getUserPointer()); 337 SmartPtr<WorldEntity> object1 = static_cast<WorldEntity*>(colObj1->getUserPointer()); 340 338 341 339 // false means that bullet will assume we didn't modify the contact -
code/branches/particles2/src/orxonox/controllers/AIController.cc
r5929 r6087 109 109 110 110 if (this->getControllableEntity() && this->bShooting_ && this->isCloseAtTarget(1000) && this->isLookingAtTarget(Ogre::Math::PI / 20.0f)) 111 this->getControllableEntity()->fire(0);111 // this->getControllableEntity()->fire(0); 112 112 113 113 SUPER(AIController, tick, dt); -
code/branches/particles2/src/orxonox/infos/PlayerInfo.cc
r6082 r6087 50 50 this->controller_ = 0; 51 51 this->controllableEntity_ = 0; 52 this->controllableEntityID_ = CLIENTID_UNKNOWN; 52 this->controllableEntityID_ = OBJECTID_UNKNOWN; 53 this->temporaryControllableEntity_ = 0; 54 this->temporaryControllableEntityID_ = OBJECTID_UNKNOWN; 53 55 54 56 this->gtinfo_ = 0; … … 80 82 registerVariable(this->name_, VariableDirection::ToClient, new NetworkCallback<PlayerInfo>(this, &PlayerInfo::changedName)); 81 83 registerVariable(this->controllableEntityID_, VariableDirection::ToClient, new NetworkCallback<PlayerInfo>(this, &PlayerInfo::networkcallback_changedcontrollableentityID)); 84 registerVariable(this->temporaryControllableEntityID_, VariableDirection::ToClient, new NetworkCallback<PlayerInfo>(this, &PlayerInfo::networkcallback_changedcontrollableentityID)); 82 85 registerVariable(this->bReadyToSpawn_, VariableDirection::ToServer); 83 86 registerVariable(this->gtinfoID_, VariableDirection::ToClient, new NetworkCallback<PlayerInfo>(this, &PlayerInfo::networkcallback_changedgtinfoID)); … … 166 169 void PlayerInfo::startTemporaryControl(ControllableEntity* entity) 167 170 { 168 if (!entity || entity == this->controllableEntity_) 169 return; 170 171 // if (this->controllableEntity_) 172 // this->stopControl(); 173 174 this->oldControllableEntity_ = this->controllableEntity_; 175 176 this->controllableEntity_ = entity; 177 this->controllableEntityID_ = entity->getObjectID(); 171 if (!entity) 172 return; 173 174 assert( this->temporaryControllableEntity_==0 ); 175 176 this->temporaryControllableEntity_ = entity; 177 this->temporaryControllableEntityID_ = entity->getObjectID(); 178 178 179 179 entity->setPlayer(this); … … 201 201 202 202 entity->removePlayer(); 203 204 if ( this->oldControllableEntity_ )205 {206 this->oldControllableEntity_->removePlayer();207 this->oldControllableEntity_ = 0;208 }209 203 210 204 this->changedControllableEntity(); … … 213 207 void PlayerInfo::stopTemporaryControl() 214 208 { 215 ControllableEntity* entity = this-> controllableEntity_;209 ControllableEntity* entity = this->temporaryControllableEntity_; 216 210 217 211 if (!entity) 218 212 return; 219 213 220 this-> controllableEntity_ = this->oldControllableEntity_.get();221 this-> controllableEntityID_ = this->controllableEntity_->getObjectID();222 223 if ( this->controller_)214 this->temporaryControllableEntity_ = 0; 215 this->temporaryControllableEntityID_ = OBJECTID_UNKNOWN; 216 217 if ( this->controllableEntity_ && this->controller_) 224 218 this->controller_->setControllableEntity(this->controllableEntity_); 225 219 … … 228 222 this->changedControllableEntity(); 229 223 } 230 224 231 225 void PlayerInfo::networkcallback_changedcontrollableentityID() 232 226 { … … 243 237 } 244 238 239 void PlayerInfo::networkcallback_changedtemporarycontrollableentityID() 240 { 241 CCOUT(0) << "changedtemporarycontrollableentityid" << endl; 242 if (this->temporaryControllableEntityID_ != OBJECTID_UNKNOWN) 243 { 244 Synchronisable* temp = Synchronisable::getSynchronisable(this->temporaryControllableEntityID_); 245 ControllableEntity* entity = orxonox_cast<ControllableEntity*>(temp); 246 this->startTemporaryControl(entity); 247 } 248 else 249 { 250 this->stopTemporaryControl(); 251 } 252 } 253 254 245 255 void PlayerInfo::networkcallback_changedgtinfoID() 246 256 { 257 CCOUT(0) << "changedcontrollableentityid" << endl; 247 258 if (this->gtinfoID_ != OBJECTID_UNKNOWN) 248 259 { -
code/branches/particles2/src/orxonox/infos/PlayerInfo.h
r6082 r6087 92 92 private: 93 93 void networkcallback_changedcontrollableentityID(); 94 void networkcallback_changedtemporarycontrollableentityID(); 94 95 void networkcallback_changedgtinfoID(); 95 96 void updateGametypeInfo(); … … 98 99 Controller* controller_; 99 100 ControllableEntity* controllableEntity_; 100 WeakPtr<ControllableEntity> oldControllableEntity_;101 ControllableEntity* temporaryControllableEntity_; 101 102 unsigned int controllableEntityID_; 103 unsigned int temporaryControllableEntityID_; 102 104 103 105 const GametypeInfo* gtinfo_;
Note: See TracChangeset
for help on using the changeset viewer.