48 if (tree_type ==
nullptr ||
IDP_Int(tree_type) != node_tree.
type) {
83 "Geometry/Operations",
93 "Grease Pencil/Operations",
94 "Grease Pencil/Write",
118 "Utilities/Rotation",
119 "Utilities/Deprecated",
171 C,
"asset_catalog_path");
186 bool add_separator =
true;
191 add_separator =
false;
193 PointerRNA op_ptr = layout->
op(
"NODE_OT_add_group_asset",
209 add_separator =
false;
253 if (
tree.catalogs.is_empty() && loading_finished &&
tree.unassigned_assets.is_empty()) {
259 if (!loading_finished) {
260 layout->
label(
IFACE_(
"Loading Asset Libraries"), ICON_INFO);
271 if (!
tree.unassigned_assets.is_empty()) {
273 layout->
menu(
"NODE_MT_node_add_unassigned_assets",
IFACE_(
"Unassigned"), ICON_FILE_HIDDEN);
297 "Node group assets not assigned to a catalog.\n"
298 "Catalogs can be assigned in the Asset Browser");
Main runtime representation of an asset.
IDProperty * BKE_asset_metadata_idprop_find(const AssetMetaData *asset_data, const char *name) ATTR_WARN_UNUSED_RESULT
SpaceNode * CTX_wm_space_node(const bContext *C)
std::optional< blender::StringRefNull > CTX_data_string_get(const bContext *C, const char *member)
char * STRNCPY(char(&dst)[N], const char *src)
void uiLayoutSetContextString(uiLayout *layout, blender::StringRef name, blender::StringRef value)
void uiItemMContents(uiLayout *layout, blender::StringRef menuname)
@ WM_OP_INVOKE_REGION_WIN
bool contains_as(const ForwardKey &key) const
constexpr bool is_empty() const
const std::string & str() const
void foreach_child(ItemIterFn callback) const
AssetCatalogPath catalog_path() const
bool has_children() const
AssetLibraryReference all_library_reference()
void all_library_reload_catalogs_if_dirty()
bool is_loaded(const AssetLibraryReference *library_reference)
void asset_reading_region_listen_fn(const wmRegionListenerParams *params)
AssetItemTree build_filtered_all_catalog_tree(const AssetLibraryReference &library_ref, const bContext &C, const AssetFilterSettings &filter_settings, FunctionRef< bool(const AssetMetaData &)> meta_data_filter={})
void draw_menu_for_catalog(const asset_system::AssetCatalogTreeItem &item, const StringRefNull menu_name, uiLayout &layout)
void operator_asset_reference_props_set(const asset_system::AssetRepresentation &asset, PointerRNA &ptr)
static bool all_loading_finished()
static Set< StringRef > get_builtin_menus(const int tree_type)
MenuType add_catalog_assets_menu_type()
MenuType add_unassigned_assets_menu_type()
static void node_add_unassigned_assets_draw(const bContext *C, Menu *menu)
void ui_template_node_asset_menu_items(uiLayout &layout, const bContext &C, StringRef catalog_path)
MenuType add_root_catalogs_menu_type()
static void node_add_catalog_assets_draw(const bContext *C, Menu *menu)
static asset::AssetItemTree build_catalog_tree(const bContext &C, const bNodeTree &node_tree)
static void add_root_catalogs_draw(const bContext *C, Menu *menu)
static bool node_add_menu_poll(const bContext *C, MenuType *)
SpaceNode_Runtime * runtime
struct bNodeTree * edittree
std::shared_ptr< asset::AssetItemTree > assets_for_menu
PointerRNA op(wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, wmOperatorCallContext context, eUI_Item_Flag flag)
void label(blender::StringRef name, int icon)
uiLayout & column(bool align)
void separator(float factor=1.0f, LayoutSeparatorType type=LayoutSeparatorType::Auto)
void menu(MenuType *mt, std::optional< blender::StringRef > name, int icon)