diff options
author | Joseph Eagar <joeedh@gmail.com> | 2022-10-11 00:45:48 +0300 |
---|---|---|
committer | Joseph Eagar <joeedh@gmail.com> | 2022-10-11 00:45:48 +0300 |
commit | 7f133b7a38341a245ff4cfab0e18a271c021bd94 (patch) | |
tree | eaa78ace91fb489d5155b51101971d4811d1a0bc /source/blender/blenkernel/BKE_pbvh.h | |
parent | dc1418e5d91edba691b43eb7efd5d0ec9d5c1b10 (diff) |
Sculpt: Clean up Dyntopo's original triangle api
Cleaned up Dyntopo original triangle API (which is deprecated):
* BMVerts for original triangles are now stored.
* BKE_pbvh_bmesh_update_topology now handles original triangle
* data properly.
* BKE_pbvh_bmesh_node_save_orig can now initialize the original
coordinates from the current BMLogEntry.
* Ray casting of original data now returns active vertex.
Should fix various random crashes.
Hopefully this will fix a number of bugs.
Diffstat (limited to 'source/blender/blenkernel/BKE_pbvh.h')
-rw-r--r-- | source/blender/blenkernel/BKE_pbvh.h | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_pbvh.h b/source/blender/blenkernel/BKE_pbvh.h index 467a7c7f306..48926a5c858 100644 --- a/source/blender/blenkernel/BKE_pbvh.h +++ b/source/blender/blenkernel/BKE_pbvh.h @@ -125,6 +125,7 @@ typedef enum { PBVH_UpdateTopology = 1 << 13, PBVH_UpdateColor = 1 << 14, PBVH_RebuildPixels = 1 << 15, + PBVH_TopologyUpdated = 1 << 16, /* Used internally by pbvh_bmesh.c */ } PBVHNodeFlags; @@ -485,7 +486,10 @@ struct GSet *BKE_pbvh_bmesh_node_faces(PBVHNode *node); * * Skips triangles that are hidden. */ -void BKE_pbvh_bmesh_node_save_orig(struct BMesh *bm, PBVHNode *node); +void BKE_pbvh_bmesh_node_save_orig(struct BMesh *bm, + struct BMLog *log, + PBVHNode *node, + bool use_original); void BKE_pbvh_bmesh_after_stroke(PBVH *pbvh); /* Update Bounding Box/Redraw and clear flags. */ @@ -664,7 +668,8 @@ void BKE_pbvh_gather_proxies(PBVH *pbvh, PBVHNode ***r_array, int *r_tot); void BKE_pbvh_node_get_bm_orco_data(PBVHNode *node, int (**r_orco_tris)[3], int *r_orco_tris_num, - float (**r_orco_coords)[3]); + float (**r_orco_coords)[3], + struct BMVert **r_orco_verts); /** * \note doing a full search on all vertices here seems expensive, |