diff options
Diffstat (limited to 'source/blender/blenkernel/BKE_node_ui_storage.hh')
-rw-r--r-- | source/blender/blenkernel/BKE_node_ui_storage.hh | 27 |
1 files changed, 25 insertions, 2 deletions
diff --git a/source/blender/blenkernel/BKE_node_ui_storage.hh b/source/blender/blenkernel/BKE_node_ui_storage.hh index a49ff988272..be9510179c3 100644 --- a/source/blender/blenkernel/BKE_node_ui_storage.hh +++ b/source/blender/blenkernel/BKE_node_ui_storage.hh @@ -20,13 +20,17 @@ #include "BLI_hash.hh" #include "BLI_map.hh" +#include "BLI_multi_value_map.hh" #include "BLI_session_uuid.h" #include "BLI_set.hh" #include "DNA_ID.h" +#include "DNA_customdata_types.h" #include "DNA_modifier_types.h" #include "DNA_session_uuid_types.h" +#include "BKE_attribute.h" + struct ModifierData; struct Object; struct bNode; @@ -77,9 +81,26 @@ struct NodeWarning { std::string message; }; +struct AvailableAttributeInfo { + AttributeDomain domain; + CustomDataType data_type; + + uint64_t hash() const + { + uint64_t domain_hash = (uint64_t)domain; + uint64_t data_type_hash = (uint64_t)data_type; + return (domain_hash * 33) ^ (data_type_hash * 89); + } + + friend bool operator==(const AvailableAttributeInfo &a, const AvailableAttributeInfo &b) + { + return a.domain == b.domain && a.data_type == b.data_type; + } +}; + struct NodeUIStorage { blender::Vector<NodeWarning> warnings; - blender::Set<std::string> attribute_name_hints; + blender::MultiValueMap<std::string, AvailableAttributeInfo> attribute_hints; }; struct NodeTreeUIStorage { @@ -103,4 +124,6 @@ void BKE_nodetree_error_message_add(bNodeTree &ntree, void BKE_nodetree_attribute_hint_add(bNodeTree &ntree, const NodeTreeEvaluationContext &context, const bNode &node, - const blender::StringRef attribute_name); + const blender::StringRef attribute_name, + const AttributeDomain domain, + const CustomDataType data_type); |