Esempio n. 1
0
bool Move::unpackMove(BitStream *stream, const Move* basemove, bool alwaysReadAll)
{
   bool readMove = alwaysReadAll;
   if(!readMove)
   {
      readMove = stream->readFlag();
   }

   if (readMove)
   {
      pyaw = stream->readFlag() ? stream->readInt(16) : basemove->pyaw;
      ppitch = stream->readFlag() ? stream->readInt(16) : basemove->ppitch;
      proll = stream->readFlag() ? stream->readInt(16) : basemove->proll;

      px = stream->readFlag() ? stream->readInt(6) : basemove->px;
      py = stream->readFlag() ? stream->readInt(6) : basemove->py;
      pz = stream->readFlag() ? stream->readInt(6) : basemove->pz;
      freeLook = stream->readFlag();
      deviceIsKeyboardMouse = stream->readFlag();

      bool triggersDiffer = stream->readFlag();
      for (S32 i = 0; i< MaxTriggerKeys; i++)
         trigger[i] = triggersDiffer ? stream->readFlag() : basemove->trigger[i];
      unclamp();
   }

   return readMove;
}
void Move::unpack(BitStream *stream, const Move * basemove)
{
   bool alwaysReadAll = basemove!=NULL;
   if (!basemove)
      basemove=&NullMove;

   if (alwaysReadAll || stream->readFlag())
   {
      pyaw = stream->readFlag() ? stream->readInt(16) : basemove->pyaw;
      ppitch = stream->readFlag() ? stream->readInt(16) : basemove->ppitch;
      proll = stream->readFlag() ? stream->readInt(16) : basemove->proll;

      px = stream->readFlag() ? stream->readInt(6) : basemove->px;
      py = stream->readFlag() ? stream->readInt(6) : basemove->py;
      pz = stream->readFlag() ? stream->readInt(6) : basemove->pz;
      freeLook = stream->readFlag();
      deviceIsKeyboardMouse = stream->readFlag();

      bool triggersDiffer = stream->readFlag();
      for (S32 i = 0; i< MaxTriggerKeys; i++)
         trigger[i] = triggersDiffer ? stream->readFlag() : basemove->trigger[i];
      unclamp();
   }
   else
      *this = *basemove;
}
Esempio n. 3
0
void Move::clamp()
{
   // If yaw/pitch/roll goes equal or greater than -PI/+PI it 
   // flips the direction of the rotation... we protect against
   // that by clamping before the conversion.
            
   yaw   = clampAngleClamp( yaw );
   pitch = clampAngleClamp( pitch );
   roll  = clampAngleClamp( roll );

   // angles are all 16 bit.
   pyaw = FANG2IANG(yaw);
   ppitch = FANG2IANG(pitch);
   proll = FANG2IANG(roll);

   px = clampRangeClamp(x);
   py = clampRangeClamp(y);
   pz = clampRangeClamp(z);
   unclamp();
}