Skip to content

Commit

Permalink
Refactor|Material: Removed Material_AddVariant()
Browse files Browse the repository at this point in the history
Material variant creation and selection is now fully encapsulated
within material_t.
  • Loading branch information
danij-deng committed Jan 7, 2013
1 parent 3a6768e commit 0afaa11
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 17 deletions.
9 changes: 0 additions & 9 deletions doomsday/engine/include/resource/material.h
Expand Up @@ -95,15 +95,6 @@ void Material_Ticker(material_t *mat, timespan_t time);

int Material_VariantCount(material_t const *mat);

/**
* Add a new variant to the list of resources for this Material.
* Material takes ownership of the variant.
*
* @param variant Variant instance to add to the resource list.
*/
struct materialvariant_s *Material_AddVariant(material_t *mat,
struct materialvariant_s *variant);

/**
* Destroys all derived MaterialVariants linked with this Material.
*/
Expand Down
20 changes: 12 additions & 8 deletions doomsday/engine/src/resource/material.cpp
Expand Up @@ -84,6 +84,17 @@ struct material_s
}
prepared = 0;
}

/**
* Add a new variant to the list of resources for this Material.
* Material takes ownership of the variant.
*
* @param variant Variant instance to add to the list.
*/
void addVariant(de::MaterialVariant &variant)
{
variants.push_back(&variant);
}
};

namespace de {
Expand Down Expand Up @@ -572,13 +583,6 @@ void Material_SetShinyMaskTexture(material_t *mat, struct texture_s *tex)
mat->shinyMaskTex = reinterpret_cast<de::Texture *>(tex);
}

struct materialvariant_s *Material_AddVariant(material_t *mat, struct materialvariant_s *variant)
{
DENG2_ASSERT(mat && variant);
mat->variants.push_back(reinterpret_cast<MaterialVariant *>(variant));
return variant;
}

Material::Variants const &Material_Variants(material_t const *mat)
{
return mat->variants;
Expand Down Expand Up @@ -606,7 +610,7 @@ MaterialVariant *Material_ChooseVariant(material_t *mat,
if(!canCreate) return 0;

variant = new MaterialVariant(*mat, spec, *Material_Definition(mat));
Material_AddVariant(mat, reinterpret_cast<materialvariant_s *>(variant));
mat->addVariant(*variant);
}

if(smoothed)
Expand Down

0 comments on commit 0afaa11

Please sign in to comment.