コード例 #1
0
        private void ShowObjectInfo()
        {
            OverviewListBox.Items.Clear();

            if (_rootMesh == null)
            {
                TriangleIndicesTextBox.Text    = "";
                PositionsTextBox.Text          = "";
                NormalsTextBox.Text            = "";
                TextureCoordinatesTextBox.Text = "";
                XamlTextBox.Text = "";
            }
            else
            {
                StringBuilder sb;
                OverviewListBox.BeginInit();

                sb = new StringBuilder();
                for (int i = 0; i < _rootMesh.Positions.Count; i++)
                {
                    sb.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, "{0,3}: {1:0.#}\r\n", i, _rootMesh.Positions[i]);
                }

                PositionsTextBox.Text = sb.ToString();


                sb = new StringBuilder();
                string oneTriangleInfo;
                int    j = 0;
                for (int i = 0; i < _rootMesh.TriangleIndices.Count; i += 3)
                {
                    try
                    {
                        oneTriangleInfo = string.Format(System.Globalization.CultureInfo.InvariantCulture,
                                                        "{0,3} ({1,2}): {2} {3} {4} ({5:0.#}) ({6:0.#}) ({7:0.#})",
                                                        j, i,
                                                        _rootMesh.TriangleIndices[i], _rootMesh.TriangleIndices[i + 1], _rootMesh.TriangleIndices[i + 2],
                                                        _rootMesh.Positions[_rootMesh.TriangleIndices[i]], _rootMesh.Positions[_rootMesh.TriangleIndices[i + 1]], _rootMesh.Positions[_rootMesh.TriangleIndices[i + 2]]);
                    }
                    catch (Exception ex)
                    {
                        oneTriangleInfo = "Error: " + ex.Message;
                    }

                    OverviewListBox.Items.Add(oneTriangleInfo);

                    sb.AppendLine(oneTriangleInfo);

                    j++;
                }

                TriangleIndicesTextBox.Text = sb.ToString();


                if (_rootMesh.Normals != null && _rootMesh.Normals.Count > 0)
                {
                    sb = new StringBuilder();
                    for (int i = 0; i < _rootMesh.Normals.Count; i++)
                    {
                        sb.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, "{0,3}: {1:0.###}\r\n", i, _rootMesh.Normals[i]);
                    }

                    NormalsTextBox.Text = sb.ToString();
                }
                else
                {
                    NormalsTextBox.Text = "No Normals defined";
                }


                if (_rootMesh.TextureCoordinates != null && _rootMesh.TextureCoordinates.Count > 0)
                {
                    sb = new StringBuilder();
                    for (int i = 0; i < _rootMesh.TextureCoordinates.Count; i++)
                    {
                        sb.AppendFormat(System.Globalization.CultureInfo.InvariantCulture, "{0,3}: {1:0.###}\r\n", i, _rootMesh.TextureCoordinates[i]);
                    }

                    TextureCoordinatesTextBox.Text = sb.ToString();
                }
                else
                {
                    TextureCoordinatesTextBox.Text = "No TextureCoordinates defined";
                }


                using (System.IO.StringWriter stringWriter = new System.IO.StringWriter())
                {
                    System.Xml.XmlWriterSettings settings;
                    settings        = new System.Xml.XmlWriterSettings();
                    settings.Indent = true;

                    using (System.Xml.XmlWriter xmlWriter = System.Xml.XmlWriter.Create(stringWriter, settings))
                    {
                        System.Windows.Markup.XamlWriter.Save(_rootModel, xmlWriter);
                    }

                    XamlTextBox.Text = stringWriter.ToString();
                }

                OverviewListBox.EndInit();
            }
        }