Fix [#30234] Various problems with CD layers and tesselation, related to modifiers...
[blender.git] / source / blender / blenkernel / BKE_DerivedMesh.h
index 493a5ec285f5c80a7a8664cb3e6186adfe3085b7..aefa94d07dee33e2a668202c47944339b2e85482 100644 (file)
@@ -147,6 +147,11 @@ typedef enum DMDrawFlag {
        DM_DRAW_ALWAYS_SMOOTH = 2
 } DMDrawFlag;
 
+typedef enum DMDirtyFlag {
+       /* dm has valid tessellated faces, but tessellated CDDATA need to be updated. */
+       DM_DIRTY_TESS_CDLAYERS = 1 << 0,
+} DMDirtyFlag;
+
 typedef struct DerivedMesh DerivedMesh;
 struct DerivedMesh {
        /* Private DerivedMesh data, only for internal DerivedMesh use */
@@ -158,6 +163,7 @@ struct DerivedMesh {
        struct GPUDrawObject *drawObject;
        DerivedMeshType type;
        float auto_bump_scale;
+       DMDirtyFlag dirty;
 
        /* calculate vert and face normals */
        void (*calcNormals)(DerivedMesh *dm);
@@ -540,6 +546,8 @@ void DM_DupPolys(DerivedMesh *source, DerivedMesh *target);
 
 void DM_ensure_tessface(DerivedMesh *dm);
 
+void DM_update_tessface_data(DerivedMesh *dm);
+
 /* interpolates vertex data from the vertices indexed by src_indices in the
  * source mesh using the given weights and stores the result in the vertex
  * indexed by dest_index in the dest mesh