Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 2531


Ignore:
Timestamp:
Dec 23, 2008, 11:09:55 PM (16 years ago)
Author:
rgrieder
Message:

Merged revision 2371 to bugger branch.

Location:
code/branches/bugger
Files:
3 deleted
123 edited
12 copied

Legend:

Unmodified
Added
Removed
  • code/branches/bugger

  • code/branches/bugger/src/core/Factory.cc

    r2171 r2531  
    5858        @return The Identifier
    5959    */
    60     Identifier* Factory::getIdentifier(const unsigned int id)
     60    Identifier* Factory::getIdentifier(const uint32_t id)
    6161    {
    62         std::map<unsigned int, Identifier*>::const_iterator it = getFactoryPointer()->identifierNetworkIDMap_.find(id);
     62        std::map<uint32_t, Identifier*>::const_iterator it = getFactoryPointer()->identifierNetworkIDMap_.find(id);
    6363        if (it != getFactoryPointer()->identifierNetworkIDMap_.end())
    6464            return it->second;
     
    8585        @param newID The new networkID
    8686    */
    87     void Factory::changeNetworkID(Identifier* identifier, const unsigned int oldID, const unsigned int newID)
     87    void Factory::changeNetworkID(Identifier* identifier, const uint32_t oldID, const uint32_t newID)
    8888    {
    8989        getFactoryPointer()->identifierNetworkIDMap_.erase(oldID);
  • code/branches/bugger/src/core/Factory.h

    r2171 r2531  
    4949#include <map>
    5050#include <string>
     51#include "util/Integers.h"
    5152
    5253namespace orxonox
     
    6061        public:
    6162            static Identifier* getIdentifier(const std::string& name);
    62             static Identifier* getIdentifier(const unsigned int id);
     63            static Identifier* getIdentifier(const uint32_t id);
    6364            static void add(const std::string& name, Identifier* identifier);
    64             static void changeNetworkID(Identifier* identifier, const unsigned int oldID, const unsigned int newID);
     65            static void changeNetworkID(Identifier* identifier, const uint32_t oldID, const uint32_t newID);
    6566            static void createClassHierarchy();
    6667
     
    8384
    8485            std::map<std::string, Identifier*> identifierStringMap_;            //!< The map, mapping the name with the Identifier
    85             std::map<unsigned int, Identifier*> identifierNetworkIDMap_;        //!< The map, mapping the network ID with the Identifier
     86            std::map<uint32_t, Identifier*> identifierNetworkIDMap_;        //!< The map, mapping the network ID with the Identifier
    8687    };
    8788
  • code/branches/bugger/src/core/Identifier.cc

    r2344 r2531  
    245245        @param id The new network ID
    246246    */
    247     void Identifier::setNetworkID(unsigned int id)
     247    void Identifier::setNetworkID(uint32_t id)
    248248    {
    249249        Factory::changeNetworkID(this, this->classID_, id);
  • code/branches/bugger/src/core/Identifier.h

    r2344 r2531  
    6868#include "Super.h"
    6969#include "Functor.h"
     70#include "util/Integers.h"
    7071#include "util/Debug.h"
    7172#include "util/String.h"
     
    230231
    231232            /** @brief Returns the network ID to identify a class through the network. @return the network ID */
    232             inline const unsigned int getNetworkID() const { return this->classID_; }
     233            inline const uint32_t getNetworkID() const { return this->classID_; }
    233234
    234235            /** @brief Sets the network ID to a new value. @param id The new value */
    235             void setNetworkID(unsigned int id);
     236            void setNetworkID(uint32_t id);
    236237
    237238            void addConfigValueContainer(const std::string& varname, ConfigValueContainer* container);
     
    317318            BaseFactory* factory_;                                         //!< The Factory, able to create new objects of the given class (if available)
    318319            static int hierarchyCreatingCounter_s;                         //!< Bigger than zero if at least one Identifier stores its parents (its an int instead of a bool to avoid conflicts with multithreading)
    319             unsigned int classID_;                                         //!< The network ID to identify a class through the network
     320            uint32_t classID_;                                             //!< The network ID to identify a class through the network
    320321
    321322            bool bHasConfigValues_;                                        //!< True if this class has at least one assigned config value
  • code/branches/bugger/src/core/Template.cc

  • code/branches/bugger/src/core/Template.h

  • code/branches/bugger/src/core/XMLFile.h

  • code/branches/bugger/src/core/XMLIncludes.h

  • code/branches/bugger/src/network/CMakeLists.txt

    r2131 r2531  
    1111  PacketBuffer.cc
    1212  Server.cc
    13   Synchronisable.cc
     13  TrafficControl.cc
    1414  Host.cc
    1515)
    1616
    1717ADD_SOURCE_DIRECTORY(NETWORK_SRC_FILES packet)
     18ADD_SOURCE_DIRECTORY(NETWORK_SRC_FILES synchronisable)
     19
    1820
    1921IF(WIN32)
  • code/branches/bugger/src/network/Client.cc

    r2171 r2531  
    4343#include "Client.h"
    4444#include "Host.h"
    45 #include "Synchronisable.h"
     45#include "synchronisable/Synchronisable.h"
    4646#include "core/CoreIncludes.h"
    4747#include "packet/Packet.h"
  • code/branches/bugger/src/network/ClientInformation.cc

    r2171 r2531  
    4545namespace orxonox
    4646{
     47 
    4748
    4849  ClientInformation *ClientInformation::head_=0;
  • code/branches/bugger/src/network/ClientInformation.h

    r2171 r2531  
    4646#include <boost/thread/recursive_mutex.hpp>
    4747
     48
    4849// WATCH OUT: THE CLIENTINFORMATION LIST IS NOT THREADSAFE ANYMORE
    4950
    5051namespace orxonox
    5152{
    52   static const unsigned int GAMESTATEID_INITIAL = (unsigned int)-1;
    53   static const unsigned int CLIENTID_UNKNOWN = (unsigned int)-2;
    5453
    5554  /**
  • code/branches/bugger/src/network/ConnectionManager.cc

    r2171 r2531  
    5252#include "util/Sleep.h"
    5353#include "ClientInformation.h"
    54 #include "Synchronisable.h"
     54#include "synchronisable/Synchronisable.h"
    5555#include "packet/ClassID.h"
    5656
  • code/branches/bugger/src/network/GamestateClient.cc

    r2176 r2531  
    3535#include "core/BaseObject.h"
    3636#include "core/Iterator.h"
    37 #include "Synchronisable.h"
     37#include "synchronisable/Synchronisable.h"
     38#include "synchronisable/NetworkCallbackManager.h"
    3839#include "packet/Acknowledgement.h"
    3940
     
    7778    packet::Gamestate *processed = processGamestate(tempGamestate_);
    7879//    assert(processed);
     80   
     81    //now call the queued callbacks
     82    NetworkCallbackManager::callCallbacks();
     83   
    7984    if (!processed){
    8085      sendAck(0);
  • code/branches/bugger/src/network/GamestateManager.cc

    r2176 r2531  
    4949#include "core/BaseObject.h"
    5050#include "ClientInformation.h"
    51 #include "Synchronisable.h"
     51#include "synchronisable/Synchronisable.h"
     52#include "synchronisable/NetworkCallbackManager.h"
    5253#include "packet/Acknowledgement.h"
    5354
     
    8788    // now clear the queue
    8889    gamestateQueue.clear();
     90    //and call all queued callbacks
     91    NetworkCallbackManager::callCallbacks();
    8992    return true;
    9093  }
     
    135138    if(!reference)
    136139      return 0;
    137     gs = reference->doSelection(clientID);
    138 //     gs = new packet::Gamestate(*reference);
     140    gs = reference->doSelection(clientID, 10000);
    139141//     gs = new packet::Gamestate(*reference);
    140142    // save the (undiffed) gamestate in the clients gamestate map
  • code/branches/bugger/src/network/NetworkPrereqs.h

    r2171 r2531  
    5757
    5858//-----------------------------------------------------------------------
     59// Includes
     60//-----------------------------------------------------------------------
     61#include "util/Integers.h"
     62
     63
     64//-----------------------------------------------------------------------
    5965// Forward declarations
    6066//-----------------------------------------------------------------------
    6167namespace orxonox
    6268{
     69
     70// Constants definition
     71
     72  static const unsigned int GAMESTATEID_INITIAL = (unsigned int)-1;
     73  static const unsigned int CLIENTID_UNKNOWN = (unsigned int)-2;
     74  static const uint32_t OBJECTID_UNKNOWN = static_cast<uint32_t>(-1);
     75  static const unsigned int SCHED_PRIORITY_OFFSET = -5;
     76
     77 
     78
     79 
    6380  class Client;
    6481  class ClientConnection;
     
    7087  class GamestateManager;
    7188  class GamestateHandler;
     89  class NetworkCallbackBase;
     90  template <class T> class NetworkCallback;
     91  class NetworkCallbackManager;
    7292  class PacketBuffer;
    7393  class Server;
    7494  class ServerFrameListener;
    7595  class Synchronisable;
     96  class SynchronisableVariableBase;
     97  template <class T> class SynchronisableVariable;
     98  template <class T> class SynchronisableVariableBidirectional;
    7699  struct ClientList;
    77100  struct PacketEnvelope;
    78101  struct QueueItem;
    79102  struct syncData;
    80   struct synchronisableVariable;
     103  class obj;
     104  class objInfo;
    81105  namespace packet{
    82106    class Gamestate;
  • code/branches/bugger/src/network/packet/DeleteObjects.cc

    r2171 r2531  
    3030#include "DeleteObjects.h"
    3131#include <enet/enet.h>
    32 #include "network/Synchronisable.h"
     32#include "network/synchronisable/Synchronisable.h"
    3333#include "core/CoreIncludes.h"
    3434#include <assert.h>
  • code/branches/bugger/src/network/packet/Gamestate.cc

    r2450 r2531  
    2828
    2929#include "Gamestate.h"
    30 #include "network/ClientInformation.h"
    31 #include "network/GamestateHandler.h"
     30#include "../GamestateHandler.h"
     31#include "../synchronisable/Synchronisable.h"
     32#include "../TrafficControl.h"
    3233#include "core/Core.h"
    3334#include "core/CoreIncludes.h"
     
    4950
    5051#define PACKET_FLAG_GAMESTATE  ENET_PACKET_FLAG_RELIABLE
     52 
     53TrafficControl Gamestate::trafficControl_;
    5154
    5255Gamestate::Gamestate()
     
    7477bool Gamestate::collectData(int id, uint8_t mode)
    7578{
    76   unsigned int tempsize=0, currentsize=0;
     79  uint32_t tempsize=0, currentsize=0;
    7780  assert(data_==0);
    78   unsigned int size = calcGamestateSize(id, mode);
     81  uint32_t size = calcGamestateSize(id, mode);
    7982
    8083  COUT(4) << "G.ST.Man: producing gamestate with id: " << id << std::endl;
     
    110113
    111114    //if(it->doSelection(id))
    112     dataMap_[mem-data_]=(*it);  // save the mem location of the synchronisable data
     115    if(tempsize!=0)
     116      dataMap_.push_back( obj(it->getObjectID(), it->getCreatorID(), tempsize, mem-data_) );
     117//     dataMap_[mem-data_]=(*it);  // save the mem location of the synchronisable data
    113118    if(!it->getData(mem, id, mode))
    114119      return false; // mem pointer gets automatically increased because of call by reference
     
    150155    {
    151156      if (!Core::isMaster())
    152         Synchronisable::fabricate(mem, mode);
     157        s = Synchronisable::fabricate(mem, mode);
    153158      else
    154159        mem += objectheader->size;
     160      assert(s);
    155161    }
    156162    else
     
    170176}
    171177
    172 unsigned int Gamestate::getSize() const
     178uint32_t Gamestate::getSize() const
    173179{
    174180  assert(data_);
     
    255261  assert(HEADER->compressed);
    256262  COUT(4) << "GameStateClient: uncompressing gamestate. id: " << HEADER->id << ", baseid: " << HEADER->base_id << ", datasize: " << HEADER->datasize << ", compsize: " << HEADER->compsize << std::endl;
    257   unsigned int datasize = HEADER->datasize;
    258   unsigned int compsize = HEADER->compsize;
    259   unsigned int bufsize;
     263  uint32_t datasize = HEADER->datasize;
     264  uint32_t compsize = HEADER->compsize;
     265  uint32_t bufsize;
    260266//  assert(compsize<=datasize);
    261267  bufsize = datasize;
     
    306312  //unsigned char *basep = base->getGs()/*, *gs = getGs()*/;
    307313  uint8_t *basep = GAMESTATE_START(base->data_), *gs = GAMESTATE_START(this->data_);
    308   unsigned int of=0; // pointers offset
    309   unsigned int dest_length=0;
     314  uint32_t of=0; // pointers offset
     315  uint32_t dest_length=0;
    310316  dest_length=HEADER->datasize;
    311317  if(dest_length==0)
     
    336342}
    337343
    338 Gamestate* Gamestate::doSelection(unsigned int clientID){
     344Gamestate* Gamestate::doSelection(unsigned int clientID, unsigned int targetSize){
    339345  assert(data_);
    340   std::map<unsigned int, Synchronisable *>::iterator it;
     346  std::list<obj>::iterator it;
    341347
    342348  // allocate memory for new data
     
    345351  Gamestate *gs = new Gamestate(gdata);
    346352  uint8_t *newdata = gdata + sizeof(GamestateHeader);
    347   uint8_t *origdata = GAMESTATE_START(data_);
     353//   uint8_t *origdata = GAMESTATE_START(data_);
    348354
    349355  //copy the GamestateHeader
     
    351357
    352358  synchronisableHeader *oldobjectheader, *newobjectheader;
    353   unsigned int objectOffset;
    354 
     359  uint32_t objectOffset;
     360  unsigned int objectsize, destsize=0;
     361  Synchronisable *object;
     362
     363  //call TrafficControl
     364  trafficControl_.processObjectList( clientID, HEADER->id, &dataMap_ );
     365 
    355366  //copy in the zeros
    356367  for(it=dataMap_.begin(); it!=dataMap_.end(); it++){
    357     if(it->second->getSize(HEADER->id)==0)
     368    if((*it).objSize==0)
    358369      continue;
    359     oldobjectheader = (synchronisableHeader*)origdata;
     370    oldobjectheader = (synchronisableHeader*)(data_ + (*it).objDataOffset);
    360371    newobjectheader = (synchronisableHeader*)newdata;
    361     unsigned int objectsize = oldobjectheader->size;
    362     assert(it->second->objectID==oldobjectheader->objectID);
     372    object = Synchronisable::getSynchronisable( (*it).objID );
     373    assert(object->objectID == oldobjectheader->objectID);
     374    objectsize = oldobjectheader->size;
    363375    *newobjectheader = *oldobjectheader;
    364376    objectOffset=sizeof(synchronisableHeader); //skip the size and the availableData variables in the objectheader
    365     if(it->second->doSelection(HEADER->id)){
     377    if ( /*object->doSelection(HEADER->id)*/true ){
    366378      assert(newobjectheader->dataAvailable==true);
    367       memcpy(newdata+objectOffset, origdata+objectOffset, objectsize-objectOffset);
     379      memcpy(newdata+objectOffset, data_ + (*it).objDataOffset + objectOffset, objectsize-objectOffset);
    368380    }else{
    369381      newobjectheader->dataAvailable=false;
     
    372384    }
    373385    newdata += objectsize;
    374     origdata += objectsize;
    375   }
     386    destsize += objectsize;
     387//     origdata += objectsize;
     388  }
     389  ((GamestateHeader*)gdata)->datasize = destsize;
     390  assert(destsize!=0);
    376391  return gs;
    377392}
     
    388403
    389404  //preparations
    390   std::map<unsigned int, Synchronisable *>::iterator it;
     405  std::list<obj>::iterator it;
    391406  uint8_t *origdata, *basedata, *destdata, *ndata;
    392   unsigned int objectOffset, streamOffset=0;    //data offset
    393   unsigned int minsize = (HEADER->datasize < GAMESTATE_HEADER(base->data_)->datasize) ? HEADER->datasize : GAMESTATE_HEADER(base->data_)->datasize;
     407  uint32_t objectOffset, streamOffset=0;    //data offset
     408  uint32_t minsize = (HEADER->datasize < GAMESTATE_HEADER(base->data_)->datasize) ? HEADER->datasize : GAMESTATE_HEADER(base->data_)->datasize;
    394409  synchronisableHeader *origheader;
    395410  synchronisableHeader *destheader;
     411  Synchronisable *object;
    396412
    397413  origdata = GAMESTATE_START(this->data_);
     
    403419  for(it=dataMap_.begin(); it!=dataMap_.end(); it++){
    404420    assert(streamOffset<HEADER->datasize);
    405     bool sendData = it->second->doSelection(HEADER->id);
    406421    origheader = (synchronisableHeader *)(origdata+streamOffset);
    407422    destheader = (synchronisableHeader *)(destdata+streamOffset);
     423    object = Synchronisable::getSynchronisable(origheader->objectID);
     424    bool sendData = object->doSelection(HEADER->id);
    408425
    409426    //copy and partially diff the object header
    410     assert(sizeof(synchronisableHeader)==3*sizeof(unsigned int)+sizeof(bool));
     427    assert(sizeof(synchronisableHeader)==3*sizeof(uint32_t)+sizeof(bool));
    411428    *(uint32_t*)destdata = *(uint32_t*)origdata; //size (do not diff)
    412429    *(bool*)(destdata+sizeof(uint32_t)) = sendData;
     
    456473
    457474  //preparations
    458   std::map<unsigned int, Synchronisable *>::iterator it;
     475  std::list<obj>::iterator it;
    459476  uint8_t *origdata, *basedata, *destdata, *ndata;
    460   unsigned int objectOffset, streamOffset=0;    //data offset
    461   unsigned int minsize = (HEADER->datasize < GAMESTATE_HEADER(base->data_)->datasize) ? HEADER->datasize : GAMESTATE_HEADER(base->data_)->datasize;
     477  uint32_t objectOffset, streamOffset=0;    //data offset
     478  uint32_t minsize = (HEADER->datasize < GAMESTATE_HEADER(base->data_)->datasize) ? HEADER->datasize : GAMESTATE_HEADER(base->data_)->datasize;
    462479  synchronisableHeader *origheader;
    463480  synchronisableHeader *destheader;
     481  Synchronisable *object;
    464482
    465483  origdata = GAMESTATE_START(this->data_);
     
    473491    origheader = (synchronisableHeader *)(origdata+streamOffset);
    474492    destheader = (synchronisableHeader *)(destdata+streamOffset);
     493    object = Synchronisable::getSynchronisable( origheader->objectID );
    475494    bool sendData;
    476495
    477496    //copy and partially diff the object header
    478     assert(sizeof(synchronisableHeader)==3*sizeof(unsigned int)+sizeof(bool));
    479     *(unsigned int*)destdata = *(unsigned int*)origdata; //size (do not diff)
    480     *(bool*)(destdata+sizeof(unsigned int)) = *(bool*)(origdata+sizeof(unsigned int));
    481     sendData = *(bool*)(origdata+sizeof(unsigned int));
     497    assert(sizeof(synchronisableHeader)==3*sizeof(uint32_t)+sizeof(bool));
     498    *(uint32_t*)destdata = *(uint32_t*)origdata; //size (do not diff)
     499    *(bool*)(destdata+sizeof(uint32_t)) = *(bool*)(origdata+sizeof(uint32_t));
     500    sendData = *(bool*)(origdata+sizeof(uint32_t));
    482501    if(sendData){
    483       *(unsigned int*)(destdata+sizeof(unsigned int)+sizeof(bool)) = *(unsigned int*)(basedata+sizeof(unsigned int)+sizeof(bool)) ^ *(unsigned int*)(origdata+sizeof(unsigned int)+sizeof(bool)); //objectid (diff it)
    484       *(unsigned int*)(destdata+2*sizeof(unsigned int)+sizeof(bool)) = *(unsigned int*)(basedata+2*sizeof(unsigned int)+sizeof(bool)) ^ *(unsigned int*)(origdata+2*sizeof(unsigned int)+sizeof(bool)); //classid (diff it)
     502      *(uint32_t*)(destdata+sizeof(uint32_t)+sizeof(bool)) = *(uint32_t*)(basedata+sizeof(uint32_t)+sizeof(bool)) ^ *(uint32_t*)(origdata+sizeof(uint32_t)+sizeof(bool)); //objectid (diff it)
     503      *(uint32_t*)(destdata+2*sizeof(uint32_t)+sizeof(bool)) = *(uint32_t*)(basedata+2*sizeof(uint32_t)+sizeof(bool)) ^ *(uint32_t*)(origdata+2*sizeof(uint32_t)+sizeof(bool)); //classid (diff it)
    485504    }else{
    486       *(unsigned int*)(destdata+sizeof(unsigned int)+sizeof(bool)) = 0;
    487       *(unsigned int*)(destdata+2*sizeof(unsigned int)+sizeof(bool)) = 0;
     505      *(uint32_t*)(destdata+sizeof(uint32_t)+sizeof(bool)) = 0;
     506      *(uint32_t*)(destdata+2*sizeof(uint32_t)+sizeof(bool)) = 0;
    488507    }
    489508    objectOffset=sizeof(synchronisableHeader);
     
    523542  uint8_t *basep = GAMESTATE_START(base->data_);
    524543  uint8_t *gs = GAMESTATE_START(this->data_);
    525   unsigned int of=0; // pointers offset
    526   unsigned int dest_length=0;
     544  uint32_t of=0; // pointers offset
     545  uint32_t dest_length=0;
    527546  dest_length=HEADER->datasize;
    528547  if(dest_length==0)
     
    554573
    555574
    556 unsigned int Gamestate::calcGamestateSize(unsigned int id, uint8_t mode)
    557 {
    558   unsigned int size=0;
     575uint32_t Gamestate::calcGamestateSize(int32_t id, uint8_t mode)
     576{
     577  uint32_t size=0;
    559578    // get the start of the Synchronisable list
    560579  ObjectList<Synchronisable>::iterator it;
  • code/branches/bugger/src/network/packet/Gamestate.h

    r2171 r2531  
    3131#define NETWORK_PACKETGAMESTATE_H
    3232
    33 #include "../NetworkPrereqs.h"
     33#include "network/NetworkPrereqs.h"
    3434
    3535#include "Packet.h"
    36 #include "network/Synchronisable.h"
     36#include "network/TrafficControl.h"
     37#include "core/CoreIncludes.h"
    3738#include <map>
     39#include <list>
    3840#ifndef NDEBUG
    3941#include "util/CRC32.h"
     
    7981    Gamestate *undiff(Gamestate *base);
    8082    Gamestate* intelligentUnDiff(Gamestate *base);
    81     Gamestate* doSelection(unsigned int clientID);
     83    Gamestate* doSelection(unsigned int clientID, unsigned int targetSize);
    8284    bool compressData();
    8385    bool decompressData();
     
    8587    // Packet functions
    8688  private:
    87     virtual unsigned int getSize() const;
     89    virtual uint32_t getSize() const;
    8890    virtual bool process();
    8991
    9092    bool operator ==(packet::Gamestate gs);
    9193  private:
    92     unsigned int calcGamestateSize(unsigned int id, uint8_t mode=0x0);
     94    uint32_t calcGamestateSize(int32_t id, uint8_t mode=0x0);
    9395    void removeObject(ObjectListIterator<Synchronisable> &it);
    94     std::map<unsigned int, Synchronisable*> dataMap_;
     96    std::list<obj> dataMap_;
     97    static TrafficControl trafficControl_;
    9598};
    9699
  • code/branches/bugger/src/network/packet/Welcome.cc

    r2171 r2531  
    3232#include "Welcome.h"
    3333#include "network/Host.h"
    34 #include "network/Synchronisable.h"
     34#include "network/synchronisable/Synchronisable.h"
    3535#include "core/CoreIncludes.h"
    3636#include <assert.h>
     
    4343#define _CLIENTID             _PACKETID + sizeof(ENUM::Type)
    4444#define _SHIPID               _CLIENTID + sizeof(uint32_t)
     45#define _ENDIANTEST           _SHIPID + sizeof(uint32_t)
    4546 
    4647  Welcome::Welcome( unsigned int clientID, unsigned int shipID )
     
    5253  assert(data_);
    5354  *(packet::ENUM::Type *)(data_ + _PACKETID ) = packet::ENUM::Welcome;
    54   *(uint32_t *)&data_[ _CLIENTID ] = clientID;
    55   *(uint32_t *)&data_[ _SHIPID ] = shipID;
     55  *(uint32_t *)(data_ + _CLIENTID ) = clientID;
     56  *(uint32_t *)(data_ + _SHIPID ) = shipID;
     57  *(uint32_t *)(data_ + _ENDIANTEST ) = 0xFEDC4321;
    5658}
    5759
     
    7072
    7173unsigned int Welcome::getSize() const{
    72   return sizeof(packet::ENUM::Type) + 2*sizeof(uint32_t);
     74  return sizeof(packet::ENUM::Type) + 3*sizeof(uint32_t);
    7375}
    7476
     
    7779  clientID = *(uint32_t *)&data_[ _CLIENTID ];
    7880  shipID = *(uint32_t *)&data_[ _SHIPID ];
     81  assert(*(uint32_t *)(data_ + _ENDIANTEST ) == 0xFEDC4321);
    7982  Host::setClientID(clientID);
    8083  Host::setShipID(shipID);
  • code/branches/bugger/src/network/synchronisable/Synchronisable.cc

    r2371 r2531  
    7979
    8080
    81 #ifndef NDEBUG
    82     ObjectList<Synchronisable>::iterator it;
    83     for(it = ObjectList<Synchronisable>::begin(); it!=ObjectList<Synchronisable>::end(); ++it){
    84       if( it->getObjectID()==this->objectID )
    85         assert(*it==this || (it->objectID==OBJECTID_UNKNOWN && it->objectMode_==0x0));
    86     }
    87 #endif
     81//#ifndef NDEBUG
     82//    ObjectList<Synchronisable>::iterator it;
     83//    for(it = ObjectList<Synchronisable>::begin(); it!=ObjectList<Synchronisable>::end(); ++it){
     84//        if(!(*it==this || (it->objectID==OBJECTID_UNKNOWN && it->objectMode_==0x0)))
     85//        {
     86//            COUT(1) << "Assertion failed: *it==this || (it->objectID==OBJECTID_UNKNOWN && it->objectMode_==0x0)" << std::endl;
     87//            COUT(1) << "Possible reason for this error: Client created a synchronized object without the Server's approval." << std::endl;
     88//            abort();
     89//        }
     90//    }
     91//#endif
    8892
    8993    this->creatorID = OBJECTID_UNKNOWN;
     
    159163
    160164    Identifier* id = ClassByID(header->classID);
     165    if (!id)
     166    {
     167        COUT(1) << "Assertion failed: id" << std::endl;
     168        COUT(1) << "Possible reason for this error: Client received a synchronizable object whose class has no factory." << std::endl;
     169        abort();
     170    }
    161171    assert(id);
    162172    BaseObject* creator = 0;
  • code/branches/bugger/src/network/synchronisable/Synchronisable.h

    r2371 r2531  
    9090    static uint32_t popDeletedObject(){ uint32_t i = deletedObjects_.front(); deletedObjects_.pop(); return i; }
    9191
    92     inline uint32_t getObjectID(){return objectID;}
    93     inline unsigned int getCreatorID(){return creatorID;}
    94     inline uint32_t getClassID(){return classID;}
    95     inline unsigned int getPriority(){ return objectFrequency_;}
     92    inline uint32_t getObjectID() const {return objectID;}
     93    inline unsigned int getCreatorID() const {return creatorID;}
     94    inline uint32_t getClassID() const {return classID;}
     95    inline unsigned int getPriority() const { return objectFrequency_;}
    9696
    9797  protected:
  • code/branches/bugger/src/orxonox/CameraManager.cc

  • code/branches/bugger/src/orxonox/CameraManager.h

  • code/branches/bugger/src/orxonox/OrxonoxStableHeaders.h

    r2087 r2531  
    9595#include "core/input/InputManager.h"
    9696
    97 #include "network/Synchronisable.h"
     97#include "network/synchronisable/Synchronisable.h"
    9898
    9999#include "Settings.h"
  • code/branches/bugger/src/orxonox/objects/GlobalShader.cc

    r2414 r2531  
    6666    void GlobalShader::registerVariables()
    6767    {
    68         REGISTERDATA  (this->bVisible_, direction::toclient, new NetworkCallback<GlobalShader>(this, &GlobalShader::changedVisibility));
    69         REGISTERSTRING(const_cast<std::string&>(this->shader_.getCompositor()), direction::toclient, new NetworkCallback<Shader>(&this->shader_, &Shader::changedCompositor));
     68        registerVariable(this->bVisible_, variableDirection::toclient, new NetworkCallback<GlobalShader>(this, &GlobalShader::changedVisibility));
     69        registerVariable(const_cast<std::string&>(this->shader_.getCompositor()), variableDirection::toclient, new NetworkCallback<Shader>(&this->shader_, &Shader::changedCompositor));
    7070    }
    7171
  • code/branches/bugger/src/orxonox/objects/GlobalShader.h

    r2350 r2531  
    3333
    3434#include "core/BaseObject.h"
    35 #include "network/Synchronisable.h"
     35#include "network/synchronisable/Synchronisable.h"
    3636#include "tools/Shader.h"
    3737
  • code/branches/bugger/src/orxonox/objects/Level.cc

    r2530 r2531  
    8383    void Level::registerVariables()
    8484    {
    85         REGISTERSTRING(this->xmlfilename_, direction::toclient, new NetworkCallback<Level>(this, &Level::networkcallback_applyXMLFile));
    86         REGISTERSTRING(this->name_,        direction::toclient, new NetworkCallback<Level>(this, &Level::changedName));
    87         REGISTERSTRING(this->description_, direction::toclient);
     85        registerVariable(this->xmlfilename_, variableDirection::toclient, new NetworkCallback<Level>(this, &Level::networkcallback_applyXMLFile));
     86        registerVariable(this->name_,        variableDirection::toclient, new NetworkCallback<Level>(this, &Level::changedName));
     87        registerVariable(this->description_, variableDirection::toclient);
    8888    }
    8989
  • code/branches/bugger/src/orxonox/objects/Level.h

    r2530 r2531  
    3232#include "OrxonoxPrereqs.h"
    3333
    34 #include "network/Synchronisable.h"
     34#include "network/synchronisable/Synchronisable.h"
    3535#include "core/BaseObject.h"
    3636
  • code/branches/bugger/src/orxonox/objects/Scene.cc

    r2447 r2531  
    101101    void Scene::registerVariables()
    102102    {
    103         REGISTERSTRING(this->skybox_,     direction::toclient, new NetworkCallback<Scene>(this, &Scene::networkcallback_applySkybox));
    104         REGISTERDATA(this->ambientLight_, direction::toclient, new NetworkCallback<Scene>(this, &Scene::networkcallback_applyAmbientLight));
    105         REGISTERDATA(this->bShadows_,     direction::toclient, new NetworkCallback<Scene>(this, &Scene::networkcallback_applyShadows));
     103        registerVariable(this->skybox_,     variableDirection::toclient, new NetworkCallback<Scene>(this, &Scene::networkcallback_applySkybox));
     104        registerVariable(this->ambientLight_, variableDirection::toclient, new NetworkCallback<Scene>(this, &Scene::networkcallback_applyAmbientLight));
     105        registerVariable(this->bShadows_,     variableDirection::toclient, new NetworkCallback<Scene>(this, &Scene::networkcallback_applyShadows));
    106106    }
    107107
  • code/branches/bugger/src/orxonox/objects/Scene.h

    r2447 r2531  
    3232#include "OrxonoxPrereqs.h"
    3333
    34 #include "network/Synchronisable.h"
     34#include "network/synchronisable/Synchronisable.h"
    3535#include "core/BaseObject.h"
    3636#include "util/Math.h"
  • code/branches/bugger/src/orxonox/objects/Test.cc

    r2171 r2531  
    6161        void Test::setConfigValues()
    6262        {
    63                 SetConfigValue ( v1, 1 )/*.callback ( this, &Test::checkV1 )*/;
    64     SetConfigValue ( v2, 2 )/*.callback ( this, &Test::checkV2 )*/;
    65     SetConfigValue ( v3, 3 )/*.callback ( this, &Test::checkV3 )*/;
    66     SetConfigValue ( v4, 4 )/*.callback ( this, &Test::checkV4 )*/;
     63                SetConfigValue ( u1, 1 )/*.callback ( this, &Test::checkV1 )*/;
     64    SetConfigValue ( u2, 2 )/*.callback ( this, &Test::checkV2 )*/;
     65    SetConfigValue ( u3, 3 )/*.callback ( this, &Test::checkV3 )*/;
     66    SetConfigValue ( u4, 4 )/*.callback ( this, &Test::checkV4 )*/;
     67   
     68    SetConfigValue ( s1, 1 )/*.callback ( this, &Test::checkV1 )*/;
     69    SetConfigValue ( s2, 2 )/*.callback ( this, &Test::checkV2 )*/;
     70    SetConfigValue ( s3, 3 )/*.callback ( this, &Test::checkV3 )*/;
     71    SetConfigValue ( s4, 4 )/*.callback ( this, &Test::checkV4 )*/;
    6772        }
    6873
     
    7075        void Test::registerVariables()
    7176        {
    72                 REGISTERDATA ( v1,direction::toclient, new NetworkCallback<Test> ( this, &Test::checkV1 ) );
    73     REGISTERDATA ( v2,direction::toserver, new NetworkCallback<Test> ( this, &Test::checkV2 ) );
    74                 REGISTERDATA ( v3,direction::serverMaster, new NetworkCallback<Test> ( this, &Test::checkV3 ) );
    75     REGISTERDATA ( v4,direction::clientMaster, new NetworkCallback<Test> ( this, &Test::checkV4 ) );
     77                registerVariable ( u1, variableDirection::toclient, new NetworkCallback<Test> ( this, &Test::checkU1 ));
     78    registerVariable ( u2, variableDirection::toserver, new NetworkCallback<Test> ( this, &Test::checkU2 ));
     79                registerVariable ( u3, variableDirection::serverMaster, new NetworkCallback<Test> ( this, &Test::checkU3 ), true );
     80    registerVariable ( u4, variableDirection::clientMaster, new NetworkCallback<Test> ( this, &Test::checkU4 ), true );
     81   
     82    registerVariable ( s1, variableDirection::toclient, new NetworkCallback<Test> ( this, &Test::checkS1 ));
     83    registerVariable ( s2, variableDirection::toserver, new NetworkCallback<Test> ( this, &Test::checkS2 ));
     84    registerVariable ( s3, variableDirection::serverMaster, new NetworkCallback<Test> ( this, &Test::checkS3 ), true );
     85    registerVariable ( s4, variableDirection::clientMaster, new NetworkCallback<Test> ( this, &Test::checkS4 ), true );
    7686        }
    7787
    78   void Test::checkV1(){
    79     COUT(1) << "V1 changed: " << v1 << std::endl;
    80   }
     88  void Test::checkU1(){ COUT(1) << "U1 changed: " << u1 << std::endl; }
     89  void Test::checkU2(){ COUT(1) << "U2 changed: " << u2 << std::endl; }
     90  void Test::checkU3(){ COUT(1) << "U3 changed: " << u3 << std::endl; }
     91  void Test::checkU4(){ COUT(1) << "U4 changed: " << u4 << std::endl; }
    8192
    82   void Test::checkV2(){
    83     COUT(1) << "V2 changed: " << v2 << std::endl;
    84   }
    85 
    86   void Test::checkV3(){
    87     COUT(1) << "V3 changed: " << v3 << std::endl;
    88   }
    89  
    90   void Test::checkV4(){
    91     COUT(1) << "V4 changed: " << v4 << std::endl;
    92   }
    93 
     93  void Test::checkS1(){ COUT(1) << "S1 changed: " << s1 << std::endl; }
     94  void Test::checkS2(){ COUT(1) << "S2 changed: " << s2 << std::endl; }
     95  void Test::checkS3(){ COUT(1) << "S3 changed: " << s3 << std::endl; }
     96  void Test::checkS4(){ COUT(1) << "S4 changed: " << s4 << std::endl; }
    9497
    9598}
  • code/branches/bugger/src/orxonox/objects/Test.h

    r2171 r2531  
    3232#include "OrxonoxPrereqs.h"
    3333#include "core/BaseObject.h"
    34 #include "network/Synchronisable.h"
     34#include "network/synchronisable/Synchronisable.h"
     35
     36
     37typedef int TYPE;
     38typedef unsigned int UTYPE;
     39
    3540
    3641namespace orxonox
     
    4550      void registerVariables();
    4651
    47       void setV1(unsigned int value){ v1 = value; }
    48       void setV2(unsigned int value){ v2 = value; }
    49       void setV3(unsigned int value){ v3 = value; }
    50       void setV4(unsigned int value){ v4 = value; }
    5152
    52       void checkV1();
    53       void checkV2();
    54       void checkV3();
    55       void checkV4();
     53      //unsigned functions
     54      void setU1(UTYPE value){ u1 = value; }
     55      void setU2(UTYPE value){ u2 = value; }
     56      void setU3(UTYPE value){ u3 = value; }
     57      void setU4(UTYPE value){ u4 = value; }
     58      void checkU1();
     59      void checkU2();
     60      void checkU3();
     61      void checkU4();
    5662     
    57       void printV1(){ instance_->checkV1(); }
    58       void printV2(){ instance_->checkV2(); }
    59       void printV3(){ instance_->checkV3(); }
    60       void printV4(){ instance_->checkV4(); }
     63      //signed functions
     64      void setS1(TYPE value){ s1 = value; }
     65      void setS2(TYPE value){ s2 = value; }
     66      void setS3(TYPE value){ s3 = value; }
     67      void setS4(TYPE value){ s4 = value; }
     68      void checkS1();
     69      void checkS2();
     70      void checkS3();
     71      void checkS4();
     72     
     73      static void printV1(){ instance_->checkU1(); }
     74      static void printV2(){ instance_->checkU2(); }
     75      static void printV3(){ instance_->checkU3(); }
     76      static void printV4(){ instance_->checkU4(); }
    6177
    6278    private:
    63       unsigned int v1;
    64       unsigned int v2;
    65       unsigned int v3;
    66       unsigned int v4;
     79      UTYPE u1;
     80      UTYPE u2;
     81      UTYPE u3;
     82      UTYPE u4;
     83     
     84      TYPE s1;
     85      TYPE s2;
     86      TYPE s3;
     87      TYPE s4;
    6788     
    6889      static Test* instance_;
  • code/branches/bugger/src/orxonox/objects/infos/GametypeInfo.cc

    r2428 r2531  
    5454    void GametypeInfo::registerVariables()
    5555    {
    56         REGISTERDATA(this->bStarted_,               direction::toclient);
    57         REGISTERDATA(this->bEnded_,                 direction::toclient);
    58         REGISTERDATA(this->startCountdown_,         direction::toclient);
    59         REGISTERDATA(this->bStartCountdownRunning_, direction::toclient);
     56        registerVariable(this->bStarted_,               variableDirection::toclient);
     57        registerVariable(this->bEnded_,                 variableDirection::toclient);
     58        registerVariable(this->startCountdown_,         variableDirection::toclient);
     59        registerVariable(this->bStartCountdownRunning_, variableDirection::toclient);
    6060    }
    6161}
  • code/branches/bugger/src/orxonox/objects/infos/HumanPlayer.cc

    r2428 r2531  
    6969    void HumanPlayer::registerVariables()
    7070    {
    71         REGISTERSTRING(this->synchronize_nick_, direction::toserver, new NetworkCallback<HumanPlayer>(this, &HumanPlayer::networkcallback_changednick));
     71        registerVariable(this->synchronize_nick_, variableDirection::toserver, new NetworkCallback<HumanPlayer>(this, &HumanPlayer::networkcallback_changednick));
    7272
    73         REGISTERDATA(this->clientID_,           direction::toclient, new NetworkCallback<HumanPlayer>(this, &HumanPlayer::networkcallback_clientIDchanged));
    74         REGISTERDATA(this->server_initialized_, direction::toclient, new NetworkCallback<HumanPlayer>(this, &HumanPlayer::networkcallback_server_initialized));
    75         REGISTERDATA(this->client_initialized_, direction::toserver, new NetworkCallback<HumanPlayer>(this, &HumanPlayer::networkcallback_client_initialized));
     73        registerVariable(this->clientID_,           variableDirection::toclient, new NetworkCallback<HumanPlayer>(this, &HumanPlayer::networkcallback_clientIDchanged));
     74        registerVariable(this->server_initialized_, variableDirection::toclient, new NetworkCallback<HumanPlayer>(this, &HumanPlayer::networkcallback_server_initialized));
     75        registerVariable(this->client_initialized_, variableDirection::toserver, new NetworkCallback<HumanPlayer>(this, &HumanPlayer::networkcallback_client_initialized));
    7676    }
    7777
     
    106106
    107107            if (!Core::isMaster())
    108                 this->setObjectMode(direction::bidirectional);
     108                this->setObjectMode(objectDirection::bidirectional);
    109109            else
    110110                this->setName(this->nick_);
  • code/branches/bugger/src/orxonox/objects/infos/Info.h

    r2171 r2531  
    3232#include "OrxonoxPrereqs.h"
    3333
    34 #include "network/Synchronisable.h"
     34#include "network/synchronisable/Synchronisable.h"
    3535#include "core/BaseObject.h"
    3636
  • code/branches/bugger/src/orxonox/objects/infos/PlayerInfo.cc

    r2462 r2531  
    7373    void PlayerInfo::registerVariables()
    7474    {
    75         REGISTERSTRING(this->name_,                 direction::toclient, new NetworkCallback<PlayerInfo>(this, &PlayerInfo::changedName));
    76         REGISTERDATA  (this->controllableEntityID_, direction::toclient, new NetworkCallback<PlayerInfo>(this, &PlayerInfo::networkcallback_changedcontrollableentityID));
    77         REGISTERDATA  (this->bReadyToSpawn_,        direction::toserver);
     75        registerVariable(this->name_,                 variableDirection::toclient, new NetworkCallback<PlayerInfo>(this, &PlayerInfo::changedName));
     76        registerVariable(this->controllableEntityID_, variableDirection::toclient, new NetworkCallback<PlayerInfo>(this, &PlayerInfo::networkcallback_changedcontrollableentityID));
     77        registerVariable(this->bReadyToSpawn_,        variableDirection::toserver);
    7878    }
    7979
  • code/branches/bugger/src/orxonox/objects/items/Engine.cc

    r2478 r2531  
    104104    void Engine::registerVariables()
    105105    {
    106         REGISTERDATA(this->shipID_, direction::toclient, new NetworkCallback<Engine>(this, &Engine::networkcallback_shipID));
    107 
    108         REGISTERDATA(this->speedFactor_, direction::toclient);
    109         REGISTERDATA(this->boostFactor_, direction::toclient);
    110 
    111         REGISTERDATA(this->maxSpeedFront_,     direction::toclient);
    112         REGISTERDATA(this->maxSpeedBack_,      direction::toclient);
    113         REGISTERDATA(this->maxSpeedLeftRight_, direction::toclient);
    114         REGISTERDATA(this->maxSpeedUpDown_,    direction::toclient);
    115 
    116         REGISTERDATA(this->accelerationFront_,     direction::toclient);
    117         REGISTERDATA(this->accelerationBrake_,     direction::toclient);
    118         REGISTERDATA(this->accelerationBack_,      direction::toclient);
    119         REGISTERDATA(this->accelerationLeftRight_, direction::toclient);
    120         REGISTERDATA(this->accelerationUpDown_,    direction::toclient);
     106        registerVariable(this->shipID_, variableDirection::toclient, new NetworkCallback<Engine>(this, &Engine::networkcallback_shipID));
     107
     108        registerVariable(this->speedFactor_, variableDirection::toclient);
     109        registerVariable(this->boostFactor_, variableDirection::toclient);
     110
     111        registerVariable(this->maxSpeedFront_,     variableDirection::toclient);
     112        registerVariable(this->maxSpeedBack_,      variableDirection::toclient);
     113        registerVariable(this->maxSpeedLeftRight_, variableDirection::toclient);
     114        registerVariable(this->maxSpeedUpDown_,    variableDirection::toclient);
     115
     116        registerVariable(this->accelerationFront_,     variableDirection::toclient);
     117        registerVariable(this->accelerationBrake_,     variableDirection::toclient);
     118        registerVariable(this->accelerationBack_,      variableDirection::toclient);
     119        registerVariable(this->accelerationLeftRight_, variableDirection::toclient);
     120        registerVariable(this->accelerationUpDown_,    variableDirection::toclient);
    121121    }
    122122
  • code/branches/bugger/src/orxonox/objects/items/Item.h

    r2254 r2531  
    3333
    3434#include "core/BaseObject.h"
    35 #include "network/Synchronisable.h"
     35#include "network/synchronisable/Synchronisable.h"
    3636
    3737namespace orxonox
  • code/branches/bugger/src/orxonox/objects/items/MultiStateEngine.cc

    r2254 r2531  
    8383    void MultiStateEngine::registerVariables()
    8484    {
    85         REGISTERDATA(this->state_, direction::toserver);
     85        registerVariable(this->state_, variableDirection::toserver);
    8686    }
    8787
     
    9292            if (this->getShip()->hasLocalController())
    9393            {
    94                 this->setObjectMode(direction::bidirectional);
     94                this->setObjectMode(objectDirection::bidirectional);
    9595
    9696                const Vector3& direction = this->getDirection();
  • code/branches/bugger/src/orxonox/objects/pickup/Usable.h

  • code/branches/bugger/src/orxonox/objects/quest/AddQuest.cc

  • code/branches/bugger/src/orxonox/objects/quest/AddQuest.h

  • code/branches/bugger/src/orxonox/objects/quest/AddQuestHint.cc

  • code/branches/bugger/src/orxonox/objects/quest/AddQuestHint.h

  • code/branches/bugger/src/orxonox/objects/quest/AddReward.cc

  • code/branches/bugger/src/orxonox/objects/quest/AddReward.h

  • code/branches/bugger/src/orxonox/objects/quest/ChangeQuestStatus.cc

  • code/branches/bugger/src/orxonox/objects/quest/ChangeQuestStatus.h

  • code/branches/bugger/src/orxonox/objects/quest/CompleteQuest.cc

  • code/branches/bugger/src/orxonox/objects/quest/CompleteQuest.h

  • code/branches/bugger/src/orxonox/objects/quest/FailQuest.cc

  • code/branches/bugger/src/orxonox/objects/quest/FailQuest.h

  • code/branches/bugger/src/orxonox/objects/quest/GlobalQuest.cc

  • code/branches/bugger/src/orxonox/objects/quest/GlobalQuest.h

  • code/branches/bugger/src/orxonox/objects/quest/LocalQuest.cc

  • code/branches/bugger/src/orxonox/objects/quest/LocalQuest.h

  • code/branches/bugger/src/orxonox/objects/quest/Quest.cc

  • code/branches/bugger/src/orxonox/objects/quest/Quest.h

  • code/branches/bugger/src/orxonox/objects/quest/QuestDescription.cc

  • code/branches/bugger/src/orxonox/objects/quest/QuestDescription.h

  • code/branches/bugger/src/orxonox/objects/quest/QuestEffect.cc

  • code/branches/bugger/src/orxonox/objects/quest/QuestEffect.h

  • code/branches/bugger/src/orxonox/objects/quest/QuestHint.cc

  • code/branches/bugger/src/orxonox/objects/quest/QuestHint.h

  • code/branches/bugger/src/orxonox/objects/quest/QuestItem.cc

  • code/branches/bugger/src/orxonox/objects/quest/QuestItem.h

  • code/branches/bugger/src/orxonox/objects/quest/QuestManager.cc

  • code/branches/bugger/src/orxonox/objects/quest/QuestManager.h

  • code/branches/bugger/src/orxonox/objects/quest/Rewardable.cc

  • code/branches/bugger/src/orxonox/objects/quest/Rewardable.h

  • code/branches/bugger/src/orxonox/objects/weaponSystem/WeaponSystem.cc

  • code/branches/bugger/src/orxonox/objects/weaponSystem/WeaponSystem.h

  • code/branches/bugger/src/orxonox/objects/worldentities/Backlight.cc

    r2530 r2531  
    109109    void Backlight::registerVariables()
    110110    {
    111         REGISTERDATA  (this->width_,         direction::toclient, new NetworkCallback<Backlight>(this, &Backlight::update_width));
    112         REGISTERDATA  (this->lifetime_,      direction::toclient, new NetworkCallback<Backlight>(this, &Backlight::update_lifetime));
    113         REGISTERDATA  (this->length_,        direction::toclient, new NetworkCallback<Backlight>(this, &Backlight::update_length));
    114         REGISTERDATA  (this->maxelements_,   direction::toclient, new NetworkCallback<Backlight>(this, &Backlight::update_maxelements));
    115         REGISTERSTRING(this->trailmaterial_, direction::toclient, new NetworkCallback<Backlight>(this, &Backlight::update_trailmaterial));
     111        registerVariable  (this->width_,         variableDirection::toclient, new NetworkCallback<Backlight>(this, &Backlight::update_width));
     112        registerVariable  (this->lifetime_,      variableDirection::toclient, new NetworkCallback<Backlight>(this, &Backlight::update_lifetime));
     113        registerVariable  (this->length_,        variableDirection::toclient, new NetworkCallback<Backlight>(this, &Backlight::update_length));
     114        registerVariable  (this->maxelements_,   variableDirection::toclient, new NetworkCallback<Backlight>(this, &Backlight::update_maxelements));
     115        registerVariable  (this->trailmaterial_, variableDirection::toclient, new NetworkCallback<Backlight>(this, &Backlight::update_trailmaterial));
    116116    }
    117117
  • code/branches/bugger/src/orxonox/objects/worldentities/Backlight.h

  • code/branches/bugger/src/orxonox/objects/worldentities/Billboard.cc

    r2254 r2531  
    6767    void Billboard::registerVariables()
    6868    {
    69         REGISTERSTRING(this->material_, direction::toclient, new NetworkCallback<Billboard>(this, &Billboard::changedMaterial));
    70         REGISTERDATA  (this->colour_,   direction::toclient, new NetworkCallback<Billboard>(this, &Billboard::changedColour));
     69        registerVariable(this->material_, variableDirection::toclient, new NetworkCallback<Billboard>(this, &Billboard::changedMaterial));
     70        registerVariable(this->colour_,   variableDirection::toclient, new NetworkCallback<Billboard>(this, &Billboard::changedColour));
    7171    }
    7272
  • code/branches/bugger/src/orxonox/objects/worldentities/Camera.cc

  • code/branches/bugger/src/orxonox/objects/worldentities/Camera.h

  • code/branches/bugger/src/orxonox/objects/worldentities/ControllableEntity.cc

    r2478 r2531  
    238238            {
    239239                this->client_overwrite_ = this->server_overwrite_;
    240                 this->setObjectMode(direction::bidirectional);
     240                this->setObjectMode(objectDirection::bidirectional);
    241241            }
    242242        }
     
    252252        this->bHasLocalController_ = false;
    253253        this->bHasHumanController_ = false;
    254         this->setObjectMode(direction::toclient);
     254        this->setObjectMode(objectDirection::toclient);
    255255
    256256        if (this->bDestroyWhenPlayerLeft_)
     
    345345    void ControllableEntity::registerVariables()
    346346    {
    347         REGISTERSTRING(this->cameraPositionTemplate_, direction::toclient);
    348         REGISTERSTRING(this->hudtemplate_, direction::toclient);
    349 
    350         REGISTERDATA(this->client_overwrite_,   direction::toserver);
    351 
    352         REGISTERDATA(this->server_position_,    direction::toclient, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processServerPosition));
    353         REGISTERDATA(this->server_velocity_,    direction::toclient, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processServerVelocity));
    354         REGISTERDATA(this->server_orientation_, direction::toclient, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processServerOrientation));
    355         REGISTERDATA(this->server_overwrite_,   direction::toclient, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processOverwrite));
    356 
    357         REGISTERDATA(this->client_position_,    direction::toserver, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processClientPosition));
    358         REGISTERDATA(this->client_velocity_,    direction::toserver, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processClientVelocity));
    359         REGISTERDATA(this->client_orientation_, direction::toserver, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processClientOrientation));
    360 
    361 
    362         REGISTERDATA(this->playerID_, direction::toclient, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::networkcallback_changedplayerID));
    363         REGISTERDATA(this->gtinfoID_, direction::toclient, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::networkcallback_changedgtinfoID));
     347        registerVariable(this->cameraPositionTemplate_, variableDirection::toclient);
     348        registerVariable(this->hudtemplate_, variableDirection::toclient);
     349
     350        registerVariable(this->client_overwrite_,   variableDirection::toserver);
     351         
     352        registerVariable(this->server_position_,    variableDirection::toclient, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processServerPosition));
     353        registerVariable(this->server_velocity_,    variableDirection::toclient, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processServerVelocity));
     354        registerVariable(this->server_orientation_, variableDirection::toclient, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processServerOrientation));
     355        registerVariable(this->server_overwrite_,   variableDirection::toclient, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processOverwrite));
     356 
     357        registerVariable(this->client_position_,    variableDirection::toserver, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processClientPosition));
     358        registerVariable(this->client_velocity_,    variableDirection::toserver, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processClientVelocity));
     359        registerVariable(this->client_orientation_, variableDirection::toserver, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::processClientOrientation));
     360 
     361 
     362        registerVariable(this->playerID_, variableDirection::toclient, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::networkcallback_changedplayerID));
     363        registerVariable(this->gtinfoID_, variableDirection::toclient, new NetworkCallback<ControllableEntity>(this, &ControllableEntity::networkcallback_changedgtinfoID));
    364364    }
    365365
  • code/branches/bugger/src/orxonox/objects/worldentities/ExplosionChunk.cc

    r2422 r2531  
    9191    void ExplosionChunk::registerVariables()
    9292    {
    93         REGISTERDATA(this->LOD_,   direction::toclient, new NetworkCallback<ExplosionChunk>(this, &ExplosionChunk::LODchanged));
    94         REGISTERDATA(this->bStop_, direction::toclient, new NetworkCallback<ExplosionChunk>(this, &ExplosionChunk::checkStop));
     93        registerVariable((int&)this->LOD_,   variableDirection::toclient, new NetworkCallback<ExplosionChunk>(this, &ExplosionChunk::LODchanged));
     94        registerVariable(this->bStop_, variableDirection::toclient, new NetworkCallback<ExplosionChunk>(this, &ExplosionChunk::checkStop));
    9595    }
    9696
  • code/branches/bugger/src/orxonox/objects/worldentities/FadingBillboard.cc

    r2361 r2531  
    6666    void FadingBillboard::registerVariables()
    6767    {
    68         REGISTERDATA(this->turnontime_,         direction::toclient);
    69         REGISTERDATA(this->turnofftime_,        direction::toclient);
     68        registerVariable(this->turnontime_,         variableDirection::toclient);
     69        registerVariable(this->turnofftime_,        variableDirection::toclient);
    7070    }
    7171
  • code/branches/bugger/src/orxonox/objects/worldentities/Light.cc

    r2447 r2531  
    103103    void Light::registerVariables()
    104104    {
    105         REGISTERDATA(this->type_,           direction::toclient, new NetworkCallback<Light>(this, &Light::updateType));
    106         REGISTERDATA(this->diffuse_,        direction::toclient, new NetworkCallback<Light>(this, &Light::updateDiffuseColour));
    107         REGISTERDATA(this->specular_,       direction::toclient, new NetworkCallback<Light>(this, &Light::updateSpecularColour));
    108         REGISTERDATA(this->attenuation_,    direction::toclient, new NetworkCallback<Light>(this, &Light::updateAttenuation));
    109         REGISTERDATA(this->spotlightRange_, direction::toclient, new NetworkCallback<Light>(this, &Light::updateSpotlightRange));
     105        registerVariable((int &)this->type_,    variableDirection::toclient, new NetworkCallback<Light>(this, &Light::updateType));
     106        registerVariable(this->diffuse_,        variableDirection::toclient, new NetworkCallback<Light>(this, &Light::updateDiffuseColour));
     107        registerVariable(this->specular_,       variableDirection::toclient, new NetworkCallback<Light>(this, &Light::updateSpecularColour));
     108        registerVariable(this->attenuation_,    variableDirection::toclient, new NetworkCallback<Light>(this, &Light::updateAttenuation));
     109        registerVariable(this->spotlightRange_, variableDirection::toclient, new NetworkCallback<Light>(this, &Light::updateSpotlightRange));
    110110    }
    111111
  • code/branches/bugger/src/orxonox/objects/worldentities/Model.cc

    r2447 r2531  
    4040    Model::Model(BaseObject* creator) : PositionableEntity(creator)
    4141    {
     42        static unsigned int i=10;
    4243        RegisterObject(Model);
    4344
     
    4546
    4647        this->registerVariables();
     48        this->setObjectPriority(i++);
    4749    }
    4850
     
    6365    void Model::registerVariables()
    6466    {
    65         REGISTERSTRING(this->meshSrc_,    direction::toclient, new NetworkCallback<Model>(this, &Model::changedMesh));
    66         REGISTERDATA(this->bCastShadows_, direction::toclient, new NetworkCallback<Model>(this, &Model::changedShadows));
     67        registerVariable(this->meshSrc_,    variableDirection::toclient, new NetworkCallback<Model>(this, &Model::changedMesh));
     68        registerVariable(this->bCastShadows_, variableDirection::toclient, new NetworkCallback<Model>(this, &Model::changedShadows));
    6769    }
    6870
  • code/branches/bugger/src/orxonox/objects/worldentities/MovableEntity.cc

    r2422 r2531  
    8585    void MovableEntity::registerVariables()
    8686    {
    87         REGISTERDATA(this->velocity_.x, direction::toclient);
    88         REGISTERDATA(this->velocity_.y, direction::toclient);
    89         REGISTERDATA(this->velocity_.z, direction::toclient);
    90 
    91         REGISTERDATA(this->rotationAxis_.x, direction::toclient);
    92         REGISTERDATA(this->rotationAxis_.y, direction::toclient);
    93         REGISTERDATA(this->rotationAxis_.z, direction::toclient);
    94 
    95         REGISTERDATA(this->rotationRate_, direction::toclient);
    96 
    97         REGISTERDATA(this->overwrite_position_,    direction::toclient, new NetworkCallback<MovableEntity>(this, &MovableEntity::overwritePosition));
    98         REGISTERDATA(this->overwrite_orientation_, direction::toclient, new NetworkCallback<MovableEntity>(this, &MovableEntity::overwriteOrientation));
     87        registerVariable(this->velocity_.x, variableDirection::toclient);
     88        registerVariable(this->velocity_.y, variableDirection::toclient);
     89        registerVariable(this->velocity_.z, variableDirection::toclient);
     90 
     91        registerVariable(this->rotationAxis_.x, variableDirection::toclient);
     92        registerVariable(this->rotationAxis_.y, variableDirection::toclient);
     93        registerVariable(this->rotationAxis_.z, variableDirection::toclient);
     94 
     95        registerVariable(this->rotationRate_, variableDirection::toclient);
     96 
     97        registerVariable(this->overwrite_position_,    variableDirection::toclient, new NetworkCallback<MovableEntity>(this, &MovableEntity::overwritePosition));
     98        registerVariable(this->overwrite_orientation_, variableDirection::toclient, new NetworkCallback<MovableEntity>(this, &MovableEntity::overwriteOrientation));
    9999    }
    100100
  • code/branches/bugger/src/orxonox/objects/worldentities/ParticleEmitter.cc

    r2414 r2531  
    7575    void ParticleEmitter::registerVariables()
    7676    {
    77         REGISTERSTRING(this->source_, direction::toclient, new NetworkCallback<ParticleEmitter>(this, &ParticleEmitter::sourceChanged));
    78         REGISTERDATA  (this->LOD_,    direction::toclient, new NetworkCallback<ParticleEmitter>(this, &ParticleEmitter::LODchanged));
     77        registerVariable(this->source_, variableDirection::toclient, new NetworkCallback<ParticleEmitter>(this, &ParticleEmitter::sourceChanged));
     78        registerVariable((int&)(this->LOD_),    variableDirection::toclient, new NetworkCallback<ParticleEmitter>(this, &ParticleEmitter::LODchanged));
    7979    }
    8080
  • code/branches/bugger/src/orxonox/objects/worldentities/ParticleSpawner.cc

  • code/branches/bugger/src/orxonox/objects/worldentities/ParticleSpawner.h

  • code/branches/bugger/src/orxonox/objects/worldentities/PositionableEntity.cc

    r2171 r2531  
    4848    void PositionableEntity::registerVariables()
    4949    {
    50         REGISTERDATA(this->getPosition().x, direction::toclient);
    51         REGISTERDATA(this->getPosition().y, direction::toclient);
    52         REGISTERDATA(this->getPosition().z, direction::toclient);
     50        registerVariable(this->getPosition().x, variableDirection::toclient);
     51        registerVariable(this->getPosition().y, variableDirection::toclient);
     52        registerVariable(this->getPosition().z, variableDirection::toclient);
    5353
    54         REGISTERDATA(this->getOrientation().w, direction::toclient);
    55         REGISTERDATA(this->getOrientation().x, direction::toclient);
    56         REGISTERDATA(this->getOrientation().y, direction::toclient);
    57         REGISTERDATA(this->getOrientation().z, direction::toclient);
     54        registerVariable(this->getOrientation().w, variableDirection::toclient);
     55        registerVariable(this->getOrientation().x, variableDirection::toclient);
     56        registerVariable(this->getOrientation().y, variableDirection::toclient);
     57        registerVariable(this->getOrientation().z, variableDirection::toclient);
    5858    }
    5959}
  • code/branches/bugger/src/orxonox/objects/worldentities/WorldEntity.cc

    r2478 r2531  
    105105    void WorldEntity::registerVariables()
    106106    {
    107         REGISTERSTRING(this->mainStateName_, direction::toclient, new NetworkCallback<WorldEntity>(this, &WorldEntity::changedMainState));
     107        registerVariable(this->mainStateName_, variableDirection::toclient, new NetworkCallback<WorldEntity>(this, &WorldEntity::changedMainState));
    108108
    109         REGISTERDATA(this->bActive_,  direction::toclient, new NetworkCallback<WorldEntity>(this, &WorldEntity::changedActivity));
    110         REGISTERDATA(this->bVisible_, direction::toclient, new NetworkCallback<WorldEntity>(this, &WorldEntity::changedVisibility));
    111 
    112         REGISTERDATA(this->getScale3D().x, direction::toclient);
    113         REGISTERDATA(this->getScale3D().y, direction::toclient);
    114         REGISTERDATA(this->getScale3D().z, direction::toclient);
    115 
    116         REGISTERDATA(this->parentID_, direction::toclient, new NetworkCallback<WorldEntity>(this, &WorldEntity::updateParent));
     109        registerVariable(this->bActive_,  variableDirection::toclient, new NetworkCallback<WorldEntity>(this, &WorldEntity::changedActivity));
     110        registerVariable(this->bVisible_, variableDirection::toclient, new NetworkCallback<WorldEntity>(this, &WorldEntity::changedVisibility));
     111 
     112        registerVariable(this->getScale3D().x, variableDirection::toclient);
     113        registerVariable(this->getScale3D().y, variableDirection::toclient);
     114        registerVariable(this->getScale3D().z, variableDirection::toclient);
     115 
     116        registerVariable(this->parentID_, variableDirection::toclient, new NetworkCallback<WorldEntity>(this, &WorldEntity::updateParent));
    117117    }
    118118
  • code/branches/bugger/src/orxonox/objects/worldentities/WorldEntity.h

    r2478 r2531  
    3636#include <OgreSceneNode.h>
    3737
    38 #include "network/Synchronisable.h"
     38#include "network/synchronisable/Synchronisable.h"
    3939#include "core/BaseObject.h"
    4040#include "util/Math.h"
  • code/branches/bugger/src/orxonox/objects/worldentities/pawns/Pawn.cc

    r2530 r2531  
    9999    void Pawn::registerVariables()
    100100    {
    101         REGISTERDATA(this->bAlive_, direction::toclient);
    102         REGISTERDATA(this->health_, direction::toclient);
    103         REGISTERDATA(this->initialHealth_, direction::toclient);
     101        registerVariable(this->bAlive_, variableDirection::toclient);
     102        registerVariable(this->health_, variableDirection::toclient);
     103        registerVariable(this->initialHealth_, variableDirection::toclient);
    104104    }
    105105
  • code/branches/bugger/src/orxonox/objects/worldentities/pawns/SpaceShip.cc

    r2478 r2531  
    8585    void SpaceShip::registerVariables()
    8686    {
    87         REGISTERDATA(this->maxRotation_,             direction::toclient);
    88         REGISTERDATA(this->rotationAcceleration_,    direction::toclient);
    89         REGISTERDATA(this->translationDamping_,      direction::toclient);
     87        registerVariable(this->maxRotation_,             variableDirection::toclient);
     88        registerVariable(this->rotationAcceleration_,    variableDirection::toclient);
     89        registerVariable(this->translationDamping_,      variableDirection::toclient);
    9090    }
    9191
  • code/branches/bugger/src/orxonox/objects/worldentities/pawns/Spectator.cc

    r2478 r2531  
    9191    void Spectator::registerVariables()
    9292    {
    93         REGISTERDATA(this->bGreetingFlareVisible_, direction::toclient, new NetworkCallback<Spectator>(this, &Spectator::changedFlareVisibility));
    94         REGISTERDATA(this->bGreeting_,             direction::toserver, new NetworkCallback<Spectator>(this, &Spectator::changedGreeting));
     93        registerVariable(this->bGreetingFlareVisible_, variableDirection::toclient, new NetworkCallback<Spectator>(this, &Spectator::changedFlareVisibility));
     94        registerVariable(this->bGreeting_,             variableDirection::toserver, new NetworkCallback<Spectator>(this, &Spectator::changedGreeting));
    9595    }
    9696
  • code/branches/bugger/src/orxonox/objects/worldentities/triggers/DistanceTrigger.cc

  • code/branches/bugger/src/orxonox/objects/worldentities/triggers/DistanceTrigger.h

  • code/branches/bugger/src/orxonox/objects/worldentities/triggers/Trigger.cc

  • code/branches/bugger/src/orxonox/objects/worldentities/triggers/Trigger.h

  • code/branches/bugger/src/tolua/tolua-5.1.pkg

  • code/branches/bugger/src/util

  • code/branches/bugger/src/util/Exception.cc

  • code/branches/bugger/src/util/Exception.h

  • code/branches/bugger/src/util/SignalHandler.cc

  • code/branches/bugger/src/util/SignalHandler.h

  • code/branches/bugger/src/util/mbool.h

    r2171 r2531  
    3636    struct _UtilExport mbool
    3737    {
     38//        friend Synchronisable::registerVariable<>()
    3839        public:
    3940            inline mbool(bool value = false)
     
    6768            inline bool operator!() const
    6869                { return (!this->value_.bool_); }
     70           
     71            inline unsigned char& getMemory(){ return value_.memory_; }
    6972
    7073        private:
  • code/branches/bugger/visual_studio/vc8/audio.vsprops

  • code/branches/bugger/visual_studio/vc8/base.vsprops

  • code/branches/bugger/visual_studio/vc8/ceguilua.vsprops

  • code/branches/bugger/visual_studio/vc8/core.vsprops

  • code/branches/bugger/visual_studio/vc8/cpptcl.vsprops

  • code/branches/bugger/visual_studio/vc8/debug.vsprops

  • code/branches/bugger/visual_studio/vc8/lua.vsprops

  • code/branches/bugger/visual_studio/vc8/network.vcproj

    r2087 r2531  
    197197                        </File>
    198198                        <File
    199                                 RelativePath="..\..\src\network\Synchronisable.cc"
     199                                RelativePath="..\..\src\network\TrafficControl.cc"
    200200                                >
    201201                        </File>
     
    229229                                <File
    230230                                        RelativePath="..\..\src\network\packet\Welcome.cc"
     231                                        >
     232                                </File>
     233                        </Filter>
     234                        <Filter
     235                                Name="synchronisable"
     236                                >
     237                                <File
     238                                        RelativePath="..\..\src\network\synchronisable\NetworkCallbackManager.cc"
     239                                        >
     240                                </File>
     241                                <File
     242                                        RelativePath="..\..\src\network\synchronisable\Synchronisable.cc"
     243                                        >
     244                                </File>
     245                                <File
     246                                        RelativePath="..\..\src\network\synchronisable\SynchronisableSpecialisations.cc"
     247                                        >
     248                                </File>
     249                                <File
     250                                        RelativePath="..\..\src\network\synchronisable\SynchronisableVariable.cc"
    231251                                        >
    232252                                </File>
     
    279299                        </File>
    280300                        <File
    281                                 RelativePath="..\..\src\network\NetworkCallback.h"
    282                                 >
    283                         </File>
    284                         <File
    285301                                RelativePath="..\..\src\network\NetworkPrereqs.h"
    286302                                >
     
    292308                        <File
    293309                                RelativePath="..\..\src\network\Server.h"
    294                                 >
    295                         </File>
    296                         <File
    297                                 RelativePath="..\..\src\network\Synchronisable.h"
    298310                                >
    299311                        </File>
     
    327339                                <File
    328340                                        RelativePath="..\..\src\network\packet\Welcome.h"
     341                                        >
     342                                </File>
     343                        </Filter>
     344                        <Filter
     345                                Name="synchronisable"
     346                                >
     347                                <File
     348                                        RelativePath="..\..\src\network\synchronisable\NetworkCallback.h"
     349                                        >
     350                                </File>
     351                                <File
     352                                        RelativePath="..\..\src\network\synchronisable\NetworkCallbackManager.h"
     353                                        >
     354                                </File>
     355                                <File
     356                                        RelativePath="..\..\src\network\synchronisable\Synchronisable.h"
     357                                        >
     358                                </File>
     359                                <File
     360                                        RelativePath="..\..\src\network\synchronisable\SynchronisableVariable.h"
    329361                                        >
    330362                                </File>
  • code/branches/bugger/visual_studio/vc8/network.vsprops

  • code/branches/bugger/visual_studio/vc8/orxonox.vsprops

  • code/branches/bugger/visual_studio/vc8/orxonox_vc8.sln

  • code/branches/bugger/visual_studio/vc8/release.vsprops

  • code/branches/bugger/visual_studio/vc8/tinyxml.vcproj

  • code/branches/bugger/visual_studio/vc8/tinyxml.vsprops

  • code/branches/bugger/visual_studio/vc8/tolua.vsprops

  • code/branches/bugger/visual_studio/vc8/toluagen.vcproj

  • code/branches/bugger/visual_studio/vc8/toluagen.vsprops

  • code/branches/bugger/visual_studio/vc8/toluagen_orxonox.vcproj

  • code/branches/bugger/visual_studio/vc8/toluagen_orxonox.vsprops

  • code/branches/bugger/visual_studio/vc8/util.vsprops

Note: See TracChangeset for help on using the changeset viewer.