Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/depsgraph/DEG_depsgraph_query.h')
-rw-r--r--source/blender/depsgraph/DEG_depsgraph_query.h29
1 files changed, 29 insertions, 0 deletions
diff --git a/source/blender/depsgraph/DEG_depsgraph_query.h b/source/blender/depsgraph/DEG_depsgraph_query.h
index 41650769fcf..b7ecd0544e4 100644
--- a/source/blender/depsgraph/DEG_depsgraph_query.h
+++ b/source/blender/depsgraph/DEG_depsgraph_query.h
@@ -34,6 +34,7 @@
#define __DEG_DEPSGRAPH_QUERY_H__
#include "DEG_depsgraph.h"
+#include "DEG_depsgraph_build.h"
struct ID;
@@ -207,6 +208,34 @@ void DEG_foreach_dependent_ID(const Depsgraph *depsgraph,
void DEG_foreach_ID(const Depsgraph *depsgraph,
DEGForeachIDCallback callback, void *user_data);
+/* ********************* DEG graph filtering ****************** */
+
+/* ComponentKey for nodes we want to be able to evaluate in the filtered graph */
+typedef struct DEG_FilterTarget {
+ struct DEG_FilterTarget *next, *prev;
+
+ struct ID *id;
+ /* TODO: component identifiers - Component Type, Subdata/Component Name */
+} DEG_FilterTarget;
+
+typedef enum eDEG_FilterQuery_Granularity {
+ DEG_FILTER_NODES_ALL = 0,
+ DEG_FILTER_NODES_NO_OPS = 1,
+ DEG_FILTER_NODES_ID_ONLY = 2,
+} eDEG_FilterQuery_Granularity;
+
+
+typedef struct DEG_FilterQuery {
+ /* List of DEG_FilterTarget's */
+ struct ListBase targets;
+
+ /* Level of detail in the resulting graph */
+ eDEG_FilterQuery_Granularity detail_level;
+} DEG_FilterQuery;
+
+/* Obtain a new graph instance that only contains the subset of desired nodes */
+Depsgraph *DEG_graph_filter(const Depsgraph *depsgraph, struct Main *bmain, DEG_FilterQuery *query);
+
#ifdef __cplusplus
} /* extern "C" */