This commit replaces the `Mesh_Runtime` struct embedded in `Mesh` with `blender::bke::MeshRuntime`. This has quite a few benefits: - It's possible to use C++ types like `std::mutex`, `Array`, `BitVector`, etc. more easily - Meshes saved in files are slightly smaller - Copying and writing meshes is a bit more obvious without clearing of runtime data, etc. The first is by far the most important. It will allows us to avoid a bunch of manual memory management boilerplate that is error-prone and annoying. It should also simplify future CoW improvements for runtime data. This patch doesn't change anything besides changing `mesh.runtime.data` to `mesh.runtime->data`. The cleanups above will happen separately. Differential Revision: https://developer.blender.org/D16180
39 lines
1000 B
C++
39 lines
1000 B
C++
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
#pragma once
|
|
|
|
/** \file
|
|
* \ingroup bke
|
|
*/
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
struct BMEditMesh;
|
|
|
|
typedef struct EditMeshData {
|
|
/** when set, \a vertexNos, polyNos are lazy initialized */
|
|
const float (*vertexCos)[3];
|
|
|
|
/** lazy initialize (when \a vertexCos is set) */
|
|
float const (*vertexNos)[3];
|
|
float const (*polyNos)[3];
|
|
/** also lazy init but don't depend on \a vertexCos */
|
|
const float (*polyCos)[3];
|
|
} EditMeshData;
|
|
|
|
void BKE_editmesh_cache_ensure_poly_normals(struct BMEditMesh *em, EditMeshData *emd);
|
|
void BKE_editmesh_cache_ensure_vert_normals(struct BMEditMesh *em, EditMeshData *emd);
|
|
|
|
void BKE_editmesh_cache_ensure_poly_centers(struct BMEditMesh *em, EditMeshData *emd);
|
|
|
|
bool BKE_editmesh_cache_calc_minmax(struct BMEditMesh *em,
|
|
EditMeshData *emd,
|
|
float min[3],
|
|
float max[3]);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|