31 #define TODO_LAYER_OVERRIDE
32 #define TODO_LAYER_OPERATORS
80 const struct Scene *scene_src,
142 const bool hierarchy);
151 int view_layer_index);
200 #define FOREACH_SELECTED_OBJECT_BEGIN(_view_layer, _v3d, _instance) \
202 struct ObjectsVisibleIteratorData data_ = { \
203 .view_layer = _view_layer, \
206 ITER_BEGIN (BKE_view_layer_selected_objects_iterator_begin, \
207 BKE_view_layer_selected_objects_iterator_next, \
208 BKE_view_layer_selected_objects_iterator_end, \
213 #define FOREACH_SELECTED_OBJECT_END \
218 #define FOREACH_SELECTED_EDITABLE_OBJECT_BEGIN(_view_layer, _v3d, _instance) \
220 struct ObjectsVisibleIteratorData data_ = { \
221 .view_layer = _view_layer, \
224 ITER_BEGIN (BKE_view_layer_selected_editable_objects_iterator_begin, \
225 BKE_view_layer_selected_editable_objects_iterator_next, \
226 BKE_view_layer_selected_editable_objects_iterator_end, \
231 #define FOREACH_SELECTED_EDITABLE_OBJECT_END \
236 #define FOREACH_VISIBLE_OBJECT_BEGIN(_view_layer, _v3d, _instance) \
238 struct ObjectsVisibleIteratorData data_ = { \
239 .view_layer = _view_layer, \
242 ITER_BEGIN (BKE_view_layer_visible_objects_iterator_begin, \
243 BKE_view_layer_visible_objects_iterator_next, \
244 BKE_view_layer_visible_objects_iterator_end, \
249 #define FOREACH_VISIBLE_OBJECT_END \
254 #define FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _v3d, _object_type, _object_mode, _instance) \
256 struct ObjectsInModeIteratorData data_ = { \
257 .object_mode = _object_mode, \
258 .object_type = _object_type, \
259 .view_layer = _view_layer, \
261 .base_active = _view_layer->basact, \
263 ITER_BEGIN (BKE_view_layer_bases_in_mode_iterator_begin, \
264 BKE_view_layer_bases_in_mode_iterator_next, \
265 BKE_view_layer_bases_in_mode_iterator_end, \
270 #define FOREACH_BASE_IN_MODE_END \
275 #define FOREACH_BASE_IN_EDIT_MODE_BEGIN(_view_layer, _v3d, _instance) \
276 FOREACH_BASE_IN_MODE_BEGIN (_view_layer, _v3d, -1, OB_MODE_EDIT, _instance)
278 #define FOREACH_BASE_IN_EDIT_MODE_END FOREACH_BASE_IN_MODE_END
280 #define FOREACH_OBJECT_IN_MODE_BEGIN(_view_layer, _v3d, _object_type, _object_mode, _instance) \
281 FOREACH_BASE_IN_MODE_BEGIN (_view_layer, _v3d, _object_type, _object_mode, _base) { \
282 Object *_instance = _base->object;
284 #define FOREACH_OBJECT_IN_MODE_END \
286 FOREACH_BASE_IN_MODE_END
288 #define FOREACH_OBJECT_IN_EDIT_MODE_BEGIN(_view_layer, _v3d, _instance) \
289 FOREACH_BASE_IN_EDIT_MODE_BEGIN (_view_layer, _v3d, _base) { \
290 Object *_instance = _base->object;
292 #define FOREACH_OBJECT_IN_EDIT_MODE_END \
294 FOREACH_BASE_IN_EDIT_MODE_END
296 #define FOREACH_SELECTED_BASE_BEGIN(view_layer, _instance) \
297 ITER_BEGIN (BKE_view_layer_selected_bases_iterator_begin, \
298 BKE_view_layer_selected_bases_iterator_next, \
299 BKE_view_layer_selected_bases_iterator_end, \
304 #define FOREACH_SELECTED_BASE_END ITER_END
306 #define FOREACH_VISIBLE_BASE_BEGIN(_view_layer, _v3d, _instance) \
308 struct ObjectsVisibleIteratorData data_ = { \
309 .view_layer = _view_layer, \
312 ITER_BEGIN (BKE_view_layer_visible_bases_iterator_begin, \
313 BKE_view_layer_visible_bases_iterator_next, \
314 BKE_view_layer_visible_bases_iterator_end, \
319 #define FOREACH_VISIBLE_BASE_END \
324 #define FOREACH_OBJECT_BEGIN(view_layer, _instance) \
328 for (_base = (view_layer)->object_bases.first; _base; _base = _base->next) { \
329 _instance = _base->object;
331 #define FOREACH_OBJECT_END \
336 #define FOREACH_OBJECT_FLAG_BEGIN(scene, _view_layer, _v3d, flag, _instance) \
338 IteratorBeginCb func_begin; \
339 IteratorCb func_next, func_end; \
341 struct ObjectsVisibleIteratorData data_ = { \
342 .view_layer = _view_layer, \
346 if (flag == SELECT) { \
347 func_begin = &BKE_view_layer_selected_objects_iterator_begin; \
348 func_next = &BKE_view_layer_selected_objects_iterator_next; \
349 func_end = &BKE_view_layer_selected_objects_iterator_end; \
353 func_begin = BKE_scene_objects_iterator_begin; \
354 func_next = BKE_scene_objects_iterator_next; \
355 func_end = BKE_scene_objects_iterator_end; \
358 ITER_BEGIN (func_begin, func_next, func_end, data_in, Object *, _instance)
360 #define FOREACH_OBJECT_FLAG_END \
381 const struct View3D *v3d);
383 #define BKE_view_layer_array_selected_objects(view_layer, v3d, r_len, ...) \
384 BKE_view_layer_array_selected_objects_params( \
385 view_layer, v3d, r_len, &(const struct ObjectsInViewLayerParams)__VA_ARGS__)
407 #define BKE_view_layer_array_from_objects_in_mode(view_layer, v3d, r_len, ...) \
408 BKE_view_layer_array_from_objects_in_mode_params( \
409 view_layer, v3d, r_len, &(const struct ObjectsInModeParams)__VA_ARGS__)
411 #define BKE_view_layer_array_from_bases_in_mode(view_layer, v3d, r_len, ...) \
412 BKE_view_layer_array_from_bases_in_mode_params( \
413 view_layer, v3d, r_len, &(const struct ObjectsInModeParams)__VA_ARGS__)
420 #define BKE_view_layer_array_from_objects_in_edit_mode(view_layer, v3d, r_len) \
421 BKE_view_layer_array_from_objects_in_mode(view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT})
423 #define BKE_view_layer_array_from_bases_in_edit_mode(view_layer, v3d, r_len) \
424 BKE_view_layer_array_from_bases_in_mode(view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT})
426 #define BKE_view_layer_array_from_objects_in_edit_mode_unique_data(view_layer, v3d, r_len) \
427 BKE_view_layer_array_from_objects_in_mode( \
428 view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT, .no_dup_data = true})
430 #define BKE_view_layer_array_from_bases_in_edit_mode_unique_data(view_layer, v3d, r_len) \
431 BKE_view_layer_array_from_bases_in_mode( \
432 view_layer, v3d, r_len, {.object_mode = OB_MODE_EDIT, .no_dup_data = true})
434 #define BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs( \
435 view_layer, v3d, r_len) \
436 BKE_view_layer_array_from_objects_in_mode( \
440 {.object_mode = OB_MODE_EDIT, \
441 .no_dup_data = true, \
442 .filter_fn = BKE_view_layer_filter_edit_mesh_has_uvs})
444 #define BKE_view_layer_array_from_objects_in_mode_unique_data(view_layer, v3d, r_len, mode) \
445 BKE_view_layer_array_from_objects_in_mode( \
446 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_layer_collection_set_flag(struct LayerCollection *lc, const int flag, const bool value)
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_view_layer_selected_objects_tag(struct ViewLayer *view_layer, const int tag)
struct ViewLayer * BKE_view_layer_add(struct Scene *scene, const char *name, struct ViewLayer *view_layer_source, const int type)
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_copy_data(struct Scene *scene_dst, const struct Scene *scene_src, struct ViewLayer *view_layer_dst, const struct ViewLayer *view_layer_src, const int flag)
void BKE_view_layer_free(struct ViewLayer *view_layer)
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)
bool BKE_layer_collection_objects_select(struct ViewLayer *view_layer, struct LayerCollection *lc, bool deselect)
bool BKE_view_layer_filter_edit_mesh_has_uvs(struct Object *ob, void *user_data)
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_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 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_main_collection_sync(const struct Main *bmain)
struct LayerCollection * BKE_layer_collection_from_index(struct ViewLayer *view_layer, const int index)
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_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)
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)
void BKE_view_layer_selected_bases_iterator_next(BLI_Iterator *iter)
int BKE_layer_collection_count(struct ViewLayer *view_layer)
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_free_ex(struct ViewLayer *view_layer, const bool do_id_user)
void BKE_view_layer_visible_objects_iterator_end(BLI_Iterator *iter)
struct ViewLayer * BKE_view_layer_default_render(const struct Scene *scene)
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)
bool BKE_view_layer_has_collection(struct ViewLayer *view_layer, const struct Collection *collection)
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)
bool BKE_view_layer_filter_edit_mesh_has_edges(struct Object *ob, void *user_data)
struct LayerCollection * BKE_layer_collection_first_from_scene_collection(struct ViewLayer *view_layer, const struct Collection *collection)
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)
int BKE_layer_collection_findindex(struct ViewLayer *view_layer, const struct LayerCollection *lc)
void BKE_layer_collection_sync(const struct Scene *scene, struct ViewLayer *view_layer)
void BKE_view_layer_visible_objects_iterator_begin(BLI_Iterator *iter, void *data_in)
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_layer_collection_set_visible(struct ViewLayer *view_layer, struct LayerCollection *lc, const bool visible, const bool hierarchy)
void BKE_view_layer_bases_in_mode_iterator_end(BLI_Iterator *iter)
struct ViewLayerAOV * BKE_view_layer_add_aov(struct ViewLayer *view_layer)
void BKE_layer_collection_isolate_local(struct ViewLayer *view_layer, const struct View3D *v3d, struct LayerCollection *lc, bool extend)
void BKE_view_layer_visible_objects_iterator_next(BLI_Iterator *iter)
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)(struct Object *ob, void *user_data)
bool(* filter_fn)(struct Object *ob, void *user_data)
const struct View3D * v3d
struct ViewLayer * view_layer