- Timestamp:
- Dec 17, 2007, 10:39:12 AM (17 years ago)
- Location:
- code/branches/FICN
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
code/branches/FICN/CMakeLists.txt
r547 r565 46 46 47 47 # pipe $FLAGS to the compiler, and add some local flags. force -O2! 48 #SET(CMAKE_C_FLAGS "$ENV{CFLAGS} -O2 -Wall -g -ggdb") 48 49 SET(CMAKE_C_FLAGS "$ENV{CFLAGS} -O2 -Wall -g -ggdb") 49 SET(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} -O2 -Wall -g -ggdb") 50 #SET(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} -O2 -Wall -g -ggdb") 51 SET(CMAKE_CXX_FLAGS "$ENV{CXXFLAGS} -Wall -g -ggdb") 50 52 SET(CMAKE_LD_FLAGS "$ENV{LDFLAGS}") 51 53 -
code/branches/FICN/bin/levels/sample.oxw
r541 r565 26 26 <Skybox src="Orxonox/BlueStarSkyBox" /> 27 27 28 < Entity name="ASSF" src="assf2.mesh" node="OgreHeadNode" />28 <BaseEntity name="ASSF" src="assf2.mesh" node="OgreHeadNode" /> 29 29 30 30 <SceneNode name="Ogre1" pos="0,200,0" /> -
code/branches/FICN/src/network/Client.cc
r514 r565 127 127 if(!isConnected) 128 128 return false; 129 if(client_connection.addPacket(pck_gen.chatMessage( message.c_str() ))) ;129 if(client_connection.addPacket(pck_gen.chatMessage( message.c_str() ))) 130 130 return client_connection.sendPackets(); 131 131 // send packets -
code/branches/FICN/src/network/Synchronisable.cc
r531 r565 26 26 datasize=0; 27 27 objectID=idCounter++; 28 //registerAllVariables();28 // registerAllVariables(); 29 29 } 30 30 … … 41 41 * @param size size of the datatype the variable consists of 42 42 */ 43 void Synchronisable::registerVar(const void *var, int size ){43 void Synchronisable::registerVar(const void *var, int size, variableType t){ 44 44 // create temporary synch.Var struct 45 synchronisableVariable temp={size, var };45 synchronisableVariable temp={size, var, t}; 46 46 // increase datasize 47 47 datasize+=sizeof(int)+size; … … 65 65 for(i=syncList.begin(); i!=syncList.end(); i++){ 66 66 // increase size (size of variable and size of size of variable ;) 67 totalsize+=sizeof(int)+i->size; 67 if(i->type == STRING) 68 totalsize+=sizeof(int)+((std::string *)i->var)->length()+1; 69 else 70 totalsize+=sizeof(int)+i->size; 68 71 } 69 72 syncData retVal; … … 77 80 int n=0; 78 81 for(i=syncList.begin(); n<totalsize && i!=syncList.end(); i++){ 79 //CHANGED: i->size TO (const void*)(&(i->size)) memcpy WANTS A CONST VOID* SO CONVERT INT TO CONST VOID*80 82 std::memcpy(retVal.data+n, (const void*)(i->size), sizeof(int)); 81 83 n+=sizeof(int); 82 //CHANGED: i->var TO (const void*)(&(i->var)) SINCE var IS A POINTER, NO & BEFORE i 83 std::memcpy(retVal.data+n, (const void*)(i->var), i->size); 84 n+=i->size; 84 switch(i->type){ 85 case STRING: 86 std::memcpy(retVal.data+n, (const void *)(((std::string *)i->var)->c_str()), ((std::string *)i->var)->length()+1); 87 n+=((std::string *)i->var)->length()+1; 88 break; 89 case DATA: 90 std::memcpy(retVal.data+n, ((const void*)i->var), i->size); 91 n+=i->size; 92 break; 93 } 85 94 } 86 95 return retVal; … … 107 116 int n=0; 108 117 for(i=syncList.begin(); n<datasize && i!=syncList.end(); i++){ 109 //CHANGED: i->size TO (const void*)(&(i->size)) memcpy WANTS A CONST VOID* SO CONVERT INT TO CONST VOID*110 118 std::memcpy(retVal.data+n, (const void*)(i->size), sizeof(int)); 111 119 n+=sizeof(int); 112 //CHANGED: i->var TO (const void*)(&(i->var)) SINCE var IS A POINTER, NO & BEFORE i 113 std::memcpy(retVal.data+n, (const void*)(i->var), i->size); 114 n+=i->size; 120 switch(i->type){ 121 case DATA: 122 std::memcpy(retVal.data+n, (const void*)(i->var), i->size); 123 n+=i->size; 124 break; 125 case STRING: 126 std::memcpy(retVal.data+n, (const void*)(((std::string *)i->var)->c_str()), ((std::string *)i->var)->length()+1); 127 n+=((std::string *) i->var)->length()+1; 128 break; 129 } 115 130 } 116 131 return retVal; … … 126 141 std::list<synchronisableVariable>::iterator i; 127 142 for(i=syncList.begin(); i!=syncList.end(); i++){ 128 if((int)*data==i->size){ 129 data+=sizeof(int); 130 //CHANGED: THIS FROM i->var TO (void*)i->var SINCE var IS A CONST VOID* AND memcpy NEEDS A VOID* AS FIRST ARGUMENT 131 memcpy((void*)i->var, data, i->size); 132 data+=i->size; 143 if((int)*data==i->size || i->type==STRING){ 144 switch(i->type){ 145 case DATA: 146 data+=sizeof(int); 147 memcpy((void*)i->var, data, i->size); 148 data+=i->size; 149 break; 150 case STRING: 151 i->size = (int)*data; 152 data+=sizeof(int); 153 *((std::string *)i->var) = std::string((const char*)data); 154 data += i->size; 155 break; 156 } 133 157 } else 134 158 return false; //there was some problem with registerVar … … 142 166 */ 143 167 int Synchronisable::getSize(){ 144 return datasize; 168 int tsize=0; 169 std::list<synchronisableVariable>::iterator i; 170 for(i=syncList.begin(); i!=syncList.end(); i++){ 171 switch(i->type){ 172 case DATA: 173 tsize+=i->size; 174 break; 175 case STRING: 176 tsize+=((std::string *)i->var)->length()+1; 177 break; 178 } 179 } 180 return tsize; 145 181 } 146 182 -
code/branches/FICN/src/network/Synchronisable.h
r496 r565 15 15 #include <list> 16 16 #include <iostream> 17 #include <string> 17 18 18 19 #include "orxonox/core/CoreIncludes.h" … … 21 22 namespace network { 22 23 24 enum variableType{ 25 DATA, 26 STRING, 27 }; 23 28 24 29 struct syncData{ … … 32 37 int size; 33 38 const void *var; 39 variableType type; 34 40 }SYNCVAR; 35 41 … … 40 46 * @author Oliver Scheuss 41 47 */ 42 class Synchronisable : public orxonox::OrxonoxClass{48 class Synchronisable : virtual public orxonox::OrxonoxClass{ 43 49 public: 44 Synchronisable();45 50 46 51 virtual ~Synchronisable(); … … 48 53 int classID; 49 54 50 void registerVar(const void *var, int size );55 void registerVar(const void *var, int size, variableType t); 51 56 syncData getData(); 52 57 syncData getData(unsigned char *mem); 53 58 int getSize(); 54 59 bool updateData(syncData vars); 55 virtual void registerAllVariables() = 0; 56 60 virtual void registerAllVariables()=0; 61 virtual bool create(){return true;} 62 protected: 63 Synchronisable(); 57 64 private: 58 65 /* bool removeObject(Iterator<Synchronisable> it);*/ -
code/branches/FICN/src/orxonox/objects/CMakeLists.txt
r555 r565 10 10 Skybox.cc 11 11 SceneNode.cc 12 BaseEntity.cc 12 13 Entity.cc 13 14 Camera.cc -
code/branches/FICN/src/orxonox/objects/WorldEntity.cc
r554 r565 74 74 } 75 75 } 76 77 void WorldEntity::registerAllVariables(){ 78 79 80 } 76 81 } -
code/branches/FICN/src/orxonox/objects/WorldEntity.h
r554 r565 7 7 #include "OgreSceneManager.h" 8 8 #include "OgreSceneNode.h" 9 #include "network/Synchronisable.h" 9 10 10 11 namespace orxonox 11 12 { 12 class WorldEntity : public BaseObject, public Tickable13 14 15 16 13 class WorldEntity : public BaseObject, public Tickable, public network::Synchronisable 14 { 15 public: 16 WorldEntity(); 17 ~WorldEntity(); 17 18 18 19 void tick(float dt); 19 20 20 21 21 inline Ogre::SceneNode* getNode() 22 { return this->node_; } 22 23 23 24 25 26 27 28 24 inline void setPosition(const Vector3& pos) 25 { this->node_->setPosition(pos); } 26 inline void setPosition(Real x, Real y, Real z) 27 { this->node_->setPosition(x, y, z); } 28 inline const Vector3& getPosition() const 29 { return this->node_->getPosition(); } 29 30 30 31 32 33 34 35 36 37 31 inline void translate(const Vector3 &d, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_PARENT) 32 { this->node_->translate(d, relativeTo); } 33 inline void translate(Real x, Real y, Real z, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_PARENT) 34 { this->node_->translate(x, y, z, relativeTo); } 35 inline void translate(const Matrix3 &axes, const Vector3 &move, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_PARENT) 36 { this->node_->translate(axes, move, relativeTo); } 37 inline void translate(const Matrix3 &axes, Real x, Real y, Real z, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_PARENT) 38 { this->node_->translate(axes, x, y, z, relativeTo); } 38 39 39 inline void yaw(const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL) 40 { this->node_->yaw(angle, relativeTo); } 41 inline void pitch(const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL) 42 { this->node_->pitch(angle, relativeTo); } 43 inline void roll(const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL) 44 { this->node_->roll(angle, relativeTo); } 45 46 inline void rotate(const Vector3 &axis, const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL) 47 { this->node_->rotate(axis, angle, relativeTo); } 48 inline void setDirection(Real x, Real y, Real z, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z) 49 { this->node_->setDirection(x, y, z, relativeTo, localDirectionVector); } 50 inline void setDirection(const Vector3 &vec, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z) 51 { this->node_->setDirection(vec, relativeTo, localDirectionVector); } 52 inline void setOrientation(const Ogre::Quaternion quat) 53 { this->node_->setOrientation(quat); } 54 inline void lookAt(const Vector3 &targetPoint, Ogre::Node::TransformSpace relativeTo, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z) 55 { this->node_->lookAt(targetPoint, relativeTo, localDirectionVector); } 56 57 inline void attachObject(Ogre::MovableObject *obj) 58 { this->node_->attachObject(obj); } 59 inline void detachObject(Ogre::MovableObject *obj) 60 { this->node_->detachObject(obj); } 61 inline void detachAllObjects() 62 { this->node_->detachAllObjects(); } 63 64 inline void setVelocity(const Vector3& velocity) 65 { this->velocity_ = velocity; } 66 inline void setVelocity(Real x, Real y, Real z) 67 { this->velocity_.x = x; this->velocity_.y = y; this->velocity_.z = z; } 68 inline const Vector3& getVelocity() const 69 { return this->velocity_; } 70 71 inline void setAcceleration(const Vector3& acceleration) 72 { this->acceleration_ = acceleration; } 73 inline void setAcceleration(Real x, Real y, Real z) 74 { this->acceleration_.x = x; this->acceleration_.y = y; this->acceleration_.z = z; } 75 inline const Vector3& getAcceleration() const 76 { return this->acceleration_; } 77 78 inline void setRotationAxis(const Vector3& axis) 79 { this->rotationAxis_ = axis; } 80 inline void setRotationAxis(Real x, Real y, Real z) 81 { this->rotationAxis_.x = x; this->rotationAxis_.y = y; this->rotationAxis_.z = z; } 82 inline const Vector3& getRotationAxis() const 83 { return this->rotationAxis_; } 84 85 inline void setRotationRate(const Radian& angle) 86 { this->rotationRate_ = angle; } 87 inline void setRotationRate(const Degree& angle) 88 { this->rotationRate_ = angle; } 89 inline const Radian& getRotationRate() const 90 { return this->rotationRate_; } 91 92 inline void setMomentum(const Radian& angle) 93 { this->momentum_ = angle; } 94 inline void setMomentum(const Degree& angle) 95 { this->momentum_ = angle; } 96 inline const Radian& getMomentum() const 97 { return this->momentum_; } 40 inline void yaw(const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL) 41 { this->node_->yaw(angle, relativeTo); } 42 inline void pitch(const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL) 43 { this->node_->pitch(angle, relativeTo); } 44 inline void roll(const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL) 45 { this->node_->roll(angle, relativeTo); } 98 46 99 47 100 inline const Ogre::Quaternion& getOrientation() 101 { return this->node_->getOrientation(); } 48 inline void rotate(const Vector3 &axis, const Radian &angle, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL) 49 { this->node_->rotate(axis, angle, relativeTo); } 50 inline void setDirection(Real x, Real y, Real z, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z) 51 { this->node_->setDirection(x, y, z, relativeTo, localDirectionVector); } 52 inline void setDirection(const Vector3 &vec, Ogre::Node::TransformSpace relativeTo=Ogre::Node::TS_LOCAL, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z) 53 { this->node_->setDirection(vec, relativeTo, localDirectionVector); } 54 inline void setOrientation(const Ogre::Quaternion quat) 55 { this->node_->setOrientation(quat); } 56 inline void lookAt(const Vector3 &targetPoint, Ogre::Node::TransformSpace relativeTo, const Vector3 &localDirectionVector=Vector3::NEGATIVE_UNIT_Z) 57 { this->node_->lookAt(targetPoint, relativeTo, localDirectionVector); } 102 58 59 inline void attachObject(Ogre::MovableObject *obj) 60 { this->node_->attachObject(obj); } 61 inline void detachObject(Ogre::MovableObject *obj) 62 { this->node_->detachObject(obj); } 63 inline void detachAllObjects() 64 { this->node_->detachAllObjects(); } 103 65 104 private: 105 Ogre::SceneNode* node_; 106 static unsigned int worldEntityCounter_s; 66 inline void setVelocity(const Vector3& velocity) 67 { this->velocity_ = velocity; } 68 inline void setVelocity(Real x, Real y, Real z) 69 { this->velocity_.x = x; this->velocity_.y = y; this->velocity_.z = z; } 70 inline const Vector3& getVelocity() const 71 { return this->velocity_; } 107 72 108 bool bStatic_; 109 Vector3 velocity_; 110 Vector3 acceleration_; 111 Vector3 rotationAxis_; 112 Radian rotationRate_; 113 Radian momentum_; 114 }; 73 inline void setAcceleration(const Vector3& acceleration) 74 { this->acceleration_ = acceleration; } 75 inline void setAcceleration(Real x, Real y, Real z) 76 { this->acceleration_.x = x; this->acceleration_.y = y; this->acceleration_.z = z; } 77 inline const Vector3& getAcceleration() const 78 { return this->acceleration_; } 79 80 inline void setRotationAxis(const Vector3& axis) 81 { this->rotationAxis_ = axis; } 82 inline void setRotationAxis(Real x, Real y, Real z) 83 { this->rotationAxis_.x = x; this->rotationAxis_.y = y; this->rotationAxis_.z = z; } 84 inline const Vector3& getRotationAxis() const 85 { return this->rotationAxis_; } 86 87 inline void setRotationRate(const Radian& angle) 88 { this->rotationRate_ = angle; } 89 inline void setRotationRate(const Degree& angle) 90 { this->rotationRate_ = angle; } 91 inline const Radian& getRotationRate() const 92 { return this->rotationRate_; } 93 94 inline void setMomentum(const Radian& angle) 95 { this->momentum_ = angle; } 96 inline void setMomentum(const Degree& angle) 97 { this->momentum_ = angle; } 98 inline const Radian& getMomentum() const 99 { return this->momentum_; } 100 inline const Ogre::Quaternion& getOrientation() 101 { return this->node_->getOrientation(); } 102 103 private: 104 void registerAllVariables(); 105 Ogre::SceneNode* node_; 106 static unsigned int worldEntityCounter_s; 107 108 bool bStatic_; 109 Vector3 velocity_; 110 Vector3 acceleration_; 111 Vector3 rotationAxis_; 112 Radian rotationRate_; 113 Radian momentum_; 114 }; 115 115 } 116 116 -
code/branches/FICN/src/orxonox/orxonox.cc
r560 r565 154 154 //if(mKeyboard->isKeyDown(OIS::KC_ESCAPE)) 155 155 //cout << "maximal MouseX: " << maxMouseX << "\tminMouseX: " << minMouseX << endl; 156 usleep(10); 156 157 return !mKeyboard->isKeyDown(OIS::KC_ESCAPE); 157 158 }
Note: See TracChangeset
for help on using the changeset viewer.