Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/geometry/nodes/node_geo_rotate_instances.cc
| /* SPDX-License-Identifier: GPL-2.0-or-later */ | /* SPDX-License-Identifier: GPL-2.0-or-later */ | ||||
| #include "BLI_task.hh" | #include "BLI_task.hh" | ||||
| #include "BKE_instances.hh" | #include "BKE_instances.hh" | ||||
| #include "node_geometry_util.hh" | #include "node_geometry_util.hh" | ||||
| namespace blender::nodes::node_geo_rotate_instances_cc { | namespace blender::nodes::node_geo_rotate_instances_cc { | ||||
| static void node_declare(NodeDeclarationBuilder &b) | static void node_declare(NodeDeclarationBuilder &b) | ||||
| { | { | ||||
| b.add_input<decl::Geometry>(N_("Instances")).only_instances(); | b.add_input<decl::Geometry>(N_("Instances")).only_instances(); | ||||
| b.add_input<decl::Bool>(N_("Selection")).default_value(true).hide_value().supports_field(); | b.add_input<decl::Bool>(N_("Selection")).default_value(true).hide_value().field_on_all(); | ||||
| b.add_input<decl::Vector>(N_("Rotation")).subtype(PROP_EULER).supports_field(); | b.add_input<decl::Vector>(N_("Rotation")).subtype(PROP_EULER).field_on_all(); | ||||
| b.add_input<decl::Vector>(N_("Pivot Point")).subtype(PROP_TRANSLATION).supports_field(); | b.add_input<decl::Vector>(N_("Pivot Point")).subtype(PROP_TRANSLATION).field_on_all(); | ||||
| b.add_input<decl::Bool>(N_("Local Space")).default_value(true).supports_field(); | b.add_input<decl::Bool>(N_("Local Space")).default_value(true).field_on_all(); | ||||
| b.add_output<decl::Geometry>(N_("Instances")); | b.add_output<decl::Geometry>(N_("Instances")).propagate_all(); | ||||
| } | } | ||||
| static void rotate_instances(GeoNodeExecParams ¶ms, bke::Instances &instances) | static void rotate_instances(GeoNodeExecParams ¶ms, bke::Instances &instances) | ||||
| { | { | ||||
| const bke::InstancesFieldContext context{instances}; | const bke::InstancesFieldContext context{instances}; | ||||
| fn::FieldEvaluator evaluator{context, instances.instances_num()}; | fn::FieldEvaluator evaluator{context, instances.instances_num()}; | ||||
| evaluator.set_selection(params.extract_input<Field<bool>>("Selection")); | evaluator.set_selection(params.extract_input<Field<bool>>("Selection")); | ||||
| evaluator.add(params.extract_input<Field<float3>>("Rotation")); | evaluator.add(params.extract_input<Field<float3>>("Rotation")); | ||||
| ▲ Show 20 Lines • Show All 78 Lines • Show Last 20 Lines | |||||