Mesh versions of DerivedMesh access API calls
Add mesh_get_eval_final & mesh_get_eval_deform Note: these will eventually need to be renamed & moved into BKE.
This commit is contained in:
parent
b85d5b6d52
commit
4faf9bfbe9
|
@ -534,9 +534,15 @@ void mesh_get_mapped_verts_coords(DerivedMesh *dm, float (*r_cos)[3], const int
|
|||
DerivedMesh *mesh_get_derived_final(
|
||||
struct Depsgraph *depsgraph, struct Scene *scene,
|
||||
struct Object *ob, CustomDataMask dataMask);
|
||||
struct Mesh *mesh_get_eval_final(
|
||||
struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob, CustomDataMask dataMask);
|
||||
|
||||
DerivedMesh *mesh_get_derived_deform(
|
||||
struct Depsgraph *depsgraph, struct Scene *scene,
|
||||
struct Object *ob, CustomDataMask dataMask);
|
||||
struct Mesh *mesh_get_eval_deform(
|
||||
struct Depsgraph *depsgraph, struct Scene *scene,
|
||||
struct Object *ob, CustomDataMask dataMask);
|
||||
|
||||
DerivedMesh *mesh_create_derived_for_modifier(
|
||||
struct Depsgraph *depsgraph, struct Scene *scene, struct Object *ob,
|
||||
|
|
|
@ -3108,6 +3108,7 @@ void makeDerivedMesh(
|
|||
|
||||
/***/
|
||||
|
||||
/* Deprecated DM, use: 'mesh_get_eval_final'. */
|
||||
DerivedMesh *mesh_get_derived_final(
|
||||
struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
|
||||
{
|
||||
|
@ -3127,7 +3128,27 @@ DerivedMesh *mesh_get_derived_final(
|
|||
if (ob->derivedFinal) { BLI_assert(!(ob->derivedFinal->dirty & DM_DIRTY_NORMALS)); }
|
||||
return ob->derivedFinal;
|
||||
}
|
||||
Mesh *mesh_get_eval_final(
|
||||
struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
|
||||
{
|
||||
/* if there's no evaluated mesh or the last data mask used doesn't include
|
||||
* the data we need, rebuild the derived mesh
|
||||
*/
|
||||
bool need_mapping;
|
||||
dataMask |= object_get_datamask(depsgraph, ob, &need_mapping);
|
||||
|
||||
if (!ob->derivedFinal ||
|
||||
((dataMask & ob->lastDataMask) != dataMask) ||
|
||||
(need_mapping != ob->lastNeedMapping))
|
||||
{
|
||||
mesh_build_data(depsgraph, scene, ob, dataMask, false, need_mapping);
|
||||
}
|
||||
|
||||
if (ob->runtime.mesh_eval) { BLI_assert(!(ob->runtime.mesh_eval->runtime.cd_dirty_vert & CD_MASK_NORMAL)); }
|
||||
return ob->runtime.mesh_eval;
|
||||
}
|
||||
|
||||
/* Deprecated DM, use: 'mesh_get_eval_deform' instead. */
|
||||
DerivedMesh *mesh_get_derived_deform(struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
|
||||
{
|
||||
/* if there's no derived mesh or the last data mask used doesn't include
|
||||
|
@ -3146,6 +3167,25 @@ DerivedMesh *mesh_get_derived_deform(struct Depsgraph *depsgraph, Scene *scene,
|
|||
|
||||
return ob->derivedDeform;
|
||||
}
|
||||
Mesh *mesh_get_eval_deform(struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
|
||||
{
|
||||
/* if there's no derived mesh or the last data mask used doesn't include
|
||||
* the data we need, rebuild the derived mesh
|
||||
*/
|
||||
bool need_mapping;
|
||||
|
||||
dataMask |= object_get_datamask(depsgraph, ob, &need_mapping);
|
||||
|
||||
if (!ob->runtime.mesh_deform_eval ||
|
||||
((dataMask & ob->lastDataMask) != dataMask) ||
|
||||
(need_mapping != ob->lastNeedMapping))
|
||||
{
|
||||
mesh_build_data(depsgraph, scene, ob, dataMask, false, need_mapping);
|
||||
}
|
||||
|
||||
return ob->runtime.mesh_deform_eval;
|
||||
}
|
||||
|
||||
|
||||
DerivedMesh *mesh_create_derived_render(struct Depsgraph *depsgraph, Scene *scene, Object *ob, CustomDataMask dataMask)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue