Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/BKE_layer.h
| Show First 20 Lines • Show All 51 Lines • ▼ Show 20 Lines | |||||
| struct Scene; | struct Scene; | ||||
| struct SceneCollection; | struct SceneCollection; | ||||
| struct SceneLayer; | struct SceneLayer; | ||||
| struct WorkSpace; | struct WorkSpace; | ||||
| void BKE_layer_exit(void); | void BKE_layer_exit(void); | ||||
| struct SceneLayer *BKE_scene_layer_from_scene_get(const struct Scene *scene); | struct SceneLayer *BKE_scene_layer_from_scene_get(const struct Scene *scene); | ||||
| struct SceneLayer *BKE_scene_layer_from_workspace_get(const struct WorkSpace *workspace); | struct SceneLayer *BKE_scene_layer_from_workspace_get(const struct Scene *scene, const struct WorkSpace *workspace); | ||||
| struct SceneLayer *BKE_scene_layer_add(struct Scene *scene, const char *name); | struct SceneLayer *BKE_scene_layer_add(struct Scene *scene, const char *name); | ||||
| /* DEPRECATED */ | /* DEPRECATED */ | ||||
| struct SceneLayer *BKE_scene_layer_context_active_PLACEHOLDER(const struct Scene *scene); | struct SceneLayer *BKE_scene_layer_context_active_PLACEHOLDER(const struct Scene *scene); | ||||
| void BKE_scene_layer_free(struct SceneLayer *sl); | void BKE_scene_layer_free(struct SceneLayer *sl); | ||||
| void BKE_scene_layer_engine_set(struct SceneLayer *sl, const char *engine); | |||||
| void BKE_scene_layer_selected_objects_tag(struct SceneLayer *sl, const int tag); | void BKE_scene_layer_selected_objects_tag(struct SceneLayer *sl, const int tag); | ||||
| struct SceneLayer *BKE_scene_layer_find_from_collection(const struct Scene *scene, struct LayerCollection *lc); | struct SceneLayer *BKE_scene_layer_find_from_collection(const struct Scene *scene, struct LayerCollection *lc); | ||||
| struct Base *BKE_scene_layer_base_find(struct SceneLayer *sl, struct Object *ob); | struct Base *BKE_scene_layer_base_find(struct SceneLayer *sl, struct Object *ob); | ||||
| void BKE_scene_layer_base_deselect_all(struct SceneLayer *sl); | void BKE_scene_layer_base_deselect_all(struct SceneLayer *sl); | ||||
| void BKE_scene_layer_base_select(struct SceneLayer *sl, struct Base *selbase); | void BKE_scene_layer_base_select(struct SceneLayer *sl, struct Base *selbase); | ||||
| void BKE_layer_collection_free(struct SceneLayer *sl, struct LayerCollection *lc); | void BKE_layer_collection_free(struct SceneLayer *sl, struct LayerCollection *lc); | ||||
| ▲ Show 20 Lines • Show All 84 Lines • ▼ Show 20 Lines | |||||
| void BKE_selected_objects_iterator_begin(BLI_Iterator *iter, void *data_in); | void BKE_selected_objects_iterator_begin(BLI_Iterator *iter, void *data_in); | ||||
| void BKE_selected_objects_iterator_next(BLI_Iterator *iter); | void BKE_selected_objects_iterator_next(BLI_Iterator *iter); | ||||
| void BKE_selected_objects_iterator_end(BLI_Iterator *iter); | void BKE_selected_objects_iterator_end(BLI_Iterator *iter); | ||||
| void BKE_visible_objects_iterator_begin(BLI_Iterator *iter, void *data_in); | void BKE_visible_objects_iterator_begin(BLI_Iterator *iter, void *data_in); | ||||
| void BKE_visible_objects_iterator_next(BLI_Iterator *iter); | void BKE_visible_objects_iterator_next(BLI_Iterator *iter); | ||||
| void BKE_visible_objects_iterator_end(BLI_Iterator *iter); | void BKE_visible_objects_iterator_end(BLI_Iterator *iter); | ||||
| void BKE_renderable_objects_iterator_begin(BLI_Iterator *iter, void *data_in); | |||||
| void BKE_renderable_objects_iterator_next(BLI_Iterator *iter); | |||||
| void BKE_renderable_objects_iterator_end(BLI_Iterator *iter); | |||||
| void BKE_selected_bases_iterator_begin(BLI_Iterator *iter, void *data_in); | void BKE_selected_bases_iterator_begin(BLI_Iterator *iter, void *data_in); | ||||
| void BKE_selected_bases_iterator_next(BLI_Iterator *iter); | void BKE_selected_bases_iterator_next(BLI_Iterator *iter); | ||||
| void BKE_selected_bases_iterator_end(BLI_Iterator *iter); | void BKE_selected_bases_iterator_end(BLI_Iterator *iter); | ||||
| void BKE_visible_bases_iterator_begin(BLI_Iterator *iter, void *data_in); | void BKE_visible_bases_iterator_begin(BLI_Iterator *iter, void *data_in); | ||||
| void BKE_visible_bases_iterator_next(BLI_Iterator *iter); | void BKE_visible_bases_iterator_next(BLI_Iterator *iter); | ||||
| void BKE_visible_bases_iterator_end(BLI_Iterator *iter); | void BKE_visible_bases_iterator_end(BLI_Iterator *iter); | ||||
| ▲ Show 20 Lines • Show All 65 Lines • ▼ Show 20 Lines | #define FOREACH_OBJECT_FLAG(scene, sl, flag, _instance) \ | ||||
| } \ | } \ | ||||
| ITER_BEGIN(func_begin, func_next, func_end, data_in, Object *, _instance) | ITER_BEGIN(func_begin, func_next, func_end, data_in, Object *, _instance) | ||||
| #define FOREACH_OBJECT_FLAG_END \ | #define FOREACH_OBJECT_FLAG_END \ | ||||
| ITER_END \ | ITER_END \ | ||||
| } | } | ||||
| typedef struct ObjectsRenderableIteratorData { | |||||
| struct Main *bmain; | |||||
| struct Scene *scene; | |||||
| struct { | |||||
| struct SceneLayer *scene_layer; | |||||
| struct Base *base; | |||||
| struct Scene *set; | |||||
| } iter; | |||||
| } ObjectsRenderableIteratorData; | |||||
| #define FOREACH_OBJECT_RENDERABLE(main_, scene_, _instance) \ | |||||
campbellbarton: Minor concern:
Was wondering why `Main` is needed to loop over renderable objects (since… | |||||
| ObjectsRenderableIteratorData data_ = { \ | |||||
| .bmain = (main_), \ | |||||
| .scene = (scene_), \ | |||||
| }; \ | |||||
| ITER_BEGIN(BKE_renderable_objects_iterator_begin, \ | |||||
| BKE_renderable_objects_iterator_next, \ | |||||
| BKE_renderable_objects_iterator_end, \ | |||||
| &data_, Object *, _instance) | |||||
| #define FOREACH_OBJECT_RENDERABLE_END \ | |||||
| ITER_END | |||||
| #ifdef __cplusplus | #ifdef __cplusplus | ||||
| } | } | ||||
| #endif | #endif | ||||
| #endif /* __BKE_LAYER_H__ */ | #endif /* __BKE_LAYER_H__ */ | ||||
Minor concern:
Was wondering why Main is needed to loop over renderable objects (since scenes have access to all the objects).
Since this is only used for clearing tags, we could clear the tags from the scene - also avoids the chance of unnecessary tagging if the blend file happens to have many objects in other scenes which aren't active.