Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/intern/geometry_nodes_log.cc
| Show First 20 Lines • Show All 142 Lines • ▼ Show 20 Lines | |||||
| void GeoTreeLogger::log_value(const bNode &node, const bNodeSocket &socket, const GPointer value) | void GeoTreeLogger::log_value(const bNode &node, const bNodeSocket &socket, const GPointer value) | ||||
| { | { | ||||
| const CPPType &type = *value.type(); | const CPPType &type = *value.type(); | ||||
| auto store_logged_value = [&](destruct_ptr<ValueLog> value_log) { | auto store_logged_value = [&](destruct_ptr<ValueLog> value_log) { | ||||
| auto &socket_values = socket.in_out == SOCK_IN ? this->input_socket_values : | auto &socket_values = socket.in_out == SOCK_IN ? this->input_socket_values : | ||||
| this->output_socket_values; | this->output_socket_values; | ||||
| socket_values.append({node.name, socket.identifier, std::move(value_log)}); | socket_values.append({this->allocator->copy_string(node.name), | ||||
| this->allocator->copy_string(socket.identifier), | |||||
| std::move(value_log)}); | |||||
| }; | }; | ||||
| auto log_generic_value = [&](const CPPType &type, const void *value) { | auto log_generic_value = [&](const CPPType &type, const void *value) { | ||||
| void *buffer = this->allocator->allocate(type.size(), type.alignment()); | void *buffer = this->allocator->allocate(type.size(), type.alignment()); | ||||
| type.copy_construct(value, buffer); | type.copy_construct(value, buffer); | ||||
| store_logged_value(this->allocator->construct<GenericValueLog>(GMutablePointer{type, buffer})); | store_logged_value(this->allocator->construct<GenericValueLog>(GMutablePointer{type, buffer})); | ||||
| }; | }; | ||||
| Show All 29 Lines | |||||
| void GeoTreeLogger::log_viewer_node(const bNode &viewer_node, | void GeoTreeLogger::log_viewer_node(const bNode &viewer_node, | ||||
| const GeometrySet &geometry, | const GeometrySet &geometry, | ||||
| const GField &field) | const GField &field) | ||||
| { | { | ||||
| destruct_ptr<ViewerNodeLog> log = this->allocator->construct<ViewerNodeLog>(); | destruct_ptr<ViewerNodeLog> log = this->allocator->construct<ViewerNodeLog>(); | ||||
| log->geometry = geometry; | log->geometry = geometry; | ||||
| log->field = field; | log->field = field; | ||||
| log->geometry.ensure_owns_direct_data(); | log->geometry.ensure_owns_direct_data(); | ||||
| this->viewer_node_logs.append({viewer_node.name, std::move(log)}); | this->viewer_node_logs.append({this->allocator->copy_string(viewer_node.name), std::move(log)}); | ||||
| } | } | ||||
| void GeoTreeLog::ensure_node_warnings() | void GeoTreeLog::ensure_node_warnings() | ||||
| { | { | ||||
| if (reduced_node_warnings_) { | if (reduced_node_warnings_) { | ||||
| return; | return; | ||||
| } | } | ||||
| for (GeoTreeLogger *tree_logger : tree_loggers_) { | for (GeoTreeLogger *tree_logger : tree_loggers_) { | ||||
| ▲ Show 20 Lines • Show All 104 Lines • ▼ Show 20 Lines | |||||
| } | } | ||||
| void GeoTreeLog::ensure_used_named_attributes() | void GeoTreeLog::ensure_used_named_attributes() | ||||
| { | { | ||||
| if (reduced_used_named_attributes_) { | if (reduced_used_named_attributes_) { | ||||
| return; | return; | ||||
| } | } | ||||
| auto add_attribute = [&](const StringRef node_name, | auto add_attribute = [&](const StringRefNull node_name, | ||||
| const StringRef attribute_name, | const StringRefNull attribute_name, | ||||
| const NamedAttributeUsage &usage) { | const NamedAttributeUsage &usage) { | ||||
| this->nodes.lookup_or_add_as(node_name).used_named_attributes.lookup_or_add_as(attribute_name, | this->nodes.lookup_or_add_default(node_name).used_named_attributes.lookup_or_add( | ||||
| usage) |= usage; | attribute_name, usage) |= usage; | ||||
| this->used_named_attributes.lookup_or_add_as(attribute_name, usage) |= usage; | this->used_named_attributes.lookup_or_add_as(attribute_name, usage) |= usage; | ||||
| }; | }; | ||||
| for (GeoTreeLogger *tree_logger : tree_loggers_) { | for (GeoTreeLogger *tree_logger : tree_loggers_) { | ||||
| for (const GeoTreeLogger::AttributeUsageWithNode &item : tree_logger->used_named_attributes) { | for (const GeoTreeLogger::AttributeUsageWithNode &item : tree_logger->used_named_attributes) { | ||||
| add_attribute(item.node_name, item.attribute_name, item.usage); | add_attribute(item.node_name, item.attribute_name, item.usage); | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 278 Lines • Show Last 20 Lines | |||||