diff options
Diffstat (limited to 'source/blender/makesdna/DNA_mesh_types.h')
-rw-r--r-- | source/blender/makesdna/DNA_mesh_types.h | 49 |
1 files changed, 48 insertions, 1 deletions
diff --git a/source/blender/makesdna/DNA_mesh_types.h b/source/blender/makesdna/DNA_mesh_types.h index 36fb54e6c61..247ffa4d865 100644 --- a/source/blender/makesdna/DNA_mesh_types.h +++ b/source/blender/makesdna/DNA_mesh_types.h @@ -39,11 +39,13 @@ struct AnimData; struct Ipo; struct Key; +struct LinkNode; struct MCol; struct MEdge; struct MFace; struct MLoop; struct MLoopCol; +struct MLoopTri; struct MLoopUV; struct MPoly; struct MTexPoly; @@ -52,6 +54,50 @@ struct Material; struct Mesh; struct Multires; +# +# +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 dont depend on \a vertexCos */ + const float (*polyCos)[3]; +} EditMeshData; + + +/** + * \warning Typical access is done via #BKE_mesh_runtime_looptri_ensure, #BKE_mesh_runtime_looptri_len. + */ +struct MLoopTri_Store { + /* WARNING! swapping between array (ready-to-be-used data) and array_wip (where data is actually computed) + * shall always be protected by same lock as one used for looptris computing. */ + struct MLoopTri *array, *array_wip; + int len; + int len_alloc; +}; + +/* not saved in file! */ +typedef struct Mesh_Runtime { + struct EditMeshData *edit_data; + void *batch_cache; + + int64_t cd_dirty_vert; + int64_t cd_dirty_edge; + int64_t cd_dirty_loop; + int64_t cd_dirty_poly; + + struct MLoopTri_Store looptris; + + /** 'BVHCache', for 'BKE_bvhutil.c' */ + struct LinkNode *bvh_cache; + + int deformed_only; /* set by modifier stack if only deformed from original */ + char padding[4]; +} Mesh_Runtime; + typedef struct Mesh { ID id; struct AnimData *adt; /* animation data (must be immediately after id for utilities to use it) */ @@ -66,7 +112,6 @@ typedef struct Mesh { /* BMESH ONLY */ /*new face structures*/ struct MPoly *mpoly; - struct MTexPoly *mtpoly; struct MLoop *mloop; struct MLoopUV *mloopuv; struct MLoopCol *mloopcol; @@ -127,6 +172,8 @@ typedef struct Mesh { short totcol; struct Multires *mr DNA_DEPRECATED; /* deprecated multiresolution modeling data, only keep for loading old files */ + + Mesh_Runtime runtime; } Mesh; /* deprecated by MTFace, only here for file reading */ |