Beispiel #1
0
        public void Save(Stream stream, bool leaveOpen)
        {
            using (var writer = new ResourceWriter(stream, leaveOpen))
            {
                if (ResourceType == ResourceType.AnimationPack)
                {
                    // For AnimationPacks we write a model file header, and then a chunk containing the pack data.
                    writer.WriteFileHeader(ResourceFileIdentifier.Model, Version, ResourceType.Model);
                    writer.WriteResourceChunk(this);
                    return;
                }

                writer.WriteFileHeader(ResourceFileIdentifier.Model, Version, ResourceType);

                switch (ResourceType)
                {
                case ResourceType.Epl:
                    // We have to write this to the file so we can remember it when we load it.
                    writer.WriteBoolean((( Epl )this).IncludesProperties);
                    break;
                }

                Write(writer);
            }
        }
Beispiel #2
0
        internal override void Write(ResourceWriter writer)
        {
            if (Textures != null)
            {
                writer.WriteResourceChunk(Textures);
            }

            if (Materials != null)
            {
                writer.WriteResourceChunk(Materials);
            }

            if (Scene != null)
            {
                writer.WriteResourceChunk(Scene);
            }

            if (ChunkType000100F9 != null)
            {
                writer.WriteResourceChunk(ChunkType000100F9);
            }

            if (ChunkType000100F8 != null)
            {
                writer.WriteResourceChunk(ChunkType000100F8);
            }

            if (AnimationPack != null)
            {
                writer.WriteResourceChunk(AnimationPack);
            }

            bool animationOnly = AnimationPack != null &&
                                 Textures == null &&
                                 Materials == null &&
                                 Scene == null &&
                                 ChunkType000100F9 == null &&
                                 ChunkType000100F8 == null;

            // end chunk is not present in gap files
            if (!animationOnly)
            {
                writer.WriteEndChunk(Version);
            }
        }
Beispiel #3
0
        public void Save(Stream stream, bool leaveOpen)
        {
            using (var writer = new ResourceWriter(stream, leaveOpen))
            {
                if (ResourceType == ResourceType.AnimationPack)
                {
                    // For AnimationPacks we write a model file header, and then a chunk containing the pack data.
                    writer.WriteFileHeader(ResourceFileIdentifier.Model, Version, ResourceType.ModelPack);
                    writer.WriteResourceChunk(this);
                    return;
                }

                writer.WriteFileHeader(ResourceFileIdentifier.Model, Version, ResourceType);

                switch (ResourceType)
                {
                case ResourceType.Epl:
                    // We have to write this to the file so we can remember it when we load it.
                    //writer.WriteBoolean( ( ( Epl ) this ).IncludesProperties );
                    break;

                case ResourceType.Node:
                    Node.WriteRecursive(writer, ( Node )this);
                    return;

                case ResourceType.ChunkType000100F8:
                {
                    var chunk = ( ChunkType000100F8 )this;
                    writer.WriteInt32(chunk.Data.Length);
                    writer.WriteBytes(chunk.Data);
                    return;
                }
                }

                WriteCore(writer);
            }
        }