18 #define TODO_LAYER_OVERRIDE
19 #define TODO_LAYER_OPERATORS
106 const struct Scene *scene_src,
254 int view_layer_index);
303 #define FOREACH_SELECTED_OBJECT_BEGIN(_view_layer, _v3d, _instance) \
305 struct ObjectsVisibleIteratorData data_ = {NULL}; \
306 data_.view_layer = _view_layer; \
308 ITER_BEGIN (BKE_view_layer_selected_objects_iterator_begin, \
309 BKE_view_layer_selected_objects_iterator_next, \
310 BKE_view_layer_selected_objects_iterator_end, \
315 #define FOREACH_SELECTED_OBJECT_END \
320 #define FOREACH_SELECTED_EDITABLE_OBJECT_BEGIN(_view_layer, _v3d, _instance) \
322 struct ObjectsVisibleIteratorData data_ = {NULL}; \
323 data_.view_layer = _view_layer; \
325 ITER_BEGIN (BKE_view_layer_selected_editable_objects_iterator_begin, \
326 BKE_view_layer_selected_editable_objects_iterator_next, \
327 BKE_view_layer_selected_editable_objects_iterator_end, \
332 #define FOREACH_SELECTED_EDITABLE_OBJECT_END \
337 #define FOREACH_VISIBLE_OBJECT_BEGIN(_view_layer, _v3d, _instance) \
339 struct ObjectsVisibleIteratorData data_ = {NULL}; \
340 data_.view_layer = _view_layer; \
342 ITER_BEGIN (BKE_view_layer_visible_objects_iterator_begin, \
343 BKE_view_layer_visible_objects_iterator_next, \
344 BKE_view_layer_visible_objects_iterator_end, \
349 #define FOREACH_VISIBLE_OBJECT_END \
354 #define FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _v3d, _object_type, _object_mode, _instance) \
356 struct ObjectsInModeIteratorData data_ = { \
357 .object_mode = _object_mode, \
358 .object_type = _object_type, \
359 .view_layer = _view_layer, \
361 .base_active = _view_layer->basact, \
363 ITER_BEGIN (BKE_view_layer_bases_in_mode_iterator_begin, \
364 BKE_view_layer_bases_in_mode_iterator_next, \
365 BKE_view_layer_bases_in_mode_iterator_end, \
370 #define FOREACH_BASE_IN_MODE_END \
375 #define FOREACH_BASE_IN_EDIT_MODE_BEGIN(_view_layer, _v3d, _instance) \
376 FOREACH_BASE_IN_MODE_BEGIN (_view_layer, _v3d, -1, OB_MODE_EDIT, _instance)
378 #define FOREACH_BASE_IN_EDIT_MODE_END FOREACH_BASE_IN_MODE_END
380 #define FOREACH_OBJECT_IN_MODE_BEGIN(_view_layer, _v3d, _object_type, _object_mode, _instance) \
381 FOREACH_BASE_IN_MODE_BEGIN (_view_layer, _v3d, _object_type, _object_mode, _base) { \
382 Object *_instance = _base->object;
384 #define FOREACH_OBJECT_IN_MODE_END \
386 FOREACH_BASE_IN_MODE_END
388 #define FOREACH_OBJECT_IN_EDIT_MODE_BEGIN(_view_layer, _v3d, _instance) \
389 FOREACH_BASE_IN_EDIT_MODE_BEGIN (_view_layer, _v3d, _base) { \
390 Object *_instance = _base->object;
392 #define FOREACH_OBJECT_IN_EDIT_MODE_END \
394 FOREACH_BASE_IN_EDIT_MODE_END
396 #define FOREACH_SELECTED_BASE_BEGIN(view_layer, _instance) \
397 ITER_BEGIN (BKE_view_layer_selected_bases_iterator_begin, \
398 BKE_view_layer_selected_bases_iterator_next, \
399 BKE_view_layer_selected_bases_iterator_end, \
404 #define FOREACH_SELECTED_BASE_END ITER_END
406 #define FOREACH_VISIBLE_BASE_BEGIN(_view_layer, _v3d, _instance) \
408 struct ObjectsVisibleIteratorData data_ = {NULL}; \
409 data_.view_layer = _view_layer; \
411 ITER_BEGIN (BKE_view_layer_visible_bases_iterator_begin, \
412 BKE_view_layer_visible_bases_iterator_next, \
413 BKE_view_layer_visible_bases_iterator_end, \
418 #define FOREACH_VISIBLE_BASE_END \
423 #define FOREACH_OBJECT_BEGIN(view_layer, _instance) \
427 for (_base = (Base *)(view_layer)->object_bases.first; _base; _base = _base->next) { \
428 _instance = _base->object;
430 #define FOREACH_OBJECT_END \
435 #define FOREACH_OBJECT_FLAG_BEGIN(scene, _view_layer, _v3d, flag, _instance) \
437 IteratorBeginCb func_begin; \
438 IteratorCb func_next, func_end; \
441 struct ObjectsVisibleIteratorData data_select_ = {NULL}; \
442 data_select_.view_layer = _view_layer; \
443 data_select_.v3d = _v3d; \
445 struct SceneObjectsIteratorExData data_flag_ = {NULL}; \
446 data_flag_.scene = scene; \
447 data_flag_.flag = flag; \
449 if (flag == SELECT) { \
450 func_begin = &BKE_view_layer_selected_objects_iterator_begin; \
451 func_next = &BKE_view_layer_selected_objects_iterator_next; \
452 func_end = &BKE_view_layer_selected_objects_iterator_end; \
453 data_in = &data_select_; \
455 else if (flag != 0) { \
456 func_begin = BKE_scene_objects_iterator_begin_ex; \
457 func_next = BKE_scene_objects_iterator_next_ex; \
458 func_end = BKE_scene_objects_iterator_end_ex; \
459 data_in = &data_flag_; \
462 func_begin = BKE_scene_objects_iterator_begin; \
463 func_next = BKE_scene_objects_iterator_next; \
464 func_end = BKE_scene_objects_iterator_end; \
467 ITER_BEGIN (func_begin, func_next, func_end, data_in, Object *, _instance)
469 #define FOREACH_OBJECT_FLAG_END \
497 const struct View3D *v3d);
499 #define BKE_view_layer_array_selected_objects(view_layer, v3d, r_len, ...) \
500 BKE_view_layer_array_selected_objects_params( \
501 view_layer, v3d, r_len, &(const struct ObjectsInViewLayerParams)__VA_ARGS__)
523 #define BKE_view_layer_array_from_objects_in_mode(view_layer, v3d, r_len, ...) \
524 BKE_view_layer_array_from_objects_in_mode_params( \
525 view_layer, v3d, r_len, &(const struct ObjectsInModeParams)__VA_ARGS__)
527 #define BKE_view_layer_array_from_bases_in_mode(view_layer, v3d, r_len, ...) \
528 BKE_view_layer_array_from_bases_in_mode_params( \
529 view_layer, v3d, r_len, &(const struct ObjectsInModeParams)__VA_ARGS__)
536 #define BKE_view_layer_array_from_objects_in_edit_mode(view_layer, v3d, r_len) \
537 BKE_view_layer_array_from_objects_in_mode(view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT})
539 #define BKE_view_layer_array_from_bases_in_edit_mode(view_layer, v3d, r_len) \
540 BKE_view_layer_array_from_bases_in_mode(view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT})
542 #define BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, v3d, r_len) \
543 BKE_view_layer_array_from_objects_in_mode( \
544 view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT, .no_dup_data = true})
546 #define BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, v3d, r_len) \
547 BKE_view_layer_array_from_bases_in_mode( \
548 view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT, .no_dup_data = true})
550 #define BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs( \
551 view_layer, v3d, r_len) \
552 BKE_view_layer_array_from_objects_in_mode( \
556 {.object_mode = OB_MODE_EDIT, \
557 .no_dup_data = true, \
558 .filter_fn = BKE_view_layer_filter_edit_mesh_has_uvs})
560 #define BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, v3d, r_len, mode) \
561 BKE_view_layer_array_from_objects_in_mode( \
562 view_layer, v3d, r_len, {.object_mode = mode, .no_dup_data = true})
void BKE_view_layer_bases_in_mode_iterator_begin(BLI_Iterator *iter, void *data_in)
void BKE_view_layer_bases_in_mode_iterator_next(BLI_Iterator *iter)
bool BKE_base_is_visible(const struct View3D *v3d, const struct Base *base)
bool BKE_scene_has_object(struct Scene *scene, struct Object *ob)
void BKE_layer_collection_local_sync_all(const struct Main *bmain)
void BKE_lightgroup_membership_set(struct LightgroupMembership **lgm, const char *name)
void BKE_scene_collection_sync(const struct Scene *scene)
struct ViewLayer * BKE_view_layer_find_from_collection(const struct Scene *scene, struct LayerCollection *lc)
void BKE_view_layer_free(struct ViewLayer *view_layer)
void BKE_layer_collection_set_flag(struct LayerCollection *lc, int flag, bool value)
void BKE_view_layer_visible_bases_iterator_begin(BLI_Iterator *iter, void *data_in)
void BKE_view_layer_rename(struct Main *bmain, struct Scene *scene, struct ViewLayer *view_layer, const char *name)
bool BKE_layer_collection_activate(struct ViewLayer *view_layer, struct LayerCollection *lc)
struct ViewLayer * BKE_view_layer_find_with_lightgroup(struct Scene *scene, struct ViewLayerLightgroup *view_layer_lightgroup)
bool BKE_layer_collection_objects_select(struct ViewLayer *view_layer, struct LayerCollection *lc, bool deselect)
void BKE_layer_collection_local_sync(struct ViewLayer *view_layer, const struct View3D *v3d)
void BKE_base_eval_flags(struct Base *base)
void BKE_view_layer_selected_objects_tag(struct ViewLayer *view_layer, int tag)
void BKE_view_layer_selected_editable_objects_iterator_begin(BLI_Iterator *iter, void *data_in)
struct ObjectsVisibleIteratorData ObjectsVisibleIteratorData
void BKE_view_layer_set_active_aov(struct ViewLayer *view_layer, struct ViewLayerAOV *aov)
struct ViewLayerLightgroup * BKE_view_layer_add_lightgroup(struct ViewLayer *view_layer, const char *name)
struct LayerCollection * BKE_layer_collection_get_active(struct ViewLayer *view_layer)
void BKE_view_layer_selected_editable_objects_iterator_end(BLI_Iterator *iter)
bool BKE_view_layer_has_valid_aov(struct ViewLayer *view_layer)
void BKE_layer_collection_doversion_2_80(const struct Scene *scene, struct ViewLayer *view_layer)
void BKE_main_collection_sync(const struct Main *bmain)
bool BKE_view_layer_has_collection(const struct ViewLayer *view_layer, const struct Collection *collection)
void BKE_view_layer_selected_objects_iterator_begin(BLI_Iterator *iter, void *data_in)
void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter)
bool BKE_layer_collection_has_selected_objects(struct ViewLayer *view_layer, struct LayerCollection *lc)
struct Object * BKE_view_layer_camera_find(struct ViewLayer *view_layer)
void BKE_view_layer_selected_objects_iterator_end(BLI_Iterator *iter)
void BKE_view_layer_selected_editable_objects_iterator_next(BLI_Iterator *iter)
void BKE_layer_collection_resync_allow(void)
void BKE_layer_collection_isolate_global(struct Scene *scene, struct ViewLayer *view_layer, struct LayerCollection *lc, bool extend)
struct ViewLayer * BKE_view_layer_default_view(const struct Scene *scene)
int BKE_layer_collection_count(const struct ViewLayer *view_layer)
void BKE_view_layer_free_ex(struct ViewLayer *view_layer, bool do_id_user)
struct LayerCollection * BKE_layer_collection_activate_parent(struct ViewLayer *view_layer, struct LayerCollection *lc)
void BKE_view_layer_base_deselect_all(struct ViewLayer *view_layer)
bool BKE_layer_collection_has_layer_collection(struct LayerCollection *lc_parent, struct LayerCollection *lc_child)
void BKE_view_layer_blend_read_data(struct BlendDataReader *reader, struct ViewLayer *view_layer)
struct Base * BKE_view_layer_base_find(struct ViewLayer *view_layer, struct Object *ob)
struct Object ** BKE_view_layer_array_selected_objects_params(struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len, const struct ObjectsInViewLayerParams *params)
struct LayerCollection * BKE_layer_collection_from_index(struct ViewLayer *view_layer, int index)
void BKE_view_layer_set_active_lightgroup(struct ViewLayer *view_layer, struct ViewLayerLightgroup *lightgroup)
void BKE_view_layer_selected_bases_iterator_next(BLI_Iterator *iter)
void BKE_view_layer_verify_aov(struct RenderEngine *engine, struct Scene *scene, struct ViewLayer *view_layer)
struct ViewLayer * BKE_view_layer_context_active_PLACEHOLDER(const struct Scene *scene)
void BKE_view_layer_visible_objects_iterator_end(BLI_Iterator *iter)
struct ViewLayer * BKE_view_layer_default_render(const struct Scene *scene)
struct LayerCollection * BKE_layer_collection_first_from_scene_collection(const struct ViewLayer *view_layer, const struct Collection *collection)
void BKE_view_layer_selected_bases_iterator_end(BLI_Iterator *iter)
struct ViewLayer * BKE_view_layer_find_with_aov(struct Scene *scene, struct ViewLayerAOV *view_layer_aov)
bool BKE_object_is_visible_in_viewport(const struct View3D *v3d, const struct Object *ob)
struct Base ** BKE_view_layer_array_from_bases_in_mode_params(struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len, const struct ObjectsInModeParams *params)
void BKE_view_layer_copy_data(struct Scene *scene_dst, const struct Scene *scene_src, struct ViewLayer *view_layer_dst, const struct ViewLayer *view_layer_src, int flag)
void BKE_layer_eval_view_layer_indexed(struct Depsgraph *depsgraph, struct Scene *scene, int view_layer_index)
void BKE_view_layer_base_select_and_set_active(struct ViewLayer *view_layer, struct Base *selbase)
void BKE_layer_collection_resync_forbid(void)
int BKE_layer_collection_findindex(struct ViewLayer *view_layer, const struct LayerCollection *lc)
void BKE_lightgroup_membership_get(struct LightgroupMembership *lgm, char *name)
void BKE_layer_collection_sync(const struct Scene *scene, struct ViewLayer *view_layer)
struct ViewLayer * BKE_view_layer_add(struct Scene *scene, const char *name, struct ViewLayer *view_layer_source, int type)
bool BKE_view_layer_filter_edit_mesh_has_uvs(const struct Object *ob, void *user_data)
void BKE_view_layer_visible_objects_iterator_begin(BLI_Iterator *iter, void *data_in)
void BKE_layer_collection_set_visible(struct ViewLayer *view_layer, struct LayerCollection *lc, bool visible, bool hierarchy)
void BKE_main_collection_sync_remap(const struct Main *bmain)
struct ViewLayer * BKE_view_layer_find(const struct Scene *scene, const char *layer_name)
void BKE_view_layer_selected_bases_iterator_begin(BLI_Iterator *iter, void *data_in)
void BKE_view_layer_blend_read_lib(struct BlendLibReader *reader, struct Library *lib, struct ViewLayer *view_layer)
void BKE_base_set_visible(struct Scene *scene, struct ViewLayer *view_layer, struct Base *base, bool extend)
void BKE_view_layer_blend_write(struct BlendWriter *writer, struct ViewLayer *view_layer)
struct Object ** BKE_view_layer_array_from_objects_in_mode_params(struct ViewLayer *view_layer, const struct View3D *v3d, uint *len, const struct ObjectsInModeParams *params)
void BKE_view_layer_visible_bases_iterator_next(BLI_Iterator *iter)
void BKE_view_layer_rename_lightgroup(struct Scene *scene, ViewLayer *view_layer, ViewLayerLightgroup *lightgroup, const char *name)
void BKE_view_layer_bases_in_mode_iterator_end(BLI_Iterator *iter)
struct ViewLayerAOV * BKE_view_layer_add_aov(struct ViewLayer *view_layer)
bool BKE_view_layer_filter_edit_mesh_has_edges(const struct Object *ob, void *user_data)
void BKE_layer_collection_isolate_local(struct ViewLayer *view_layer, const struct View3D *v3d, struct LayerCollection *lc, bool extend)
int BKE_lightgroup_membership_length(struct LightgroupMembership *lgm)
void BKE_view_layer_visible_objects_iterator_next(BLI_Iterator *iter)
void BKE_view_layer_remove_lightgroup(struct ViewLayer *view_layer, struct ViewLayerLightgroup *lightgroup)
struct Object * BKE_view_layer_non_active_selected_object(struct ViewLayer *view_layer, const struct View3D *v3d)
void BKE_view_layer_selected_objects_iterator_next(BLI_Iterator *iter)
void BKE_view_layer_remove_aov(struct ViewLayer *view_layer, struct ViewLayerAOV *aov)
struct Depsgraph Depsgraph
These structs are the foundation for all linked lists in the library system.
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
const Depsgraph * depsgraph
struct Collection * collection
struct Base * base_active
struct ViewLayer * view_layer
const struct View3D * v3d
bool(* filter_fn)(const struct Object *ob, void *user_data)
bool(* filter_fn)(const struct Object *ob, void *user_data)
const struct View3D * v3d
struct ViewLayer * view_layer