Differential D16721 Diff 58614 source/blender/nodes/geometry/nodes/node_geo_store_named_attribute.cc
Changeset View
Changeset View
Standalone View
Standalone View
source/blender/nodes/geometry/nodes/node_geo_store_named_attribute.cc
| Show First 20 Lines • Show All 53 Lines • ▼ Show 20 Lines | static void node_update(bNodeTree *ntree, bNode *node) | ||||
| bNodeSocket *socket_geometry = static_cast<bNodeSocket *>(node->inputs.first); | bNodeSocket *socket_geometry = static_cast<bNodeSocket *>(node->inputs.first); | ||||
| bNodeSocket *socket_name = socket_geometry->next; | bNodeSocket *socket_name = socket_geometry->next; | ||||
| bNodeSocket *socket_vector = socket_name->next; | bNodeSocket *socket_vector = socket_name->next; | ||||
| bNodeSocket *socket_float = socket_vector->next; | bNodeSocket *socket_float = socket_vector->next; | ||||
| bNodeSocket *socket_color4f = socket_float->next; | bNodeSocket *socket_color4f = socket_float->next; | ||||
| bNodeSocket *socket_boolean = socket_color4f->next; | bNodeSocket *socket_boolean = socket_color4f->next; | ||||
| bNodeSocket *socket_int32 = socket_boolean->next; | bNodeSocket *socket_int32 = socket_boolean->next; | ||||
| nodeSetSocketAvailability(ntree, socket_vector, data_type == CD_PROP_FLOAT3); | nodeSetSocketAvailability(ntree, socket_vector, ELEM(data_type, CD_PROP_FLOAT2, CD_PROP_FLOAT3)); | ||||
| nodeSetSocketAvailability(ntree, socket_float, data_type == CD_PROP_FLOAT); | nodeSetSocketAvailability(ntree, socket_float, data_type == CD_PROP_FLOAT); | ||||
| nodeSetSocketAvailability( | nodeSetSocketAvailability( | ||||
| ntree, socket_color4f, ELEM(data_type, CD_PROP_COLOR, CD_PROP_BYTE_COLOR)); | ntree, socket_color4f, ELEM(data_type, CD_PROP_COLOR, CD_PROP_BYTE_COLOR)); | ||||
| nodeSetSocketAvailability(ntree, socket_boolean, data_type == CD_PROP_BOOL); | nodeSetSocketAvailability(ntree, socket_boolean, data_type == CD_PROP_BOOL); | ||||
| nodeSetSocketAvailability(ntree, socket_int32, data_type == CD_PROP_INT32); | nodeSetSocketAvailability(ntree, socket_int32, data_type == CD_PROP_INT32); | ||||
| } | } | ||||
| static void node_gather_link_searches(GatherLinkSearchOpParams ¶ms) | static void node_gather_link_searches(GatherLinkSearchOpParams ¶ms) | ||||
| Show All 37 Lines | static void node_geo_exec(GeoNodeExecParams params) | ||||
| const eCustomDataType data_type = eCustomDataType(storage.data_type); | const eCustomDataType data_type = eCustomDataType(storage.data_type); | ||||
| const eAttrDomain domain = eAttrDomain(storage.domain); | const eAttrDomain domain = eAttrDomain(storage.domain); | ||||
| GField field; | GField field; | ||||
| switch (data_type) { | switch (data_type) { | ||||
| case CD_PROP_FLOAT: | case CD_PROP_FLOAT: | ||||
| field = params.get_input<Field<float>>("Value_Float"); | field = params.get_input<Field<float>>("Value_Float"); | ||||
| break; | break; | ||||
| case CD_PROP_FLOAT2: { | |||||
| field = params.get_input<Field<float3>>("Value_Vector"); | |||||
| field = bke::get_implicit_type_conversions().try_convert(field, CPPType::get<float2>()); | |||||
| break; | |||||
| } | |||||
| case CD_PROP_FLOAT3: | case CD_PROP_FLOAT3: | ||||
| field = params.get_input<Field<float3>>("Value_Vector"); | field = params.get_input<Field<float3>>("Value_Vector"); | ||||
| break; | break; | ||||
| case CD_PROP_COLOR: | case CD_PROP_COLOR: | ||||
| field = params.get_input<Field<ColorGeometry4f>>("Value_Color"); | field = params.get_input<Field<ColorGeometry4f>>("Value_Color"); | ||||
| break; | break; | ||||
| case CD_PROP_BYTE_COLOR: { | case CD_PROP_BYTE_COLOR: { | ||||
| field = params.get_input<Field<ColorGeometry4f>>("Value_Color"); | field = params.get_input<Field<ColorGeometry4f>>("Value_Color"); | ||||
| ▲ Show 20 Lines • Show All 83 Lines • Show Last 20 Lines | |||||