Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/pbvh.c
| Show First 20 Lines • Show All 335 Lines • ▼ Show 20 Lines | for (int i = 0; i < totface; i++) { | ||||
| for (int j = 0; j < sides; j++) { | for (int j = 0; j < sides; j++) { | ||||
| if (face_vert_indices[i][j] < 0) { | if (face_vert_indices[i][j] < 0) { | ||||
| face_vert_indices[i][j] = -face_vert_indices[i][j] + node->uniq_verts - 1; | face_vert_indices[i][j] = -face_vert_indices[i][j] + node->uniq_verts - 1; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| BKE_pbvh_node_mark_rebuild_draw(node); | BKE_pbvh_node_mark_rebuild_draw(node); | ||||
| BKE_pbvh_node_mark_update_mask(node); | |||||
| BKE_pbvh_node_fully_hidden_set(node, !has_visible); | BKE_pbvh_node_fully_hidden_set(node, !has_visible); | ||||
| BLI_ghash_free(map, NULL, NULL); | BLI_ghash_free(map, NULL, NULL); | ||||
| } | } | ||||
| static void update_vb(PBVH *pbvh, PBVHNode *node, BBC *prim_bbc, int offset, int count) | static void update_vb(PBVH *pbvh, PBVHNode *node, BBC *prim_bbc, int offset, int count) | ||||
| { | { | ||||
| BB_reset(&node->vb); | BB_reset(&node->vb); | ||||
| ▲ Show 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| static void build_grid_leaf_node(PBVH *pbvh, PBVHNode *node) | static void build_grid_leaf_node(PBVH *pbvh, PBVHNode *node) | ||||
| { | { | ||||
| int totquads = BKE_pbvh_count_grid_quads( | int totquads = BKE_pbvh_count_grid_quads( | ||||
| pbvh->grid_hidden, node->prim_indices, node->totprim, pbvh->gridkey.grid_size); | pbvh->grid_hidden, node->prim_indices, node->totprim, pbvh->gridkey.grid_size); | ||||
| BKE_pbvh_node_fully_hidden_set(node, (totquads == 0)); | BKE_pbvh_node_fully_hidden_set(node, (totquads == 0)); | ||||
| BKE_pbvh_node_mark_rebuild_draw(node); | BKE_pbvh_node_mark_rebuild_draw(node); | ||||
| BKE_pbvh_node_mark_update_mask(node); | |||||
| } | } | ||||
| static void build_leaf(PBVH *pbvh, int node_index, BBC *prim_bbc, int offset, int count) | static void build_leaf(PBVH *pbvh, int node_index, BBC *prim_bbc, int offset, int count) | ||||
| { | { | ||||
| pbvh->nodes[node_index].flag |= PBVH_Leaf; | pbvh->nodes[node_index].flag |= PBVH_Leaf; | ||||
| pbvh->nodes[node_index].prim_indices = pbvh->prim_indices + offset; | pbvh->nodes[node_index].prim_indices = pbvh->prim_indices + offset; | ||||
| pbvh->nodes[node_index].totprim = count; | pbvh->nodes[node_index].totprim = count; | ||||
| ▲ Show 20 Lines • Show All 191 Lines • ▼ Show 20 Lines | for (int i = 0; i < looptri_num; i++) { | ||||
| BB_expand(&cb, bbc->bcentroid); | BB_expand(&cb, bbc->bcentroid); | ||||
| } | } | ||||
| if (looptri_num) { | if (looptri_num) { | ||||
| pbvh_build(pbvh, &cb, prim_bbc, looptri_num); | pbvh_build(pbvh, &cb, prim_bbc, looptri_num); | ||||
| } | } | ||||
| BKE_pbvh_update_vertex_data(pbvh, PBVH_UpdateMask); | |||||
| MEM_freeN(prim_bbc); | MEM_freeN(prim_bbc); | ||||
| MEM_freeN(pbvh->vert_bitmap); | MEM_freeN(pbvh->vert_bitmap); | ||||
| } | } | ||||
| /* Do a full rebuild with on Grids data structure */ | /* Do a full rebuild with on Grids data structure */ | ||||
| void BKE_pbvh_build_grids(PBVH *pbvh, | void BKE_pbvh_build_grids(PBVH *pbvh, | ||||
| CCGElem **grids, | CCGElem **grids, | ||||
| int totgrid, | int totgrid, | ||||
| Show All 33 Lines | for (int i = 0; i < totgrid; i++) { | ||||
| BB_expand(&cb, bbc->bcentroid); | BB_expand(&cb, bbc->bcentroid); | ||||
| } | } | ||||
| if (totgrid) { | if (totgrid) { | ||||
| pbvh_build(pbvh, &cb, prim_bbc, totgrid); | pbvh_build(pbvh, &cb, prim_bbc, totgrid); | ||||
| } | } | ||||
| BKE_pbvh_update_vertex_data(pbvh, PBVH_UpdateMask); | |||||
| MEM_freeN(prim_bbc); | MEM_freeN(prim_bbc); | ||||
| } | } | ||||
| PBVH *BKE_pbvh_new(void) | PBVH *BKE_pbvh_new(void) | ||||
| { | { | ||||
| PBVH *pbvh = MEM_callocN(sizeof(PBVH), "pbvh"); | PBVH *pbvh = MEM_callocN(sizeof(PBVH), "pbvh"); | ||||
| pbvh->respect_hide = true; | pbvh->respect_hide = true; | ||||
| return pbvh; | return pbvh; | ||||
| ▲ Show 20 Lines • Show All 2,395 Lines • Show Last 20 Lines | |||||