Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 6788 in orxonox.OLD for branches/network/src/world_entities


Ignore:
Timestamp:
Jan 27, 2006, 12:21:33 PM (19 years ago)
Author:
rennerc
Message:

redesigned spaceship sync
fixed bug in syncmacro

Location:
branches/network/src/world_entities/space_ships
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/network/src/world_entities/space_ships/space_ship.cc

    r6784 r6788  
    133133  this->getWeaponManager()->changeWeaponConfig(1);
    134134
    135   EventHandler::getInstance()->grabEvents(true);
     135  //EventHandler::getInstance()->grabEvents(true);
    136136
    137137  bUp = bDown = bLeft = bRight = bAscend = bDescend = bRollL = bRollR = false;
     
    551551#define DATA_flags       2
    552552#define DATA_mouse       3
     553#define DATA_sync        4
    553554
    554555int SpaceShip::writeBytes( const byte * data, int length, int sender )
     
    558559  byte b;
    559560 
    560   if ( SYNCHELP_READ_REMAINING()>0 && SYNCHELP_READ_NEXTBYTE() == DATA_state /*&& (this->getHostID()!=this->getOwner() || sender==0)*/ )
    561   {
    562     PRINTF(0)("GOT STATE %d\n", this->getUniqueID());
    563     setRequestedSync( false );
    564     setIsOutOfSync( false );
    565     SYNCHELP_READ_FKT( WorldEntity::writeState, NWT_SS_WE_STATE );
    566      //SYNCHELP_READ_FLOAT( cycle );
    567 
    568     return SYNCHELP_READ_N;
    569   }
    570  
    571   if ( this->getOwner() != this->getHostID() )
    572     SYNCHELP_READ_FKT( PNode::writeSync, NWT_SS_PN_SYNC );
    573 
    574561  while ( SYNCHELP_READ_REMAINING()>0 )
    575562  {
    576563    SYNCHELP_READ_BYTE( b, NWT_SS_B );
    577 
    578     //TODO: do not recieve data if you are the owner
    579     if ( b == DATA_flags /*&& this->getHostID()!=this->getOwner()*/ )
     564   
     565    if ( b == DATA_state )
     566    {
     567      setRequestedSync( false );
     568      setIsOutOfSync( false );
     569      SYNCHELP_READ_FKT( WorldEntity::writeState, NWT_SS_WE_STATE );
     570
     571      continue;
     572    }
     573   
     574    if ( b == DATA_flags )
    580575    {
    581576      int flags = 0;
     
    591586      bRollL = (flags & MASK_bRollL) != 0;
    592587      bRollR = (flags & MASK_bRollR) != 0;
    593 
    594     }
    595 
    596     //TODO: do not recieve data if you are the owner
    597     if ( b == DATA_mouse /*&& this->getHostID()!=this->getOwner()*/ )
     588     
     589      continue;
     590    }
     591   
     592    if ( b == DATA_mouse )
    598593    {
    599594      SYNCHELP_READ_FLOAT( mouseDir.w, NWT_SS_MOUSEDIRW );
     
    601596      SYNCHELP_READ_FLOAT( mouseDir.v.y, NWT_SS_MOUSEDIRY );
    602597      SYNCHELP_READ_FLOAT( mouseDir.v.z, NWT_SS_MOUSEDIRZ );
     598     
     599      continue;
     600    }
     601   
     602    if ( b == DATA_sync )
     603    {
     604      if ( this->getOwner() != this->getHostID() )
     605        SYNCHELP_READ_FKT( PNode::writeSync, NWT_SS_PN_SYNC );
     606     
     607      continue;
     608    }
     609  }
     610 
     611#if 0
     612  if ( SYNCHELP_READ_REMAINING()>0 && SYNCHELP_READ_NEXTBYTE() == DATA_state /*&& (this->getHostID()!=this->getOwner() || sender==0)*/ )
     613  {
     614    PRINTF(0)("GOT STATE %d\n", this->getUniqueID());
     615    setRequestedSync( false );
     616    setIsOutOfSync( false );
     617    SYNCHELP_READ_FKT( WorldEntity::writeState, NWT_SS_WE_STATE );
     618     //SYNCHELP_READ_FLOAT( cycle );
     619
     620    return SYNCHELP_READ_N;
     621  }
     622 
     623  if ( this->getOwner() != this->getHostID() )
     624    SYNCHELP_READ_FKT( PNode::writeSync, NWT_SS_PN_SYNC );
     625
     626  while ( SYNCHELP_READ_REMAINING()>0 )
     627  {
     628    SYNCHELP_READ_BYTE( b, NWT_SS_B );
     629
     630    //TODO: do not recieve data if you are the owner
     631    if ( b == DATA_flags /*&& this->getHostID()!=this->getOwner()*/ )
     632    {
     633      int flags = 0;
     634      SYNCHELP_READ_INT( flags, NWT_SS_FLAGS );
     635
     636      bUp = (flags & MASK_bUp) != 0;
     637      bDown = (flags & MASK_bDown) != 0;
     638      bLeft = (flags & MASK_bLeft) != 0;
     639      bRight = (flags & MASK_bRight) != 0;
     640      bAscend = (flags & MASK_bAscend) != 0;
     641      bDescend = (flags & MASK_bDescend) != 0;
     642      bFire = (flags & MASK_bFire) != 0;
     643      bRollL = (flags & MASK_bRollL) != 0;
     644      bRollR = (flags & MASK_bRollR) != 0;
     645
     646    }
     647
     648    //TODO: do not recieve data if you are the owner
     649    if ( b == DATA_mouse /*&& this->getHostID()!=this->getOwner()*/ )
     650    {
     651      SYNCHELP_READ_FLOAT( mouseDir.w, NWT_SS_MOUSEDIRW );
     652      SYNCHELP_READ_FLOAT( mouseDir.v.x, NWT_SS_MOUSEDIRX );
     653      SYNCHELP_READ_FLOAT( mouseDir.v.y, NWT_SS_MOUSEDIRY );
     654      SYNCHELP_READ_FLOAT( mouseDir.v.z, NWT_SS_MOUSEDIRZ );
    603655    }
    604656  };
    605 
    606   /*if ( b == DATA_mouse && this->getHostID()!=this->getOwner() )
    607   {
    608     SYNCHELP_READ_FLOAT( xMouse );
    609     SYNCHELP_READ_FLOAT( yMouse );
    610     SYNCHELP_READ_FLOAT( mouseSensitivity );
    611     SYNCHELP_READ_FLOAT( cycle );
    612 }*/
    613 
     657#endif
    614658  return SYNCHELP_READ_N;
    615659}
     
    645689  *reciever = 0;
    646690 
    647   if ( this->getOwner() == this->getHostID() )
     691  if ( this->getOwner() == this->getHostID() && PNode::needsReadSync() )
     692  {
     693    SYNCHELP_WRITE_BYTE( DATA_sync, NWT_SS_B );
    648694    SYNCHELP_WRITE_FKT( PNode::readSync, NWT_SS_PN_SYNC );
     695  }
    649696
    650697  if ( this->getHostID()==this->getOwner() )
     
    699746}
    700747
    701 int SpaceShip::writeState(const byte* data, int length, int sender)
    702 {
    703   SYNCHELP_READ_BEGIN();
    704  
    705   return SYNCHELP_READ_N;
    706 }
    707 
    708 int SpaceShip::readState(byte* data, int maxLength )
    709 {
    710   SYNCHELP_WRITE_BEGIN();
    711  
    712   return SYNCHELP_WRITE_N;
    713 }
    714 
    715 int SpaceShip::writeSync(const byte* data, int length, int sender)
    716 {
    717   SYNCHELP_READ_BEGIN();
    718  
    719   return SYNCHELP_READ_N;
    720 }
    721 
    722 int SpaceShip::readSync(byte* data, int maxLength )
    723 {
    724   SYNCHELP_WRITE_BEGIN();
    725  
    726   return SYNCHELP_WRITE_N;
    727 }
     748
  • branches/network/src/world_entities/space_ships/space_ship.h

    r6784 r6788  
    4444    virtual int       writeBytes(const byte* data, int length, int sender);
    4545    virtual int       readBytes(byte* data, int maxLength, int * reciever);
    46    
    47     int       writeState(const byte* data, int length, int sender);
    48     int       readState(byte* data, int maxLength );
    49     int       writeSync(const byte* data, int length, int sender);
    50     int       readSync(byte* data, int maxLength );
    51 
    5246
    5347  private:
Note: See TracChangeset for help on using the changeset viewer.