Mesh: Move runtime data out of DNA
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
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
#include "BKE_editmesh.h"
|
||||
#include "BKE_editmesh_cache.h"
|
||||
#include "BKE_global.h"
|
||||
#include "BKE_mesh.h"
|
||||
#include "BKE_unit.h"
|
||||
|
||||
#include "DNA_mesh_types.h"
|
||||
@@ -233,8 +234,8 @@ void DRW_text_edit_mesh_measure_stats(ARegion *region,
|
||||
float clip_planes[4][4];
|
||||
/* allow for displaying shape keys and deform mods */
|
||||
BMIter iter;
|
||||
const float(*vert_coords)[3] = (me->runtime.edit_data ? me->runtime.edit_data->vertexCos :
|
||||
nullptr);
|
||||
const float(*vert_coords)[3] = (me->runtime->edit_data ? me->runtime->edit_data->vertexCos :
|
||||
nullptr);
|
||||
const bool use_coords = (vert_coords != nullptr);
|
||||
|
||||
/* when 2 or more edge-info options are enabled, space apart */
|
||||
@@ -339,8 +340,8 @@ void DRW_text_edit_mesh_measure_stats(ARegion *region,
|
||||
const float(*poly_normals)[3] = nullptr;
|
||||
if (use_coords) {
|
||||
BM_mesh_elem_index_ensure(em->bm, BM_VERT | BM_FACE);
|
||||
BKE_editmesh_cache_ensure_poly_normals(em, me->runtime.edit_data);
|
||||
poly_normals = me->runtime.edit_data->polyNos;
|
||||
BKE_editmesh_cache_ensure_poly_normals(em, me->runtime->edit_data);
|
||||
poly_normals = me->runtime->edit_data->polyNos;
|
||||
}
|
||||
|
||||
BM_ITER_MESH (eed, &iter, em->bm, BM_EDGES_OF_MESH) {
|
||||
|
||||
Reference in New Issue
Block a user