Esempio n. 1
0
 /**
  * @param Replay $replay
  * @param BinaryReader $br
  * @param int $frameNumber
  * @return Replication
  */
 public static function deserialize($replay, $br, $frameNumber)
 {
     $r = new self();
     $r->actorId = bindec(strrev($br->readBits(10)));
     $r->channelState = $br->readBit();
     if (!$r->channelState) {
         $replay->closeActor($r->actorId, $frameNumber);
         return $r;
     }
     $r->actorState = $br->readBit();
     if ($r->actorState) {
         // New actor
         $r->propertyFlag = $br->readBit();
         // seems to always be 0 since we are creating a new actor
         $r->actorObjectId = bindec(strrev($br->readBits(8)));
         $actor = $replay->createActor($r->actorId, $r->actorObjectId, $frameNumber);
         $actor->deserializeInit($br);
         print "Actor #{$actor->id} {$actor->class} R:{$actor->rotator} P:{$actor->position} O:{$actor->orientation}\n";
     } else {
         // Existing actor
         print "existing actor\n";
         $actor = $replay->getActor($r->actorId);
         while ($br->readBit()) {
             $actor->updateProperty(ActorProperty::deserialize($replay, $br, $actor));
         }
     }
     return $r;
 }
Esempio n. 2
0
 /**
  * @param BinaryReader $br
  * @return Vector
  */
 public static function deserializeOrientation($br)
 {
     $p = 0;
     $y = 0;
     $r = 0;
     if ($br->readBit()) {
         $p = bindec(strrev($br->readBits(8)));
     }
     if ($br->readBit()) {
         $y = bindec(strrev($br->readBits(8)));
     }
     if ($br->readBit()) {
         $r = bindec(strrev($br->readBits(8)));
     }
     return new self($p, $y, $r);
 }
Esempio n. 3
0
 /**
  * @param Replay $replay
  * @param BinaryReader $br
  * @param int $number
  * @return Frame
  */
 public static function deserialize($replay, $br, $number)
 {
     $frame = new self($number);
     $frame->time = $br->readFloat();
     $frame->diff = $br->readFloat();
     while ($br->readBit() == 1) {
         $frame->replications[] = Replication::deserialize($replay, $br, $frame->number);
     }
     print "end\n";
     print $br->readBits(200);
     print "\n";
     return $frame;
 }