Files
test2/source/blender/blenkernel/BKE_mesh_wrapper.hh
Brecht Van Lommel 40642343b6 Fix #138978: Modifier cage option not working when GPU subdivision is off
Need an equivalent of DRW_object_get_data_for_drawing for the cage mesh,
to ensure proper comparison between meshes.

Pull Request: https://projects.blender.org/blender/blender/pulls/138987
2025-05-19 11:50:00 +02:00

52 lines
1.8 KiB
C++

/* SPDX-FileCopyrightText: 2023 Blender Authors
*
* SPDX-License-Identifier: GPL-2.0-or-later */
#pragma once
/** \file
* \ingroup bke
*/
#include <memory>
#include "BLI_math_vector_types.hh"
#include "BLI_span.hh"
struct BMEditMesh;
struct CustomData_MeshMasks;
struct Mesh;
Mesh *BKE_mesh_wrapper_from_editmesh(std::shared_ptr<BMEditMesh> em,
const CustomData_MeshMasks *cd_mask_extra,
const Mesh *me_settings);
void BKE_mesh_wrapper_ensure_mdata(Mesh *mesh);
int BKE_mesh_wrapper_vert_len(const Mesh *mesh);
int BKE_mesh_wrapper_edge_len(const Mesh *mesh);
int BKE_mesh_wrapper_loop_len(const Mesh *mesh);
int BKE_mesh_wrapper_face_len(const Mesh *mesh);
/**
* Return a contiguous array of vertex position values, if available.
* Otherwise, vertex positions are stored in BMesh vertices and this returns null.
*/
blender::Span<blender::float3> BKE_mesh_wrapper_vert_coords(const Mesh *mesh);
/**
* Return a contiguous array of face normal values, if available.
* Otherwise, normals are stored in BMesh faces and this returns null.
*/
blender::Span<blender::float3> BKE_mesh_wrapper_face_normals(Mesh *mesh);
void BKE_mesh_wrapper_tag_positions_changed(Mesh *mesh);
void BKE_mesh_wrapper_vert_coords_copy(const Mesh *mesh,
blender::MutableSpan<blender::float3> positions);
void BKE_mesh_wrapper_vert_coords_copy_with_mat4(const Mesh *mesh,
float (*vert_coords)[3],
int vert_coords_len,
const float mat[4][4]);
Mesh *BKE_mesh_wrapper_ensure_subdivision(Mesh *mesh);
const Mesh *BKE_mesh_wrapper_ensure_subdivision(const Mesh *mesh);