diff options
Diffstat (limited to 'source/blender/depsgraph/DEG_depsgraph_query.h')
-rw-r--r-- | source/blender/depsgraph/DEG_depsgraph_query.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/source/blender/depsgraph/DEG_depsgraph_query.h b/source/blender/depsgraph/DEG_depsgraph_query.h index ccd204a2083..6f7f98861dd 100644 --- a/source/blender/depsgraph/DEG_depsgraph_query.h +++ b/source/blender/depsgraph/DEG_depsgraph_query.h @@ -36,6 +36,8 @@ struct ID; struct Depsgraph; +struct BLI_Iterator; +struct SceneLayer; #ifdef __cplusplus extern "C" { @@ -47,6 +49,31 @@ bool DEG_id_type_tagged(struct Main *bmain, short idtype); /* Get additional evaluation flags for the given ID. */ short DEG_get_eval_flags_for_id(struct Depsgraph *graph, struct ID *id); +/* Get scene the despgraph is created for. */ +struct Scene *DEG_get_scene(struct Depsgraph *graph); + +/* Get scene layer the despgraph is created for. */ +struct SceneLayer *DEG_get_scene_layer(struct Depsgraph *graph); + +/* Get the object as properly evaluated by depsgraph. */ +struct Object *DEG_get_object(struct Depsgraph *depsgraph, struct Object *ob); + +/* ************************ DAG iterators ********************* */ + +void DEG_objects_iterator_begin(struct BLI_Iterator *iter, void *data_in); +void DEG_objects_iterator_next(struct BLI_Iterator *iter); +void DEG_objects_iterator_end(struct BLI_Iterator *iter); + +/* Temporary hacky solution waiting for cow depsgraph implementation. */ +#define DEG_OBJECT_ITER(graph_, instance_) \ + ITER_BEGIN(DEG_objects_iterator_begin, \ + DEG_objects_iterator_next, \ + DEG_objects_iterator_end, \ + graph_, Object *, instance_) + +#define DEG_OBJECT_ITER_END \ + ITER_END + #ifdef __cplusplus } /* extern "C" */ #endif |