84 "Geometry/Operations",
94 "Grease Pencil/Operations",
95 "Grease Pencil/Write",
120 "Utilities/Rotation",
121 "Utilities/Deprecated",
175 C,
"asset_catalog_path");
180 const std::optional<blender::StringRefNull> operator_id =
CTX_data_string_get(
C,
"operator_id");
196 bool add_separator =
true;
201 add_separator =
false;
219 add_separator =
false;
233 const std::optional<blender::StringRefNull> operator_id =
CTX_data_string_get(
C,
"operator_id");
269 if (
tree.catalogs.is_empty() && loading_finished &&
tree.unassigned_assets.is_empty()) {
275 if (!loading_finished) {
276 layout->
label(
IFACE_(
"Loading Asset Libraries"), ICON_INFO);
287 if (!
tree.unassigned_assets.is_empty()) {
289 layout->
menu(
"NODE_MT_node_unassigned_assets",
IFACE_(
"Unassigned"), ICON_FILE_HIDDEN);
303 const StringRefNull operator_id =
"NODE_OT_swap_group_asset";
329 "Node group assets not assigned to a catalog.\n"
330 "Catalogs can be assigned in the Asset Browser");
371 switch (operator_type) {
373 operator_id =
"NODE_OT_swap_group_asset";
376 operator_id =
"NODE_OT_add_group_asset";
381 col->context_string_set(
"operator_id", operator_id);
382 col->menu_contents(
"NODE_MT_node_catalog_assets");
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)
#define IDP_int_get(prop)
#define STRNCPY_UTF8(dst, src)
NodeAssetMenuOperatorType
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)
void draw_node_menu_for_catalog(const asset_system::AssetCatalogTreeItem &item, const StringRefNull operator_id, const StringRefNull menu_name, uiLayout &layout)
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 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)
static void node_unassigned_assets_draw(const bContext *C, Menu *menu)
static void root_catalogs_draw(const bContext *C, Menu *menu, const StringRefNull operator_id)
MenuType swap_root_catalogs_menu_type()
MenuType catalog_assets_menu_type()
MenuType add_root_catalogs_menu_type()
void ui_template_node_asset_menu_items(uiLayout &layout, const bContext &C, StringRef catalog_path, const NodeAssetMenuOperatorType operator_type)
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 void swap_root_catalogs_draw(const bContext *C, Menu *menu)
static void node_catalog_assets_draw(const bContext *C, Menu *menu)
MenuType unassigned_assets_menu_type()
static bool node_add_menu_poll(const bContext *C, MenuType *)
SpaceNode_Runtime * runtime
struct bNodeTree * edittree
std::shared_ptr< asset::AssetItemTree > assets_for_menu
void label(blender::StringRef name, int icon)
uiLayout & column(bool align)
void separator(float factor=1.0f, LayoutSeparatorType type=LayoutSeparatorType::Auto)
PointerRNA op(wmOperatorType *ot, std::optional< blender::StringRef > name, int icon, blender::wm::OpCallContext context, eUI_Item_Flag flag)
void menu(MenuType *mt, std::optional< blender::StringRef > name, int icon)
void context_string_set(blender::StringRef name, blender::StringRef value)