Reign.Video.Abstraction.Mesh.Write C# (CSharp) Méthode

Write() public static méthode

public static Write ( BinaryWriter writer, SoftwareModel softwareModel, SoftwareMesh softwareMesh, bool loadColors, bool loadUVs, bool loadNormals ) : void
writer System.IO.BinaryWriter
softwareModel SoftwareModel
softwareMesh SoftwareMesh
loadColors bool
loadUVs bool
loadNormals bool
Résultat void
        public static void Write(BinaryWriter writer, SoftwareModel softwareModel, SoftwareMesh softwareMesh, bool loadColors, bool loadUVs, bool loadNormals)
        {
            List<BufferLayoutElement> elements;
            float[] vertices;
            int[] indices;
            initData(softwareMesh, loadColors, loadUVs, loadNormals, out elements, out vertices, out indices);

            // name
            writer.Write(softwareMesh.Name);

            // material
            int materialIndex = -1;
            if (softwareMesh.Material != null)
            {
                for (int i = 0; i != softwareModel.Materials.Count; ++i)
                {
                    if (softwareMesh.Material == softwareModel.Materials[i])
                    {
                        materialIndex = i;
                        break;
                    }
                }
            }
            writer.Write(materialIndex);

            // elements
            writer.Write(elements.Count);
            foreach (var element in elements)
            {
                writer.Write((int)element.Type);
                writer.Write((int)element.Usage);
                writer.Write(element.StreamIndex);
                writer.Write(element.UsageIndex);
                writer.Write(element.FloatOffset);
            }

            // vertices
            writer.Write(vertices.Length);
            foreach (var vertex in vertices)
            {
                writer.Write(vertex);
            }

            // indices
            writer.Write(indices.Length);
            foreach (var index in indices)
            {
                writer.Write(index);
            }
        }

Usage Example

Exemple #1
0
        public static void Save(Stream stream, bool compress, SoftwareModel softwareModel, bool loadColors, bool loadUVs, bool loadNormals)
        {
            var writer = new BinaryWriter(stream);

            // meta data
            writer.Write(Streams.MakeFourCC('R', 'M', 'F', 'T')); // tag
            writer.Write(1.0f);                                   // version
            writer.Write(false);                                  //compress);// TODO: add zip compression

            // frames
            writer.Write(softwareModel.FrameStart);
            writer.Write(softwareModel.FrameEnd);
            writer.Write(softwareModel.FPS);

            // materials
            writer.Write(softwareModel.Materials.Count);
            foreach (var material in softwareModel.Materials)
            {
                writer.Write(material.Name);

                // values1
                writer.Write(material.Values1.Count);
                foreach (var value in material.Values1)
                {
                    writer.Write(value.Key);
                    writer.Write(value.Value);
                }

                // values2
                writer.Write(material.Values2.Count);
                foreach (var value in material.Values2)
                {
                    writer.Write(value.Key);
                    writer.WriteVector(value.Value);
                }

                // values3
                writer.Write(material.Values3.Count);
                foreach (var value in material.Values3)
                {
                    writer.Write(value.Key);
                    writer.WriteVector(value.Value);
                }

                // values4
                writer.Write(material.Values4.Count);
                foreach (var value in material.Values4)
                {
                    writer.Write(value.Key);
                    writer.WriteVector(value.Value);
                }

                // textures
                writer.Write(material.Textures.Count);
                foreach (var texture in material.Textures)
                {
                    writer.Write(texture.Key);
                    writer.Write(texture.Value);
                }
            }

            // meshes
            writer.Write(softwareModel.Meshes.Count);
            foreach (var mesh in softwareModel.Meshes)
            {
                Mesh.Write(writer, softwareModel, mesh, loadColors, loadUVs, loadNormals);
            }

            // actions
            writer.Write(softwareModel.Actions.Count);
            foreach (var action in softwareModel.Actions)
            {
                Action.Write(writer, action);
            }

            // armatures
            writer.Write(softwareModel.Armatures.Count);
            foreach (var armature in softwareModel.Armatures)
            {
                Armature.Write(writer, armature);
            }

            // objects
            writer.Write(softwareModel.Objects.Count);
            foreach (var o in softwareModel.Objects)
            {
                Object.Write(writer, o);
            }
        }