[Bf-blender-cvs] [b6c1d3e1bd0] functions: make updating depsgraph work again

Jacques Lucke noreply at git.blender.org
Fri Jul 12 14:50:37 CEST 2019


Commit: b6c1d3e1bd002ca5e8c108cf1a4a61f8c72831d2
Author: Jacques Lucke
Date:   Fri Jul 12 12:39:57 2019 +0200
Branches: functions
https://developer.blender.org/rBb6c1d3e1bd002ca5e8c108cf1a4a61f8c72831d2

make updating depsgraph work again

===================================================================

M	source/blender/functions/backends/dependencies/dependencies-c.cpp
M	source/blender/functions/backends/dependencies/dependencies.cpp
M	source/blender/functions/backends/dependencies/dependencies.hpp

===================================================================

diff --git a/source/blender/functions/backends/dependencies/dependencies-c.cpp b/source/blender/functions/backends/dependencies/dependencies-c.cpp
index 299b3976511..ecf7dbfc64b 100644
--- a/source/blender/functions/backends/dependencies/dependencies-c.cpp
+++ b/source/blender/functions/backends/dependencies/dependencies-c.cpp
@@ -1,15 +1,23 @@
 #include "FN_dependencies.hpp"
+#include "DEG_depsgraph_build.h"
+#include "intern/builder/deg_builder_relations.h"
 
 using namespace FN;
 
-void FN_function_update_dependencies(FnFunction UNUSED(fn_c),
-                                     struct DepsNodeHandle *UNUSED(deps_node))
+static void update_depsgraph(DepsNodeHandle *deps_node, ArrayRef<Object *> transform_dependencies)
 {
-  // Function *fn = unwrap(fn_c);
-  // const DependenciesBody *body = fn->body<DependenciesBody>();
-  // if (body) {
-  //   Dependencies dependencies;
-  //   body->dependencies(dependencies);
-  //   dependencies.update_depsgraph(deps_node);
-  // }
+  for (struct Object *ob : transform_dependencies) {
+    DEG_add_object_relation(deps_node, ob, DEG_OB_COMP_TRANSFORM, __func__);
+  }
+}
+
+void FN_function_update_dependencies(FnFunction fn_c, struct DepsNodeHandle *deps_node)
+{
+  Function *fn = unwrap(fn_c);
+  DependenciesBody *body = fn->body<DependenciesBody>();
+  if (body) {
+    ExternalDependenciesBuilder builder({});
+    body->dependencies(builder);
+    update_depsgraph(deps_node, builder.get_transform_dependencies());
+  }
 }
diff --git a/source/blender/functions/backends/dependencies/dependencies.cpp b/source/blender/functions/backends/dependencies/dependencies.cpp
index c891cb98137..94b2ea80bb4 100644
--- a/source/blender/functions/backends/dependencies/dependencies.cpp
+++ b/source/blender/functions/backends/dependencies/dependencies.cpp
@@ -1,36 +1,7 @@
 #include "dependencies.hpp"
 
-#include "DEG_depsgraph_build.h"
-#include "intern/builder/deg_builder_relations.h"
-
 namespace FN {
 
 BLI_COMPOSITION_IMPLEMENTATION(DependenciesBody);
 
-void Dependencies::add_object_transform_dependency(struct Object *object)
-{
-  m_transform_dependencies.add(object);
-}
-
-void Dependencies::update_depsgraph(DepsNodeHandle *deps_node)
-{
-  for (struct Object *ob : m_transform_dependencies) {
-    DEG_add_object_relation(deps_node, ob, DEG_OB_COMP_TRANSFORM, __func__);
-  }
-}
-
-void Dependencies::add_relations(struct DepsgraphRelationBuilderRef *builder_,
-                                 const struct OperationKeyRef *target_)
-{
-  auto builder = *(DEG::DepsgraphRelationBuilder *)builder_;
-  auto target = *(DEG::OperationKey *)target_;
-
-  for (struct Object *ob : m_transform_dependencies) {
-    DEG::OperationKey from_key(
-        (ID *)ob, DEG::NodeType::TRANSFORM, DEG::OperationCode::TRANSFORM_FINAL);
-
-    builder.add_relation(from_key, target, "Function Dependency");
-  }
-}
-
 } /* namespace FN */
diff --git a/source/blender/functions/backends/dependencies/dependencies.hpp b/source/blender/functions/backends/dependencies/dependencies.hpp
index eb161754781..93b3f53903e 100644
--- a/source/blender/functions/backends/dependencies/dependencies.hpp
+++ b/source/blender/functions/backends/dependencies/dependencies.hpp
@@ -3,25 +3,8 @@
 #include "FN_core.hpp"
 
 struct Object;
-struct DepsNodeHandle;
-struct DepsgraphRelationBuilderRef;
-struct OperationKeyRef;
 
 namespace FN {
-using namespace BLI;
-
-class Dependencies {
- private:
-  SmallSet<struct Object *> m_transform_dependencies;
-
- public:
-  void add_object_transform_dependency(struct Object *object);
-
-  void update_depsgraph(DepsNodeHandle *deps_node);
-
-  void add_relations(struct DepsgraphRelationBuilderRef *builder,
-                     const struct OperationKeyRef *target);
-};
 
 class ExternalDependenciesBuilder {
  private:



More information about the Bf-blender-cvs mailing list