Modifiers: Simple Deform & Build, DerivedMesh → Mesh
This commit introduces `EditMeshData`. The fields in this struct are extracted from `EditDerivedBMesh` into their own struct `EditMeshData`, which can then also be used by the `Mesh` struct. This allows passing deformed vertices efficiently to the draw routines. The modifier code constructs a new Mesh instead of writing to ob->data; even when ob->data is a CoW copy, it can still be used by different objects and thus shouldn't be modified by a modifier.
This commit is contained in:
@@ -34,9 +34,11 @@
|
||||
|
||||
#include "DNA_image_types.h"
|
||||
#include "DNA_meshdata_types.h"
|
||||
#include "DNA_mesh_types.h"
|
||||
#include "DNA_modifier_types.h"
|
||||
#include "DNA_object_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
#include "DNA_scene_types.h"
|
||||
|
||||
#include "BLI_utildefines.h"
|
||||
#include "BLI_math_vector.h"
|
||||
@@ -229,6 +231,20 @@ void modifier_get_vgroup(Object *ob, DerivedMesh *dm, const char *name, MDeformV
|
||||
}
|
||||
}
|
||||
|
||||
/* TODO(sybren): replace the above function with this one, once we got rid of DerivedMesh for modifiers. */
|
||||
void modifier_get_vgroup_mesh(Object *ob, struct Mesh *mesh, const char *name, MDeformVert **dvert, int *defgrp_index)
|
||||
{
|
||||
*defgrp_index = defgroup_name_index(ob, name);
|
||||
*dvert = NULL;
|
||||
|
||||
if (*defgrp_index != -1) {
|
||||
if (ob->type == OB_LATTICE)
|
||||
*dvert = BKE_lattice_deform_verts_get(ob);
|
||||
else if (mesh)
|
||||
*dvert = mesh->dvert;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* only called by BKE_modifier.h/modifier.c */
|
||||
void modifier_type_init(ModifierTypeInfo *types[])
|
||||
|
Reference in New Issue
Block a user