void CreatePhong(Fx.ColladaPhong phong, H1.Tags.shader_transparent_chicago_group shader)
 {
     if (shader.Maps.Count > 0 && !shader.Maps[0].Map.Datum.IsNull)
     {
         phong.Diffuse.Color   = null;
         phong.Diffuse.Texture = CreateTexture(shader.Maps[0].Map.Datum, 0);
     }
 }
        /// <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);
        }