- Timestamp:
- Oct 17, 2016, 4:03:06 PM (9 years ago)
- File:
-
- 1 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();
Note: See TracChangeset
for help on using the changeset viewer.