mirror of
https://github.com/MapMakersAndProgrammers/TankiOnline2.0DemoClient.git
synced 2025-10-27 02:19:07 -07:00
60 lines
2.0 KiB
ActionScript
60 lines
2.0 KiB
ActionScript
package _codec.versions.version2.a3d.animation
|
|
{
|
|
import alternativa.protocol.ICodec;
|
|
import alternativa.protocol.IProtocol;
|
|
import alternativa.protocol.ProtocolBuffer;
|
|
import alternativa.protocol.codec.OptionalCodecDecorator;
|
|
import alternativa.protocol.impl.LengthCodecHelper;
|
|
import alternativa.protocol.info.TypeCodecInfo;
|
|
import versions.version2.a3d.animation.A3D2Track;
|
|
|
|
public class VectorCodecA3D2TrackLevel1 implements ICodec
|
|
{
|
|
private var elementCodec:ICodec;
|
|
|
|
private var optionalElement:Boolean;
|
|
|
|
public function VectorCodecA3D2TrackLevel1(optionalElement:Boolean)
|
|
{
|
|
super();
|
|
this.optionalElement = optionalElement;
|
|
}
|
|
|
|
public function init(protocol:IProtocol) : void
|
|
{
|
|
this.elementCodec = protocol.getCodec(new TypeCodecInfo(A3D2Track,false));
|
|
if(this.optionalElement)
|
|
{
|
|
this.elementCodec = new OptionalCodecDecorator(this.elementCodec);
|
|
}
|
|
}
|
|
|
|
public function decode(protocolBuffer:ProtocolBuffer) : Object
|
|
{
|
|
var length:int = LengthCodecHelper.decodeLength(protocolBuffer);
|
|
var result:Vector.<A3D2Track> = new Vector.<A3D2Track>(length,true);
|
|
for(var i:int = 0; i < length; i++)
|
|
{
|
|
result[i] = A3D2Track(this.elementCodec.decode(protocolBuffer));
|
|
}
|
|
return result;
|
|
}
|
|
|
|
public function encode(protocolBuffer:ProtocolBuffer, object:Object) : void
|
|
{
|
|
if(object == null)
|
|
{
|
|
throw new Error("Object is null. Use @ProtocolOptional annotation.");
|
|
}
|
|
var data:Vector.<A3D2Track> = Vector.<A3D2Track>(object);
|
|
var length:int = int(data.length);
|
|
LengthCodecHelper.encodeLength(protocolBuffer,length);
|
|
for(var i:int = 0; i < length; i++)
|
|
{
|
|
this.elementCodec.encode(protocolBuffer,data[i]);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|