Changeset 11237
- Timestamp:
- Oct 17, 2016, 4:03:06 PM (8 years ago)
- Location:
- code/branches/QuestGuide_HS16/src/orxonox/worldentities
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/QuestGuide_HS16/src/orxonox/worldentities/Waypoint.cc
r11230 r11237 1 /*2 * ORXONOX - the hottest 3D action shooter ever to exist3 * > www.orxonox.net <4 *5 *6 * License notice:7 *8 * This program is free software; you can redistribute it and/or9 * modify it under the terms of the GNU General Public License10 * as published by the Free Software Foundation; either version 211 * of the License, or (at your option) any later version.12 *13 * This program is distributed in the hope that it will be useful,14 * but WITHOUT ANY WARRANTY; without even the implied warranty of15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the16 * GNU General Public License for more details.17 *18 * You should have received a copy of the GNU General Public License19 * along with this program; if not, write to the Free Software20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.21 *22 * Author:23 * Fabian 'x3n' Landau24 * Reto Grieder (physics)25 * Co-authors:26 * ...27 *28 */29 30 1 #include "Waypoint.h" 31 2 … … 52 23 } 53 24 25 26 void Waypoint::XMLPort(Element& xmlelement, XMLPort::Mode mode){ 27 SUPER(Waypoint, XMLPort, xmlelement, mode); // From the SpaceShip.cc file 28 29 30 //XMLPortObject(SpaceShip, Engine, "engines", addEngine, getEngine, xmlelement, mode); // TRY ADDING THE WAYPOINT ARROW LIKE AN ENGINE 31 32 33 } 34 35 36 54 37 void Waypoint::registerVariables() 55 38 { 56 39 // Ugly const casts, but are valid because position and orientation are not actually const 57 registerVariable(const_cast<Vector3&>(this->getPosition()), VariableDirection::ToClient, new NetworkCallback<StaticEntity>(this, &StaticEntity::positionChanged)); 58 registerVariable(const_cast<Quaternion&>(this->getOrientation()), VariableDirection::ToClient, new NetworkCallback<StaticEntity>(this, &StaticEntity::orientationChanged)); 40 registerVariable(const_cast<Vector3&>(this->getPosition()), \ 41 VariableDirection::ToClient, new NetworkCallback<StaticEntity>(this, &StaticEntity::positionChanged)); 42 registerVariable(const_cast<Quaternion&>(this->getOrientation()), 43 VariableDirection::ToClient, new NetworkCallback<StaticEntity>(this, &StaticEntity::orientationChanged)); 59 44 } 60 45 61 46 62 void Waypoint::setPosition(const Vector3& position)63 {64 if (this->addedToPhysicalWorld())65 {66 orxout(internal_warning) << "Attempting to change the position of a StaticEntity at physics run time. Ignoring change." << endl;67 return;68 }69 if (this->isStatic())70 {71 btTransform transf = this->physicalBody_->getWorldTransform();72 transf.setOrigin(btVector3(position.x, position.y, position.z));73 this->physicalBody_->setWorldTransform(transf);74 }75 76 this->node_->setPosition(position);77 }78 47 79 48 void Waypoint::setOrientation(const Quaternion& orientation) … … 92 61 93 62 this->node_->setOrientation(orientation); 63 94 64 } 65 66 Vector3 Waypoint::toAimPosition(RadarViewable* target) const 67 { 68 Vector3 wePosition = HumanController::getLocalControllerSingleton()->getControllableEntity()->getWorldPosition(); 69 Vector3 targetPosition = target->getRVWorldPosition(); 70 Vector3 targetSpeed = target->getRVVelocity(); 71 72 return getPredictedPosition(wePosition, this->currentMunitionSpeed_, targetPosition, targetSpeed); 73 } 74 95 75 /* 96 76 bool StaticEntity::isCollisionTypeLegal(WorldEntity::CollisionType type) const … … 117 97 } 118 98 } 99 100 101 const Pawn* pawnPtr = orxonox_cast<const Pawn*>(it->first->getWorldEntity()); 102 103 if (pawnPtr) { 104 float position = pawnPtr->getPosition(); -
code/branches/QuestGuide_HS16/src/orxonox/worldentities/Waypoint.h
r11230 r11237 1 /* 2 * ORXONOX - the hottest 3D action shooter ever to exist 3 * > www.orxonox.net < 4 * 5 * 6 * License notice: 7 * 8 * This program is free software; you can redistribute it and/or 9 * modify it under the terms of the GNU General Public License 10 * as published by the Free Software Foundation; either version 2 11 * of the License, or (at your option) any later version. 12 * 13 * This program is distributed in the hope that it will be useful, 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 16 * GNU General Public License for more details. 17 * 18 * You should have received a copy of the GNU General Public License 19 * along with this program; if not, write to the Free Software 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 21 * 22 * Author: 23 * Fabian 'x3n' Landau 24 * Reto Grieder 25 * Co-authors: 26 * ... 27 * 28 */ 1 29 2 30 3 #ifndef _Waypoint_H__ … … 33 6 #include "OrxonoxPrereqs.h" 34 7 #include "StaticEntity.h" 8 #include "overlays/OverlaysPrereqs.h" 9 10 #include <map> 11 #include <string> 12 13 #include "util/OgreForwardRefs.h" 14 #include "tools/interfaces/Tickable.h" 15 #include "interfaces/RadarListener.h" 16 #include "overlays/OrxonoxOverlay.h" 35 17 36 18 namespace orxonox … … 48 30 */ 49 31 50 class _OrxonoxExport Waypoint : public StaticEntity 32 class _OrxonoxExport Waypoint : public StaticEntity, public RadarListener 51 33 { 52 34 public: 53 35 Waypoint(Context* context); 54 36 virtual ~Waypoint(); 37 38 virtual void addObject(RadarViewable* object) override; 39 virtual void removeObject(RadarViewable* viewable) override; 40 virtual void objectChanged(RadarViewable* viewable) override; 55 41 56 42 using StaticEntity::setPosition; … … 59 45 virtual void setPosition(const Vector3& position) override; 60 46 virtual void setOrientation(const Quaternion& orientation) override; 47 48 virtual void positionChanged() override { } 49 virtual void radarTick(float dt) override {} 50 51 virtual inline float getRadarSensitivity() const override 52 { return 1.0f; } 53 54 inline unsigned int getMarkerLimit() const 55 { return this->markerLimit_; } 56 57 static void selectClosestTarget(); 58 static void selectNextTarget(); 59 60 61 61 62 62 private:
Note: See TracChangeset
for help on using the changeset viewer.