69 if (node ==
nullptr) {
78 GeoModifierLog::get_tree_log_by_zone_for_node_editor(*snode);
85 for (GeoTreeLog *tree_log : log_by_zone.
values()) {
86 tree_log->ensure_socket_values();
87 tree_log->ensure_existing_attributes();
105 tree_log->ensure_socket_values();
106 GeoNodeLog *node_log = tree_log->nodes.lookup_ptr(node->
identifier);
107 if (node_log ==
nullptr) {
112 for (
const bNodeSocket *input_socket : node->input_sockets()) {
116 const ValueLog *value_log = tree_log->find_socket_value_log(*input_socket);
117 if (value_log ==
nullptr) {
120 if (
const GeometryInfoLog *
geo_log =
dynamic_cast<const GeometryInfoLog *
>(value_log)) {
184 if (item ==
nullptr) {
199 if (node ==
nullptr) {
219 if (socket ==
nullptr) {
265 static_cast<void *
>(
data),
SpaceNode * CTX_wm_space_node(const bContext *C)
Main * CTX_data_main(const bContext *C)
wmWindowManager * CTX_wm_manager(const bContext *C)
#define GEO_NODE_INPUT_NAMED_ATTRIBUTE
void BKE_ntree_update_tag_node_property(bNodeTree *ntree, bNode *node)
General operations, lookup, etc. for blender objects.
#define BLI_assert_unreachable()
#define BLI_STATIC_ASSERT(a, msg)
#define STRNCPY(dst, src)
char * BLI_strncpy(char *__restrict dst, const char *__restrict src, size_t dst_maxncpy) ATTR_NONNULL(1
Object is a sort of wrapper for general info.
void ED_node_tree_propagate_change(const bContext *C, Main *bmain, bNodeTree *ntree)
bScreen * ED_screen_animation_playing(const wmWindowManager *wm)
void ED_undo_push(bContext *C, const char *str)
in reality light always falls off quadratically Particle Retrieve the data of the particle that spawned the object for example to give variation to multiple instances of an object Point Retrieve information about points in a point cloud Retrieve the edges of an object as it appears to Cycles topology will always appear triangulated Convert a blackbody temperature to an RGB value Normal Generate a perturbed normal from an RGB normal map image Typically used for faking highly detailed surfaces Generate an OSL shader from a file or text data block Image Sample an image file as a texture Gabor Generate Gabor noise Gradient Generate interpolated color and intensity values based on the input vector Magic Generate a psychedelic color texture Voronoi Generate Worley noise based on the distance to random points Typically used to generate textures such as or biological cells Brick Generate a procedural texture producing bricks Texture Retrieve multiple types of texture coordinates nTypically used as inputs for texture nodes Vector Convert a or normal between and object coordinate space Combine Create a color from its and value channels Color Retrieve a color attribute
void UI_but_placeholder_set(uiBut *but, const char *placeholder_text) ATTR_NONNULL(1)
void UI_but_func_search_set_results_are_suggestions(uiBut *but, bool value)
void UI_but_func_search_set(uiBut *but, uiButSearchCreateFn search_create_fn, uiButSearchUpdateFn search_update_fn, void *arg, bool free_arg, uiFreeArgFunc search_arg_free_fn, uiButHandleFunc search_exec_fn, void *active)
uiBlock * uiLayoutGetBlock(uiLayout *layout)
uiBut * uiDefIconTextButR(uiBlock *block, int type, int retval, int icon, const char *str, int x, int y, short width, short height, PointerRNA *ptr, const char *propname, int index, float min, float max, const char *tip)
void UI_but_func_search_set_sep_string(uiBut *but, const char *search_sep_string)
Value lookup_default(const Key &key, const Value &default_value) const
ValueIterator values() const
constexpr const char * c_str() const
void append(const T &value)
const bNodeTreeZone * get_zone_by_node(const int32_t node_id) const
bNodeSocket * node_find_enabled_input_socket(bNode &node, StringRef name)
bool allow_procedural_attribute_access(StringRef attribute_name)
static Vector< const GeometryAttributeInfo * > get_attribute_info_from_context(const bContext &C, AttributeSearchData &data)
static eCustomDataType data_type_in_attribute_input_node(const eCustomDataType type)
static void attribute_search_update_fn(const bContext *C, void *arg, const char *str, uiSearchItems *items, const bool is_first)
void node_geometry_add_attribute_search_button(const bContext &, const bNode &node, PointerRNA &socket_ptr, uiLayout &layout, const StringRefNull placeholder)
static void attribute_search_exec_fn(bContext *C, void *data_v, void *item_v)
void update_node_declaration_and_sockets(bNodeTree &ntree, bNode &node)
void attribute_search_add_items(StringRefNull str, bool can_create_attribute, Span< const nodes::geo_eval_log::GeometryAttributeInfo * > infos, uiSearchItems *items, bool is_first)
#define UI_MENU_ARROW_SEP
struct bNodeTree * edittree
char socket_identifier[MAX_NAME]
std::optional< eCustomDataType > data_type