27 friend bNodeTreeInterface;
34 std::atomic<bool> interface_changed_ =
true;
58 match |= std::is_same_v<T, bNodeTreeInterfaceSocket>;
62 match |= std::is_same_v<T, bNodeTreeInterfacePanel>;
74 return reinterpret_cast<T &
>(item);
80 return reinterpret_cast<const T &
>(item);
86 return reinterpret_cast<T *
>(item);
94 return reinterpret_cast<const T *
>(item);
116 {
"NodeSocketFloatPercentage",
117 "NodeTreeInterfaceSocketFloatPercentage",
123 {
"NodeSocketFloatTimeAbsolute",
124 "NodeTreeInterfaceSocketFloatTimeAbsolute",
128 {
"NodeSocketFloatWavelength",
129 "NodeTreeInterfaceSocketFloatWavelength",
132 {
"NodeSocketFloatColorTemperature",
133 "NodeTreeInterfaceSocketFloatColorTemperature",
136 {
"NodeSocketFloatFrequency",
137 "NodeTreeInterfaceSocketFloatFrequency",
148 {
"NodeSocketVectorPercentage",
149 "NodeTreeInterfaceSocketVectorPercentage",
152 {
"NodeSocketVectorTranslation",
153 "NodeTreeInterfaceSocketVectorTranslation",
156 {
"NodeSocketVectorDirection",
157 "NodeTreeInterfaceSocketVectorDirection",
160 {
"NodeSocketVectorVelocity",
161 "NodeTreeInterfaceSocketVectorVelocity",
164 {
"NodeSocketVectorAcceleration",
165 "NodeTreeInterfaceSocketVectorAcceleration",
172 {
"NodeSocketVectorFactor2D",
173 "NodeTreeInterfaceSocketVectorFactor2D",
176 {
"NodeSocketVectorPercentage2D",
177 "NodeTreeInterfaceSocketVectorPercentage2D",
180 {
"NodeSocketVectorTranslation2D",
181 "NodeTreeInterfaceSocketVectorTranslation2D",
184 {
"NodeSocketVectorDirection2D",
185 "NodeTreeInterfaceSocketVectorDirection2D",
188 {
"NodeSocketVectorVelocity2D",
189 "NodeTreeInterfaceSocketVectorVelocity2D",
192 {
"NodeSocketVectorAcceleration2D",
193 "NodeTreeInterfaceSocketVectorAcceleration2D",
200 {
"NodeSocketVectorFactor4D",
201 "NodeTreeInterfaceSocketVectorFactor4D",
204 {
"NodeSocketVectorPercentage4D",
205 "NodeTreeInterfaceSocketVectorPercentage4D",
208 {
"NodeSocketVectorTranslation4D",
209 "NodeTreeInterfaceSocketVectorTranslation4D",
212 {
"NodeSocketVectorDirection4D",
213 "NodeTreeInterfaceSocketVectorDirection4D",
216 {
"NodeSocketVectorVelocity4D",
217 "NodeTreeInterfaceSocketVectorVelocity4D",
220 {
"NodeSocketVectorAcceleration4D",
221 "NodeTreeInterfaceSocketVectorAcceleration4D",
232 {
"NodeSocketStringFilePath",
233 "NodeTreeInterfaceSocketStringFilePath",
305 if (socket_type == info.socket_identifier) {
340 using SocketDataType =
typename decltype(type_tag)::type;
341 match |= std::is_same_v<T, SocketDataType>;
359 const bNode &from_node,
365 const bNode &from_node,
374 const bNode &from_node,
NodeTreeInterfaceItemType
static bool item_is_type(const bNodeTreeInterfaceItem &item)
void socket_data_to_static_type_tag(const StringRef socket_type, const Fn &fn)
bool socket_data_to_static_type(const eNodeSocketDatatype type, const Fn &fn)
static const bNodeSocketStaticTypeInfo node_socket_subtypes[]
T & get_item_as(bNodeTreeInterfaceItem &item)
bNodeTreeInterfaceSocket * add_interface_socket_from_node(bNodeTree &ntree, const bNode &from_node, const bNodeSocket &from_sock, StringRef socket_type, StringRef name)
bool socket_data_is_type(const char *socket_type)
T & get_socket_data_as(bNodeTreeInterfaceSocket &item)
StringRefNull node_socket_label(const bNodeSocket &sock)
bNodeSocketTypeHandle * typeinfo
bNodeTreeInterfaceItem * item
const char * interface_identifier
const char * socket_identifier
TypeTagExecutor(const Fn &fn_)