diff options
author | Jacques Lucke <jacques@blender.org> | 2022-09-23 13:39:56 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-09-23 13:41:22 +0300 |
commit | e5d4afd5bac71e29ba71ecf091feaa0d70b70260 (patch) | |
tree | bb42b190977e6bd306e969093a093fc8d4c98bae /source/blender/depsgraph | |
parent | eb54502d9d29b18cbeda22125a601f3ce0bc423e (diff) |
Depsgraph: generalize passing parameters to depsgraph object iterator
This makes it easier to pass more parameters to the iterator in the future.
Differential Revision: https://developer.blender.org/D16047
Diffstat (limited to 'source/blender/depsgraph')
-rw-r--r-- | source/blender/depsgraph/DEG_depsgraph_query.h | 42 |
1 files changed, 22 insertions, 20 deletions
diff --git a/source/blender/depsgraph/DEG_depsgraph_query.h b/source/blender/depsgraph/DEG_depsgraph_query.h index 12663e74d24..ea85f4920e8 100644 --- a/source/blender/depsgraph/DEG_depsgraph_query.h +++ b/source/blender/depsgraph/DEG_depsgraph_query.h @@ -140,7 +140,25 @@ enum { DEG_ITER_OBJECT_FLAG_DUPLI = (1 << 4), }; +typedef struct DEGObjectIterSettings { + struct Depsgraph *depsgraph; + /** + * NOTE: Be careful with DEG_ITER_OBJECT_FLAG_LINKED_INDIRECTLY objects. + * Although they are available they have no overrides (collection_properties) + * and will crash if you try to access it. + */ + uint32_t flags; +} DEGObjectIterSettings; + +/** + * Flags to to get objects for draw manager and final render. + */ +#define DEG_OBJECT_ITER_FOR_RENDER_ENGINE_FLAGS \ + DEG_ITER_OBJECT_FLAG_LINKED_DIRECTLY | DEG_ITER_OBJECT_FLAG_LINKED_VIA_SET | \ + DEG_ITER_OBJECT_FLAG_VISIBLE | DEG_ITER_OBJECT_FLAG_DUPLI + typedef struct DEGObjectIterData { + DEGObjectIterSettings *settings; struct Depsgraph *graph; int flag; @@ -174,16 +192,12 @@ void DEG_iterator_objects_begin(struct BLI_Iterator *iter, DEGObjectIterData *da void DEG_iterator_objects_next(struct BLI_Iterator *iter); void DEG_iterator_objects_end(struct BLI_Iterator *iter); -/** - * NOTE: Be careful with DEG_ITER_OBJECT_FLAG_LINKED_INDIRECTLY objects. - * Although they are available they have no overrides (collection_properties) - * and will crash if you try to access it. - */ -#define DEG_OBJECT_ITER_BEGIN(graph_, instance_, flag_) \ +#define DEG_OBJECT_ITER_BEGIN(settings_, instance_) \ { \ DEGObjectIterData data_ = { \ - graph_, \ - flag_, \ + (settings_), \ + (settings_)->depsgraph, \ + (int)(settings_)->flags, \ }; \ \ ITER_BEGIN (DEG_iterator_objects_begin, \ @@ -198,18 +212,6 @@ void DEG_iterator_objects_end(struct BLI_Iterator *iter); } \ ((void)0) -/** - * Depsgraph objects iterator for draw manager and final render - */ -#define DEG_OBJECT_ITER_FOR_RENDER_ENGINE_BEGIN(graph_, instance_) \ - DEG_OBJECT_ITER_BEGIN (graph_, \ - instance_, \ - DEG_ITER_OBJECT_FLAG_LINKED_DIRECTLY | \ - DEG_ITER_OBJECT_FLAG_LINKED_VIA_SET | DEG_ITER_OBJECT_FLAG_VISIBLE | \ - DEG_ITER_OBJECT_FLAG_DUPLI) - -#define DEG_OBJECT_ITER_FOR_RENDER_ENGINE_END DEG_OBJECT_ITER_END - /** \} */ /* -------------------------------------------------------------------- */ |