|
Blender
V2.93
|
#include <cstring>#include <iostream>#include <string>#include "MEM_guardedalloc.h"#include "BLI_float3.hh"#include "BLI_listbase.h"#include "BLI_multi_value_map.hh"#include "BLI_set.hh"#include "BLI_string.h"#include "BLI_utildefines.h"#include "DNA_collection_types.h"#include "DNA_defaults.h"#include "DNA_mesh_types.h"#include "DNA_meshdata_types.h"#include "DNA_modifier_types.h"#include "DNA_node_types.h"#include "DNA_object_types.h"#include "DNA_pointcloud_types.h"#include "DNA_scene_types.h"#include "DNA_screen_types.h"#include "DNA_space_types.h"#include "DNA_windowmanager_types.h"#include "BKE_customdata.h"#include "BKE_geometry_set_instances.hh"#include "BKE_global.h"#include "BKE_idprop.h"#include "BKE_lib_query.h"#include "BKE_main.h"#include "BKE_mesh.h"#include "BKE_modifier.h"#include "BKE_node_ui_storage.hh"#include "BKE_object.h"#include "BKE_pointcloud.h"#include "BKE_screen.h"#include "BKE_simulation.h"#include "BKE_workspace.h"#include "BLO_read_write.h"#include "UI_interface.h"#include "UI_resources.h"#include "RNA_access.h"#include "RNA_enum_types.h"#include "DEG_depsgraph_build.h"#include "DEG_depsgraph_query.h"#include "MOD_modifiertypes.h"#include "MOD_nodes.h"#include "MOD_ui_common.h"#include "ED_spreadsheet.h"#include "NOD_derived_node_tree.hh"#include "NOD_geometry.h"#include "NOD_geometry_exec.hh"#include "NOD_node_tree_multi_function.hh"#include "NOD_type_callbacks.hh"#include "NOD_type_conversions.hh"Go to the source code of this file.
Classes | |
| class | GeometryNodesEvaluator |
| struct | SocketPropertyType |
Typedefs | |
| using | PreviewSocketMap = blender::MultiValueMap< DSocket, uint64_t > |
Variables | |
| static const CustomData_MeshMasks | dependency_data_mask |
| ModifierTypeInfo | modifierType_Nodes |
Definition at line 1094 of file MOD_nodes.cc.
|
static |
Definition at line 174 of file MOD_nodes.cc.
References DEG_add_collection_geometry_customdata_mask(), DEG_add_collection_geometry_relation(), dependency_data_mask, and ModifierUpdateDepsgraphContext::node.
Referenced by add_object_relation(), and updateDepsgraph().
|
static |
Definition at line 181 of file MOD_nodes.cc.
References add_collection_relation(), DEG_add_customdata_mask(), DEG_add_object_relation(), DEG_OB_COMP_GEOMETRY, DEG_OB_COMP_TRANSFORM, DEG_object_has_geometry_component(), dependency_data_mask, Object::id, ModifierUpdateDepsgraphContext::node, OB_EMPTY, ModifierUpdateDepsgraphContext::object, and type.
Referenced by updateDepsgraph().
Definition at line 117 of file MOD_nodes.cc.
References blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), Collection::id, Object::id, LISTBASE_FOREACH, SOCK_COLLECTION, and SOCK_OBJECT.
Referenced by find_used_ids_from_nodes().
|
static |
Definition at line 1544 of file MOD_nodes.cc.
References BLO_read_data_address, IDP_BlendDataRead, NodesModifierSettings::properties, and NodesModifierData::settings.
|
static |
Definition at line 1534 of file MOD_nodes.cc.
References IDP_BlendWrite(), NodesModifierSettings::properties, and NodesModifierData::settings.
|
static |
Definition at line 1324 of file MOD_nodes.cc.
References BKE_modifier_set_error(), get_socket_property_type(), bNodeSocket::identifier, IDP_GetPropertyFromGroup(), bNodeTree::inputs, SocketPropertyType::is_correct_type, LISTBASE_FOREACH, LISTBASE_FOREACH_INDEX, bNodeSocket::name, NodesModifierData::node_group, bNodeTree::outputs, NodesModifierSettings::properties, NodesModifierData::settings, SOCK_GEOMETRY, and bNodeSocket::type.
Referenced by modifyGeometry().
|
static |
Evaluate a node group to compute the output geometry. Currently, this uses a fairly basic and inefficient algorithm that might compute things more often than necessary. It's going to be replaced soon.
Definition at line 1239 of file MOD_nodes.cc.
References blender::Map< Key, Value, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add_new(), blender::fn::CPPType::alignment(), blender::LinearAllocator< Allocator >::allocate(), blender::Vector< T, InlineBufferCapacity, Allocator >::append(), BLI_assert, blender::nodes::SocketRef::bsocket(), GeometrySet::clear(), blender::LinearAllocator< Allocator >::construct(), ModifierEvalContext::depsgraph, blender::Span< T >::drop_back(), blender::Span< T >::drop_front(), fill_data_handle_map(), find_sockets_to_preview(), blender::nodes::get_multi_function_per_node(), initialize_group_input(), blender::Span< T >::is_empty(), blender::ResourceScope::linear_allocator(), log_preview_socket_value(), log_ui_hints(), logging_enabled(), blender::MultiValueMap< Key, Value >::lookup(), ModifierEvalContext::object, output_geometry(), result, NodesModifierData::settings, blender::Vector< T, InlineBufferCapacity, Allocator >::size(), blender::fn::CPPType::size(), SOCK_GEOMETRY, blender::nodes::socket_cpp_type_get(), tree, bNodeSocket::type, and bNodeSocket::typeinfo.
Referenced by modifyGeometry().
|
static |
Definition at line 1551 of file MOD_nodes.cc.
References BKE_modifier_copydata_generic(), IDP_CopyProperty_ex(), NodesModifierSettings::properties, and NodesModifierData::settings.
|
static |
Definition at line 1446 of file MOD_nodes.cc.
References ARRAY_SIZE, BLI_snprintf(), BLI_str_escape(), get_socket_property_type(), bNodeSocket::identifier, IDP_GetPropertyFromGroup(), SocketPropertyType::is_correct_type, bNodeSocket::name, SOCK_COLLECTION, SOCK_OBJECT, bNodeSocket::type, uiItemPointerR(), and uiItemR().
Referenced by panel_draw().
|
static |
Definition at line 1047 of file MOD_nodes.cc.
References blender::bke::PersistentDataHandleMap::add(), find_used_ids_from_nodes(), find_used_ids_from_settings(), and tree.
Referenced by compute_geometry().
|
static |
Definition at line 1173 of file MOD_nodes.cc.
References blender::MultiValueMap< Key, Value >::add_non_duplicates(), DEG_get_bmain(), ModifierEvalContext::depsgraph, ED_spreadsheet_context_path_hash(), find_spreadsheet_editors(), tree, and try_get_socket_to_preview_for_spreadsheet().
Referenced by compute_geometry().
|
static |
Definition at line 1075 of file MOD_nodes.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::append(), blender::compositor::area(), bScreen::areabase, BKE_workspace_active_screen_get(), ListBase::first, if(), LISTBASE_FOREACH, SPACE_SPREADSHEET, SpaceLink::spacetype, wmWindowManager::windows, and Main::wm.
Referenced by find_sockets_to_preview().
Definition at line 135 of file MOD_nodes.cc.
References blender::Set< Key, InlineBufferCapacity, ProbingStrategy, Hash, IsEqual, Slot, Allocator >::add(), addIdsUsedBySocket(), ELEM, if(), LISTBASE_FOREACH, node, NODE_CUSTOM_GROUP, NODE_GROUP, and tree.
Referenced by fill_data_handle_map(), and updateDepsgraph().
|
static |
Definition at line 152 of file MOD_nodes.cc.
References IDP_foreach_property(), IDP_TYPE_FILTER_ID, NodesModifierSettings::properties, and user_data.
Referenced by fill_data_handle_map(), and updateDepsgraph().
|
static |
Definition at line 220 of file MOD_nodes.cc.
References IDP_foreach_property(), IDP_TYPE_FILTER_ID, IDWALK_CB_USER, NodesModifierData::node_group, NodesModifierSettings::properties, NodesModifierData::settings, and user_data.
|
static |
Definition at line 242 of file MOD_nodes.cc.
|
static |
Definition at line 1563 of file MOD_nodes.cc.
References IDP_FreeProperty_ex(), NodesModifierSettings::properties, and NodesModifierData::settings.
|
static |
Definition at line 714 of file MOD_nodes.cc.
References IDPropertyTemplate::d, bNodeSocket::default_value, IDPropertyTemplate::f, IDP_DOUBLE, IDP_FLOAT, IDP_New(), SOCK_FLOAT, and bNodeSocket::type.
Referenced by check_property_socket_sync(), draw_property_for_socket(), initialize_group_input(), and MOD_nodes_update_interface().
|
static |
Definition at line 108 of file MOD_nodes.cc.
References BLI_assert, DNA_struct_default_get, MEMCMP_STRUCT_AFTER_IS_ZERO, and MEMCPY_STRUCT_AFTER.
|
static |
Definition at line 1019 of file MOD_nodes.cc.
References blender::fn::CPPType::copy_to_uninitialized(), blender::fn::CPPType::default_value(), get_socket_property_type(), bNodeSocket::identifier, IDP_GetPropertyFromGroup(), SocketPropertyType::init_cpp_value, SocketPropertyType::is_correct_type, NodesModifierSettings::properties, NodesModifierData::settings, and blender::nodes::socket_cpp_value_get().
Referenced by compute_geometry().
|
static |
Definition at line 247 of file MOD_nodes.cc.
References NodesModifierData::node_group.
|
static |
Definition at line 1192 of file MOD_nodes.cc.
References BKE_object_preview_geometry_set_add(), and GeometrySet::ensure_owns_direct_data().
Referenced by compute_geometry().
|
static |
Definition at line 1203 of file MOD_nodes.cc.
References BKE_nodetree_attribute_hint_add(), context, data, AttributeMetaData::data_type, DEG_get_original_id(), AttributeMetaData::domain, blender::bke::geometry_set_instances_attribute_foreach(), NodesModifierData::modifier, node, blender::nodes::DSocket::node(), SOCK_GEOMETRY, bNodeSocketType::type, and blender::nodes::SocketRef::typeinfo().
Referenced by compute_geometry().
|
static |
Definition at line 260 of file MOD_nodes.cc.
References DEG_is_active(), ModifierEvalContext::depsgraph, ModifierEvalContext::flag, and MOD_APPLY_ORCO.
Referenced by compute_geometry(), and modifyGeometry().
| void MOD_nodes_init | ( | Main * | bmain, |
| NodesModifierData * | nmd | ||
| ) |
Definition at line 992 of file MOD_nodes.cc.
References ListBase::first, bNode::flag, bNodeTreeType::idname, bNode::inputs, bNode::locx, NODE_DO_OUTPUT, NodesModifierData::node_group, NODE_GROUP_INPUT, NODE_GROUP_OUTPUT, nodeAddLink(), nodeAddStaticNode(), nodeSetSelected(), ntree, ntreeAddSocketInterface(), ntreeAddTree(), ntreeType_Geometry, ntreeUpdateTree(), bNode::outputs, SOCK_IN, SOCK_OUT, and bNode::width.
Referenced by ED_object_modifier_add().
| void MOD_nodes_update_interface | ( | Object * | object, |
| NodesModifierData * | nmd | ||
| ) |
Rebuild the list of properties based on the sockets exposed as the modifier's node group inputs. If any properties correspond to the old properties by name and type, carry over the values.
Definition at line 948 of file MOD_nodes.cc.
References DEG_id_tag_update(), get_socket_property_type(), Object::id, ID_RECALC_GEOMETRY, bNodeSocket::identifier, IDP_AddToGroup(), IDP_CopyPropertyContent(), IDP_FreeProperty(), IDP_GetPropertyFromGroup(), IDP_GROUP, IDP_New(), bNodeTree::inputs, SocketPropertyType::is_correct_type, LISTBASE_FOREACH, NodesModifierData::node_group, NodesModifierSettings::properties, NodesModifierData::settings, and socket_add_property().
Referenced by ntreeUpdateAllUsers().
|
static |
Definition at line 1366 of file MOD_nodes.cc.
References BKE_modifier_set_error(), check_property_socket_sync(), compute_geometry(), blender::Span< T >::drop_back(), blender::nodes::SocketRef::idname(), logging_enabled(), NodesModifierData::node_group, blender::nodes::NodeTreeRef::nodes_by_type(), ModifierEvalContext::object, reset_tree_ui_storage(), blender::Span< T >::size(), and tree.
Referenced by modifyGeometrySet(), and modifyMesh().
|
static |
Definition at line 1436 of file MOD_nodes.cc.
References modifyGeometry().
|
static |
Definition at line 1416 of file MOD_nodes.cc.
References BKE_mesh_new_nomain(), GeometrySet::create_with_mesh(), Editable, ModifierEvalContext::flag, blender::bke::geometry_set_realize_mesh_for_modifier(), GeometrySet::get_component_for_write(), mesh, MOD_APPLY_TO_BASE_MESH, modifyGeometry(), and ModifierEvalContext::object.
Definition at line 1495 of file MOD_nodes.cc.
References C, CTX_data_main(), PointerRNA::data, draw_property_for_socket(), bNodeTree::inputs, Panel::layout, LISTBASE_FOREACH, modifier_panel_end(), modifier_panel_get_property_pointers(), NodesModifierData::node_group, NodesModifierSettings::properties, ptr, RNA_main_pointer_create(), NodesModifierData::settings, uiLayoutSetPropDecorate(), uiLayoutSetPropSep(), and uiTemplateID().
Referenced by panelRegister().
|
static |
Definition at line 1529 of file MOD_nodes.cc.
References eModifierType_Nodes, modifier_panel_register(), and panel_draw().
|
static |
Definition at line 1572 of file MOD_nodes.cc.
References CD_MASK_MDEFORMVERT, CD_MASK_PROP_ALL, and CustomData_MeshMasks::vmask.
|
static |
Definition at line 1062 of file MOD_nodes.cc.
References BKE_nodetree_ui_storage_free_for_context(), context, DEG_get_original_id(), and tree.
Referenced by modifyGeometry().
|
static |
Definition at line 657 of file MOD_nodes.cc.
References BLI_strnlen(), SocketPropertyType::create_default_ui_prop, SocketPropertyType::create_max_ui_prop, SocketPropertyType::create_min_ui_prop, SocketPropertyType::create_prop, bNodeSocket::description, IDProperty::flag, bNodeSocket::identifier, IDP_AddToGroup(), IDP_FLAG_OVERRIDABLE_LIBRARY, IDP_GROUP, IDP_New(), IDP_STRING, IDP_STRING_SUB_UTF8, IDPropertyTemplate::len, MAX_NAME, RNA_enum_identifier(), rna_enum_property_subtype_items, SocketPropertyType::rna_subtype_get, IDPropertyTemplate::str, IDPropertyTemplate::string, and IDPropertyTemplate::subtype.
Referenced by MOD_nodes_update_interface().
Definition at line 1096 of file MOD_nodes.cc.
References bNodeSocket::flag, node, SOCK_GEOMETRY, SOCK_MULTI_INPUT, and bNodeSocket::type.
Referenced by try_get_socket_to_preview_for_spreadsheet().
|
static |
Definition at line 1112 of file MOD_nodes.cc.
References blender::Vector< T, InlineBufferCapacity, Allocator >::as_span(), context, SpaceSpreadsheet::context_path, DEG_get_original_object(), blender::Vector< T, InlineBufferCapacity, Allocator >::last(), NodesModifierData::modifier, SpreadsheetContextModifier::modifier_name, ModifierData::name, node_context(), blender::nodes::NodeTreeRef::nodes(), ModifierEvalContext::object, SpreadsheetContextObject::object, blender::Vector< T, InlineBufferCapacity, Allocator >::size(), SPREADSHEET_CONTEXT_MODIFIER, SPREADSHEET_CONTEXT_NODE, SPREADSHEET_CONTEXT_OBJECT, tree, try_find_preview_socket_in_node(), and type.
Referenced by find_sockets_to_preview().
|
static |
Definition at line 195 of file MOD_nodes.cc.
References add_collection_relation(), add_object_relation(), DEG_add_modifier_to_transform_relation(), DEG_add_node_tree_relation(), find_used_ids_from_nodes(), find_used_ids_from_settings(), GS, id, ID_GR, ID_OB, ID::name, ModifierUpdateDepsgraphContext::node, NodesModifierData::node_group, and NodesModifierData::settings.
|
static |
Definition at line 168 of file MOD_nodes.cc.
Referenced by add_collection_relation(), and add_object_relation().
| ModifierTypeInfo modifierType_Nodes |
Definition at line 1582 of file MOD_nodes.cc.