20 if (provider_->
logger ==
nullptr) {
30 if (provider_->
logger ==
nullptr) {
43 if (geo_decl ==
nullptr) {
51 if (only_realized_data) {
54 TIP_(
"Instances in input geometry are ignored"));
60 TIP_(
"Realized data in input geometry is ignored"));
76 std::string message =
TIP_(
"Input geometry has unsupported type: ");
79 message +=
TIP_(
"Mesh");
83 message +=
TIP_(
"Point Cloud");
91 message +=
TIP_(
"Volume");
95 message +=
TIP_(
"Curve");
122 if (socket->is_available() && socket->name() == name) {
123 return socket->bsocket();
140 void GeoNodeExecParams::check_input_access(
StringRef identifier,
141 const CPPType *requested_type)
const
145 if (socket->identifier() == identifier) {
146 found_socket = socket->bsocket();
151 if (found_socket ==
nullptr) {
152 std::cout <<
"Did not find an input socket with the identifier '" << identifier <<
"'.\n";
153 std::cout <<
"Possible identifiers are: ";
154 for (
const InputSocketRef *socket : provider_->
dnode->
inputs()) {
155 if (socket->is_available()) {
156 std::cout <<
"'" << socket->identifier() <<
"', ";
163 std::cout <<
"The socket corresponding to the identifier '" << identifier
164 <<
"' is disabled.\n";
168 std::cout <<
"The identifier '" << identifier
169 <<
"' is valid, but there is no value for it anymore.\n";
170 std::cout <<
"Most likely it has been extracted before.\n";
173 else if (requested_type !=
nullptr) {
175 if (*requested_type != expected_type) {
176 std::cout <<
"The requested type '" << requested_type->
name() <<
"' is incorrect. Expected '"
177 << expected_type.name() <<
"'.\n";
183 void GeoNodeExecParams::check_output_access(StringRef identifier,
const CPPType &value_type)
const
186 for (
const OutputSocketRef *socket : provider_->
dnode->
outputs()) {
187 if (socket->identifier() == identifier) {
188 found_socket = socket->bsocket();
193 if (found_socket ==
nullptr) {
194 std::cout <<
"Did not find an output socket with the identifier '" << identifier <<
"'.\n";
195 std::cout <<
"Possible identifiers are: ";
196 for (
const OutputSocketRef *socket : provider_->
dnode->
outputs()) {
197 if (socket->is_available()) {
198 std::cout <<
"'" << socket->
identifier() <<
"', ";
205 std::cout <<
"The socket corresponding to the identifier '" << identifier
206 <<
"' is disabled.\n";
210 std::cout <<
"The identifier '" << identifier <<
"' has been set already.\n";
215 if (value_type != expected_type) {
216 std::cout <<
"The value type '" << value_type.name() <<
"' is incorrect. Expected '"
217 << expected_type.name() <<
"'.\n";
Low-level operations for curves.
@ GEO_COMPONENT_TYPE_MESH
@ GEO_COMPONENT_TYPE_POINT_CLOUD
@ GEO_COMPONENT_TYPE_INSTANCES
@ GEO_COMPONENT_TYPE_EDIT
@ GEO_COMPONENT_TYPE_CURVE
@ GEO_COMPONENT_TYPE_VOLUME
#define BLI_assert_unreachable()
#define UNUSED_VARS_NDEBUG(...)
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum type
in reality light always falls off quadratically Particle Info
StringRefNull name() const
constexpr bool is_empty() const
constexpr bool contains(const T &value) const
virtual void set_default_remaining_outputs()=0
geometry_nodes_eval_log::GeoLogger * logger
virtual bool can_get_input(StringRef identifier) const =0
virtual bool can_set_output(StringRef identifier) const =0
void used_named_attribute(std::string attribute_name, eNamedAttrUsage usage)
void check_output_geometry_set(const GeometrySet &geometry_set) const
void check_input_geometry_set(StringRef identifier, const GeometrySet &geometry_set) const
std::string attribute_producer_name() const
void set_default_remaining_outputs()
void error_message_add(const NodeWarningType type, std::string message) const
Span< const InputSocketRef * > inputs() const
Span< const OutputSocketRef * > outputs() const
StringRefNull label_or_name() const
const InputSocketRef & input_by_identifier(StringRef identifier) const
bNodeSocket * bsocket() const
bool only_realized_data() const
Span< GeometryComponentType > supported_types() const
bool only_instances() const
void log_node_warning(DNode node, NodeWarningType type, std::string message)
void log_used_named_attribute(DNode node, std::string attribute_name, eNamedAttrUsage usage)
bool has_realized_data() const
blender::Vector< GeometryComponentType > gather_component_types(bool include_instances, bool ignore_empty) const
bool has_instances() const
const blender::bke::CurvesEditHints * get_curve_edit_hints_for_read() const
const CPPTypeHandle * geometry_nodes_cpp_type
bNodeSocketRuntimeHandle * runtime
struct bNodeSocketType * typeinfo