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",
150 {
"NodeSocketVectorPercentage",
151 "NodeTreeInterfaceSocketVectorPercentage",
154 {
"NodeSocketVectorTranslation",
155 "NodeTreeInterfaceSocketVectorTranslation",
158 {
"NodeSocketVectorDirection",
159 "NodeTreeInterfaceSocketVectorDirection",
162 {
"NodeSocketVectorVelocity",
163 "NodeTreeInterfaceSocketVectorVelocity",
166 {
"NodeSocketVectorAcceleration",
167 "NodeTreeInterfaceSocketVectorAcceleration",
174 {
"NodeSocketVectorFactor2D",
175 "NodeTreeInterfaceSocketVectorFactor2D",
178 {
"NodeSocketVectorPercentage2D",
179 "NodeTreeInterfaceSocketVectorPercentage2D",
182 {
"NodeSocketVectorTranslation2D",
183 "NodeTreeInterfaceSocketVectorTranslation2D",
186 {
"NodeSocketVectorDirection2D",
187 "NodeTreeInterfaceSocketVectorDirection2D",
190 {
"NodeSocketVectorVelocity2D",
191 "NodeTreeInterfaceSocketVectorVelocity2D",
194 {
"NodeSocketVectorAcceleration2D",
195 "NodeTreeInterfaceSocketVectorAcceleration2D",
202 {
"NodeSocketVectorFactor4D",
203 "NodeTreeInterfaceSocketVectorFactor4D",
206 {
"NodeSocketVectorPercentage4D",
207 "NodeTreeInterfaceSocketVectorPercentage4D",
210 {
"NodeSocketVectorTranslation4D",
211 "NodeTreeInterfaceSocketVectorTranslation4D",
214 {
"NodeSocketVectorDirection4D",
215 "NodeTreeInterfaceSocketVectorDirection4D",
218 {
"NodeSocketVectorVelocity4D",
219 "NodeTreeInterfaceSocketVectorVelocity4D",
222 {
"NodeSocketVectorAcceleration4D",
223 "NodeTreeInterfaceSocketVectorAcceleration4D",
231 {
"NodeSocketStringFilePath",
232 "NodeTreeInterfaceSocketStringFilePath",
304 if (socket_type == info.socket_identifier) {
339 using SocketDataType =
typename decltype(type_tag)::type;
340 match |= std::is_same_v<T, SocketDataType>;
358 const bNode &from_node,
364 const bNode &from_node,
372 const bNode &from_node,
376 ntree, from_node, from_sock, from_sock.
typeinfo->idname, from_sock.
name);
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)
bNodeSocketTypeHandle * typeinfo
bNodeTreeInterfaceItem * item
const char * interface_identifier
const char * socket_identifier
TypeTagExecutor(const Fn &fn_)