29        private int $commandPermission,
 
   30        private int $playerPermission,
 
   31        private int $targetActorUniqueId, 
 
   32        private array $abilityLayers
 
 
   35    public function getCommandPermission() : int{ return $this->commandPermission; }
 
   37    public function getPlayerPermission() : int{ return $this->playerPermission; }
 
   39    public function getTargetActorUniqueId() : int{ return $this->targetActorUniqueId; }
 
   47    public static function decode(ByteBufferReader $in) : self{
 
   48        $targetActorUniqueId = LE::readSignedLong($in); 
 
   49        $playerPermission = Byte::readUnsigned($in);
 
   50        $commandPermission = Byte::readUnsigned($in);
 
   53        for($i = 0, $len = Byte::readUnsigned($in); $i < $len; $i++){
 
   54            $abilityLayers[] = AbilitiesLayer::decode($in);
 
   57        return new self($commandPermission, $playerPermission, $targetActorUniqueId, $abilityLayers);
 
   60    public function encode(ByteBufferWriter $out) : void{
 
   61        LE::writeSignedLong($out, $this->targetActorUniqueId);
 
   62        Byte::writeUnsigned($out, $this->playerPermission);
 
   63        Byte::writeUnsigned($out, $this->commandPermission);
 
   65        Byte::writeUnsigned($out, count($this->abilityLayers));
 
   66        foreach($this->abilityLayers as $abilityLayer){
 
   67            $abilityLayer->encode($out);