diff options
Diffstat (limited to 'source/blender/blenkernel/BKE_layer.h')
-rw-r--r-- | source/blender/blenkernel/BKE_layer.h | 79 |
1 files changed, 54 insertions, 25 deletions
diff --git a/source/blender/blenkernel/BKE_layer.h b/source/blender/blenkernel/BKE_layer.h index 8bc89c56450..486095c79d7 100644 --- a/source/blender/blenkernel/BKE_layer.h +++ b/source/blender/blenkernel/BKE_layer.h @@ -78,7 +78,9 @@ void BKE_view_layer_free_ex(struct ViewLayer *view_layer, bool do_id_user); /** * Tag all the selected objects of a render-layer. */ -void BKE_view_layer_selected_objects_tag(struct ViewLayer *view_layer, int tag); +void BKE_view_layer_selected_objects_tag(const struct Scene *scene, + struct ViewLayer *view_layer, + int tag); /** * Fallback for when a Scene has no camera to use. @@ -87,14 +89,14 @@ void BKE_view_layer_selected_objects_tag(struct ViewLayer *view_layer, int tag); * If rendering you pass the scene active layer, when viewing in the viewport * you want to get #ViewLayer from context. */ -struct Object *BKE_view_layer_camera_find(struct ViewLayer *view_layer); +struct Object *BKE_view_layer_camera_find(const struct Scene *scene, struct ViewLayer *view_layer); /** * Find the #ViewLayer a #LayerCollection belongs to. */ struct ViewLayer *BKE_view_layer_find_from_collection(const struct Scene *scene, struct LayerCollection *lc); struct Base *BKE_view_layer_base_find(struct ViewLayer *view_layer, struct Object *ob); -void BKE_view_layer_base_deselect_all(struct ViewLayer *view_layer); +void BKE_view_layer_base_deselect_all(const struct Scene *scene, struct ViewLayer *view_layer); void BKE_view_layer_base_select_and_set_active(struct ViewLayer *view_layer, struct Base *selbase); @@ -161,7 +163,9 @@ void BKE_scene_collection_sync(const struct Scene *scene); * and on file loaded in case linked data changed or went missing. */ void BKE_layer_collection_sync(const struct Scene *scene, struct ViewLayer *view_layer); -void BKE_layer_collection_local_sync(struct ViewLayer *view_layer, const struct View3D *v3d); +void BKE_layer_collection_local_sync(const struct Scene *scene, + struct ViewLayer *view_layer, + const struct View3D *v3d); /** * Sync the local collection for all the 3D Viewports. */ @@ -192,10 +196,12 @@ bool BKE_scene_has_object(struct Scene *scene, struct Object *ob); * It also select the objects that are in nested collections. * \note Recursive. */ -bool BKE_layer_collection_objects_select(struct ViewLayer *view_layer, +bool BKE_layer_collection_objects_select(const struct Scene *scene, + struct ViewLayer *view_layer, struct LayerCollection *lc, bool deselect); -bool BKE_layer_collection_has_selected_objects(struct ViewLayer *view_layer, +bool BKE_layer_collection_has_selected_objects(const struct Scene *scene, + struct ViewLayer *view_layer, struct LayerCollection *lc); bool BKE_layer_collection_has_layer_collection(struct LayerCollection *lc_parent, struct LayerCollection *lc_child); @@ -226,7 +232,8 @@ void BKE_layer_collection_isolate_global(struct Scene *scene, * * Same as #BKE_layer_collection_isolate_local but for a viewport */ -void BKE_layer_collection_isolate_local(struct ViewLayer *view_layer, +void BKE_layer_collection_isolate_local(const struct Scene *scene, + struct ViewLayer *view_layer, const struct View3D *v3d, struct LayerCollection *lc, bool extend); @@ -235,7 +242,8 @@ void BKE_layer_collection_isolate_local(struct ViewLayer *view_layer, * Don't change the collection children enable/disable state, * but it may change it for the collection itself. */ -void BKE_layer_collection_set_visible(struct ViewLayer *view_layer, +void BKE_layer_collection_set_visible(const struct Scene *scene, + struct ViewLayer *view_layer, struct LayerCollection *lc, bool visible, bool hierarchy); @@ -256,7 +264,9 @@ void BKE_layer_eval_view_layer_indexed(struct Depsgraph *depsgraph, /* .blend file I/O */ -void BKE_view_layer_blend_write(struct BlendWriter *writer, struct ViewLayer *view_layer); +void BKE_view_layer_blend_write(struct BlendWriter *writer, + const struct Scene *scene, + struct ViewLayer *view_layer); void BKE_view_layer_blend_read_data(struct BlendDataReader *reader, struct ViewLayer *view_layer); void BKE_view_layer_blend_read_lib(struct BlendLibReader *reader, struct Library *lib, @@ -352,7 +362,8 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter); } \ ((void)0) -#define FOREACH_BASE_IN_MODE_BEGIN(_view_layer, _v3d, _object_type, _object_mode, _instance) \ +#define FOREACH_BASE_IN_MODE_BEGIN( \ + _scene, _view_layer, _v3d, _object_type, _object_mode, _instance) \ { \ struct ObjectsInModeIteratorData data_; \ memset(&data_, 0, sizeof(data_)); \ @@ -360,6 +371,7 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter); data_.object_type = _object_type; \ data_.view_layer = _view_layer; \ data_.v3d = _v3d; \ + UNUSED_VARS(_scene); \ data_.base_active = _view_layer->basact; \ ITER_BEGIN (BKE_view_layer_bases_in_mode_iterator_begin, \ BKE_view_layer_bases_in_mode_iterator_next, \ @@ -373,21 +385,22 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter); } \ ((void)0) -#define FOREACH_BASE_IN_EDIT_MODE_BEGIN(_view_layer, _v3d, _instance) \ - FOREACH_BASE_IN_MODE_BEGIN (_view_layer, _v3d, -1, OB_MODE_EDIT, _instance) +#define FOREACH_BASE_IN_EDIT_MODE_BEGIN(_scene, _view_layer, _v3d, _instance) \ + FOREACH_BASE_IN_MODE_BEGIN (_scene, _view_layer, _v3d, -1, OB_MODE_EDIT, _instance) #define FOREACH_BASE_IN_EDIT_MODE_END FOREACH_BASE_IN_MODE_END -#define FOREACH_OBJECT_IN_MODE_BEGIN(_view_layer, _v3d, _object_type, _object_mode, _instance) \ - FOREACH_BASE_IN_MODE_BEGIN (_view_layer, _v3d, _object_type, _object_mode, _base) { \ +#define FOREACH_OBJECT_IN_MODE_BEGIN( \ + _scene, _view_layer, _v3d, _object_type, _object_mode, _instance) \ + FOREACH_BASE_IN_MODE_BEGIN (_scene, _view_layer, _v3d, _object_type, _object_mode, _base) { \ Object *_instance = _base->object; #define FOREACH_OBJECT_IN_MODE_END \ } \ FOREACH_BASE_IN_MODE_END -#define FOREACH_OBJECT_IN_EDIT_MODE_BEGIN(_view_layer, _v3d, _instance) \ - FOREACH_BASE_IN_EDIT_MODE_BEGIN (_view_layer, _v3d, _base) { \ +#define FOREACH_OBJECT_IN_EDIT_MODE_BEGIN(_scene, _view_layer, _v3d, _instance) \ + FOREACH_BASE_IN_EDIT_MODE_BEGIN (_scene, _view_layer, _v3d, _base) { \ Object *_instance = _base->object; #define FOREACH_OBJECT_IN_EDIT_MODE_END \ @@ -404,7 +417,7 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter); #define FOREACH_SELECTED_BASE_END ITER_END -#define FOREACH_VISIBLE_BASE_BEGIN(_view_layer, _v3d, _instance) \ +#define FOREACH_VISIBLE_BASE_BEGIN(_scene, _view_layer, _v3d, _instance) \ { \ struct ObjectsVisibleIteratorData data_ = {NULL}; \ data_.view_layer = _view_layer; \ @@ -421,10 +434,11 @@ void BKE_view_layer_visible_bases_iterator_end(BLI_Iterator *iter); } \ ((void)0) -#define FOREACH_OBJECT_BEGIN(view_layer, _instance) \ +#define FOREACH_OBJECT_BEGIN(scene, view_layer, _instance) \ { \ Object *_instance; \ Base *_base; \ + UNUSED_VARS(scene); \ for (_base = (Base *)(view_layer)->object_bases.first; _base; _base = _base->next) { \ _instance = _base->object; @@ -494,7 +508,8 @@ struct Object **BKE_view_layer_array_selected_objects_params( * Returns NULL with it finds multiple other selected objects * as behavior in this case would be random from the user perspective. */ -struct Object *BKE_view_layer_non_active_selected_object(struct ViewLayer *view_layer, +struct Object *BKE_view_layer_non_active_selected_object(const struct Scene *scene, + struct ViewLayer *view_layer, const struct View3D *v3d); #define BKE_view_layer_array_selected_objects(view_layer, v3d, r_len, ...) \ @@ -510,12 +525,14 @@ struct ObjectsInModeParams { }; struct Base **BKE_view_layer_array_from_bases_in_mode_params( + const struct Scene *scene, struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len, const struct ObjectsInModeParams *params); struct Object **BKE_view_layer_array_from_objects_in_mode_params( + const struct Scene *scene, struct ViewLayer *view_layer, const struct View3D *v3d, uint *len, @@ -526,20 +543,32 @@ bool BKE_view_layer_filter_edit_mesh_has_edges(const struct Object *ob, void *us /* Utility functions that wrap common arguments (add more as needed). */ -struct Object **BKE_view_layer_array_from_objects_in_edit_mode(struct ViewLayer *view_layer, +struct Object **BKE_view_layer_array_from_objects_in_edit_mode(const struct Scene *scene, + struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len); -struct Base **BKE_view_layer_array_from_bases_in_edit_mode(struct ViewLayer *view_layer, +struct Base **BKE_view_layer_array_from_bases_in_edit_mode(const struct Scene *scene, + struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len); struct Object **BKE_view_layer_array_from_objects_in_edit_mode_unique_data( - struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len); + const struct Scene *scene, + struct ViewLayer *view_layer, + const struct View3D *v3d, + uint *r_len); struct Base **BKE_view_layer_array_from_bases_in_edit_mode_unique_data( - struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len); + const struct Scene *scene, + struct ViewLayer *view_layer, + const struct View3D *v3d, + uint *r_len); struct Object **BKE_view_layer_array_from_objects_in_edit_mode_unique_data_with_uvs( - struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len); -struct Object **BKE_view_layer_array_from_objects_in_mode_unique_data(struct ViewLayer *view_layer, + const struct Scene *scene, + struct ViewLayer *view_layer, + const struct View3D *v3d, + uint *r_len); +struct Object **BKE_view_layer_array_from_objects_in_mode_unique_data(const struct Scene *scene, + struct ViewLayer *view_layer, const struct View3D *v3d, uint *r_len, eObjectMode mode); |