Blender V4.3
MOD_nodes.cc File Reference
#include <cstring>
#include <fmt/format.h>
#include <iostream>
#include <sstream>
#include <string>
#include "MEM_guardedalloc.h"
#include "BLI_array.hh"
#include "BLI_listbase.h"
#include "BLI_math_vector_types.hh"
#include "BLI_multi_value_map.hh"
#include "BLI_path_utils.hh"
#include "BLI_set.hh"
#include "BLI_string.h"
#include "BLI_utildefines.h"
#include "DNA_array_utils.hh"
#include "DNA_collection_types.h"
#include "DNA_curves_types.h"
#include "DNA_defaults.h"
#include "DNA_material_types.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_view3d_types.h"
#include "DNA_windowmanager_types.h"
#include "BKE_attribute_math.hh"
#include "BKE_bake_data_block_map.hh"
#include "BKE_bake_geometry_nodes_modifier.hh"
#include "BKE_compute_contexts.hh"
#include "BKE_customdata.hh"
#include "BKE_geometry_fields.hh"
#include "BKE_geometry_set_instances.hh"
#include "BKE_global.hh"
#include "BKE_idprop.hh"
#include "BKE_lib_id.hh"
#include "BKE_lib_query.hh"
#include "BKE_main.hh"
#include "BKE_mesh.hh"
#include "BKE_modifier.hh"
#include "BKE_node_runtime.hh"
#include "BKE_node_tree_update.hh"
#include "BKE_object.hh"
#include "BKE_packedFile.hh"
#include "BKE_pointcloud.hh"
#include "BKE_screen.hh"
#include "BKE_workspace.hh"
#include "BLO_read_write.hh"
#include "UI_interface.hh"
#include "UI_resources.hh"
#include "BLT_translation.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "RNA_access.hh"
#include "RNA_enum_types.hh"
#include "RNA_prototypes.hh"
#include "DEG_depsgraph_build.hh"
#include "DEG_depsgraph_query.hh"
#include "DEG_depsgraph_writeback_sync.hh"
#include "MOD_modifiertypes.hh"
#include "MOD_nodes.hh"
#include "MOD_ui_common.hh"
#include "ED_object.hh"
#include "ED_screen.hh"
#include "ED_spreadsheet.hh"
#include "ED_undo.hh"
#include "ED_viewer_path.hh"
#include "NOD_geometry.hh"
#include "NOD_geometry_nodes_execute.hh"
#include "NOD_geometry_nodes_gizmos.hh"
#include "NOD_geometry_nodes_lazy_function.hh"
#include "NOD_node_declaration.hh"
#include "FN_field.hh"
#include "FN_lazy_function_execute.hh"
#include "FN_lazy_function_graph_executor.hh"
#include "FN_multi_function.hh"

Go to the source code of this file.

Classes

class  blender::NodesModifierBakeDataBlockMap
 
struct  blender::BakeFrameIndices
 
class  blender::NodesModifierSimulationParams
 
struct  blender::NodesModifierSimulationParams::DataPerZone
 
class  blender::NodesModifierBakeParams
 
struct  blender::NodesModifierBakeParams::DataPerNode
 
struct  blender::AttributeSearchData
 

Namespaces

namespace  blender
 

Functions

static void blender::init_data (ModifierData *md)
 
static void blender::find_used_ids_from_settings (const NodesModifierSettings &settings, Set< ID * > &ids)
 
static void blender::add_collection_relation (const ModifierUpdateDepsgraphContext *ctx, Collection &collection)
 
static void blender::add_object_relation (const ModifierUpdateDepsgraphContext *ctx, Object &object)
 
static void blender::update_depsgraph (ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 
static bool blender::check_tree_for_time_node (const bNodeTree &tree, Set< const bNodeTree * > &checked_groups)
 
static bool blender::depends_on_time (Scene *, ModifierData *md)
 
static void blender::foreach_ID_link (ModifierData *md, Object *ob, IDWalkFunc walk, void *user_data)
 
static void blender::foreach_tex_link (ModifierData *md, Object *ob, TexWalkFunc walk, void *user_data)
 
static bool blender::is_disabled (const Scene *, ModifierData *md, bool)
 
static bool blender::logging_enabled (const ModifierEvalContext *ctx)
 
static void blender::update_id_properties_from_node_group (NodesModifierData *nmd)
 
static void blender::remove_outdated_bake_caches (NodesModifierData &nmd)
 
static void blender::update_bakes_from_node_group (NodesModifierData &nmd)
 
static void blender::update_panels_from_node_group (NodesModifierData &nmd)
 
void MOD_nodes_update_interface (Object *object, NodesModifierData *nmd)
 
static void blender::try_add_side_effect_node (const ComputeContext &final_compute_context, const int final_node_id, const NodesModifierData &nmd, nodes::GeoNodesSideEffectNodes &r_side_effect_nodes)
 
static void blender::find_side_effect_nodes_for_viewer_path (const ViewerPath &viewer_path, const NodesModifierData &nmd, const ModifierEvalContext &ctx, nodes::GeoNodesSideEffectNodes &r_side_effect_nodes)
 
static void blender::find_side_effect_nodes_for_nested_node (const NodesModifierData &nmd, const int root_nested_node_id, nodes::GeoNodesSideEffectNodes &r_side_effect_nodes)
 
static void blender::find_side_effect_nodes_for_baking (const NodesModifierData &nmd, const ModifierEvalContext &ctx, nodes::GeoNodesSideEffectNodes &r_side_effect_nodes)
 
static void blender::find_side_effect_nodes_for_active_gizmos (const NodesModifierData &nmd, const ModifierEvalContext &ctx, const wmWindowManager &wm, nodes::GeoNodesSideEffectNodes &r_side_effect_nodes, Set< ComputeContextHash > &r_socket_log_contexts)
 
static void blender::find_side_effect_nodes (const NodesModifierData &nmd, const ModifierEvalContext &ctx, nodes::GeoNodesSideEffectNodes &r_side_effect_nodes, Set< ComputeContextHash > &r_socket_log_contexts)
 
static void blender::find_socket_log_contexts (const NodesModifierData &nmd, const ModifierEvalContext &ctx, Set< ComputeContextHash > &r_socket_log_contexts)
 
static void blender::check_property_socket_sync (const Object *ob, ModifierData *md)
 
static BakeFrameIndices blender::get_bake_frame_indices (const Span< std::unique_ptr< bake::FrameCache > > frame_caches, const SubFrame frame)
 
static void blender::ensure_bake_loaded (bake::NodeBakeCache &bake_cache, bake::FrameCache &frame_cache)
 
static bool blender::try_find_baked_data (const NodesModifierBake &bake, bake::NodeBakeCache &bake_cache, const Main &bmain, const Object &object, const NodesModifierData &nmd, const int id)
 
static void blender::add_missing_data_block_mappings (NodesModifierBake &bake, const Span< bake::BakeDataBlockID > missing, FunctionRef< ID *(const bake::BakeDataBlockID &)> get_data_block)
 
void blender::nodes_modifier_data_block_destruct (NodesModifierDataBlock *data_block, const bool do_id_user)
 
static void blender::add_data_block_items_writeback (const ModifierEvalContext &ctx, NodesModifierData &nmd_eval, NodesModifierData &nmd_orig, NodesModifierSimulationParams &simulation_params, NodesModifierBakeParams &bake_params)
 
static void blender::modifyGeometry (ModifierData *md, const ModifierEvalContext *ctx, bke::GeometrySet &geometry_set)
 
static Meshblender::modify_mesh (ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
 
static void blender::modify_geometry_set (ModifierData *md, const ModifierEvalContext *ctx, bke::GeometrySet *geometry_set)
 
 blender::BLI_STATIC_ASSERT (std::is_trivially_destructible_v< AttributeSearchData >, "")
 
static NodesModifierDatablender::get_modifier_data (Main &bmain, const wmWindowManager &wm, const AttributeSearchData &data)
 
static geo_log::GeoTreeLogblender::get_root_tree_log (const NodesModifierData &nmd)
 
static void blender::attribute_search_update_fn (const bContext *C, void *arg, const char *str, uiSearchItems *items, const bool is_first)
 
static void blender::attribute_search_exec_fn (bContext *C, void *data_v, void *item_v)
 
static void blender::add_attribute_search_button (const bContext &C, uiLayout *layout, const NodesModifierData &nmd, PointerRNA *md_ptr, const StringRefNull rna_path_attribute_name, const bNodeTreeInterfaceSocket &socket, const bool is_output)
 
static void blender::add_attribute_search_or_value_buttons (const bContext &C, uiLayout *layout, const NodesModifierData &nmd, PointerRNA *md_ptr, const bNodeTreeInterfaceSocket &socket)
 
static void blender::draw_property_for_socket (const bContext &C, uiLayout *layout, NodesModifierData *nmd, PointerRNA *bmain_ptr, PointerRNA *md_ptr, const bNodeTreeInterfaceSocket &socket)
 
static void blender::draw_property_for_output_socket (const bContext &C, uiLayout *layout, const NodesModifierData &nmd, PointerRNA *md_ptr, const bNodeTreeInterfaceSocket &socket)
 
static NodesModifierPanelblender::find_panel_by_id (NodesModifierData &nmd, const int id)
 
static bool blender::interace_panel_has_socket (const bNodeTreeInterfacePanel &interface_panel)
 
static void blender::draw_interface_panel_content (const bContext *C, uiLayout *layout, PointerRNA *modifier_ptr, NodesModifierData &nmd, const bNodeTreeInterfacePanel &interface_panel)
 
static bool blender::has_output_attribute (const NodesModifierData &nmd)
 
static void blender::draw_output_attributes_panel (const bContext *C, uiLayout *layout, const NodesModifierData &nmd, PointerRNA *ptr)
 
static void blender::draw_bake_panel (uiLayout *layout, PointerRNA *modifier_ptr)
 
static void blender::draw_named_attributes_panel (uiLayout *layout, NodesModifierData &nmd)
 
static void blender::draw_manage_panel (const bContext *C, uiLayout *layout, PointerRNA *modifier_ptr, NodesModifierData &nmd)
 
static void blender::draw_warnings (const bContext *C, const NodesModifierData &nmd, uiLayout *layout, PointerRNA *md_ptr)
 
static void blender::panel_draw (const bContext *C, Panel *panel)
 
static void blender::panel_register (ARegionType *region_type)
 
static void blender::blend_write (BlendWriter *writer, const ID *, const ModifierData *md)
 
static void blender::blend_read (BlendDataReader *reader, ModifierData *md)
 
static void blender::copy_data (const ModifierData *md, ModifierData *target, const int flag)
 
void blender::nodes_modifier_packed_bake_free (NodesModifierPackedBake *packed_bake)
 
static void blender::free_data (ModifierData *md)
 
static void blender::required_data_mask (ModifierData *, CustomData_MeshMasks *r_cddata_masks)
 

Variables

static const CustomData_MeshMasks blender::dependency_data_mask
 
ModifierTypeInfo modifierType_Nodes
 

Function Documentation

◆ MOD_nodes_update_interface()

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 453 of file MOD_nodes.cc.

References DEG_id_tag_update(), and ID_RECALC_GEOMETRY.

Referenced by blender::ed::object::drop_geometry_nodes_invoke(), blender::ed::object::modifier_add_asset_exec(), blender::ed::object::shade_auto_smooth_exec(), and blender::bke::NodeTreeMainUpdater::update_rooted().

Variable Documentation

◆ modifierType_Nodes

ModifierTypeInfo modifierType_Nodes

Definition at line 2788 of file MOD_nodes.cc.