Changeset 8556 for code/branches/presentation/src/modules
- Timestamp:
- May 23, 2011, 11:40:58 PM (14 years ago)
- Location:
- code/branches/presentation
- Files:
-
- 11 edited
- 2 copied
Legend:
- Unmodified
- Added
- Removed
-
code/branches/presentation
- Property svn:mergeinfo changed
/code/branches/pickup (added) merged: 8255,8375,8381,8422,8433,8486,8489,8502,8534-8536,8543,8554-8555
- Property svn:mergeinfo changed
-
code/branches/presentation/src/modules/objects/collisionshapes/BoxCollisionShape.cc
r6417 r8556 27 27 */ 28 28 29 /** 30 @file BoxCollisionShape.cc 31 @brief Implementation of the BoxCollisionShape class. 32 */ 33 29 34 #include "BoxCollisionShape.h" 30 35 … … 39 44 CreateFactory(BoxCollisionShape); 40 45 46 /** 47 @brief 48 Constructor. Registers and initializes the object. 49 */ 41 50 BoxCollisionShape::BoxCollisionShape(BaseObject* creator) : CollisionShape(creator) 42 51 { … … 44 53 45 54 this->halfExtents_ = Vector3(1, 1, 1); 46 updateShape();55 this->updateShape(); 47 56 48 57 this->registerVariables(); … … 51 60 BoxCollisionShape::~BoxCollisionShape() 52 61 { 62 // TODO: Move to CollisionShape? 53 63 if (this->isInitialized()) 54 64 delete this->collisionShape_; … … 70 80 } 71 81 82 /** 83 @brief 84 Is called when the scale of the BoxCollisionShape has changed. 85 */ 86 void BoxCollisionShape::changedScale() 87 { 88 CollisionShape::changedScale(); 89 90 // Resize the internal collision shape 91 // TODO: Assuming setLocalScaling works. 92 // this->collisionShape_->setLocalScaling(multi_cast<btVector3>(this->getScale3D())); 93 if(!this->hasUniformScaling()) 94 { 95 CCOUT(1) << "Error: Non-uniform scaling is not yet supported." << endl; 96 return; 97 } 98 99 this->setHalfExtents(this->halfExtents_ * this->getScale()); 100 } 101 102 /** 103 @brief 104 Creates a new internal collision shape for the BoxCollisionShape. 105 @return 106 Returns a pointer to the newly created btBoxShape. 107 */ 72 108 btCollisionShape* BoxCollisionShape::createNewShape() const 73 109 { -
code/branches/presentation/src/modules/objects/collisionshapes/BoxCollisionShape.h
r7601 r8556 43 43 namespace orxonox 44 44 { 45 46 /** 47 @brief 48 Wrapper for the bullet box collision shape class btBoxShape. 49 50 @author 51 Reto Grieder 52 53 @see btBoxShape 54 @ingroup Collisionshapes 55 */ 45 56 class _ObjectsExport BoxCollisionShape : public CollisionShape 46 57 { … … 51 62 virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); 52 63 53 inline void setHalfExtents(const Vector3& extents) 54 { this->halfExtents_ = extents; updateShape(); } 64 /** 65 @brief Set the half extents of the BoxCollisionShape. 66 If the half extent changes, this causes the internal collision shape to be recreated. 67 @param extents A vector with the half extents. 68 The x-component is half the length, the y-component is half the height and the z-component is half the width. 69 @return Returns true if the half extent has changed, false if not. 70 */ 71 inline bool setHalfExtents(const Vector3& extents) 72 { if(this->halfExtents_ == extents) return false; this->halfExtents_ = extents; updateShape(); return true; } 73 /** 74 @brief Get the half extents of the BoxCollisionShape. 75 @return Returns a vector containing the half extents. 76 */ 55 77 inline const Vector3& getHalfExtents() const 56 78 { return halfExtents_;} 57 79 58 inline void setWidth(float value) 59 { this->halfExtents_.z = value / 2; updateShape(); } 80 /** 81 @brief Set the width of the BoxCollisionShape. 82 If the width changes, this causes the internal collision shape to be recreated. 83 @param value The width to be set. 84 @return Returns true if the width has changed, false if not. 85 */ 86 inline bool setWidth(float value) 87 { if(this->halfExtents_.z == value/2.0f) return false; this->halfExtents_.z = value / 2.0f; updateShape(); return true; } 88 /** 89 @brief Get the width of the BoxCollisionShape. 90 @return Returns the width of the BoxCollisionShape. 91 */ 60 92 inline float getWidth() const 61 { return this->halfExtents_.z * 2 ; }93 { return this->halfExtents_.z * 2.0f; } 62 94 63 inline void setHeight(float value) 64 { this->halfExtents_.y = value / 2; updateShape(); } 95 /** 96 @brief Set the height of the BoxCollisionShape. 97 If the height changes, this causes the internal collision shape to be recreated. 98 @param value The height to be set. 99 @return Returns true if the height has changed, false if not. 100 */ 101 inline bool setHeight(float value) 102 { if(this->halfExtents_.y == value/2.0f) return false; this->halfExtents_.y = value / 2.0f; updateShape(); return true; } 103 /** 104 @brief Get the height of the BoxCollisionShape. 105 @return Returns the height of the BoxCollisionShape. 106 */ 65 107 inline float getHeight() const 66 { return this->halfExtents_.y * 2 ; }108 { return this->halfExtents_.y * 2.0f; } 67 109 68 inline void setLength(float value) 69 { this->halfExtents_.x = value / 2; updateShape(); } 110 /** 111 @brief Set the length of the BoxCollisionShape. 112 If the length changes, this causes the internal collision shape to be recreated. 113 @param value The length to be set. 114 @return Returns true if the length has changed, false if not. 115 */ 116 inline bool setLength(float value) 117 { if(this->halfExtents_.x == value/2.0f) return false; this->halfExtents_.x = value / 2.0f; updateShape(); return true; } 118 /** 119 @brief Get the length of the BoxCollisionShape. 120 @return Returns the length of the BoxCollisionShape. 121 */ 70 122 inline float getLength() const 71 { return this->halfExtents_.x * 2; } 123 { return this->halfExtents_.x * 2.0f; } 124 125 virtual void changedScale(); // Is called when the scale of the BoxCollisionShape has changed. 72 126 73 127 private: 74 128 void registerVariables(); 75 129 76 btCollisionShape* createNewShape() const; 130 btCollisionShape* createNewShape() const; // Creates a new internal collision shape for the BoxCollisionShape. 77 131 78 Vector3 halfExtents_; 132 Vector3 halfExtents_; //!< The half extents of the BoxCollisionShape. The x-component is half the length, the y-component is half the height and the z-component is half the width. 79 133 }; 80 134 } -
code/branches/presentation/src/modules/objects/collisionshapes/ConeCollisionShape.cc
r6417 r8556 27 27 */ 28 28 29 /** 30 @file ConeCollisionShape.cc 31 @brief Implementation of the ConeCollisionShape class. 32 */ 33 29 34 #include "ConeCollisionShape.h" 30 35 … … 33 38 #include "core/CoreIncludes.h" 34 39 #include "core/XMLPort.h" 40 #include "tools/BulletConversions.h" 35 41 36 42 namespace orxonox … … 38 44 CreateFactory(ConeCollisionShape); 39 45 46 /** 47 @brief 48 Constructor. Registers and initializes the object. 49 */ 40 50 ConeCollisionShape::ConeCollisionShape(BaseObject* creator) : CollisionShape(creator) 41 51 { … … 69 79 } 70 80 81 /** 82 @brief 83 Is called when the scale of the ConeCollisionShape has changed. 84 */ 85 void ConeCollisionShape::changedScale() 86 { 87 CollisionShape::changedScale(); 88 89 // Resize the internal collision shape 90 // TODO: Assuming setLocalScaling works. 91 //this->collisionShape_->setLocalScaling(multi_cast<btVector3>(this->getScale3D())); 92 if(!this->hasUniformScaling()) 93 { 94 CCOUT(1) << "Error: Non-uniform scaling is not yet supported." << endl; 95 return; 96 } 97 98 this->radius_ *= this->getScale(); 99 this->height_ *= this->getScale(); 100 this->updateShape(); 101 } 102 103 /** 104 @brief 105 Creates a new internal collision shape for the ConeCollisionShape. 106 @return 107 Returns a pointer to the newly created btConeShape. 108 */ 71 109 btCollisionShape* ConeCollisionShape::createNewShape() const 72 110 { -
code/branches/presentation/src/modules/objects/collisionshapes/ConeCollisionShape.h
r7601 r8556 41 41 namespace orxonox 42 42 { 43 44 /** 45 @brief 46 Wrapper for the bullet cone collision shape class btConeShape. 47 48 @author 49 Reto Grieder 50 51 @see btConeShape 52 @ingroup Collisionshapes 53 */ 43 54 class _ObjectsExport ConeCollisionShape : public CollisionShape 44 55 { … … 49 60 virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); 50 61 51 inline void setRadius(float value) 52 { this->radius_ = value; updateShape(); } 62 /** 63 @brief Set the radius of the ConeCollisionShape. 64 If the radius changes, this causes the internal collision shape to be recreated. 65 @param value The radius to be set. 66 @return Returns true if the radius has changed, false if not. 67 */ 68 inline bool setRadius(float value) 69 { if(this->radius_ == value) return false; this->radius_ = value; updateShape(); return true; } 70 /** 71 @brief Get the radius of the ConeCollisionShape. 72 @return Returns the radius of the ConeCollisionShape. 73 */ 53 74 inline float getRadius() const 54 75 { return radius_; } 55 76 56 inline void setHeight(float value) 57 { this->height_ = value; updateShape(); } 77 /** 78 @brief Set the height of the ConeCollisionShape. 79 If the height changes, this causes the internal collision shape to be recreated. 80 @param value The height to be set. 81 @return Returns true if the height has changed, false if not. 82 */ 83 inline bool setHeight(float value) 84 { if(this->height_ == value) return false; this->height_ = value; updateShape(); return true; } 85 /** 86 @brief Get the height of the ConeCollisionShape. 87 @return Returns the height of the ConeCollisionShape. 88 */ 58 89 inline float getHeight() const 59 90 { return this->height_; } 91 92 virtual void changedScale(); // Is called when the scale of the ConeCollisionShape has changed. 60 93 61 94 private: 62 95 void registerVariables(); 63 96 64 btCollisionShape* createNewShape() const; 97 btCollisionShape* createNewShape() const; // Creates a new internal collision shape for the ConeCollisionShape. 65 98 66 float radius_; 67 float height_; 99 float radius_; //!< The radius of the ConeCollisionShape. 100 float height_; //!< The height of the ConeCollisionShape. 68 101 }; 69 102 } -
code/branches/presentation/src/modules/objects/collisionshapes/PlaneCollisionShape.cc
r6417 r8556 27 27 */ 28 28 29 /** 30 @file PlaneCollisionShape.cc 31 @brief Implementation of the PlaneCollisionShape class. 32 */ 33 29 34 #include "PlaneCollisionShape.h" 30 35 … … 39 44 CreateFactory(PlaneCollisionShape); 40 45 46 /** 47 @brief 48 Constructor. Registers and initializes the object. 49 */ 41 50 PlaneCollisionShape::PlaneCollisionShape(BaseObject* creator) : CollisionShape(creator) 42 51 { … … 70 79 } 71 80 81 /** 82 @brief 83 Is called when the scale of the PlaneCollisionShape has changed. 84 */ 85 void PlaneCollisionShape::changedScale() 86 { 87 CollisionShape::changedScale(); 88 89 // Resize the internal collision shape 90 // TODO: Assuming setLocalScaling works. 91 //this->collisionShape_->setLocalScaling(multi_cast<btVector3>(this->getScale3D())); 92 if(!this->hasUniformScaling()) 93 { 94 CCOUT(1) << "Error: Non-uniform scaling is not yet supported." << endl; 95 return; 96 } 97 98 this->setOffset(this->offset_*this->getScale()); 99 } 100 101 /** 102 @brief 103 Creates a new internal collision shape for the PlaneCollisionShape. 104 @return 105 Returns a pointer to the newly created btStaticPlaneShape. 106 */ 72 107 btCollisionShape* PlaneCollisionShape::createNewShape() const 73 108 { -
code/branches/presentation/src/modules/objects/collisionshapes/PlaneCollisionShape.h
r7601 r8556 43 43 namespace orxonox 44 44 { 45 46 /** 47 @brief 48 Wrapper for the bullet plane collision shape class btStaticPlaneShape. 49 50 @author 51 Martin Stypinski 52 53 @see btStaticPlaneShape 54 @ingroup Collisionshapes 55 */ 45 56 class _ObjectsExport PlaneCollisionShape : public CollisionShape 46 57 { … … 51 62 virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); 52 63 53 inline void setNormal(const Vector3& normal) 54 { this->normal_ = normal; updateShape(); } 55 inline const Vector3& getNormal() 64 /** 65 @brief Set the normal of the PlaneCollisionShape. 66 If the normal changes, this causes the internal collision shape to be recreated. 67 @param normal The normal vector to be set. 68 @return Returns true if the normal has changed, false if not. 69 */ 70 inline bool setNormal(const Vector3& normal) 71 { if(this->normal_ == normal) return false; this->normal_ = normal; updateShape(); return true; } 72 /** 73 @brief Get the normal of the PlaneCollisionShape. 74 @return Returns the normal vector of the PlaneCollisionShape. 75 */ 76 inline const Vector3& getNormal() const 56 77 { return normal_;} 57 78 58 inline void setOffset(float offset) 59 { this->offset_ = offset; updateShape(); } 60 inline float getOffset() 79 /** 80 @brief Set the offset of the PlaneCollisionShape. 81 If the offset changes, this causes the internal collision shape to be recreated. 82 @param offset The offset to be set. 83 @return Returns true if the offset has changed, false if not. 84 */ 85 inline bool setOffset(float offset) 86 { if(this->offset_ == offset) return false; this->offset_ = offset; updateShape(); return true; } 87 /** 88 @brief Get the offset of the PlaneCollisionShape. 89 @return Returns the offset of the PlaneCollisionShape. 90 */ 91 inline float getOffset() const 61 92 { return this->offset_;} 93 94 virtual void changedScale(); // Is called when the scale of the PlaneCollisionShape has changed. 62 95 63 96 private: 64 97 void registerVariables(); 65 98 66 btCollisionShape* createNewShape() const;99 btCollisionShape* createNewShape() const; // Creates a new internal collision shape for the PlaneCollisionShape. 67 100 68 Vector3 normal_; 69 float offset_; 101 Vector3 normal_; //!< The normal vector of the PlaneCollisionShape. 102 float offset_; //!< The offset of the PlaneCollisionShape. 70 103 }; 71 104 } -
code/branches/presentation/src/modules/objects/collisionshapes/SphereCollisionShape.cc
r5781 r8556 27 27 */ 28 28 29 /** 30 @file SphereCollisionShape.cc 31 @brief Implementation of the SphereCollisionShape class. 32 */ 33 29 34 #include "SphereCollisionShape.h" 30 35 … … 33 38 #include "core/CoreIncludes.h" 34 39 #include "core/XMLPort.h" 40 #include "tools/BulletConversions.h" 35 41 36 42 namespace orxonox … … 38 44 CreateFactory(SphereCollisionShape); 39 45 46 /** 47 @brief 48 Constructor. registers and initializes the object. 49 */ 40 50 SphereCollisionShape::SphereCollisionShape(BaseObject* creator) : CollisionShape(creator) 41 51 { … … 66 76 } 67 77 78 /** 79 @brief 80 Is called when the scale of the SphereCollisionShape has changed. 81 */ 82 void SphereCollisionShape::changedScale() 83 { 84 CollisionShape::changedScale(); 85 86 // Resize the internal collision shape 87 // TODO: Assuming setLocalScaling works. 88 //this->collisionShape_->setLocalScaling(multi_cast<btVector3>(this->getScale3D())); 89 if(!this->hasUniformScaling()) 90 { 91 CCOUT(1) << "Error: Non-uniform scaling is not yet supported." << endl; 92 return; 93 } 94 95 this->setRadius(this->radius_*this->getScale()); 96 } 97 98 /** 99 @brief 100 Creates a new internal collision shape for the SphereCollisionShape. 101 @return 102 Returns a pointer to the newly created btSphereShape. 103 */ 68 104 btCollisionShape* SphereCollisionShape::createNewShape() const 69 105 { -
code/branches/presentation/src/modules/objects/collisionshapes/SphereCollisionShape.h
r7601 r8556 41 41 namespace orxonox 42 42 { 43 44 /** 45 @brief 46 Wrapper for the bullet sphere collision shape class btSphereShape. 47 48 @author 49 Reto Grieder 50 51 @see btSphereShape 52 @ingroup Collisionshapes 53 */ 43 54 class _ObjectsExport SphereCollisionShape : public CollisionShape 44 55 { … … 49 60 virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); 50 61 51 inline void setRadius(float radius) 52 { this->radius_ = radius; updateShape(); } 62 /** 63 @brief Set the radius of the SphereCollisionShape. 64 If the radius changes, this causes the internal collision shape to be recreated. 65 @param radius The radius to be set. 66 @return Returns true if the radius has changed, false if not. 67 */ 68 inline bool setRadius(float radius) 69 { if(this->radius_ == radius) return false; this->radius_ = radius; updateShape(); return true; } 70 /** 71 @brief Get the radius of the SphereCollisionShape. 72 @return Returns the radius of the SphereCollisionShape. 73 */ 53 74 inline float getRadius() const 54 75 { return this->radius_; } 76 77 virtual void changedScale(); // Is called when the scale of the SphereCollisionShape has changed. 55 78 56 79 private: … … 59 82 btCollisionShape* createNewShape() const; 60 83 61 float radius_; 84 float radius_; //!< The radius of the SphereCollisionShape. 62 85 }; 63 86 } -
code/branches/presentation/src/modules/pickup/PickupPrereqs.h
r8351 r8556 85 85 class SpeedPickup; 86 86 class ShieldPickup; 87 class ShrinkPickup; 87 88 88 89 } -
code/branches/presentation/src/modules/pickup/items/CMakeLists.txt
r7163 r8556 6 6 SpeedPickup.cc 7 7 ShieldPickup.cc 8 ShrinkPickup.cc 8 9 ) -
code/branches/presentation/src/modules/pickup/items/ShrinkPickup.cc
r8554 r8556 60 60 61 61 this->initialize(); 62 this->shrinkFactor_ = 5.0; 63 this->shrinkSpeed_ = 5.0; 64 this->duration_ = 5.0; 65 isActive_ = false; 66 isTerminating_ = false; 62 this->shrinkFactor_ = 5.0f; 63 this->shrinkSpeed_ = 5.0f; 64 this->duration_ = 5.0f; 65 this->isActive_ = false; 66 this->isTerminating_ = false; 67 68 this->size_ = 0; 69 this->defaultCameraPos_ = 0.0f; 70 this->defaultScale_ = Vector3::UNIT_SCALE; 71 this->actualScale_ = Vector3::UNIT_SCALE; 72 this->smallScale_ = Vector3::UNIT_SCALE; 73 this->defaultMass_ = 1.0f; 74 this->actualMass_ = 1.0f; 75 this->smallMass_ = 1.0f; 76 this->pawn_ = NULL; 67 77 } 68 78 … … 157 167 { 158 168 this->pawn_ = this->carrierToPawnHelper(); 159 if( pawn_ == NULL) // If the PickupCarrier is no Pawn, then this pickup is useless and therefore is destroyed.169 if(this->pawn_ == NULL) // If the PickupCarrier is no Pawn, then this pickup is useless and therefore is destroyed. 160 170 this->Pickupable::destroy(); 161 171 162 172 //Collect scaling information. 163 defaultScale_ = this->pawn_->getScale3D();164 defaultMass_ = this->pawn_->getMass();165 166 smallScale_ = defaultScale_ /shrinkFactor_;167 smallMass_ = defaultMass_ /shrinkFactor_;168 169 actualScale_ =defaultScale_;170 actualMass_ =defaultMass_;171 172 cameraPositions_ = this->pawn_->getCameraPositions();173 size_ =cameraPositions_.size();174 isActive_ = true; //start shrinking now.175 durationTimer_.setTimer(duration_, false, createExecutor(createFunctor(&ShrinkPickup::terminate, this))); //Set timer for termination.173 this->defaultScale_ = this->pawn_->getScale3D(); 174 this->defaultMass_ = this->pawn_->getMass(); 175 176 this->smallScale_ = this->defaultScale_ / this->shrinkFactor_; 177 this->smallMass_ = this->defaultMass_ / this->shrinkFactor_; 178 179 this->actualScale_ = this->defaultScale_; 180 this->actualMass_ = this->defaultMass_; 181 182 this->cameraPositions_ = this->pawn_->getCameraPositions(); 183 this->size_ = this->cameraPositions_.size(); 184 this->isActive_ = true; //start shrinking now. 185 this->durationTimer_.setTimer(this->duration_, false, createExecutor(createFunctor(&ShrinkPickup::terminate, this))); //Set timer for termination. 176 186 } 177 187 } … … 185 195 void ShrinkPickup::tick(float dt) 186 196 { 187 if( isActive_ == true && actualScale_ >smallScale_) //if the ship has not reached the target scale, continue shrinking197 if(this->isActive_ == true && this->actualScale_ > this->smallScale_) //if the ship has not reached the target scale, continue shrinking 188 198 { 189 float factor _ = 1 + dt*shrinkSpeed_;190 191 actualScale_ /= factor_;192 actualMass_ /= factor_;193 194 this->pawn_->setScale3D( actualScale_);195 this->pawn_->setMass( actualMass_);196 197 for(int index = 0; index < size_; index++)199 float factor = 1 + dt*this->shrinkSpeed_; 200 201 this->actualScale_ /= factor; 202 this->actualMass_ /= factor; 203 204 this->pawn_->setScale3D(this->actualScale_); 205 this->pawn_->setMass(this->actualMass_); 206 207 for(int index = 0; index < this->size_; index++) 198 208 { 199 CameraPosition* cameraPos _= this->pawn_->getCameraPosition(index);200 if(cameraPos _== NULL)209 CameraPosition* cameraPos = this->pawn_->getCameraPosition(index); 210 if(cameraPos == NULL) 201 211 continue; 202 cameraPos _->setPosition(cameraPos_->getPosition()*factor_);212 cameraPos->setPosition(cameraPos->getPosition()*factor); 203 213 } 204 214 } 205 else isActive_ = false;206 207 if( isTerminating_ == true && actualScale_ <defaultScale_) //grow until the ship reaches its default scale.215 else this->isActive_ = false; 216 217 if(this->isTerminating_ == true && this->actualScale_ < this->defaultScale_) //grow until the ship reaches its default scale. 208 218 { 209 float factor _ = 1 + dt*shrinkSpeed_;210 211 actualScale_ *= factor_;212 actualMass_ *= factor_;213 214 this->pawn_->setScale3D( actualScale_);215 this->pawn_->setMass( actualMass_);216 217 for(int index = 0; index < size_; index++)219 float factor = 1 + dt*this->shrinkSpeed_; 220 221 this->actualScale_ *= factor; 222 this->actualMass_ *= factor; 223 224 this->pawn_->setScale3D(this->actualScale_); 225 this->pawn_->setMass(this->actualMass_); 226 227 for(int index = 0; index < this->size_; index++) 218 228 { 219 CameraPosition* cameraPos _= this->pawn_->getCameraPosition(index);220 if(cameraPos _== NULL)229 CameraPosition* cameraPos = this->pawn_->getCameraPosition(index); 230 if(cameraPos == NULL) 221 231 continue; 222 cameraPos _->setPosition(cameraPos_->getPosition()/factor_);232 cameraPos->setPosition(cameraPos->getPosition()/factor); 223 233 } 224 234 } 225 else if( isTerminating_ == true)235 else if(this->isTerminating_ == true) 226 236 this->Pickupable::destroy(); 227 237 … … 234 244 void ShrinkPickup::terminate(void) 235 245 { 236 isActive_ = false;237 isTerminating_ = true;246 this->isActive_ = false; 247 this->isTerminating_ = true; 238 248 setUsed(false); 239 249 }
Note: See TracChangeset
for help on using the changeset viewer.