package CharacterExport { import flash.utils.*; import GraphicExport.*; import flash.display.BitmapData; import flash.geom.*; import flash.display.Sprite; public class AnimSetExportBuilder { protected var animations:Array; protected var output:ByteArray = new ByteArray(); public function get Output():ByteArray { return output; } public static const OUTPUT_VERSION = 2; public function AnimSetExportBuilder(animations:Array) { output.endian = Endian.LITTLE_ENDIAN; this.animations = animations; output.writeUnsignedInt(OUTPUT_VERSION); output.writeUnsignedInt(animations.length); for (var i in animations) { var seq:CharacterSequence = animations[i]; output.writeUTF(seq.AvatarName); output.writeUTF(seq.AnimationName); var pieces:Array = seq.Exporter.Library.GetAllUsedPieces(); output.writeUnsignedInt(seq.Length); var ps:Array = seq.PieceSequences; output.writeUnsignedInt(ps.length); for (var k = 0; k < ps.length; k++) { var pieceSequence:PieceSequence = ps[k]; var piece:Piece = pieceSequence.GetPiece(); var pieceIndex = pieces.indexOf(piece); //output.writeUnsignedInt(pieceIndex); output.writeUTF(piece.Name); for (var l = 0; l < seq.Length; l++) { var info:PieceFrameInfo = pieceSequence.GetFrame(l + 1); if (info && info.Present) { output.writeBoolean(true); output.writeInt(info.Depth); var decompose = CharacterExporter.Decompose(info.Transform); output.writeDouble(decompose.rot); output.writeDouble(decompose.sx); output.writeDouble(decompose.sy); output.writeDouble(info.Transform.tx); output.writeDouble(info.Transform.ty); } else { output.writeBoolean(false); } } } } output.compress(); } } }