@julianeisel Had a question about the asset manager. I’d like to be able to add an asset using a button. I found the bpy.ops.object.collection_external_asset_drop operator, but, the python API docs don’t really help much in understanding how to use it.
There are some arguments that are puzzling, I’ve dropped a few assets and seen this operator reported as being run after a drag ‘n’ drop of an asset, here’s what I saw;
The session_uuid argument is set to an integer, which is unrelated to any property of the datablocks themselves. I checked the datablocks of the dropped assets to see if there was a ‘session_uuid’ property, but couldn’t find one.
The ‘collection’ argument is completely opaque to me, all the docs say is; collection (enum in[],(optional)) – Collection. It doesn’t appear to be used according to the reports I see after doing a drag ‘n’ drop, I am not sure if its needed, would help to know what its supposed to be used for.
Basically, I’d really like to know how or even if I can use this op as a button to add an the currently active asset to the scene. I’m not sure how to do this using this operator, of if there’s a better way, I’d love to hear about it!
Hi @brecht sorry to bother you with this, tried mentioning @julianeisel but so far no response, not to worry was wondering if you could either ask him or anyone else to take a look at this question?
As far as I can tell this operator is for internal use and there’s no way to do anything useful with it from Python. There may just not be a way to do what you want with the current implementation.
Thanks @brecht ideally what I’d love to have is a bpy.app.hander.asset_dropped list to add a callback to so I can react to dropped assets. Currently working on a new addon that assist with sculpting workflows by automating a few button presses after an asset gets dropped into the scene.
Can’t really find a way around the issues I am currently having though. When as asset drops, I am handling the depsgraph_update and detecting a new asset from our library. But, this method has issues with undo because I add a custom property to the asset to stop it from being processed as a new asset on further depsgraph updates.
On undo, the custom property is removed, and our script processes the already dropped asset as a freshly dropped one.
I was hoping to use the bpy.ops.object.collection_external_asset_drop operator in a new operator so that adding the asset and handling it would not require this new customer property.
Happy to look at a patch for this and was keen to hear from @julianeisel if a handler for drag ‘n’ drop was planned already?