void *BKE_libblock_copy(struct Main *bmain, const struct ID *id) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL();
/* "Deprecated" old API. */
void *BKE_libblock_copy_nolib(const struct ID *id, const bool do_action) ATTR_NONNULL();
+/* Special version. sued by datablock localization. */
+void *BKE_libblock_copy_for_localize(const struct ID *id);
void BKE_libblock_rename(struct Main *bmain, struct ID *id, const char *name) ATTR_NONNULL();
void BLI_libblock_ensure_unique_name(struct Main *bmain, const char *name) ATTR_NONNULL();
*
* NOTE: Only possible once nested node trees are fully converted to that too. */
- Lamp *lan = BKE_libblock_copy_nolib(&la->id, false);
+ Lamp *lan = BKE_libblock_copy_for_localize(&la->id);
lan->curfalloff = curvemapping_copy(la->curfalloff);
return idn;
}
+void *BKE_libblock_copy_for_localize(const ID *id)
+{
+ ID *idn;
+ BKE_libblock_copy_ex(NULL, id, &idn, (LIB_ID_CREATE_NO_MAIN |
+ LIB_ID_CREATE_NO_USER_REFCOUNT |
+ LIB_ID_COPY_ACTIONS |
+ LIB_ID_COPY_NO_ANIMDATA));
+ return idn;
+}
+
void BKE_library_free(Library *lib)
{
if (lib->packedfile)
*
* NOTE: Only possible once nested node trees are fully converted to that too. */
- Material *man = BKE_libblock_copy_nolib(&ma->id, false);
+ Material *man = BKE_libblock_copy_for_localize(&ma->id);
man->texpaintslot = NULL;
man->preview = NULL;
Tex *texn;
- texn = BKE_libblock_copy_nolib(&tex->id, false);
+ texn = BKE_libblock_copy_for_localize(&tex->id);
/* image texture: BKE_texture_free also doesn't decrease */
World *wrldn;
- wrldn = BKE_libblock_copy_nolib(&wrld->id, false);
+ wrldn = BKE_libblock_copy_for_localize(&wrld->id);
if (wrld->nodetree)
wrldn->nodetree = ntreeLocalize(wrld->nodetree);