Beispiel #1
0
        public MqChunk ToChunk()
        {
            baseChunk = baseChunk ?? new MqChunk();
            baseChunk.SetArguments(this.Vertices.Length.ToString());
            baseChunk.SetAttributes(new[]
            {
                new MqChunkAttribute("V", this.Vertices.Select(_ => _.ToString())),
                new MqChunkAttribute("M", this.Material.ToString()),
                this.UV == null ? null : new MqChunkAttribute("UV", this.UV.SelectMany(_ => _).Select(f => f.ToString("0.00000"))),
                this.VertexColor == null ? null : new MqChunkAttribute("COL", this.VertexColor.Select(_ => _.ToString())),
            }
                                    .Where(_ => _ != null));

            return(baseChunk);
        }
Beispiel #2
0
        public MqChunk ToChunk()
        {
            baseChunk = baseChunk ?? new MqChunk();
            baseChunk.SetArguments(this.Vertices.Length.ToString());
            baseChunk.SetAttributes(new[]
            {
                new MqChunkAttribute("V", this.Vertices.Select(_ => _.ToString())),
                new MqChunkAttribute("M", this.Material.ToString()),
                this.UV == null ? null : new MqChunkAttribute("UV", this.UV.SelectMany(_ => _).Select(f => f.ToString("0.00000"))),
                this.VertexColor == null ? null : new MqChunkAttribute("COL", this.VertexColor.Select(_ => _.ToString())),
            }
            .Where(_ => _ != null));

            return baseChunk;
        }
Beispiel #3
0
        public MqChunk ToChunk()
        {
            baseChunk      = baseChunk ?? new MqChunk();
            baseChunk.Name = "Object";
            baseChunk.SetArguments("\"" + this.Name + "\"");
            baseChunk.Child("depth").SetArguments(this.Depth.ToString());
            baseChunk.Child("folding").SetArguments(this.Folding ? "1" : "0");
            baseChunk.Child("scale").SetArguments(this.Scale.Select(_ => _.ToString("0.000000")));
            baseChunk.Child("rotation").SetArguments(this.Scale.Select(_ => _.ToString("0.000000")));
            baseChunk.Child("translation").SetArguments(this.Scale.Select(_ => _.ToString("0.000000")));

            if (this.Patch == MqPatchType.None)
            {
                baseChunk.RemoveChildren("patch");
                baseChunk.RemoveChildren("segment");
            }
            else
            {
                baseChunk.Child("patch").SetArguments(((int)this.Patch).ToString());
                baseChunk.Child("segment").SetArguments(this.Segment.ToString());
            }

            baseChunk.Child("visible").SetArguments(this.Visible ? "15" : "0");
            baseChunk.Child("locking").SetArguments(this.Locking ? "1" : "0");
            baseChunk.Child("shading").SetArguments(((int)this.Shading).ToString());
            baseChunk.Child("facet").SetArguments(this.Facet.ToString("0.0"));
            baseChunk.Child("color").SetArguments(this.Color.Select(_ => _.ToString("0.000")));
            baseChunk.Child("color_type").SetArguments(this.ColorType ? "1" : "0");

            if (this.Mirror == MqMirrorType.None)
            {
                baseChunk.RemoveChildren("mirror");
            }
            else
            {
                baseChunk.Child("mirror").SetArguments(((int)this.Mirror).ToString());
                baseChunk.Child("mirror_axis").SetArguments(((int)this.MirrorAxis).ToString());
                baseChunk.Child("mirror_dis").SetArguments(this.MirrorDistance.ToString("0.000"));
            }

            if (this.Lathe == MqLatheType.None)
            {
                baseChunk.RemoveChildren("lathe");
            }
            else
            {
                baseChunk.Child("lathe").SetArguments(((int)this.Lathe).ToString());
                baseChunk.Child("lathe_axis").SetArguments(((int)this.LatheAxis).ToString());
                baseChunk.Child("lathe_seg").SetArguments(this.LatheSegments.ToString());
            }

            baseChunk.Child("vertex").SetArguments(this.Vertex.Count.ToString()).SetChildren(this.Vertex.Select(v => new MqChunk().SetArguments(v.Select(_ => _.ToString("0.0000")))));

            if (this.Weight.Any())
            {
                baseChunk.Child("vertexattr").Child("weit").SetChildren(this.Weight.Select(_ => new MqChunk().SetArguments(_.Key.ToString(), _.Value.ToString("0.000"))));
            }
            else
            {
                var attr = baseChunk.Child("vertexattr");

                attr.RemoveChildren("weit");

                if (!attr.Children.Any())
                {
                    baseChunk.RemoveChildren("vertexattr");
                }
            }

            baseChunk.Child("face").SetArguments(this.Faces.Count.ToString()).SetChildren(this.Faces.Select(_ => _.ToChunk()));

            return(baseChunk);
        }
Beispiel #4
0
        public MqChunk ToChunk()
        {
            baseChunk = baseChunk ?? new MqChunk();
            baseChunk.Name = "Object";
            baseChunk.SetArguments("\"" + this.Name + "\"");
            baseChunk.Child("depth").SetArguments(this.Depth.ToString());
            baseChunk.Child("folding").SetArguments(this.Folding ? "1" : "0");
            baseChunk.Child("scale").SetArguments(this.Scale.Select(_ => _.ToString("0.000000")));
            baseChunk.Child("rotation").SetArguments(this.Scale.Select(_ => _.ToString("0.000000")));
            baseChunk.Child("translation").SetArguments(this.Scale.Select(_ => _.ToString("0.000000")));

            if (this.Patch == MqPatchType.None)
            {
                baseChunk.RemoveChildren("patch");
                baseChunk.RemoveChildren("segment");
            }
            else
            {
                baseChunk.Child("patch").SetArguments(((int)this.Patch).ToString());
                baseChunk.Child("segment").SetArguments(this.Segment.ToString());
            }

            baseChunk.Child("visible").SetArguments(this.Visible ? "15" : "0");
            baseChunk.Child("locking").SetArguments(this.Locking ? "1" : "0");
            baseChunk.Child("shading").SetArguments(((int)this.Shading).ToString());
            baseChunk.Child("facet").SetArguments(this.Facet.ToString("0.0"));
            baseChunk.Child("color").SetArguments(this.Color.Select(_ => _.ToString("0.000")));
            baseChunk.Child("color_type").SetArguments(this.ColorType ? "1" : "0");

            if (this.Mirror == MqMirrorType.None)
                baseChunk.RemoveChildren("mirror");
            else
            {
                baseChunk.Child("mirror").SetArguments(((int)this.Mirror).ToString());
                baseChunk.Child("mirror_axis").SetArguments(((int)this.MirrorAxis).ToString());
                baseChunk.Child("mirror_dis").SetArguments(this.MirrorDistance.ToString("0.000"));
            }

            if (this.Lathe == MqLatheType.None)
                baseChunk.RemoveChildren("lathe");
            else
            {
                baseChunk.Child("lathe").SetArguments(((int)this.Lathe).ToString());
                baseChunk.Child("lathe_axis").SetArguments(((int)this.LatheAxis).ToString());
                baseChunk.Child("lathe_seg").SetArguments(this.LatheSegments.ToString());
            }

            baseChunk.Child("vertex").SetArguments(this.Vertex.Count.ToString()).SetChildren(this.Vertex.Select(v => new MqChunk().SetArguments(v.Select(_ => _.ToString("0.0000")))));

            if (this.Weight.Any())
                baseChunk.Child("vertexattr").Child("weit").SetChildren(this.Weight.Select(_ => new MqChunk().SetArguments(_.Key.ToString(), _.Value.ToString("0.000"))));
            else
            {
                var attr = baseChunk.Child("vertexattr");

                attr.RemoveChildren("weit");

                if (!attr.Children.Any())
                    baseChunk.RemoveChildren("vertexattr");
            }

            baseChunk.Child("face").SetArguments(this.Faces.Count.ToString()).SetChildren(this.Faces.Select(_ => _.ToChunk()));

            return baseChunk;
        }