Cleanup: Use reference argument for BKE_mesh_copy_for_eval
This commit is contained in:
@@ -125,10 +125,9 @@ Mesh *BKE_mesh_new_nomain_from_template_ex(const Mesh *me_src,
|
||||
CustomData_MeshMasks mask);
|
||||
|
||||
/**
|
||||
* Performs copy for use during evaluation,
|
||||
* optional referencing original arrays to reduce memory.
|
||||
* Performs copy for use during evaluation.
|
||||
*/
|
||||
Mesh *BKE_mesh_copy_for_eval(const Mesh *source);
|
||||
Mesh *BKE_mesh_copy_for_eval(const Mesh &source);
|
||||
|
||||
/**
|
||||
* These functions construct a new Mesh,
|
||||
|
||||
@@ -1162,7 +1162,7 @@ static void cloth_update_verts(Object *ob, ClothModifierData *clmd, Mesh *mesh)
|
||||
static Mesh *cloth_make_rest_mesh(ClothModifierData *clmd, Mesh *mesh)
|
||||
{
|
||||
using namespace blender;
|
||||
Mesh *new_mesh = BKE_mesh_copy_for_eval(mesh);
|
||||
Mesh *new_mesh = BKE_mesh_copy_for_eval(*mesh);
|
||||
ClothVertex *verts = clmd->clothObject->verts;
|
||||
MutableSpan<float3> positions = mesh->vert_positions_for_write();
|
||||
|
||||
|
||||
@@ -372,7 +372,7 @@ int BKE_sculpt_get_first_deform_matrices(Depsgraph *depsgraph,
|
||||
if (deformmats.is_empty()) {
|
||||
/* NOTE: Evaluated object is re-set to its original un-deformed state. */
|
||||
Mesh *mesh = static_cast<Mesh *>(object_eval.data);
|
||||
mesh_eval = BKE_mesh_copy_for_eval(mesh);
|
||||
mesh_eval = BKE_mesh_copy_for_eval(*mesh);
|
||||
deformcos = mesh->vert_positions();
|
||||
deformmats.reinitialize(mesh->verts_num);
|
||||
deformmats.fill(blender::float3x3::identity());
|
||||
@@ -456,7 +456,7 @@ void BKE_crazyspace_build_sculpt(Depsgraph *depsgraph,
|
||||
}
|
||||
|
||||
if (mesh_eval == nullptr) {
|
||||
mesh_eval = BKE_mesh_copy_for_eval(mesh);
|
||||
mesh_eval = BKE_mesh_copy_for_eval(*mesh);
|
||||
}
|
||||
|
||||
mti->deform_verts(md, &mectx, mesh_eval, deformedVerts);
|
||||
|
||||
@@ -1916,7 +1916,7 @@ static void dynamic_paint_apply_surface_wave_cb(void *__restrict userdata,
|
||||
*/
|
||||
static Mesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd, Object *ob, Mesh *mesh)
|
||||
{
|
||||
Mesh *result = BKE_mesh_copy_for_eval(mesh);
|
||||
Mesh *result = BKE_mesh_copy_for_eval(*mesh);
|
||||
|
||||
if (pmd->canvas && !(pmd->canvas->flags & MOD_DPAINT_BAKING) &&
|
||||
pmd->type == MOD_DYNAMICPAINT_TYPE_CANVAS)
|
||||
@@ -2069,7 +2069,7 @@ static Mesh *dynamicPaint_Modifier_apply(DynamicPaintModifierData *pmd, Object *
|
||||
if (runtime_data->brush_mesh != nullptr) {
|
||||
BKE_id_free(nullptr, runtime_data->brush_mesh);
|
||||
}
|
||||
runtime_data->brush_mesh = BKE_mesh_copy_for_eval(result);
|
||||
runtime_data->brush_mesh = BKE_mesh_copy_for_eval(*result);
|
||||
}
|
||||
|
||||
return result;
|
||||
@@ -2090,7 +2090,7 @@ static void canvas_copyMesh(DynamicPaintCanvasSettings *canvas, Mesh *mesh)
|
||||
BKE_id_free(nullptr, runtime->canvas_mesh);
|
||||
}
|
||||
|
||||
runtime->canvas_mesh = BKE_mesh_copy_for_eval(mesh);
|
||||
runtime->canvas_mesh = BKE_mesh_copy_for_eval(*mesh);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -3827,7 +3827,7 @@ static void dynamicPaint_brushMeshCalculateVelocity(Depsgraph *depsgraph,
|
||||
SUBFRAME_RECURSION,
|
||||
BKE_scene_ctime_get(scene),
|
||||
eModifierType_DynamicPaint);
|
||||
mesh_p = BKE_mesh_copy_for_eval(dynamicPaint_brush_mesh_get(brush));
|
||||
mesh_p = BKE_mesh_copy_for_eval(*dynamicPaint_brush_mesh_get(brush));
|
||||
numOfVerts_p = mesh_p->verts_num;
|
||||
|
||||
float(*positions_p)[3] = reinterpret_cast<float(*)[3]>(
|
||||
@@ -4319,7 +4319,7 @@ static bool dynamicPaint_paintMesh(Depsgraph *depsgraph,
|
||||
Bounds3D mesh_bb = {{0}};
|
||||
DynamicPaintVolumeGrid *grid = bData->grid;
|
||||
|
||||
mesh = BKE_mesh_copy_for_eval(brush_mesh);
|
||||
mesh = BKE_mesh_copy_for_eval(*brush_mesh);
|
||||
blender::MutableSpan<blender::float3> positions = mesh->vert_positions_for_write();
|
||||
const blender::Span<blender::float3> vert_normals = mesh->vert_normals();
|
||||
const blender::Span<int> corner_verts = mesh->corner_verts();
|
||||
|
||||
@@ -1015,7 +1015,7 @@ static void obstacles_from_mesh(Object *coll_ob,
|
||||
float *vert_vel = nullptr;
|
||||
bool has_velocity = false;
|
||||
|
||||
Mesh *mesh = BKE_mesh_copy_for_eval(fes->mesh);
|
||||
Mesh *mesh = BKE_mesh_copy_for_eval(*fes->mesh);
|
||||
blender::MutableSpan<blender::float3> positions = mesh->vert_positions_for_write();
|
||||
|
||||
int min[3], max[3], res[3];
|
||||
@@ -2080,7 +2080,7 @@ static void emit_from_mesh(
|
||||
|
||||
/* Copy mesh for thread safety as we modify it.
|
||||
* Main issue is its VertArray being modified, then replaced and freed. */
|
||||
Mesh *mesh = BKE_mesh_copy_for_eval(ffs->mesh);
|
||||
Mesh *mesh = BKE_mesh_copy_for_eval(*ffs->mesh);
|
||||
blender::MutableSpan<blender::float3> positions = mesh->vert_positions_for_write();
|
||||
|
||||
const blender::Span<int> corner_verts = mesh->corner_verts();
|
||||
@@ -3396,7 +3396,7 @@ static Mesh *create_smoke_geometry(FluidDomainSettings *fds, Mesh *orgmesh, Obje
|
||||
|
||||
/* Just copy existing mesh if there is no content or if the adaptive domain is not being used. */
|
||||
if (fds->total_cells <= 1 || (fds->flags & FLUID_DOMAIN_USE_ADAPTIVE_DOMAIN) == 0) {
|
||||
return BKE_mesh_copy_for_eval(orgmesh);
|
||||
return BKE_mesh_copy_for_eval(*orgmesh);
|
||||
}
|
||||
|
||||
result = BKE_mesh_new_nomain(num_verts, 0, num_faces, num_faces * 4);
|
||||
@@ -3622,7 +3622,7 @@ static void fluid_modifier_processFlow(FluidModifierData *fmd,
|
||||
if (fmd->flow->mesh) {
|
||||
BKE_id_free(nullptr, fmd->flow->mesh);
|
||||
}
|
||||
fmd->flow->mesh = BKE_mesh_copy_for_eval(mesh);
|
||||
fmd->flow->mesh = BKE_mesh_copy_for_eval(*mesh);
|
||||
}
|
||||
|
||||
if (scene_framenr > fmd->time) {
|
||||
@@ -3649,7 +3649,7 @@ static void fluid_modifier_processEffector(FluidModifierData *fmd,
|
||||
if (fmd->effector->mesh) {
|
||||
BKE_id_free(nullptr, fmd->effector->mesh);
|
||||
}
|
||||
fmd->effector->mesh = BKE_mesh_copy_for_eval(mesh);
|
||||
fmd->effector->mesh = BKE_mesh_copy_for_eval(*mesh);
|
||||
}
|
||||
|
||||
if (scene_framenr > fmd->time) {
|
||||
@@ -4161,7 +4161,7 @@ Mesh *BKE_fluid_modifier_do(
|
||||
}
|
||||
|
||||
if (!result) {
|
||||
result = BKE_mesh_copy_for_eval(mesh);
|
||||
result = BKE_mesh_copy_for_eval(*mesh);
|
||||
}
|
||||
else {
|
||||
BKE_mesh_copy_parameters_for_eval(result, mesh);
|
||||
|
||||
@@ -42,7 +42,7 @@ GeometryComponentPtr MeshComponent::copy() const
|
||||
{
|
||||
MeshComponent *new_component = new MeshComponent();
|
||||
if (mesh_ != nullptr) {
|
||||
new_component->mesh_ = BKE_mesh_copy_for_eval(mesh_);
|
||||
new_component->mesh_ = BKE_mesh_copy_for_eval(*mesh_);
|
||||
new_component->ownership_ = GeometryOwnershipType::Owned;
|
||||
}
|
||||
return GeometryComponentPtr(new_component);
|
||||
@@ -89,7 +89,7 @@ Mesh *MeshComponent::get_for_write()
|
||||
{
|
||||
BLI_assert(this->is_mutable());
|
||||
if (ownership_ == GeometryOwnershipType::ReadOnly) {
|
||||
mesh_ = BKE_mesh_copy_for_eval(mesh_);
|
||||
mesh_ = BKE_mesh_copy_for_eval(*mesh_);
|
||||
ownership_ = GeometryOwnershipType::Owned;
|
||||
}
|
||||
return mesh_;
|
||||
@@ -110,7 +110,7 @@ void MeshComponent::ensure_owns_direct_data()
|
||||
BLI_assert(this->is_mutable());
|
||||
if (ownership_ != GeometryOwnershipType::Owned) {
|
||||
if (mesh_) {
|
||||
mesh_ = BKE_mesh_copy_for_eval(mesh_);
|
||||
mesh_ = BKE_mesh_copy_for_eval(*mesh_);
|
||||
}
|
||||
ownership_ = GeometryOwnershipType::Owned;
|
||||
}
|
||||
|
||||
@@ -842,10 +842,10 @@ Mesh *BKE_mesh_new_nomain_from_template(const Mesh *me_src,
|
||||
me_src, verts_num, edges_num, 0, faces_num, corners_num, CD_MASK_EVERYTHING);
|
||||
}
|
||||
|
||||
Mesh *BKE_mesh_copy_for_eval(const Mesh *source)
|
||||
Mesh *BKE_mesh_copy_for_eval(const Mesh &source)
|
||||
{
|
||||
return reinterpret_cast<Mesh *>(
|
||||
BKE_id_copy_ex(nullptr, &source->id, nullptr, LIB_ID_COPY_LOCALIZE));
|
||||
BKE_id_copy_ex(nullptr, &source.id, nullptr, LIB_ID_COPY_LOCALIZE));
|
||||
}
|
||||
|
||||
BMesh *BKE_mesh_to_bmesh_ex(const Mesh *mesh,
|
||||
|
||||
@@ -706,7 +706,7 @@ static const Curves *get_evaluated_curves_from_object(const Object *object)
|
||||
static Mesh *mesh_new_from_evaluated_curve_type_object(const Object *evaluated_object)
|
||||
{
|
||||
if (const Mesh *mesh = BKE_object_get_evaluated_mesh(evaluated_object)) {
|
||||
return BKE_mesh_copy_for_eval(mesh);
|
||||
return BKE_mesh_copy_for_eval(*mesh);
|
||||
}
|
||||
if (const Curves *curves = get_evaluated_curves_from_object(evaluated_object)) {
|
||||
const blender::bke::AnonymousAttributePropagationInfo propagation_info;
|
||||
@@ -765,7 +765,7 @@ static Mesh *mesh_new_from_mball_object(Object *object)
|
||||
return (Mesh *)BKE_id_new_nomain(ID_ME, ((ID *)object->data)->name + 2);
|
||||
}
|
||||
|
||||
return BKE_mesh_copy_for_eval(mesh_eval);
|
||||
return BKE_mesh_copy_for_eval(*mesh_eval);
|
||||
}
|
||||
|
||||
static Mesh *mesh_new_from_mesh(Object *object, const Mesh *mesh)
|
||||
|
||||
@@ -158,7 +158,7 @@ static Mesh *create_orco_mesh(const Object &ob,
|
||||
BKE_mesh_ensure_default_orig_index_customdata(orco_mesh);
|
||||
}
|
||||
else {
|
||||
orco_mesh = BKE_mesh_copy_for_eval(&mesh);
|
||||
orco_mesh = BKE_mesh_copy_for_eval(mesh);
|
||||
}
|
||||
|
||||
Array<float3> storage;
|
||||
@@ -372,7 +372,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph,
|
||||
|
||||
if (ob.modifier_flag & OB_MODIFIER_FLAG_ADD_REST_POSITION) {
|
||||
if (mesh_final == nullptr) {
|
||||
mesh_final = BKE_mesh_copy_for_eval(&mesh_input);
|
||||
mesh_final = BKE_mesh_copy_for_eval(mesh_input);
|
||||
ASSERT_IS_VALID_MESH(mesh_final);
|
||||
}
|
||||
set_rest_position(*mesh_final);
|
||||
@@ -390,7 +390,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph,
|
||||
if (mti->type == ModifierTypeType::OnlyDeform && !sculpt_dyntopo) {
|
||||
ScopedModifierTimer modifier_timer{*md};
|
||||
if (!mesh_final) {
|
||||
mesh_final = BKE_mesh_copy_for_eval(&mesh_input);
|
||||
mesh_final = BKE_mesh_copy_for_eval(mesh_input);
|
||||
ASSERT_IS_VALID_MESH(mesh_final);
|
||||
}
|
||||
|
||||
@@ -413,7 +413,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph,
|
||||
* places that wish to use the original mesh but with deformed
|
||||
* coordinates (like vertex paint). */
|
||||
if (r_deform) {
|
||||
mesh_deform = BKE_mesh_copy_for_eval(mesh_final ? mesh_final : &mesh_input);
|
||||
mesh_deform = BKE_mesh_copy_for_eval(mesh_final ? *mesh_final : mesh_input);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -485,7 +485,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph,
|
||||
|
||||
if (mti->type == ModifierTypeType::OnlyDeform) {
|
||||
if (!mesh_final) {
|
||||
mesh_final = BKE_mesh_copy_for_eval(&mesh_input);
|
||||
mesh_final = BKE_mesh_copy_for_eval(mesh_input);
|
||||
ASSERT_IS_VALID_MESH(mesh_final);
|
||||
}
|
||||
BKE_modifier_deform_verts(md, &mectx, mesh_final, mesh_final->vert_positions_for_write());
|
||||
@@ -500,7 +500,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph,
|
||||
}
|
||||
}
|
||||
else {
|
||||
mesh_final = BKE_mesh_copy_for_eval(&mesh_input);
|
||||
mesh_final = BKE_mesh_copy_for_eval(mesh_input);
|
||||
ASSERT_IS_VALID_MESH(mesh_final);
|
||||
check_for_needs_mapping = true;
|
||||
}
|
||||
@@ -665,7 +665,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph,
|
||||
mesh_final = &mesh_input;
|
||||
}
|
||||
else {
|
||||
mesh_final = BKE_mesh_copy_for_eval(&mesh_input);
|
||||
mesh_final = BKE_mesh_copy_for_eval(mesh_input);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -709,7 +709,7 @@ static void mesh_calc_modifiers(Depsgraph &depsgraph,
|
||||
/* Not yet finalized by any instance, do it now
|
||||
* Isolate since computing normals is multithreaded and we are holding a lock. */
|
||||
threading::isolate_task([&] {
|
||||
mesh_final = BKE_mesh_copy_for_eval(&mesh_input);
|
||||
mesh_final = BKE_mesh_copy_for_eval(mesh_input);
|
||||
mesh_calc_finalize(mesh_input, *mesh_final);
|
||||
runtime->mesh_eval = mesh_final;
|
||||
});
|
||||
@@ -860,7 +860,7 @@ static void editbmesh_calc_modifiers(Depsgraph &depsgraph,
|
||||
/* If the cage mesh has already been assigned, we have passed the cage index in the modifier
|
||||
* list. If the cage and final meshes are still the same, duplicate the final mesh so the
|
||||
* cage mesh isn't modified anymore. */
|
||||
mesh_final = BKE_mesh_copy_for_eval(mesh_final);
|
||||
mesh_final = BKE_mesh_copy_for_eval(*mesh_final);
|
||||
if (mesh_cage->runtime->edit_mesh) {
|
||||
mesh_final->runtime->edit_mesh = mesh_cage->runtime->edit_mesh;
|
||||
mesh_final->runtime->is_original_bmesh = true;
|
||||
|
||||
@@ -236,7 +236,7 @@ Mesh *BKE_multires_create_mesh(Depsgraph *depsgraph, Object *object, MultiresMod
|
||||
Mesh *result = mti->modify_mesh(&mmd->modifier, &modifier_ctx, deformed_mesh);
|
||||
|
||||
if (result == deformed_mesh) {
|
||||
result = BKE_mesh_copy_for_eval(deformed_mesh);
|
||||
result = BKE_mesh_copy_for_eval(*deformed_mesh);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -187,11 +187,11 @@ static bke::GeometrySet get_original_geometry_eval_copy(Object &object)
|
||||
if (std::shared_ptr<BMEditMesh> &em = mesh->runtime->edit_mesh) {
|
||||
Mesh *mesh_copy = BKE_mesh_wrapper_from_editmesh(em, nullptr, mesh);
|
||||
BKE_mesh_wrapper_ensure_mdata(mesh_copy);
|
||||
Mesh *final_copy = BKE_mesh_copy_for_eval(mesh_copy);
|
||||
Mesh *final_copy = BKE_mesh_copy_for_eval(*mesh_copy);
|
||||
BKE_id_free(nullptr, mesh_copy);
|
||||
return bke::GeometrySet::from_mesh(final_copy);
|
||||
}
|
||||
return bke::GeometrySet::from_mesh(BKE_mesh_copy_for_eval(mesh));
|
||||
return bke::GeometrySet::from_mesh(BKE_mesh_copy_for_eval(*mesh));
|
||||
}
|
||||
default:
|
||||
return {};
|
||||
|
||||
@@ -3401,7 +3401,7 @@ static int object_convert_exec(bContext *C, wmOperator *op)
|
||||
*/
|
||||
const Object *ob_eval = DEG_get_evaluated_object(depsgraph, ob);
|
||||
const Mesh *mesh_eval = BKE_object_get_evaluated_mesh(ob_eval);
|
||||
Mesh *new_mesh = mesh_eval ? BKE_mesh_copy_for_eval(mesh_eval) :
|
||||
Mesh *new_mesh = mesh_eval ? BKE_mesh_copy_for_eval(*mesh_eval) :
|
||||
BKE_mesh_new_nomain(0, 0, 0, 0);
|
||||
BKE_object_material_from_eval_data(bmain, newob, &new_mesh->id);
|
||||
/* Anonymous attributes shouldn't be available on the applied geometry. */
|
||||
@@ -3634,7 +3634,7 @@ static int object_convert_exec(bContext *C, wmOperator *op)
|
||||
newob->type = OB_MESH;
|
||||
|
||||
if (const Mesh *mesh_eval = geometry.get_mesh()) {
|
||||
BKE_mesh_nomain_to_mesh(BKE_mesh_copy_for_eval(mesh_eval), new_mesh, newob);
|
||||
BKE_mesh_nomain_to_mesh(BKE_mesh_copy_for_eval(*mesh_eval), new_mesh, newob);
|
||||
BKE_object_material_from_eval_data(bmain, newob, &mesh_eval->id);
|
||||
new_mesh->attributes_for_write().remove_anonymous();
|
||||
}
|
||||
|
||||
@@ -759,7 +759,7 @@ static Mesh *remesh_symmetry_bisect(Mesh *mesh, eSymmetryAxes symmetry_axes)
|
||||
mmd.tolerance = QUADRIFLOW_MIRROR_BISECT_TOLERANCE;
|
||||
|
||||
Mesh *mesh_bisect, *mesh_bisect_temp;
|
||||
mesh_bisect = BKE_mesh_copy_for_eval(mesh);
|
||||
mesh_bisect = BKE_mesh_copy_for_eval(*mesh);
|
||||
|
||||
int axis;
|
||||
float plane_co[3], plane_no[3];
|
||||
@@ -841,7 +841,7 @@ static void quadriflow_start_job(void *customdata, wmJobWorkerStatus *worker_sta
|
||||
|
||||
/* Run Quadriflow bisect operations on a copy of the mesh to keep the code readable without
|
||||
* freeing the original ID */
|
||||
bisect_mesh = BKE_mesh_copy_for_eval(mesh);
|
||||
bisect_mesh = BKE_mesh_copy_for_eval(*mesh);
|
||||
|
||||
/* Bisect the input mesh using the paint symmetry settings */
|
||||
bisect_mesh = remesh_symmetry_bisect(bisect_mesh, qj->symmetry_axes);
|
||||
|
||||
@@ -1075,7 +1075,7 @@ static Mesh *mesh_boolean_float(Span<const Mesh *> meshes,
|
||||
if (meshes.size() == 1) {
|
||||
/* The float solver doesn't do self union. Just return nullptr, which will
|
||||
* cause geometry nodes to leave the input as is. */
|
||||
return BKE_mesh_copy_for_eval(meshes[0]);
|
||||
return BKE_mesh_copy_for_eval(*meshes[0]);
|
||||
}
|
||||
|
||||
Array<std::array<BMLoop *, 3>> looptris;
|
||||
|
||||
@@ -242,7 +242,7 @@ Mesh *reorder_mesh(const Mesh &src_mesh,
|
||||
bke::AttrDomain domain,
|
||||
const bke::AnonymousAttributePropagationInfo &propagation_info)
|
||||
{
|
||||
Mesh *dst_mesh = BKE_mesh_copy_for_eval(&src_mesh);
|
||||
Mesh *dst_mesh = BKE_mesh_copy_for_eval(src_mesh);
|
||||
clean_unused_attributes(propagation_info, dst_mesh->attributes_for_write());
|
||||
reorder_mesh_exec(src_mesh, old_by_new_map, domain, *dst_mesh);
|
||||
return dst_mesh;
|
||||
|
||||
@@ -282,7 +282,7 @@ Mesh *bc_get_mesh_copy(BlenderContext &blender_context,
|
||||
tmpmesh = (Mesh *)ob->data;
|
||||
}
|
||||
|
||||
Mesh *mesh = BKE_mesh_copy_for_eval(tmpmesh);
|
||||
Mesh *mesh = BKE_mesh_copy_for_eval(*tmpmesh);
|
||||
|
||||
if (triangulate) {
|
||||
bc_triangulate_mesh(mesh);
|
||||
|
||||
@@ -505,7 +505,7 @@ Mesh *get_shape_key_basis_mesh(Object *obj)
|
||||
}
|
||||
|
||||
/* Make a copy of the mesh so we can update the verts to the basis shape. */
|
||||
Mesh *temp_mesh = BKE_mesh_copy_for_eval(mesh);
|
||||
Mesh *temp_mesh = BKE_mesh_copy_for_eval(*mesh);
|
||||
|
||||
/* Update the verts. */
|
||||
BKE_keyblock_convert_to_mesh(
|
||||
|
||||
@@ -384,7 +384,7 @@ static Mesh *arrayModifier_doArray(ArrayModifierData *amd,
|
||||
Mesh *start_cap_mesh = BKE_modifier_get_evaluated_mesh_from_evaluated_object(start_cap_ob);
|
||||
if (start_cap_mesh) {
|
||||
BKE_mesh_wrapper_ensure_mdata(start_cap_mesh);
|
||||
return BKE_mesh_copy_for_eval(start_cap_mesh);
|
||||
return BKE_mesh_copy_for_eval(*start_cap_mesh);
|
||||
}
|
||||
}
|
||||
return mesh;
|
||||
|
||||
@@ -141,7 +141,7 @@ static void deform_verts(ModifierData *md,
|
||||
}
|
||||
|
||||
/* make new mesh */
|
||||
psmd->mesh_final = BKE_mesh_copy_for_eval(mesh);
|
||||
psmd->mesh_final = BKE_mesh_copy_for_eval(*mesh);
|
||||
psmd->mesh_final->vert_positions_for_write().copy_from(positions);
|
||||
psmd->mesh_final->tag_positions_changed();
|
||||
|
||||
@@ -173,7 +173,7 @@ static void deform_verts(ModifierData *md,
|
||||
/* Make a persistent copy of the mesh. We don't actually need
|
||||
* all this data, just some topology for remapping. Could be
|
||||
* optimized once. */
|
||||
psmd->mesh_original = BKE_mesh_copy_for_eval(mesh_original);
|
||||
psmd->mesh_original = BKE_mesh_copy_for_eval(*mesh_original);
|
||||
}
|
||||
|
||||
BKE_mesh_tessface_ensure(psmd->mesh_original);
|
||||
|
||||
@@ -98,7 +98,7 @@ static void deform_verts(ModifierData *md,
|
||||
}
|
||||
|
||||
if (mesh) {
|
||||
surmd->runtime.mesh = BKE_mesh_copy_for_eval(mesh);
|
||||
surmd->runtime.mesh = BKE_mesh_copy_for_eval(*mesh);
|
||||
}
|
||||
|
||||
if (!ctx->object->pd) {
|
||||
|
||||
@@ -120,7 +120,7 @@ static Mesh *mesh_subsurf_calc(const Mesh *mesh,
|
||||
/* Due to the "BKE_subdiv" API, the crease layers must be on the input mesh. But in this node
|
||||
* they are provided as separate inputs, not as custom data layers. When needed, retrieve the
|
||||
* mesh with write access and store the new crease values there. */
|
||||
mesh_copy = BKE_mesh_copy_for_eval(mesh);
|
||||
mesh_copy = BKE_mesh_copy_for_eval(*mesh);
|
||||
write_vert_creases(*mesh_copy, vert_creases);
|
||||
write_edge_creases(*mesh_copy, edge_creases);
|
||||
mesh = mesh_copy;
|
||||
|
||||
@@ -579,7 +579,7 @@ bool RE_bake_pixels_populate_from_objects(Mesh *me_low,
|
||||
blender::Array<BVHTreeFromMesh> treeData(tot_highpoly);
|
||||
|
||||
if (!is_cage) {
|
||||
me_eval_low = BKE_mesh_copy_for_eval(me_low);
|
||||
me_eval_low = BKE_mesh_copy_for_eval(*me_low);
|
||||
tris_low = mesh_calc_tri_tessface(me_low, true, me_eval_low);
|
||||
}
|
||||
else if (is_custom_cage) {
|
||||
@@ -862,7 +862,7 @@ void RE_bake_normal_world_to_tangent(const BakePixel pixel_array[],
|
||||
|
||||
TriTessFace *triangles;
|
||||
|
||||
Mesh *mesh_eval = BKE_mesh_copy_for_eval(mesh);
|
||||
Mesh *mesh_eval = BKE_mesh_copy_for_eval(*mesh);
|
||||
|
||||
triangles = mesh_calc_tri_tessface(mesh, true, mesh_eval);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user