62 &meta_data,
"geometry_node_asset_traits_flag");
83 const std::optional<StringRefNull> menu_path =
CTX_data_string_get(C,
"asset_catalog_path");
105 IFACE_(asset->get_name().c_str()),
123 if (group->id.library_weak_reference || group->id.asset_data) {
126 if (!group->geometry_node_asset_traits ||
146 IFACE_(asset->get_name().c_str()),
156 bool add_separator = !
tree.unassigned_assets.is_empty();
159 if (group->id.library_weak_reference || group->id.asset_data) {
162 if (!group->geometry_node_asset_traits ||
170 add_separator =
false;
202 if (
tree.catalogs.is_empty() && loading_finished) {
208 if (!loading_finished) {
209 uiItemL(layout,
IFACE_(
"Loading Asset Libraries"), ICON_INFO);
241 "OBJECT_MT_add_modifier_unassigned_assets",
287 if (objects.is_empty()) {
296 bool changed =
false;
350 ot->
name =
"Add Modifier";
351 ot->
description =
"Add a procedural operation/effect to the active object";
352 ot->
idname =
"OBJECT_OT_modifier_add_node_group";
369 STRNCPY(type.idname,
"OBJECT_MT_add_modifier_unassigned_assets");
372 type.description =
N_(
373 "Modifier node group assets not assigned to a catalog.\n"
374 "Catalogs can be assigned in the Asset Browser");
381 STRNCPY(type.idname,
"OBJECT_MT_add_modifier_catalog_assets");
391 STRNCPY(type.idname,
"OBJECT_MT_modifier_add_root_catalogs");
Main runtime representation of an asset.
IDProperty * BKE_asset_metadata_idprop_find(const AssetMetaData *asset_data, const char *name) ATTR_WARN_UNUSED_RESULT
Scene * CTX_data_scene(const bContext *C)
Main * CTX_data_main(const bContext *C)
std::optional< blender::StringRefNull > CTX_data_string_get(const bContext *C, const char *member)
View3D * CTX_wm_view3d(const bContext *C)
void BKE_modifier_unique_name(ListBase *modifiers, ModifierData *md)
void BKE_report(ReportList *reports, eReportType type, const char *message)
#define LISTBASE_FOREACH(type, var, list)
#define STRNCPY(dst, src)
@ NODES_MODIFIER_HIDE_DATABLOCK_SELECTOR
@ GEO_NODE_ASSET_MODIFIER
bool ED_operator_object_active_editable(bContext *C)
void MOD_nodes_update_interface(Object *object, NodesModifierData *nmd)
void uiItemL(uiLayout *layout, const char *name, int icon)
void uiItemS(uiLayout *layout)
void uiItemFullO_ptr(uiLayout *layout, wmOperatorType *ot, const char *name, int icon, IDProperty *properties, wmOperatorCallContext context, eUI_Item_Flag flag, PointerRNA *r_opptr)
void uiItemMContents(uiLayout *layout, const char *menuname)
uiLayout * uiLayoutColumn(uiLayout *layout, bool align)
void uiLayoutSetContextString(uiLayout *layout, const char *name, blender::StringRef value)
void uiItemM(uiLayout *layout, const char *menuname, const char *name, int icon)
bool contains(const Key &key) const
void add_new(const Key &key)
constexpr bool is_empty() const
const std::string & str() const
void foreach_child(ItemIterFn callback) const
AssetCatalogPath catalog_path() const
StringRefNull get_name() const
bool has_children() const
AssetMetaData & get_metadata() const
AssetLibraryReference all_library_reference()
void all_library_reload_catalogs_if_dirty()
asset_system::AssetLibrary * library_get_once_available(const AssetLibraryReference &library_reference)
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={})
ID * asset_local_id_ensure_imported(Main &bmain, const asset_system::AssetRepresentation &asset)
void operator_asset_reference_props_register(StructRNA &srna)
void draw_menu_for_catalog(const asset_system::AssetCatalogTreeItem &item, const StringRefNull menu_name, uiLayout &layout)
const asset_system::AssetRepresentation * operator_asset_reference_props_get_asset_from_all_library(const bContext &C, PointerRNA &ptr, ReportList *reports)
void operator_asset_reference_props_set(const asset_system::AssetRepresentation &asset, PointerRNA &ptr)
static void root_catalogs_draw(const bContext *C, Menu *menu)
void modifier_register_use_selected_objects_prop(wmOperatorType *ot)
ModifierData * modifier_add(ReportList *reports, Main *bmain, Scene *scene, Object *ob, const char *name, int type)
static void catalog_assets_draw(const bContext *C, Menu *menu)
void object_modifier_add_asset_register()
static bNodeTree * get_asset_or_local_node_group(const bContext &C, PointerRNA &ptr, ReportList *reports)
static void OBJECT_OT_modifier_add_node_group(wmOperatorType *ot)
static void unassigned_assets_draw(const bContext *C, Menu *menu)
static int modifier_add_asset_invoke(bContext *C, wmOperator *op, const wmEvent *event)
static asset::AssetItemTree * get_static_item_tree()
static MenuType modifier_add_root_catalogs_menu_type()
void ui_template_modifier_asset_menu_items(uiLayout &layout, StringRef catalog_path)
static bNodeTree * get_node_group(const bContext &C, PointerRNA &ptr, ReportList *reports)
static bool unassigned_local_poll(const Main &bmain)
static MenuType modifier_add_unassigned_assets_menu_type()
static MenuType modifier_add_catalog_assets_menu_type()
static bool all_loading_finished()
static std::string modifier_add_asset_get_description(bContext *C, wmOperatorType *, PointerRNA *ptr)
static asset::AssetItemTree build_catalog_tree(const bContext &C)
Object * context_active_object(const bContext *C)
static int modifier_add_asset_exec(bContext *C, wmOperator *op)
Vector< PointerRNA > modifier_get_edit_objects(const bContext &C, const wmOperator &op)
void RNA_boolean_set(PointerRNA *ptr, const char *name, bool value)
struct bNodeTree * node_group
bool(* poll)(bContext *C) ATTR_WARN_UNUSED_RESULT
std::string(* get_description)(bContext *C, wmOperatorType *ot, PointerRNA *ptr)
int(* invoke)(bContext *C, wmOperator *op, const wmEvent *event) ATTR_WARN_UNUSED_RESULT
int(* exec)(bContext *C, wmOperator *op) ATTR_WARN_UNUSED_RESULT
struct ReportList * reports
void WM_event_add_notifier(const bContext *C, uint type, void *reference)
ID * WM_operator_properties_id_lookup_from_name_or_session_uid(Main *bmain, PointerRNA *ptr, const ID_Type type)
void WM_operator_properties_id_lookup(wmOperatorType *ot, const bool add_name_prop)
void WM_operator_properties_id_lookup_set_from_id(PointerRNA *ptr, const ID *id)
void WM_operatortype_append(void(*opfunc)(wmOperatorType *))
wmOperatorType * WM_operatortype_find(const char *idname, bool quiet)