diff options
Diffstat (limited to 'source/blender/blenkernel')
-rw-r--r-- | source/blender/blenkernel/BKE_DerivedMesh.h | 3 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/DerivedMesh.c | 8 |
2 files changed, 11 insertions, 0 deletions
diff --git a/source/blender/blenkernel/BKE_DerivedMesh.h b/source/blender/blenkernel/BKE_DerivedMesh.h index ff1c04fd00d..3afd7d851cb 100644 --- a/source/blender/blenkernel/BKE_DerivedMesh.h +++ b/source/blender/blenkernel/BKE_DerivedMesh.h @@ -184,6 +184,8 @@ struct DerivedMesh { DerivedMeshType type; float auto_bump_scale; DMDirtyFlag dirty; + int totmat; /* total materials. Will be valid only before object drawing. */ + struct Material **mat; /* material array. Will be valid only before object drawing */ /* use for converting to BMesh which doesn't store bevel weight and edge crease by default */ char cd_flag; @@ -578,6 +580,7 @@ void DM_ensure_tessface(DerivedMesh *dm); void DM_update_tessface_data(DerivedMesh *dm); +void DM_update_materials(DerivedMesh *dm, struct Object *ob); /** interpolates vertex data from the vertices indexed by src_indices in the * source mesh using the given weights and stores the result in the vertex * indexed by dest_index in the dest mesh diff --git a/source/blender/blenkernel/intern/DerivedMesh.c b/source/blender/blenkernel/intern/DerivedMesh.c index 1a9ca234f8d..dcaf102ef01 100644 --- a/source/blender/blenkernel/intern/DerivedMesh.c +++ b/source/blender/blenkernel/intern/DerivedMesh.c @@ -54,6 +54,7 @@ #include "BKE_displist.h" #include "BKE_editmesh.h" #include "BKE_key.h" +#include "BKE_material.h" #include "BKE_modifier.h" #include "BKE_mesh.h" #include "BKE_mesh_mapping.h" @@ -482,6 +483,13 @@ void DM_update_tessface_data(DerivedMesh *dm) dm->dirty &= ~DM_DIRTY_TESS_CDLAYERS; } +void DM_update_materials(DerivedMesh *dm, Object *ob) +{ + dm->totmat = ob->totcol + 1; /* materials start from 1, default material is 0 */ + dm->mat = *give_matarar(ob); +} + + void DM_to_mesh(DerivedMesh *dm, Mesh *me, Object *ob, CustomDataMask mask) { /* dm might depend on me, so we need to do everything with a local copy */ |