/* Allocate and initialize a BMLogVert */ static BMLogVert *bm_log_vert_alloc(BMesh *bm, BMLog *log, BMVert *v) { BMLogEntry *entry = log->current_entry; BMLogVert *lv = BLI_mempool_alloc(entry->pool_verts); bm_log_vert_bmvert_copy(bm, lv, v); return lv; }
/* Allocate and initialize a BMLogVert */ static BMLogVert *bm_log_vert_alloc(BMLog *log, BMVert *v, const int cd_vert_mask_offset) { BMLogEntry *entry = log->current_entry; BMLogVert *lv = BLI_mempool_alloc(entry->pool_verts); bm_log_vert_bmvert_copy(lv, v, cd_vert_mask_offset); return lv; }
static void bm_log_verts_unmake(BMesh *bm, BMLog *log, GHash *verts) { GHashIterator gh_iter; GHASH_ITER (gh_iter, verts) { void *key = BLI_ghashIterator_getKey(&gh_iter); BMLogVert *lv = BLI_ghashIterator_getValue(&gh_iter); unsigned int id = GET_INT_FROM_POINTER(key); BMVert *v = bm_log_vert_from_id(log, id); /* Ensure the log has the final values of the vertex before * deleting it */ bm_log_vert_bmvert_copy(bm, lv, v); BM_vert_kill(bm, v); }
static void bm_log_verts_unmake(BMesh *bm, BMLog *log, GHash *verts) { const int cd_vert_mask_offset = CustomData_get_offset(&bm->vdata, CD_PAINT_MASK); GHashIterator gh_iter; GHASH_ITER (gh_iter, verts) { void *key = BLI_ghashIterator_getKey(&gh_iter); BMLogVert *lv = BLI_ghashIterator_getValue(&gh_iter); unsigned int id = GET_UINT_FROM_POINTER(key); BMVert *v = bm_log_vert_from_id(log, id); /* Ensure the log has the final values of the vertex before * deleting it */ bm_log_vert_bmvert_copy(lv, v, cd_vert_mask_offset); BM_vert_kill(bm, v); }