Changeset 2006 for code/branches/objecthierarchy/src/orxonox/objects
- Timestamp:
- Oct 24, 2008, 2:48:43 AM (16 years ago)
- Location:
- code/branches/objecthierarchy/src/orxonox/objects
- Files:
-
- 18 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/objecthierarchy/src/orxonox/objects/Camera.cc
r1993 r2006 70 70 void Camera::tick(float dt) 71 71 { 72 SUPER(Camera, tick, dt);73 74 72 // this stuff here may need some adjustments 75 73 float coeff = (this->bDrag_) ? min(1.0f, 15.0f * dt) : (1.0f); -
code/branches/objecthierarchy/src/orxonox/objects/Camera.h
r1993 r2006 40 40 namespace orxonox 41 41 { 42 class _OrxonoxExport Camera : public PositionableEntity //, public Tickable42 class _OrxonoxExport Camera : public PositionableEntity, public Tickable 43 43 { 44 44 friend class CameraHandler; -
code/branches/objecthierarchy/src/orxonox/objects/CameraHandler.cc
r1755 r2006 46 46 this->cam_ = GraphicsEngine::getInstance().getLevelSceneManager()->createCamera("Cam"); 47 47 GraphicsEngine::getInstance().getViewport()->setCamera(this->cam_); 48 this->cam_->setNearClipDistance(1); 48 49 //GraphicsEngine::getInstance().getRenderWindow()->addViewport(this->cam_, 2, 0.4, 0.4, 0.2, 0.2); 49 50 /*this->activeCamera_ = *ObjectList<Camera>::begin(); -
code/branches/objecthierarchy/src/orxonox/objects/gametypes/Gametype.cc
r1993 r2006 31 31 32 32 #include "core/CoreIncludes.h" 33 #include "core/ConsoleCommand.h"34 33 #include "objects/infos/PlayerInfo.h" 35 34 #include "objects/worldentities/pawns/Spectator.h" … … 39 38 namespace orxonox 40 39 { 41 SetConsoleCommand(Gametype, listPlayers, true);42 43 40 CreateUnloadableFactory(Gametype); 44 41 … … 48 45 49 46 this->defaultPawn_ = Class(Spectator); 50 this->getConnectedClients();51 47 52 48 COUT(0) << "created Gametype" << std::endl; 53 }54 55 Gametype* Gametype::getCurrentGametype()56 {57 for (ObjectList<Gametype>::iterator it = ObjectList<Gametype>::begin(); it != ObjectList<Gametype>::end(); ++it)58 return (*it);59 60 return 0;61 }62 63 PlayerInfo* Gametype::getClient(unsigned int clientID)64 {65 Gametype* gametype = Gametype::getCurrentGametype();66 if (gametype)67 {68 std::map<unsigned int, PlayerInfo*>::const_iterator it = gametype->clients_.find(clientID);69 if (it != gametype->clients_.end())70 return it->second;71 }72 else73 {74 for (ObjectList<PlayerInfo>::iterator it = ObjectList<PlayerInfo>::begin(); it != ObjectList<PlayerInfo>::end(); ++it)75 if (it->getClientID() == clientID)76 return (*it);77 }78 return 0;79 }80 81 void Gametype::listPlayers()82 {83 Gametype* gametype = Gametype::getCurrentGametype();84 85 if (gametype)86 {87 for (std::set<PlayerInfo*>::const_iterator it = gametype->players_.begin(); it != gametype->players_.end(); ++it)88 COUT(0) << "ID: " << (*it)->getClientID() << ", Name: " << (*it)->getName() << std::endl;89 }90 else91 {92 for (ObjectList<PlayerInfo>::iterator it = ObjectList<PlayerInfo>::begin(); it != ObjectList<PlayerInfo>::end(); ++it)93 COUT(0) << "ID: " << (*it)->getClientID() << ", Name: " << (*it)->getName() << std::endl;94 }95 }96 97 void Gametype::clientConnected(unsigned int clientID)98 {99 COUT(0) << "client connected" << std::endl;100 101 // create new PlayerInfo instance102 PlayerInfo* player = new PlayerInfo();103 player->setClientID(clientID);104 105 // add to clients-map106 assert(!this->clients_[clientID]);107 this->clients_[clientID] = player;108 }109 110 void Gametype::clientDisconnected(unsigned int clientID)111 {112 COUT(0) << "client disconnected" << std::endl;113 114 // remove from clients-map115 PlayerInfo* player = this->clients_[clientID];116 this->clients_.erase(clientID);117 118 // delete PlayerInfo instance119 delete player;120 49 } 121 50 … … 131 60 void Gametype::removePlayer(PlayerInfo* player) 132 61 { 133 player->stopControl(); 134 this->players_.erase(player); 135 this->playerLeft(player); 62 if (this->players_.find(player) != this->players_.end()) 63 { 64 player->stopControl(); 65 this->players_.erase(player); 66 this->playerLeft(player); 67 } 136 68 } 137 69 -
code/branches/objecthierarchy/src/orxonox/objects/gametypes/Gametype.h
r1989 r2006 36 36 #include "core/BaseObject.h" 37 37 #include "core/Identifier.h" 38 #include "network/ClientConnectionListener.h"39 38 #include "objects/worldentities/ControllableEntity.h" 40 39 41 40 namespace orxonox 42 41 { 43 class _OrxonoxExport Gametype : public BaseObject , public network::ClientConnectionListener42 class _OrxonoxExport Gametype : public BaseObject 44 43 { 45 44 friend class PlayerInfo; … … 49 48 virtual ~Gametype() {} 50 49 51 static Gametype* getCurrentGametype();52 static void listPlayers();53 54 inline const std::map<unsigned int, PlayerInfo*>& getClients() const55 { return this->clients_; }56 50 inline const std::set<PlayerInfo*>& getPlayers() const 57 51 { return this->players_; } 58 static PlayerInfo* getClient(unsigned int clientID);59 52 60 53 protected: 61 virtual void clientConnected(unsigned int clientID);62 virtual void clientDisconnected(unsigned int clientID);63 64 54 virtual void playerJoined(PlayerInfo* player); 65 55 virtual void playerLeft(PlayerInfo* player); … … 72 62 73 63 std::set<PlayerInfo*> players_; 74 std::map<unsigned int, PlayerInfo*> clients_;75 64 SubclassIdentifier<ControllableEntity> defaultPawn_; 76 65 }; -
code/branches/objecthierarchy/src/orxonox/objects/infos/LevelInfo.cc
r1968 r2006 31 31 32 32 #include <OgreSceneManager.h> 33 #include <OgreLight.h> 33 34 34 35 #include "core/CoreIncludes.h" 35 36 #include "core/XMLPort.h" 36 37 #include "core/Core.h" 38 #include "core/ConsoleCommand.h" 39 #include "core/Loader.h" 40 #include "core/Template.h" 37 41 38 42 #include "GraphicsEngine.h" 43 #include "Settings.h" 44 #include "PlayerInfo.h" 45 46 #include "util/Math.h" 39 47 40 48 namespace orxonox 41 49 { 50 SetConsoleCommand(LevelInfo, listPlayers, true); 51 42 52 CreateFactory(LevelInfo); 43 53 … … 46 56 RegisterObject(LevelInfo); 47 57 48 this-> gametypeInstance_ = 0;58 this->rootGametype_ = 0; 49 59 this->registerVariables(); 50 60 61 // test test test 62 { 63 Ogre::Light* light; 64 light = GraphicsEngine::getInstance().getLevelSceneManager()->createLight("Light0"); 65 light->setType(Ogre::Light::LT_DIRECTIONAL); 66 light->setDiffuseColour(ColourValue(1.0, 0.9, 0.6, 1.0)); 67 light->setSpecularColour(ColourValue(1.0, 0.9, 0.6, 1.0)); 68 light->setDirection(1, -0.2, 0.2); 69 } 70 // test test test 71 51 72 COUT(0) << "created LevelInfo" << std::endl; 52 73 } 53 74 75 LevelInfo* LevelInfo::getActiveLevelInfo() 76 { 77 for (ObjectList<LevelInfo>::iterator it = ObjectList<LevelInfo>::begin(); it != ObjectList<LevelInfo>::end(); ++it) 78 if (it->isActive()) 79 return (*it); 80 81 return 0; 82 } 83 84 PlayerInfo* LevelInfo::getClient(unsigned int clientID) 85 { 86 LevelInfo* levelinfo = LevelInfo::getActiveLevelInfo(); 87 88 if (levelinfo) 89 { 90 std::map<unsigned int, PlayerInfo*>::const_iterator it = levelinfo->clients_.find(clientID); 91 if (it != levelinfo->clients_.end()) 92 return it->second; 93 } 94 else 95 { 96 for (ObjectList<PlayerInfo>::iterator it = ObjectList<PlayerInfo>::begin(); it != ObjectList<PlayerInfo>::end(); ++it) 97 if (it->getClientID() == clientID) 98 return (*it); 99 } 100 return 0; 101 } 102 103 void LevelInfo::listPlayers() 104 { 105 LevelInfo* levelinfo = LevelInfo::getActiveLevelInfo(); 106 107 if (levelinfo->getGametype()) 108 { 109 for (std::set<PlayerInfo*>::const_iterator it = levelinfo->getGametype()->getPlayers().begin(); it != levelinfo->getGametype()->getPlayers().end(); ++it) 110 COUT(0) << "ID: " << (*it)->getClientID() << ", Name: " << (*it)->getName() << std::endl; 111 } 112 else 113 { 114 for (ObjectList<PlayerInfo>::iterator it = ObjectList<PlayerInfo>::begin(); it != ObjectList<PlayerInfo>::end(); ++it) 115 COUT(0) << "ID: " << (*it)->getClientID() << ", Name: " << (*it)->getName() << std::endl; 116 } 117 } 118 119 void LevelInfo::clientConnected(unsigned int clientID) 120 { 121 COUT(0) << "client connected" << std::endl; 122 123 // create new PlayerInfo instance 124 PlayerInfo* player = new PlayerInfo(); 125 player->setGametype(this->getGametype()); 126 player->setClientID(clientID); 127 128 // add to clients-map 129 assert(!this->clients_[clientID]); 130 this->clients_[clientID] = player; 131 } 132 133 void LevelInfo::clientDisconnected(unsigned int clientID) 134 { 135 COUT(0) << "client disconnected" << std::endl; 136 137 // remove from clients-map 138 PlayerInfo* player = this->clients_[clientID]; 139 this->clients_.erase(clientID); 140 141 // delete PlayerInfo instance 142 delete player; 143 } 144 54 145 void LevelInfo::XMLPort(Element& xmlelement, XMLPort::Mode mode) 55 146 { … … 57 148 58 149 XMLPortParam(LevelInfo, "description", setDescription, getDescription, xmlelement, mode); 59 XMLPortParam(LevelInfo, "gametype", setGametype , getGametype, xmlelement, mode).defaultValues("Gametype");150 XMLPortParam(LevelInfo, "gametype", setGametypeString, getGametypeString, xmlelement, mode).defaultValues("Gametype"); 60 151 XMLPortParam(LevelInfo, "skybox", setSkybox, getSkybox, xmlelement, mode); 61 152 XMLPortParam(LevelInfo, "ambientlight", setAmbientLight, getAmbientLight, xmlelement, mode).defaultValues(ColourValue(0.2, 0.2, 0.2, 1)); 153 154 this->levelfile_ = this->getLevelfile(); 62 155 } 63 156 64 157 void LevelInfo::registerVariables() 65 158 { 66 REGISTERSTRING(name_, network::direction::toclient, new network::NetworkCallback<LevelInfo>(this, &LevelInfo::changedName)); 67 REGISTERSTRING(description_, network::direction::toclient); 68 REGISTERSTRING(skybox_, network::direction::toclient, new network::NetworkCallback<LevelInfo>(this, &LevelInfo::applySkybox)); 69 REGISTERDATA(ambientLight_, network::direction::toclient, new network::NetworkCallback<LevelInfo>(this, &LevelInfo::applyAmbientLight)); 159 REGISTERSTRING(this->levelfile_, network::direction::toclient, new network::NetworkCallback<LevelInfo>(this, &LevelInfo::applyLevel)); 160 REGISTERSTRING(this->name_, network::direction::toclient, new network::NetworkCallback<LevelInfo>(this, &LevelInfo::changedName)); 161 REGISTERSTRING(this->description_, network::direction::toclient); 162 REGISTERSTRING(this->skybox_, network::direction::toclient, new network::NetworkCallback<LevelInfo>(this, &LevelInfo::applySkybox)); 163 REGISTERDATA(this->ambientLight_, network::direction::toclient, new network::NetworkCallback<LevelInfo>(this, &LevelInfo::applyAmbientLight)); 164 } 165 166 void LevelInfo::applyLevel() 167 { 168 COUT(0) << "Loading level \"" << this->levelfile_ << "\"..." << std::endl; 169 170 ClassTreeMask mask; 171 mask.exclude(Class(BaseObject)); 172 mask.include(Class(Template)); 173 174 Level* level = new Level(Settings::getDataPath() + this->levelfile_, mask); 175 176 Loader::open(level); 70 177 } 71 178 … … 87 194 } 88 195 89 void LevelInfo::setGametype (const std::string& gametype)196 void LevelInfo::setGametypeString(const std::string& gametype) 90 197 { 91 198 Identifier* identifier = ClassByString(gametype); … … 94 201 this->gametype_ = gametype; 95 202 this->gametypeIdentifier_ = identifier; 96 this->gametypeInstance_ = this->gametypeIdentifier_.fabricate(); 203 this->rootGametype_ = this->gametypeIdentifier_.fabricate(); 204 this->getConnectedClients(); 97 205 } 98 206 } -
code/branches/objecthierarchy/src/orxonox/objects/infos/LevelInfo.h
r1940 r2006 37 37 38 38 #include "objects/gametypes/Gametype.h" 39 #include "network/ClientConnectionListener.h" 39 40 40 41 namespace orxonox 41 42 { 42 class _OrxonoxExport LevelInfo : public Info 43 class _OrxonoxExport LevelInfo : public Info, public network::ClientConnectionListener 43 44 { 44 45 public: … … 48 49 virtual void XMLPort(Element& xmlelement, XMLPort::Mode mode); 49 50 void registerVariables(); 51 52 inline const std::map<unsigned int, PlayerInfo*>& getClients() const 53 { return this->clients_; } 50 54 51 55 inline void setDescription(const std::string& description) … … 62 66 { return this->ambientLight_; } 63 67 64 void setGametype (const std::string& gametype);65 inline const std::string& getGametype () const68 void setGametypeString(const std::string& gametype); 69 inline const std::string& getGametypeString() const 66 70 { return this->gametype_; } 71 inline Gametype* getGametype() const 72 { return this->rootGametype_; } 73 74 static LevelInfo* getActiveLevelInfo(); 75 static void listPlayers(); 76 static PlayerInfo* getClient(unsigned int clientID); 67 77 68 78 private: 79 virtual void clientConnected(unsigned int clientID); 80 virtual void clientDisconnected(unsigned int clientID); 81 82 void applyLevel(); 83 69 84 void applySkybox() 70 85 { this->setSkybox(this->skybox_); } … … 72 87 { this->setAmbientLight(this->ambientLight_); } 73 88 89 std::map<unsigned int, PlayerInfo*> clients_; 74 90 std::string description_; 75 91 std::string skybox_; … … 77 93 std::string gametype_; 78 94 SubclassIdentifier<Gametype> gametypeIdentifier_; 79 Gametype* gametypeInstance_; 95 Gametype* rootGametype_; 96 std::string levelfile_; 80 97 }; 81 98 } -
code/branches/objecthierarchy/src/orxonox/objects/infos/PlayerInfo.cc
r1993 r2006 38 38 39 39 #include "network/Host.h" 40 #include "network/ClientInformation.h" 40 41 41 42 #include "GraphicsEngine.h" … … 57 58 this->bHumanPlayer_ = false; 58 59 this->bFinishedSetup_ = false; 60 this->gametype_ = 0; 59 61 60 62 this->pawn_ = 0; … … 71 73 if (this->isInitialized()) 72 74 { 73 Gametype* gametype = Gametype::getCurrentGametype(); 74 if (gametype) 75 gametype->removePlayer(this); 75 if (this->gametype_) 76 this->gametype_->removePlayer(this); 76 77 77 78 if (this->controller_) … … 101 102 void PlayerInfo::changedName() 102 103 { 103 Gametype* gametype = Gametype::getCurrentGametype(); 104 if (gametype) 105 gametype->playerChangedName(this); 104 if (this->gametype_) 105 this->gametype_->playerChangedName(this); 106 106 } 107 107 … … 147 147 else if (this->bFinishedSetup_) 148 148 { 149 Gametype* gametype = Gametype::getCurrentGametype(); 150 if (gametype) 151 gametype->addPlayer(this); 149 if (this->gametype_) 150 this->gametype_->addPlayer(this); 152 151 } 153 152 } … … 165 164 void PlayerInfo::stopControl() 166 165 { 167 this->pawn_->removePlayer(); 166 if (this->pawn_) 167 this->pawn_->removePlayer(); 168 168 this->pawn_ = 0; 169 169 this->pawnID_ = network::OBJECTID_UNKNOWN; -
code/branches/objecthierarchy/src/orxonox/objects/infos/PlayerInfo.h
r1993 r2006 71 71 { return this->controller_; } 72 72 */ 73 inline void setGametype(Gametype* gametype) 74 { this->gametype_ = gametype; } 75 inline Gametype* getGametype() const 76 { return this->gametype_; } 77 73 78 protected: 74 79 inline void setDefaultController(Identifier* identifier) … … 98 103 Controller* controller_; 99 104 SubclassIdentifier<Controller> defaultController_; 105 Gametype* gametype_; 100 106 }; 101 107 } -
code/branches/objecthierarchy/src/orxonox/objects/worldentities/ControllableEntity.cc
r1994 r2006 127 127 void ControllableEntity::startLocalControl() 128 128 { 129 std::cout << "###### start local control" << std::endl;129 std::cout << this->getObjectID() << " ###### start local control" << std::endl; 130 130 this->camera_ = new Camera(); 131 131 this->camera_->requestFocus(); … … 155 155 { 156 156 this->velocity_ += (dt * this->acceleration_); 157 this->node_->translate(dt * this->velocity_, Ogre::Node::TS_ PARENT);157 this->node_->translate(dt * this->velocity_, Ogre::Node::TS_LOCAL); 158 158 159 159 if (Core::isMaster()) -
code/branches/objecthierarchy/src/orxonox/objects/worldentities/ControllableEntity.h
r1993 r2006 115 115 { this->hudtemplate_ = name; } 116 116 117 inline bool isLocallyControlled() const 118 { return this->bControlled_; } 119 117 120 private: 118 121 void overwrite(); -
code/branches/objecthierarchy/src/orxonox/objects/worldentities/Model.cc
r1993 r2006 55 55 56 56 XMLPortParam(Model, "mesh", setMeshSource, getMeshSource, xmlelement, mode); 57 XMLPortParam(Model, "shadow", setCastShadows, getCastShadows, xmlelement, mode).defaultValues(true); 57 58 } 58 59 59 60 void Model::registerVariables() 60 61 { 61 REGISTERSTRING(this->meshSrc_, network::direction::toclient, new network::NetworkCallback<Model>(this, &Model::changedMesh)); 62 REGISTERSTRING(this->meshSrc_, network::direction::toclient, new network::NetworkCallback<Model>(this, &Model::changedMesh)); 63 REGISTERDATA(this->bCastShadows_, network::direction::toclient, new network::NetworkCallback<Model>(this, &Model::changedShadows)); 62 64 } 63 65 … … 68 70 69 71 this->mesh_.setMeshSource(this->meshSrc_); 72 70 73 if (this->mesh_.getEntity()) 74 { 71 75 this->getNode()->attachObject(this->mesh_.getEntity()); 76 this->mesh_.getEntity()->setCastShadows(this->bCastShadows_); 77 } 78 } 79 80 void Model::changedShadows() 81 { 82 this->mesh_.setCastShadows(this->bCastShadows_); 72 83 } 73 84 -
code/branches/objecthierarchy/src/orxonox/objects/worldentities/Model.h
r1993 r2006 54 54 { return this->mesh_; } 55 55 56 inline void setCastShadows(bool bCastShadows) 57 { this->bCastShadows_ = bCastShadows; this->changedShadows(); } 58 inline bool getCastShadows() const 59 { return this->bCastShadows_; } 60 56 61 private: 57 62 void changedMesh(); 63 void changedShadows(); 58 64 59 65 std::string meshSrc_; 60 66 Mesh mesh_; 67 bool bCastShadows_; 61 68 }; 62 69 } -
code/branches/objecthierarchy/src/orxonox/objects/worldentities/PositionableEntity.cc
r1993 r2006 57 57 REGISTERDATA(this->getOrientation().z, network::direction::toclient); 58 58 } 59 60 void PositionableEntity::tick(float dt)61 {62 // I don't know why but this has to be done to update the position if attached to another Entity63 this->node_->translate(Vector3::ZERO);64 std::cout << this->getWorldPosition() << std::endl;65 }66 59 } -
code/branches/objecthierarchy/src/orxonox/objects/worldentities/PositionableEntity.h
r1993 r2006 32 32 #include "OrxonoxPrereqs.h" 33 33 #include "WorldEntity.h" 34 #include "objects/Tickable.h"35 34 36 35 namespace orxonox 37 36 { 38 class _OrxonoxExport PositionableEntity : public WorldEntity , public Tickable37 class _OrxonoxExport PositionableEntity : public WorldEntity 39 38 { 40 39 public: … … 43 42 44 43 void registerVariables(); 45 virtual void tick(float dt);46 44 47 45 using WorldEntity::setPosition; -
code/branches/objecthierarchy/src/orxonox/objects/worldentities/WorldEntity.cc
r1993 r2006 51 51 RegisterObject(WorldEntity); 52 52 53 this->node_ = GraphicsEngine::getInstance().getLevelSceneManager()-> createSceneNode();53 this->node_ = GraphicsEngine::getInstance().getLevelSceneManager()->getRootSceneNode()->createChildSceneNode(); 54 54 this->parent_ = 0; 55 55 this->parentID_ = (unsigned int)-1; -
code/branches/objecthierarchy/src/orxonox/objects/worldentities/pawns/Spectator.cc
r2001 r2006 31 31 32 32 #include "core/CoreIncludes.h" 33 #include "core/Core.h" 33 34 #include "objects/worldentities/Model.h" 35 #include "tools/BillboardSet.h" 34 36 35 37 namespace orxonox … … 51 53 this->setDestroyWhenPlayerLeft(true); 52 54 53 Model* temp = new Model; 54 temp->setMeshSource("assff.mesh"); 55 this->attach(temp); 55 // test test test 56 { 57 this->testmesh_ = new Mesh(); 58 this->testnode_ = this->getNode()->createChildSceneNode(); 59 this->testmesh_->setMeshSource("assff.mesh"); 60 if (this->testmesh_->getEntity()) 61 this->testnode_->attachObject(this->testmesh_->getEntity()); 62 this->testnode_->pitch(Degree(-90)); 63 this->testnode_->roll(Degree(+90)); 64 this->testnode_->scale(10, 10, 10); 65 } 66 // test test test 67 68 this->greetingFlare_ = new BillboardSet(); 69 this->greetingFlare_->setBillboardSet("Examples/Flare", ColourValue(1.0, 1.0, 0.8), Vector3(0, 20, 0), 1); 70 this->getNode()->attachObject(this->greetingFlare_->getBillboardSet()); 71 this->greetingFlare_->setVisible(false); 72 this->bGreetingFlareVisible_ = false; 73 this->bGreeting_ = false; 74 75 this->registerVariables(); 56 76 } 57 77 58 78 Spectator::~Spectator() 59 79 { 80 if (this->isInitialized()) 81 { 82 delete this->greetingFlare_; 83 84 // test test test 85 { 86 delete this->testmesh_; 87 delete this->testnode_; 88 } 89 // test test test 90 } 91 } 92 93 void Spectator::registerVariables() 94 { 95 REGISTERDATA(this->bGreetingFlareVisible_, network::direction::toclient, new network::NetworkCallback<Spectator>(this, &Spectator::changedFlareVisibility)); 96 REGISTERDATA(this->bGreeting_, network::direction::toserver, new network::NetworkCallback<Spectator>(this, &Spectator::changedGreeting)); 97 } 98 99 void Spectator::changedGreeting() 100 { 101 this->bGreetingFlareVisible_ = this->bGreeting_; 102 this->changedFlareVisibility(); 103 } 104 105 void Spectator::changedFlareVisibility() 106 { 107 this->greetingFlare_->setVisible(this->bGreetingFlareVisible_); 60 108 } 61 109 62 110 void Spectator::tick(float dt) 63 111 { 64 Vector3 velocity = this->getVelocity(); 65 velocity.normalise(); 66 this->setVelocity(velocity * this->speed_); 112 if (this->isLocallyControlled()) 113 { 114 Vector3 velocity = this->getVelocity(); 115 velocity.normalise(); 116 this->setVelocity(velocity * this->speed_); 67 117 68 // TODO: Check why I have removed *dt (1337) 69 this->yaw(Radian(this->yaw_ * this->rotationSpeed_)); 70 this->pitch(Radian(this->pitch_ * this->rotationSpeed_)); 71 this->roll(Radian(this->roll_ * this->rotationSpeed_)); 118 this->yaw(Radian(this->yaw_ * this->rotationSpeed_)); 119 this->pitch(Radian(this->pitch_ * this->rotationSpeed_)); 120 this->roll(Radian(this->roll_ * this->rotationSpeed_)); 72 121 73 this->yaw_ = this->pitch_ = this->roll_ = 0; 122 this->yaw_ = this->pitch_ = this->roll_ = 0; 123 } 74 124 75 125 SUPER(Spectator, tick, dt); 76 126 77 this->setVelocity(Vector3::ZERO); 127 if (this->isLocallyControlled()) 128 { 129 this->setVelocity(Vector3::ZERO); 130 } 78 131 } 79 132 … … 82 135 ControllableEntity::setPlayer(player); 83 136 84 this->setObjectMode(network::direction::toclient); 137 // this->setObjectMode(network::direction::toclient); 138 } 139 140 void Spectator::startLocalControl() 141 { 142 ControllableEntity::startLocalControl(); 143 if (this->isLocallyControlled()) 144 this->testmesh_->setVisible(false); 85 145 } 86 146 … … 118 178 { 119 179 } 180 181 void Spectator::greet() 182 { 183 this->bGreeting_ = !this->bGreeting_; 184 185 if (Core::isMaster()) 186 { 187 this->bGreetingFlareVisible_ = this->bGreeting_; 188 this->changedFlareVisibility(); 189 } 190 } 120 191 } -
code/branches/objecthierarchy/src/orxonox/objects/worldentities/pawns/Spectator.h
r1993 r2006 42 42 virtual ~Spectator(); 43 43 44 void registerVariables(); 44 45 virtual void tick(float dt); 45 46 46 47 virtual void setPlayer(PlayerInfo* player); 48 virtual void startLocalControl(); 47 49 48 50 virtual void moveFrontBack(float value); … … 55 57 56 58 virtual void fire(); 59 virtual void greet(); 57 60 58 61 private: 62 void changedGreeting(); 63 void changedFlareVisibility(); 64 65 BillboardSet* greetingFlare_; 66 bool bGreetingFlareVisible_; 67 bool bGreeting_; 68 59 69 float speed_; 60 70 float rotationSpeed_; … … 63 73 float pitch_; 64 74 float roll_; 75 76 // test test test 77 Mesh* testmesh_; 78 Ogre::SceneNode* testnode_; 79 // test test test 65 80 }; 66 81 }
Note: See TracChangeset
for help on using the changeset viewer.