public static void AddShaderDatums(ModelInfoInternal model_info, TagManager manager)
            {
                var definition = manager.TagDefinition as Blam.Halo1.Tags.gbxmodel_group;

                for (int i = 0; i < model_info.GetGeometryCount(); i++)
                {
                    foreach (var part in definition.Geometries[model_info.GetGeometryIndex(i)].Parts)
                    {
                        model_info.AddShaderDatum(definition.Shaders[part.ShaderIndex.Value].Shader.Datum,
                                                  definition.Shaders[part.ShaderIndex.Value].Shader.ToString());
                    }
                }
            }
            public static int GetTriangleCount(ModelInfoInternal model_info, TagManager manager)
            {
                var definition = manager.TagDefinition as Blam.Halo1.Tags.gbxmodel_group;

                int triangle_count = 0;

                for (int i = 0; i < model_info.GetGeometryCount(); i++)
                {
                    foreach (var part in definition.Geometries[model_info.GetGeometryIndex(i)].Parts)
                    {
                        triangle_count += part.Triangles.Count;
                    }
                }
                return(triangle_count);
            }
            public static int GetVertexCount(ModelInfoInternal model_info, TagManager manager)
            {
                var definition = manager.TagDefinition as Blam.Halo1.Tags.gbxmodel_group;

                int vertex_count = 0;

                for (int i = 0; i < model_info.GetGeometryCount(); i++)
                {
                    foreach (var part in definition.Geometries[model_info.GetGeometryIndex(i)].Parts)
                    {
                        vertex_count += part.UncompressedVertices.Count;
                    }
                }
                return(vertex_count);
            }
        void ExportModel(string file_name)
        {
            ModelInfoInternal model_info = new ModelInfoInternal();

            List <int> added_permutations = new List <int>();

            // create an info object with all of the registered infos combined
            foreach (int index in registeredInfos)
            {
                ModelInfoInternal info = internalInfoList[index] as ModelInfoInternal;

                if (!added_permutations.Contains(info.Permutation))
                {
                    added_permutations.Add(info.Permutation);
                }

                for (int i = 0; i < info.GetShaderCount(); i++)
                {
                    model_info.AddShaderDatum(info.GetShaderDatum(i), info.GetShaderName(i));
                }
                for (int i = 0; i < info.GetGeometryCount(); i++)
                {
                    model_info.AddGeometry(info.GetGeometryName(i), info.GetGeometryIndex(i));
                }
            }

            if (added_permutations.Count == 1)
            {
                model_info.Permutation = added_permutations[0];
            }
            else
            {
                model_info.IsMultiplePermutations = true;
            }

            ColladaExportArgs arguments = new ColladaExportArgs(Overwrite, RelativeFilePath, BitmapFormat);
            var exporter = new Halo1.ColladaModelExporter(arguments, model_info, tagIndex, tagManager);

            ExportSave(exporter, RelativeFilePath + file_name + ".dae");
        }
Пример #5
0
			public static int GetTriangleCount(ModelInfoInternal model_info, TagManager manager)
			{
				var definition = manager.TagDefinition as Blam.Halo1.Tags.gbxmodel_group;

				int triangle_count = 0;
				for (int i = 0; i < model_info.GetGeometryCount(); i++)
				{
					foreach (var part in definition.Geometries[model_info.GetGeometryIndex(i)].Parts)
						triangle_count += part.Triangles.Count;
				}
				return triangle_count;
			}
Пример #6
0
			public static int GetVertexCount(ModelInfoInternal model_info, TagManager manager)
			{
				var definition = manager.TagDefinition as Blam.Halo1.Tags.gbxmodel_group;

				int vertex_count = 0;
				for (int i = 0; i < model_info.GetGeometryCount(); i++)
				{
					foreach (var part in definition.Geometries[model_info.GetGeometryIndex(i)].Parts)
						vertex_count += part.UncompressedVertices.Count;
				}
				return vertex_count;
			}
Пример #7
0
			public static void AddShaderDatums(ModelInfoInternal model_info, TagManager manager)
			{
				var definition = manager.TagDefinition as Blam.Halo1.Tags.gbxmodel_group;

				for (int i = 0; i < model_info.GetGeometryCount(); i++)
				{
					foreach (var part in definition.Geometries[model_info.GetGeometryIndex(i)].Parts)
						model_info.AddShaderDatum(definition.Shaders[part.ShaderIndex.Value].Shader.Datum,
							definition.Shaders[part.ShaderIndex.Value].Shader.ToString());
				}
			}