public override void Write <TItem>(TItem obj, BinaryWriter writer, HashWriter hashWriter)
        {
            if (obj is PrimitiveData primitiveData)
            {
                if (!primitiveData.Use3DMesh)
                {
                    // don't write animation if not using 3d mesh
                    return;
                }

                for (var i = 0; i < primitiveData.Mesh.AnimationFrames.Count; i++)
                {
                    var animationData = SerializeAnimation(primitiveData.Mesh.AnimationFrames[i]);
                    var data          = IsCompressed ? BiffZlib.Compress(animationData) : animationData;
                    WriteStart(writer, 4, hashWriter, "M3AY");
                    writer.Write(data.Length);
                    WriteStart(writer, data.Length, hashWriter);
                    writer.Write(data);
                    hashWriter?.Write(data);
                }
            }
            else
            {
                throw new InvalidOperationException("Unknown type for [" + GetType().Name + "] on field \"" + Name + "\".");
            }
        }
예제 #2
0
 public override void Write <TItem>(TItem obj, BinaryWriter writer, HashWriter hashWriter)
 {
     if (obj is PrimitiveData primitiveData)
     {
         if (!primitiveData.Use3DMesh)
         {
             return;
         }
         var indexData = SerializeIndices(primitiveData);
         var data      = IsCompressed ? BiffZlib.Compress(indexData) : indexData;
         WriteStart(writer, data.Length, hashWriter);
         writer.Write(data);
         hashWriter?.Write(data);
     }
     else
     {
         throw new InvalidOperationException("Unknown type for [" + GetType().Name + "] on field \"" + Name + "\".");
     }
 }