Ported mesh_create_derived_view() to mesh_create_eval_final_view()

This commit is contained in:
Sybren A. Stüvel 2018-07-05 15:41:58 +02:00
parent 6807b4318f
commit b9bef10d19
3 changed files with 33 additions and 3 deletions

View File

@ -532,9 +532,6 @@ DerivedMesh *getEditDerivedBMesh(
/* same as above but wont use render settings */
DerivedMesh *mesh_create_derived(struct Mesh *me, float (*vertCos)[3]);
DerivedMesh *mesh_create_derived_view(
struct Depsgraph *depsgraph, struct Scene *scene,
struct Object *ob, CustomDataMask dataMask);
DerivedMesh *mesh_create_derived_no_deform(
struct Depsgraph *depsgraph, struct Scene *scene,
struct Object *ob, float (*vertCos)[3],

View File

@ -94,6 +94,15 @@ struct Mesh *mesh_create_eval_final_index_render(
struct Depsgraph *depsgraph, struct Scene *scene,
struct Object *ob, CustomDataMask dataMask, int index);
#ifdef USE_DERIVEDMESH
struct DerivedMesh *mesh_create_derived_view(
struct Depsgraph *depsgraph, struct Scene *scene,
struct Object *ob, CustomDataMask dataMask);
#endif
struct Mesh *mesh_create_eval_final_view(
struct Depsgraph *depsgraph, struct Scene *scene,
struct Object *ob, CustomDataMask dataMask);
void BKE_mesh_runtime_eval_to_meshkey(struct Mesh *me_deformed, struct Mesh *me, struct KeyBlock *kb);
/* Temporary? A function to give a colorband to derivedmesh for vertexcolor ranges */

View File

@ -3182,6 +3182,8 @@ struct Mesh *mesh_create_eval_final_index_render(
return final;
}
#ifdef USE_DERIVEDMESH
/* Deprecated, use `mesh_create_eval_final_view` instead. */
DerivedMesh *mesh_create_derived_view(
struct Depsgraph *depsgraph, Scene *scene,
Object *ob, CustomDataMask dataMask)
@ -3202,6 +3204,28 @@ DerivedMesh *mesh_create_derived_view(
return final;
}
#endif
Mesh *mesh_create_eval_final_view(
struct Depsgraph *depsgraph, Scene *scene,
Object *ob, CustomDataMask dataMask)
{
Mesh *final;
/* XXX hack
* psys modifier updates particle state when called during dupli-list generation,
* which can lead to wrong transforms. This disables particle system modifier execution.
*/
ob->transflag |= OB_NO_PSYS_UPDATE;
mesh_calc_modifiers(
depsgraph, scene, ob, NULL, 1, false, dataMask, -1, false, false, false,
NULL, &final);
ob->transflag &= ~OB_NO_PSYS_UPDATE;
return final;
}
DerivedMesh *mesh_create_derived_no_deform(
struct Depsgraph *depsgraph, Scene *scene, Object *ob,