69 if (socket.is_input()) {
70 if (socket.is_logically_linked()) {
75 switch (socket.
type) {
116 for (
const bNode *node :
tree.nodes_by_type(
"GeometryNodeInputObject")) {
117 if (node->is_muted()) {
122 for (
const bNode *node :
tree.nodes_by_type(
"GeometryNodeInputCollection")) {
123 if (node->is_muted()) {
133 for (
const bNode *node :
tree.nodes_by_type(type_idname)) {
134 if (!node->is_muted()) {
144 bool needs_own_transform =
false;
149 for (
const bNode *node :
tree.nodes_by_type(
"GeometryNodeCollectionInfo")) {
150 if (node->is_muted()) {
158 for (
const bNode *node :
tree.nodes_by_type(
"GeometryNodeObjectInfo")) {
159 if (node->is_muted()) {
172 for (
const bNode *node : ntree.nodes_by_type(
"GeometryNodeCameraInfo")) {
173 if (node->is_muted()) {
176 const bNodeSocket &projection_matrix_socket = *node->output_by_identifier(
"Projection Matrix");
177 if (projection_matrix_socket.is_logically_linked()) {
189 ntree.ensure_topology_cache();
190 for (
const bNodeSocket *socket : ntree.all_sockets()) {
201 for (
const bNode *node : ntree.group_nodes()) {
207 deps.
merge(*group_deps);
217 return group.
runtime->geometry_nodes_eval_dependencies.get();
225 if (deps_by_tree.
contains(&ntree)) {
231 return &deps_by_tree.
lookup(&group);
233 deps_by_tree.
add(&ntree, std::move(new_deps));
241 return deps_by_tree.
lookup(&ntree);
ID and Library types, which are fundamental for SDNA.
@ GEO_NODE_TRANSFORM_SPACE_RELATIVE
Object is a sort of wrapper for general info.
ValueIterator values() const &
const Value & lookup(const Key &key) const
bool add(const Key &key, const Value &value)
const Value & lookup(const Key &key) const
bool contains(const Key &key) const
TEX_TEMPLATE DataVec texture(T, FltCoord, float=0.0f) RET
GeometryNodesEvalDependencies gather_geometry_nodes_eval_dependencies_with_cache(const bNodeTree &ntree)
static void gather_geometry_nodes_eval_dependencies_recursive_impl(const bNodeTree &ntree, Map< const bNodeTree *, GeometryNodesEvalDependencies > &deps_by_tree)
static bool needs_scene_render_params(const bNodeTree &ntree)
static void add_eval_dependencies_from_socket(const bNodeSocket &socket, GeometryNodesEvalDependencies &deps)
static bool has_enabled_nodes_of_type(const bNodeTree &tree, const blender::StringRefNull type_idname)
static void add_own_transform_dependencies(const bNodeTree &tree, GeometryNodesEvalDependencies &deps)
static void gather_geometry_nodes_eval_dependencies(const bNodeTree &ntree, GeometryNodesEvalDependencies &deps, FunctionRef< const GeometryNodesEvalDependencies *(const bNodeTree &group)> get_group_deps)
GeometryNodesEvalDependencies gather_geometry_nodes_eval_dependencies_recursive(const bNodeTree &ntree)
static void add_eval_dependencies_from_node_data(const bNodeTree &tree, GeometryNodesEvalDependencies &deps)
struct Collection * value
bNodeTreeRuntimeHandle * runtime
Map< uint32_t, ObjectDependencyInfo > objects_info
void add_generic_id_full(ID *id)
bool needs_scene_render_params
void add_object(Object *object, const ObjectDependencyInfo &object_deps=all_object_deps)
Map< uint32_t, ID * > ids
void add_generic_id(ID *id)
void merge(const GeometryNodesEvalDependencies &other)