Changeset View
Changeset View
Standalone View
Standalone View
source/blender/modifiers/intern/MOD_nodes.cc
| Show First 20 Lines • Show All 1,067 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh) | static Mesh *modifyMesh(ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh) | ||||
| { | { | ||||
| GeometrySet geometry_set = GeometrySet::create_with_mesh(mesh, GeometryOwnershipType::Editable); | GeometrySet geometry_set = GeometrySet::create_with_mesh(mesh, GeometryOwnershipType::Editable); | ||||
| modifyGeometry(md, ctx, geometry_set); | modifyGeometry(md, ctx, geometry_set); | ||||
| if (ctx->flag & MOD_APPLY_TO_BASE_MESH) { | |||||
| /* In this case it makes sense to realize instances, otherwise in some cases there might be no | |||||
| * results when applying the modifier. */ | |||||
| geometry_set = blender::bke::geometry_set_realize_mesh_for_modifier(geometry_set); | |||||
| } | |||||
| Mesh *new_mesh = geometry_set.get_component_for_write<MeshComponent>().release(); | Mesh *new_mesh = geometry_set.get_component_for_write<MeshComponent>().release(); | ||||
| if (new_mesh == nullptr) { | if (new_mesh == nullptr) { | ||||
| return BKE_mesh_new_nomain(0, 0, 0, 0, 0); | return BKE_mesh_new_nomain(0, 0, 0, 0, 0); | ||||
| } | } | ||||
| return new_mesh; | return new_mesh; | ||||
| } | } | ||||
| static void modifyGeometrySet(ModifierData *md, | static void modifyGeometrySet(ModifierData *md, | ||||
| ▲ Show 20 Lines • Show All 283 Lines • Show Last 20 Lines | |||||