Blender V4.5
BKE_mesh_legacy_derived_mesh.hh
Go to the documentation of this file.
1/* SPDX-FileCopyrightText: 2001-2002 NaN Holding BV. All rights reserved.
2 *
3 * SPDX-License-Identifier: GPL-2.0-or-later */
4
5#pragma once
6
41
42/*
43 * NOTE: This structure is read-only, for all practical purposes.
44 * At some point in the future, we may want to consider
45 * creating a replacement structure that implements a proper
46 * abstract mesh kernel interface. Or, we can leave this
47 * as it is and stick with using BMesh and CDDM.
48 */
49
51
53
54struct CCGElem;
55struct CCGKey;
57struct Mesh;
58
63
69 /* Always owned by this object. */
71
72 short tangent_mask; /* which tangent layers are calculated */
73
74 /* Misc. Queries */
75
76 /* Also called in Editmode */
81
91 float *(*getVertArray)(DerivedMesh *dm);
92 blender::int2 *(*getEdgeArray)(DerivedMesh *dm);
93 int *(*getCornerVertArray)(DerivedMesh *dm);
94 int *(*getCornerEdgeArray)(DerivedMesh *dm);
95 int *(*getPolyArray)(DerivedMesh *dm);
96
101 void (*copyVertArray)(DerivedMesh *dm, float (*r_positions)[3]);
103 void (*copyCornerVertArray)(DerivedMesh *dm, int *r_corner_verts);
104 void (*copyCornerEdgeArray)(DerivedMesh *dm, int *r_corner_edges);
105 void (*copyPolyArray)(DerivedMesh *dm, int *r_face_offsets);
106
111 void *(*getVertDataArray)(DerivedMesh *dm, eCustomDataType type);
112 void *(*getEdgeDataArray)(DerivedMesh *dm, eCustomDataType type);
113 void *(*getLoopDataArray)(DerivedMesh *dm, eCustomDataType type);
114 void *(*getPolyDataArray)(DerivedMesh *dm, eCustomDataType type);
115
119 CCGElem **(*getGridData)(DerivedMesh *dm);
120 int *(*getGridOffset)(DerivedMesh *dm);
121 void (*getGridKey)(DerivedMesh *dm, CCGKey *key);
122
123 /* Direct Access Operations
124 * - Can be undefined
125 * - Must be defined for modifiers that only deform however. */
126
131 void (*release)(DerivedMesh *dm);
132};
133
138void DM_init_funcs(DerivedMesh *dm);
139
145void DM_init(DerivedMesh *dm,
146 DerivedMeshType type,
147 int numVerts,
148 int numEdges,
149 int numTessFaces,
150 int numLoops,
151 int numPolys);
152
158 DerivedMesh *source,
159 DerivedMeshType type,
160 int numVerts,
161 int numEdges,
162 int numTessFaces,
163 int numLoops,
164 int numPolys);
165
166void DM_release(DerivedMesh *dm);
167
174
182
183/* -------------------------------------------------------------------- */
190
195
197
204 const DerivedMesh *source, DerivedMesh *dest, int source_index, int dest_index, int count);
205
211void DM_interp_vert_data(const DerivedMesh *source,
212 DerivedMesh *dest,
213 int *src_indices,
214 float *weights,
215 int count,
216 int dest_index);
void * DM_get_edge_data_layer(DerivedMesh *dm, eCustomDataType type)
void DM_release(DerivedMesh *dm)
void DM_interp_vert_data(const DerivedMesh *source, DerivedMesh *dest, int *src_indices, float *weights, int count, int dest_index)
void DM_init(DerivedMesh *dm, DerivedMeshType type, int numVerts, int numEdges, int numTessFaces, int numLoops, int numPolys)
void * DM_get_loop_data_layer(DerivedMesh *dm, eCustomDataType type)
void DM_from_template(DerivedMesh *dm, DerivedMesh *source, DerivedMeshType type, int numVerts, int numEdges, int numTessFaces, int numLoops, int numPolys)
void DM_copy_vert_data(const DerivedMesh *source, DerivedMesh *dest, int source_index, int dest_index, int count)
void * DM_get_vert_data_layer(DerivedMesh *dm, eCustomDataType type)
void DM_init_funcs(DerivedMesh *dm)
DerivedMesh * CDDM_from_mesh(Mesh *mesh)
void * DM_get_poly_data_layer(DerivedMesh *dm, eCustomDataType type)
void DM_set_only_copy(DerivedMesh *dm, const CustomData_MeshMasks *mask)
int count
ccl_device_inline float2 mask(const MaskType mask, const float2 a)
VecBase< int32_t, 2 > int2
int(* getGridSize)(DerivedMesh *dm)
int(* getNumVerts)(DerivedMesh *dm)
int(* getNumPolys)(DerivedMesh *dm)
void(* copyVertArray)(DerivedMesh *dm, float(*r_positions)[3])
void(* copyCornerEdgeArray)(DerivedMesh *dm, int *r_corner_edges)
int(* getNumEdges)(DerivedMesh *dm)
void(* copyEdgeArray)(DerivedMesh *dm, blender::int2 *r_edge)
int(* getNumGrids)(DerivedMesh *dm)
void(* copyPolyArray)(DerivedMesh *dm, int *r_face_offsets)
void(* copyCornerVertArray)(DerivedMesh *dm, int *r_corner_verts)
void(* release)(DerivedMesh *dm)
void(* getGridKey)(DerivedMesh *dm, CCGKey *key)
int(* getNumLoops)(DerivedMesh *dm)