Blender  V2.93
Classes | Typedefs | Functions | Variables
MOD_nodes.cc File Reference
#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 >
 

Functions

static void initData (ModifierData *md)
 
static void addIdsUsedBySocket (const ListBase *sockets, Set< ID * > &ids)
 
static void find_used_ids_from_nodes (const bNodeTree &tree, Set< ID * > &ids)
 
static void find_used_ids_from_settings (const NodesModifierSettings &settings, Set< ID * > &ids)
 
static void add_collection_relation (const ModifierUpdateDepsgraphContext *ctx, Collection &collection)
 
static void add_object_relation (const ModifierUpdateDepsgraphContext *ctx, Object &object)
 
static void updateDepsgraph (ModifierData *md, const ModifierUpdateDepsgraphContext *ctx)
 
static void foreachIDLink (ModifierData *md, Object *ob, IDWalkFunc walk, void *userData)
 
static void foreachTexLink (ModifierData *md, Object *ob, TexWalkFunc walk, void *userData)
 
static bool isDisabled (const struct Scene *UNUSED(scene), ModifierData *md, bool UNUSED(useRenderParams))
 
static bool logging_enabled (const ModifierEvalContext *ctx)
 
static IDPropertysocket_add_property (IDProperty *settings_prop_group, IDProperty *ui_container, const SocketPropertyType &property_type, const bNodeSocket &socket)
 
static const SocketPropertyTypeget_socket_property_type (const bNodeSocket &bsocket)
 
void MOD_nodes_update_interface (Object *object, NodesModifierData *nmd)
 
void MOD_nodes_init (Main *bmain, NodesModifierData *nmd)
 
static void initialize_group_input (NodesModifierData &nmd, const PersistentDataHandleMap &handle_map, const bNodeSocket &socket, const CPPType &cpp_type, void *r_value)
 
static void fill_data_handle_map (const NodesModifierSettings &settings, const DerivedNodeTree &tree, PersistentDataHandleMap &handle_map)
 
static void reset_tree_ui_storage (Span< const blender::nodes::NodeTreeRef * > trees, const Object &object, const ModifierData &modifier)
 
static Vector< SpaceSpreadsheet * > find_spreadsheet_editors (Main *bmain)
 
static DSocket try_find_preview_socket_in_node (const DNode node)
 
static DSocket try_get_socket_to_preview_for_spreadsheet (SpaceSpreadsheet *sspreadsheet, NodesModifierData *nmd, const ModifierEvalContext *ctx, const DerivedNodeTree &tree)
 
static void find_sockets_to_preview (NodesModifierData *nmd, const ModifierEvalContext *ctx, const DerivedNodeTree &tree, PreviewSocketMap &r_sockets_to_preview)
 
static void log_preview_socket_value (const Span< GPointer > values, Object *object, Span< uint64_t > keys)
 
static void log_ui_hints (const DSocket socket, const Span< GPointer > values, Object *self_object, NodesModifierData *nmd)
 
static GeometrySet compute_geometry (const DerivedNodeTree &tree, Span< const NodeRef * > group_input_nodes, const InputSocketRef &socket_to_compute, GeometrySet input_geometry_set, NodesModifierData *nmd, const ModifierEvalContext *ctx)
 
static void check_property_socket_sync (const Object *ob, ModifierData *md)
 
static void modifyGeometry (ModifierData *md, const ModifierEvalContext *ctx, GeometrySet &geometry_set)
 
static MeshmodifyMesh (ModifierData *md, const ModifierEvalContext *ctx, Mesh *mesh)
 
static void modifyGeometrySet (ModifierData *md, const ModifierEvalContext *ctx, GeometrySet *geometry_set)
 
static void draw_property_for_socket (uiLayout *layout, PointerRNA *bmain_ptr, PointerRNA *md_ptr, const IDProperty *modifier_props, const bNodeSocket &socket)
 
static void panel_draw (const bContext *C, Panel *panel)
 
static void panelRegister (ARegionType *region_type)
 
static void blendWrite (BlendWriter *writer, const ModifierData *md)
 
static void blendRead (BlendDataReader *reader, ModifierData *md)
 
static void copyData (const ModifierData *md, ModifierData *target, const int flag)
 
static void freeData (ModifierData *md)
 
static void requiredDataMask (Object *UNUSED(ob), ModifierData *UNUSED(md), CustomData_MeshMasks *r_cddata_masks)
 

Variables

static const CustomData_MeshMasks dependency_data_mask
 
ModifierTypeInfo modifierType_Nodes
 

Typedef Documentation

◆ PreviewSocketMap

Definition at line 1094 of file MOD_nodes.cc.

Function Documentation

◆ add_collection_relation()

static void add_collection_relation ( const ModifierUpdateDepsgraphContext ctx,
Collection collection 
)
static

◆ add_object_relation()

static void add_object_relation ( const ModifierUpdateDepsgraphContext ctx,
Object object 
)
static

◆ addIdsUsedBySocket()

static void addIdsUsedBySocket ( const ListBase sockets,
Set< ID * > &  ids 
)
static

◆ blendRead()

static void blendRead ( BlendDataReader reader,
ModifierData md 
)
static

◆ blendWrite()

static void blendWrite ( BlendWriter writer,
const ModifierData md 
)
static

◆ check_property_socket_sync()

static void check_property_socket_sync ( const Object ob,
ModifierData md 
)
static

◆ compute_geometry()

static GeometrySet compute_geometry ( const DerivedNodeTree tree,
Span< const NodeRef * >  group_input_nodes,
const InputSocketRef socket_to_compute,
GeometrySet  input_geometry_set,
NodesModifierData nmd,
const ModifierEvalContext ctx 
)
static

◆ copyData()

static void copyData ( const ModifierData md,
ModifierData target,
const int  flag 
)
static

◆ draw_property_for_socket()

static void draw_property_for_socket ( uiLayout layout,
PointerRNA bmain_ptr,
PointerRNA md_ptr,
const IDProperty modifier_props,
const bNodeSocket socket 
)
static

◆ fill_data_handle_map()

static void fill_data_handle_map ( const NodesModifierSettings settings,
const DerivedNodeTree tree,
PersistentDataHandleMap handle_map 
)
static

◆ find_sockets_to_preview()

static void find_sockets_to_preview ( NodesModifierData nmd,
const ModifierEvalContext ctx,
const DerivedNodeTree tree,
PreviewSocketMap r_sockets_to_preview 
)
static

◆ find_spreadsheet_editors()

static Vector<SpaceSpreadsheet *> find_spreadsheet_editors ( Main bmain)
static

◆ find_used_ids_from_nodes()

static void find_used_ids_from_nodes ( const bNodeTree tree,
Set< ID * > &  ids 
)
static

◆ find_used_ids_from_settings()

static void find_used_ids_from_settings ( const NodesModifierSettings settings,
Set< ID * > &  ids 
)
static

◆ foreachIDLink()

static void foreachIDLink ( ModifierData md,
Object ob,
IDWalkFunc  walk,
void *  userData 
)
static

◆ foreachTexLink()

static void foreachTexLink ( ModifierData md,
Object ob,
TexWalkFunc  walk,
void *  userData 
)
static

Definition at line 242 of file MOD_nodes.cc.

◆ freeData()

static void freeData ( ModifierData md)
static

◆ get_socket_property_type()

static const SocketPropertyType* get_socket_property_type ( const bNodeSocket bsocket)
static

◆ initData()

static void initData ( ModifierData md)
static

◆ initialize_group_input()

static void initialize_group_input ( NodesModifierData nmd,
const PersistentDataHandleMap handle_map,
const bNodeSocket socket,
const CPPType cpp_type,
void *  r_value 
)
static

◆ isDisabled()

static bool isDisabled ( const struct Scene UNUSEDscene,
ModifierData md,
bool   UNUSEDuseRenderParams 
)
static

Definition at line 247 of file MOD_nodes.cc.

References NodesModifierData::node_group.

◆ log_preview_socket_value()

static void log_preview_socket_value ( const Span< GPointer values,
Object object,
Span< uint64_t keys 
)
static

◆ log_ui_hints()

static void log_ui_hints ( const DSocket  socket,
const Span< GPointer values,
Object self_object,
NodesModifierData nmd 
)
static

◆ logging_enabled()

static bool logging_enabled ( const ModifierEvalContext ctx)
static

◆ MOD_nodes_init()

void MOD_nodes_init ( Main bmain,
NodesModifierData nmd 
)

◆ 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 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().

◆ modifyGeometry()

static void modifyGeometry ( ModifierData md,
const ModifierEvalContext ctx,
GeometrySet geometry_set 
)
static

◆ modifyGeometrySet()

static void modifyGeometrySet ( ModifierData md,
const ModifierEvalContext ctx,
GeometrySet geometry_set 
)
static

Definition at line 1436 of file MOD_nodes.cc.

References modifyGeometry().

◆ modifyMesh()

static Mesh* modifyMesh ( ModifierData md,
const ModifierEvalContext ctx,
Mesh mesh 
)
static

◆ panel_draw()

static void panel_draw ( const bContext C,
Panel panel 
)
static

◆ panelRegister()

static void panelRegister ( ARegionType region_type)
static

Definition at line 1529 of file MOD_nodes.cc.

References eModifierType_Nodes, modifier_panel_register(), and panel_draw().

◆ requiredDataMask()

static void requiredDataMask ( Object UNUSEDob,
ModifierData UNUSEDmd,
CustomData_MeshMasks r_cddata_masks 
)
static

Definition at line 1572 of file MOD_nodes.cc.

References CD_MASK_MDEFORMVERT, CD_MASK_PROP_ALL, and CustomData_MeshMasks::vmask.

◆ reset_tree_ui_storage()

static void reset_tree_ui_storage ( Span< const blender::nodes::NodeTreeRef * >  trees,
const Object object,
const ModifierData modifier 
)
static

◆ socket_add_property()

static IDProperty* socket_add_property ( IDProperty settings_prop_group,
IDProperty ui_container,
const SocketPropertyType property_type,
const bNodeSocket socket 
)
static

◆ try_find_preview_socket_in_node()

static DSocket try_find_preview_socket_in_node ( const DNode  node)
static

◆ try_get_socket_to_preview_for_spreadsheet()

static DSocket try_get_socket_to_preview_for_spreadsheet ( SpaceSpreadsheet sspreadsheet,
NodesModifierData nmd,
const ModifierEvalContext ctx,
const DerivedNodeTree tree 
)
static

◆ updateDepsgraph()

static void updateDepsgraph ( ModifierData md,
const ModifierUpdateDepsgraphContext ctx 
)
static

Variable Documentation

◆ dependency_data_mask

const CustomData_MeshMasks dependency_data_mask
static

◆ modifierType_Nodes

ModifierTypeInfo modifierType_Nodes

Definition at line 1582 of file MOD_nodes.cc.