void CreatePhong(Fx.ColladaPhong phong, H1.Tags.shader_model_group shader) { if (shader.BaseMap.Datum != DatumIndex.Null) { phong.Diffuse.Color = null; phong.Diffuse.Texture = CreateTexture(shader.BaseMap.Datum, 0); } phong.Specular.Color.SetColor(shader.PerpendicularTintColor, 1); }
/// <summary> /// Creates a list of datum indices for the bitmaps used in a shader /// </summary> /// <param name="shader_tag">DatumIndex of the shader to get bitmaps from</param> /// <returns></returns> protected override List <DatumIndex> GetShaderBitmaps(DatumIndex shader_datum) { Managers.TagManager shader_man = tagIndex[shader_datum]; List <DatumIndex> bitmap_datums = new List <DatumIndex>(); if (shader_man.GroupTag == Blam.Halo1.TagGroups.senv) { H1.Tags.shader_environment_group shader_senv = GetTagDefinition <H1.Tags.shader_environment_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.senv); if (shader_senv.BaseMap.Datum != DatumIndex.Null) { bitmap_datums.Add(shader_senv.BaseMap.Datum); } if (shader_senv.Flags.Test(1) && (shader_senv.BumpMap.Datum != DatumIndex.Null)) { bitmap_datums.Add(shader_senv.BumpMap.Datum); } } else if (shader_man.GroupTag == Blam.Halo1.TagGroups.soso) { H1.Tags.shader_model_group shader_soso = GetTagDefinition <H1.Tags.shader_model_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.soso); if (shader_soso.BaseMap.Datum != DatumIndex.Null) { bitmap_datums.Add(shader_soso.BaseMap.Datum); } } else if (shader_man.GroupTag == Blam.Halo1.TagGroups.schi) { H1.Tags.shader_transparent_chicago_group shader_schi = GetTagDefinition <H1.Tags.shader_transparent_chicago_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.schi); if ((shader_schi.Maps.Count > 0) && (shader_schi.Maps[0].Map.Datum != DatumIndex.Null)) { bitmap_datums.Add(shader_schi.Maps[0].Map.Datum); } } else if (shader_man.GroupTag == Blam.Halo1.TagGroups.scex) { H1.Tags.shader_transparent_chicago_extended_group shader_scex = GetTagDefinition <H1.Tags.shader_transparent_chicago_extended_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.scex); DatumIndex bitmap_datum = DatumIndex.Null; if (shader_scex._4StageMaps.Count > 0) { bitmap_datum = shader_scex._4StageMaps[0].Map.Datum; } else if (shader_scex._2StageMaps.Count > 0) { bitmap_datum = shader_scex._2StageMaps[0].Map.Datum; } if (bitmap_datum != DatumIndex.Null) { bitmap_datums.Add(bitmap_datum); } } else if (shader_man.GroupTag == Blam.Halo1.TagGroups.sotr) { H1.Tags.shader_transparent_generic_group shader_sotr = GetTagDefinition <H1.Tags.shader_transparent_generic_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.sotr); if ((shader_sotr.Maps.Count > 0) && (shader_sotr.Maps[0].Map.Datum != DatumIndex.Null)) { bitmap_datums.Add(shader_sotr.Maps[0].Map.Datum); } } else if (shader_man.GroupTag == Blam.Halo1.TagGroups.sgla) { H1.Tags.shader_transparent_glass_group shader_sgla = GetTagDefinition <H1.Tags.shader_transparent_glass_group>( shader_datum, shader_man.GroupTag, Blam.Halo1.TagGroups.sgla); if (shader_sgla.DiffuseMap.Datum != DatumIndex.Null) { bitmap_datums.Add(shader_sgla.DiffuseMap.Datum); } } return(bitmap_datums); }