98 for (
const int grid :
nodes[
i].grids()) {
133 switch (pbvh.
type()) {
138 for (
const int vert :
verts) {
151 for (
const int vert :
verts) {
161 for (
const int vert :
verts) {
183 const int grid_index,
185 const int verts_start = grid_index * key.
grid_area;
187 key, grid_hidden, grid_index, [&](
const int i) {
206 const int grid_index,
208 const int face_set = face_sets[grid_to_face[grid_index]];
211 key, grid_hidden, grid_index, [&](
const int i) { grid_masks[
i] = value; });
223 const int grid_index,
225 const int verts_start = grid_index * key.
grid_area;
227 key, grid_hidden, grid_index, [&](
const int i) {
277 ot->name =
"Init Mask";
278 ot->description =
"Creates a new mask for the entire mesh";
279 ot->idname =
"SCULPT_OT_mask_init";
289 {int(
InitMode::Island),
"RANDOM_PER_LOOSE_PART", 0,
"Random per Loose Part",
""},
290 {0,
nullptr, 0,
nullptr,
nullptr},
Depsgraph * CTX_data_ensure_evaluated_depsgraph(const bContext *C)
Object * CTX_data_active_object(const bContext *C)
Scene * CTX_data_scene(const bContext *C)
Base * CTX_data_active_base(const bContext *C)
Main * CTX_data_main(const bContext *C)
View3D * CTX_wm_view3d(const bContext *C)
int CustomData_get_offset_named(const CustomData *data, eCustomDataType type, blender::StringRef name)
bool BKE_base_is_visible(const View3D *v3d, const Base *base)
MultiresModifierData * BKE_sculpt_multires_active(const Scene *scene, Object *ob)
void BKE_sculpt_update_object_for_edit(Depsgraph *depsgraph, Object *ob_orig, bool is_paint_tool)
void BKE_sculpt_mask_layers_ensure(Depsgraph *depsgraph, Main *bmain, Object *ob, MultiresModifierData *mmd)
A BVH for high poly meshes.
const blender::Set< BMVert *, 0 > & BKE_pbvh_bmesh_node_unique_verts(blender::bke::pbvh::BMeshNode *node)
CCGKey BKE_subdiv_ccg_key_top_level(const SubdivCCG &subdiv_ccg)
void BKE_subdiv_ccg_foreach_visible_grid_vert(const CCGKey &key, const blender::BitGroupVector<> &grid_hidden, const int grid, const Fn &fn)
void BKE_subdiv_ccg_average_grids(SubdivCCG &subdiv_ccg)
BLI_INLINE float BLI_hash_int_01(unsigned int k)
Platform independent time functions.
double BLI_time_now_seconds(void)
Object is a sort of wrapper for general info.
#define BM_ELEM_CD_SET_FLOAT(ele, offset, f)
#define BM_elem_index_get(ele)
#define BM_elem_flag_test(ele, hflag)
BPy_StructRNA * depsgraph
static unsigned long seed
constexpr MutableSpan slice(const int64_t start, const int64_t size) const
GAttributeReader lookup_or_default(StringRef attribute_id, AttrDomain domain, AttrType data_type, const void *default_value=nullptr) const
GAttributeReader lookup(const StringRef attribute_id) const
GSpanAttributeWriter lookup_or_add_for_write_span(StringRef attribute_id, AttrDomain domain, AttrType data_type, const AttributeInit &initializer=AttributeInitDefaultValue())
Span< NodeT > nodes() const
void tag_masks_changed(const IndexMask &node_mask)
void foreach_index(Fn &&fn) const
IndexRange grid_range(const int grid_area, const int grid)
pbvh::Tree * pbvh_get(Object &object)
IndexMask all_leaf_nodes(const Tree &pbvh, IndexMaskMemory &memory)
void node_update_mask_bmesh(int mask_offset, BMeshNode &node)
void node_update_mask_mesh(Span< float > mask, MeshNode &node)
void node_update_mask_grids(const CCGKey &key, Span< float > masks, GridsNode &node)
int vert_face_set_get(const GroupedSpan< int > vert_to_face_map, const Span< int > face_sets, const int vert)
Span< int > node_visible_verts(const bke::pbvh::MeshNode &node, const Span< bool > hide_vert, Vector< int > &indices)
void ensure_cache(Object &object)
int vert_id_get(const SculptSession &ss, const int vert)
void write_mask_mesh(const Depsgraph &depsgraph, Object &object, const IndexMask &node_mask, FunctionRef< void(MutableSpan< float >, Span< int >)> write_fn)
static void init_mask_grids(Main &bmain, Scene &scene, Depsgraph &depsgraph, Object &object, const IndexMask &node_mask, FunctionRef< void(const BitGroupVector<> &, int, MutableSpan< float >)> write_fn)
void SCULPT_OT_mask_init(wmOperatorType *ot)
static wmOperatorStatus sculpt_mask_init_exec(bContext *C, wmOperator *op)
void push_end(Object &ob)
void push_nodes(const Depsgraph &depsgraph, Object &object, const IndexMask &node_mask, const Type type)
void push_begin(const Scene &scene, Object &ob, const wmOperator *op)
int RNA_enum_get(PointerRNA *ptr, const char *name)
PropertyRNA * RNA_def_enum(StructOrFunctionRNA *cont_, const char *identifier, const EnumPropertyItem *items, const int default_value, const char *ui_name, const char *ui_description)
bool SCULPT_mode_poll(bContext *C)
void SCULPT_tag_update_overlays(bContext *C)
struct SculptSession * sculpt
blender::Span< int > grid_to_face_map