diff options
author | Jacques Lucke <jacques@blender.org> | 2022-09-25 20:16:53 +0300 |
---|---|---|
committer | Jacques Lucke <jacques@blender.org> | 2022-09-25 20:16:53 +0300 |
commit | c8ee70c96200548699a2d038a93208c5723f91e7 (patch) | |
tree | e24600f9dd7c5daa9102edb42f478f088fdd4e3e /source/blender/nodes/intern/node_declaration.cc | |
parent | 2fd63efd0ea840fa09222ded42ed8494bc2735f8 (diff) |
Geometry Nodes: decentralize implicit input definitions
Previously, all implicit inputs where stored in a centralized place.
Now the information which nodes have which implicit inputs is
stored in the nodes directly.
Diffstat (limited to 'source/blender/nodes/intern/node_declaration.cc')
-rw-r--r-- | source/blender/nodes/intern/node_declaration.cc | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/source/blender/nodes/intern/node_declaration.cc b/source/blender/nodes/intern/node_declaration.cc index 2cd9c6000c0..f323d035668 100644 --- a/source/blender/nodes/intern/node_declaration.cc +++ b/source/blender/nodes/intern/node_declaration.cc @@ -2,6 +2,7 @@ #include "NOD_node_declaration.hh" +#include "BKE_geometry_fields.hh" #include "BKE_node.h" namespace blender::nodes { @@ -81,4 +82,30 @@ bool SocketDeclaration::matches_common_data(const bNodeSocket &socket) const return true; } +namespace implicit_field_inputs { + +void position(const bNode & /*node*/, void *r_value) +{ + new (r_value) fn::ValueOrField<float3>(bke::AttributeFieldInput::Create<float3>("position")); +} + +void normal(const bNode & /*node*/, void *r_value) +{ + new (r_value) + fn::ValueOrField<float3>(fn::Field<float3>(std::make_shared<bke::NormalFieldInput>())); +} + +void index(const bNode & /*node*/, void *r_value) +{ + new (r_value) fn::ValueOrField<int>(fn::Field<int>(std::make_shared<fn::IndexFieldInput>())); +} + +void id_or_index(const bNode & /*node*/, void *r_value) +{ + new (r_value) + fn::ValueOrField<int>(fn::Field<int>(std::make_shared<bke::IDAttributeFieldInput>())); +} + +} // namespace implicit_field_inputs + } // namespace blender::nodes |