Blender  V3.3
Classes | Variables
blendfile_link_append.c File Reference
#include <stdlib.h>
#include <string.h>
#include "CLG_log.h"
#include "MEM_guardedalloc.h"
#include "DNA_ID.h"
#include "DNA_collection_types.h"
#include "DNA_key_types.h"
#include "DNA_object_types.h"
#include "DNA_scene_types.h"
#include "DNA_screen_types.h"
#include "DNA_space_types.h"
#include "BLI_bitmap.h"
#include "BLI_blenlib.h"
#include "BLI_ghash.h"
#include "BLI_linklist.h"
#include "BLI_math.h"
#include "BLI_memarena.h"
#include "BLI_utildefines.h"
#include "BLT_translation.h"
#include "BKE_idtype.h"
#include "BKE_key.h"
#include "BKE_layer.h"
#include "BKE_lib_id.h"
#include "BKE_lib_override.h"
#include "BKE_lib_query.h"
#include "BKE_lib_remap.h"
#include "BKE_main.h"
#include "BKE_material.h"
#include "BKE_object.h"
#include "BKE_report.h"
#include "BKE_rigidbody.h"
#include "BKE_scene.h"
#include "BKE_blendfile_link_append.h"
#include "BLO_readfile.h"
#include "BLO_writefile.h"

Go to the source code of this file.

Classes

struct  BlendfileLinkAppendContextItem
 
struct  BlendfileLinkAppendContextLibrary
 
struct  BlendfileLinkAppendContext
 
struct  BlendfileLinkAppendContextCallBack
 
struct  LooseDataInstantiateContext
 

Functions

Library link/append code.
static void blendfile_link_append_proxies_convert (Main *bmain, ReportList *reports)
 
void BKE_blendfile_append (BlendfileLinkAppendContext *lapp_context, ReportList *reports)
 
void BKE_blendfile_link (BlendfileLinkAppendContext *lapp_context, ReportList *reports)
 
Library relocating code.
static void blendfile_library_relocate_remap (Main *bmain, ID *old_id, ID *new_id, ReportList *reports, const bool do_reload, const short remap_flags)
 
void BKE_blendfile_library_relocate (BlendfileLinkAppendContext *lapp_context, ReportList *reports, Library *library, const bool do_reload)
 

Variables

static CLG_LogRef LOG = {"bke.blendfile_link_append"}
 

Link/append context implementation and public management API.

enum  {
  LINK_APPEND_ACT_UNSET = 0 , LINK_APPEND_ACT_KEEP_LINKED , LINK_APPEND_ACT_REUSE_LOCAL , LINK_APPEND_ACT_MAKE_LOCAL ,
  LINK_APPEND_ACT_COPY_LOCAL
}
 
enum  { LINK_APPEND_TAG_INDIRECT = 1 << 0 }
 
typedef struct BlendfileLinkAppendContextItem BlendfileLinkAppendContextItem
 
typedef struct BlendfileLinkAppendContextLibrary BlendfileLinkAppendContextLibrary
 
typedef struct BlendfileLinkAppendContext BlendfileLinkAppendContext
 
typedef struct BlendfileLinkAppendContextCallBack BlendfileLinkAppendContextCallBack
 
static BlendHandlelink_append_context_library_blohandle_ensure (BlendfileLinkAppendContext *lapp_context, BlendfileLinkAppendContextLibrary *lib_context, ReportList *reports)
 
static void link_append_context_library_blohandle_release (BlendfileLinkAppendContext *UNUSED(lapp_context), BlendfileLinkAppendContextLibrary *lib_context)
 
BlendfileLinkAppendContextBKE_blendfile_link_append_context_new (LibraryLink_Params *params)
 
void BKE_blendfile_link_append_context_free (BlendfileLinkAppendContext *lapp_context)
 
void BKE_blendfile_link_append_context_flag_set (BlendfileLinkAppendContext *lapp_context, const int flag, const bool do_set)
 
void BKE_blendfile_link_append_context_embedded_blendfile_set (BlendfileLinkAppendContext *lapp_context, const void *blendfile_mem, int blendfile_memsize)
 
void BKE_blendfile_link_append_context_embedded_blendfile_clear (BlendfileLinkAppendContext *lapp_context)
 
void BKE_blendfile_link_append_context_library_add (BlendfileLinkAppendContext *lapp_context, const char *libname, BlendHandle *blo_handle)
 
BlendfileLinkAppendContextItemBKE_blendfile_link_append_context_item_add (BlendfileLinkAppendContext *lapp_context, const char *idname, const short idcode, void *userdata)
 
int BKE_blendfile_link_append_context_item_idtypes_from_library_add (BlendfileLinkAppendContext *lapp_context, ReportList *reports, const uint64_t id_types_filter, const int library_index)
 
void BKE_blendfile_link_append_context_item_library_index_enable (BlendfileLinkAppendContext *UNUSED(lapp_context), BlendfileLinkAppendContextItem *item, const int library_index)
 
bool BKE_blendfile_link_append_context_is_empty (struct BlendfileLinkAppendContext *lapp_context)
 
voidBKE_blendfile_link_append_context_item_userdata_get (BlendfileLinkAppendContext *UNUSED(lapp_context), BlendfileLinkAppendContextItem *item)
 
IDBKE_blendfile_link_append_context_item_newid_get (BlendfileLinkAppendContext *UNUSED(lapp_context), BlendfileLinkAppendContextItem *item)
 
short BKE_blendfile_link_append_context_item_idcode_get (struct BlendfileLinkAppendContext *UNUSED(lapp_context), struct BlendfileLinkAppendContextItem *item)
 
void BKE_blendfile_link_append_context_item_foreach (struct BlendfileLinkAppendContext *lapp_context, BKE_BlendfileLinkAppendContexteItemFunction callback_function, const eBlendfileLinkAppendForeachItemFlag flag, void *userdata)
 

Library link/append helper functions.

typedef struct LooseDataInstantiateContext LooseDataInstantiateContext
 
static bool object_in_any_scene (Main *bmain, Object *ob)
 
static bool object_in_any_collection (Main *bmain, Object *ob)
 
static bool collection_instantiated_by_any_object (Main *bmain, Collection *collection)
 
static IDloose_data_instantiate_process_check (LooseDataInstantiateContext *instantiate_context, BlendfileLinkAppendContextItem *item)
 
static void loose_data_instantiate_ensure_active_collection (LooseDataInstantiateContext *instantiate_context)
 
static void loose_data_instantiate_object_base_instance_init (Main *bmain, Collection *collection, Object *ob, ViewLayer *view_layer, const View3D *v3d, const int flag, bool set_active)
 
static void loose_data_instantiate_obdata_preprocess (LooseDataInstantiateContext *instantiate_context)
 
static bool loose_data_instantiate_collection_parents_check_recursive (Collection *collection)
 
static void loose_data_instantiate_collection_process (LooseDataInstantiateContext *instantiate_context)
 
static void loose_data_instantiate_object_process (LooseDataInstantiateContext *instantiate_context)
 
static void loose_data_instantiate_obdata_process (LooseDataInstantiateContext *instantiate_context)
 
static void loose_data_instantiate_object_rigidbody_postprocess (LooseDataInstantiateContext *instantiate_context)
 
static void loose_data_instantiate (LooseDataInstantiateContext *instantiate_context)
 
static void new_id_to_item_mapping_add (BlendfileLinkAppendContext *lapp_context, ID *id, BlendfileLinkAppendContextItem *item)
 
static void new_id_to_item_mapping_create (BlendfileLinkAppendContext *lapp_context)
 
static int foreach_libblock_link_append_callback (LibraryIDLinkCallbackData *cb_data)
 

Detailed Description

High level .blend file link/append code, including linking/appending several IDs from different libraries, handling instantiations of collections/objects/object-data in current scene.

Definition in file blendfile_link_append.c.

Typedef Documentation

◆ BlendfileLinkAppendContext

◆ BlendfileLinkAppendContextCallBack

◆ BlendfileLinkAppendContextItem

◆ BlendfileLinkAppendContextLibrary

◆ LooseDataInstantiateContext

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
LINK_APPEND_ACT_UNSET 
LINK_APPEND_ACT_KEEP_LINKED 
LINK_APPEND_ACT_REUSE_LOCAL 
LINK_APPEND_ACT_MAKE_LOCAL 
LINK_APPEND_ACT_COPY_LOCAL 

Definition at line 124 of file blendfile_link_append.c.

◆ anonymous enum

anonymous enum
Enumerator
LINK_APPEND_TAG_INDIRECT 

Definition at line 133 of file blendfile_link_append.c.

Function Documentation

◆ BKE_blendfile_append()

void BKE_blendfile_append ( struct BlendfileLinkAppendContext lapp_context,
struct ReportList reports 
)

Perform append operation, using modern ID usage looper to detect which ID should be kept linked, made local, duplicated as local, re-used from local etc.

The IDs processed by this functions are the one that have been linked by a previous call to BKE_blendfile_link on the same lapp_context.

Definition at line 1001 of file blendfile_link_append.c.

References BlendfileLinkAppendContextItem::action, BKE_id_multi_tagged_delete(), BKE_idtype_idcode_append_is_reusable(), BKE_lib_id_make_local(), BKE_libblock_relink_to_newid(), BKE_library_foreach_ID_link(), BKE_main_id_newptr_and_tag_clear(), BKE_main_id_tag_all(), BKE_main_library_weak_reference_add_item(), BKE_main_library_weak_reference_create(), BKE_main_library_weak_reference_destroy(), BKE_main_library_weak_reference_remove_item(), BKE_main_library_weak_reference_search_item(), blendfile_link_append_proxies_convert(), BLI_assert, BLI_assert_unreachable, BLI_strncpy(), BLO_LIBLINK_APPEND_ASSET_DATA_CLEAR, BLO_LIBLINK_APPEND_LOCAL_ID_REUSE, BLO_LIBLINK_APPEND_SET_FAKEUSER, LibraryLink_Params::bmain, CLOG_ERROR, CLOG_INFO, ELEM, FILE_LINK, FILE_MAX, Library::filepath, LibraryLink_Params::flag, foreach_libblock_link_append_callback(), GS, id, id_fake_user_set(), ID_GR, ID_IS_LINKED, ID_NEW_SET, ID_OB, IDWALK_NOP, BlendfileLinkAppendContext::items, BlendfileLinkAppendContextCallBack::lapp_context, LooseDataInstantiateContext::lapp_context, ID::lib, LIB_ID_MAKELOCAL_ASSET_DATA_CLEAR, LIB_ID_MAKELOCAL_FORCE_COPY, LIB_ID_MAKELOCAL_FORCE_LOCAL, LIB_ID_MAKELOCAL_FULL_LIBRARY, LIB_TAG_DOIT, LIB_TAG_PRE_EXISTING, BlendfileLinkAppendContext::library_weak_reference_mapping, LinkNode::link, LINK_APPEND_ACT_COPY_LOCAL, LINK_APPEND_ACT_KEEP_LINKED, LINK_APPEND_ACT_MAKE_LOCAL, LINK_APPEND_ACT_REUSE_LOCAL, LINK_APPEND_ACT_UNSET, LinkNodePair::list, LOG, loose_data_instantiate(), MAX_ID_NAME, ID::name, BlendfileLinkAppendContextItem::new_id, new_id_to_item_mapping_create(), ID::newid, LinkNode::next, NULL, BlendfileLinkAppendContext::num_items, BlendfileLinkAppendContext::params, ID::tag, and BlendfileLinkAppendContextItem::userdata.

Referenced by bpy_lib_exit(), copybuffer_append(), wm_file_link_append_datablock_ex(), and wm_link_append_exec().

◆ BKE_blendfile_library_relocate()

void BKE_blendfile_library_relocate ( struct BlendfileLinkAppendContext lapp_context,
struct ReportList reports,
struct Library library,
bool  do_reload 
)

Try to relocate all linked IDs added to lapp_context, belonging to the given library.

This function searches for matching IDs (type and name) in all libraries added to the given lapp_context.

Typical usages include:

  • Relocating a library:
    • Add the new target library path to lapp_context.
    • Add all IDs from the library to relocate to lapp_context
    • Mark the new target library to be considered for each ID.
    • Call this function.
  • Searching for (e.g.missing) linked IDs in a set or sub-set of libraries:
    • Add all potential library sources paths to lapp_context.
    • Add all IDs to search for to lapp_context.
    • Mark which libraries should be considered for each ID.
    • Call this function.

NOTE: content of lapp_context after execution of that function should not be assumed valid anymore, and should immediately be freed.

Definition at line 1403 of file blendfile_link_append.c.

References BKE_blendfile_link(), BKE_blendfile_link_append_context_item_add(), BKE_id_free(), BKE_id_multi_tagged_delete(), BKE_idtype_idcode_is_linkable(), BKE_key_from_id(), BKE_key_from_id_p(), BKE_lib_override_library_main_operations_create(), BKE_lib_override_library_main_resync(), BKE_lib_override_library_update(), BKE_main_collection_sync(), BKE_main_id_refcount_recompute(), BKE_main_id_tag_all(), BKE_main_id_tag_idcode(), BKE_main_lock(), BKE_main_unlock(), BKE_view_layer_find(), blendfile_library_relocate_remap(), BLI_addtail(), BLI_assert, BLI_bitmap_set_all(), BLI_remlink(), LibraryLink_Params::bmain, CLOG_INFO, LibraryLink_Params::context, ListBase::first, ID::flag, FOREACH_MAIN_ID_BEGIN, FOREACH_MAIN_ID_END, GS, id, Library::id, Key::id, Scene::id, ID_IS_LINKED, ID_IS_OVERRIDE_LIBRARY_REAL, ID_KE, ID_LI, ID_REMAP_SKIP_INDIRECT_USAGE, ID_REMAP_SKIP_NEVER_NULL_USAGE, ID_SCE, id_us_clear_real(), id_us_min(), id_us_plus_no_lib(), INDEX_ID_MAX, BlendfileLinkAppendContext::items, lib, ID::lib, LIB_TAG_DOIT, LIB_TAG_MISSING, LIB_TAG_PRE_EXISTING, BlendfileLinkAppendContextItem::libraries, library, LinkNode::link, LinkNodePair::list, LOG, ViewLayer::name, ID::name, BlendfileLinkAppendContextItem::new_id, LinkNode::next, ID::next, NULL, BlendfileLinkAppendContext::num_items, BlendfileLinkAppendContext::num_libraries, ID::override_library, BlendfileLinkAppendContext::params, IDOverrideLibrary::reference, LibraryLink_Params::scene, set_listbasepointers(), ID::tag, ID::us, USER_EXPERIMENTAL_TEST, BlendfileLinkAppendContextItem::userdata, LibraryLink_Params::view_layer, Scene::view_layers, and which_libbase().

Referenced by WM_lib_reload(), and wm_lib_relocate_exec_do().

◆ BKE_blendfile_link()

void BKE_blendfile_link ( struct BlendfileLinkAppendContext lapp_context,
struct ReportList reports 
)

Perform linking operation on all items added to given lapp_context.

Definition at line 1205 of file blendfile_link_append.c.

References BKE_library_foreach_ID_link(), BKE_reportf(), blendfile_link_append_proxies_convert(), BLI_assert, BLI_bitmap_set_all(), BLI_BITMAP_TEST, BLO_library_link_begin(), BLO_library_link_end(), BLO_library_link_named_part(), LibraryLink_Params::bmain, LibraryLink_Params::context, Main::curlib, FILE_LINK, LibraryLink_Params::flag, foreach_libblock_link_append_callback(), BlendfileLinkAppendContextItem::idcode, IDWALK_NOP, BlendfileLinkAppendContext::items, BlendfileLinkAppendContextCallBack::lapp_context, LooseDataInstantiateContext::lapp_context, lib, ID::lib, LIB_TAG_MISSING, BlendfileLinkAppendContextItem::libraries, BlendfileLinkAppendContext::libraries, LinkNode::link, link_append_context_library_blohandle_ensure(), link_append_context_library_blohandle_release(), LinkNodePair::list, loose_data_instantiate(), BlendfileLinkAppendContextItem::name, BlendfileLinkAppendContextItem::new_id, new_id_to_item_mapping_create(), LinkNode::next, NULL, BlendfileLinkAppendContext::num_items, BlendfileLinkAppendContext::num_libraries, BlendfileLinkAppendContext::params, BlendfileLinkAppendContextLibrary::path, RPT_WARNING, LibraryLink_Params::scene, BlendfileLinkAppendContextItem::source_library, Main::subversionfile, BlendfileLinkAppendContextItem::userdata, and Main::versionfile.

Referenced by BKE_blendfile_library_relocate(), bpy_lib_exit(), copybuffer_append(), wm_file_link_append_datablock_ex(), and wm_link_append_exec().

◆ BKE_blendfile_link_append_context_embedded_blendfile_clear()

void BKE_blendfile_link_append_context_embedded_blendfile_clear ( struct BlendfileLinkAppendContext lapp_context)

Clear reference to Blender's embedded startup file into the context.

Definition at line 225 of file blendfile_link_append.c.

References BlendfileLinkAppendContext::blendfile_mem, BlendfileLinkAppendContext::blendfile_memsize, and NULL.

◆ BKE_blendfile_link_append_context_embedded_blendfile_set()

void BKE_blendfile_link_append_context_embedded_blendfile_set ( struct BlendfileLinkAppendContext lapp_context,
const void blendfile_mem,
int  blendfile_memsize 
)

Store reference to a Blender's embedded memfile into the context.

Note
This is required since embedded startup blender file is handled in ED module, which cannot be linked in BKE code.

Definition at line 215 of file blendfile_link_append.c.

References BlendfileLinkAppendContext::blendfile_mem, BlendfileLinkAppendContext::blendfile_memsize, BLI_assert_msg, and NULL.

Referenced by wm_file_link_append_datablock_ex(), and wm_link_append_exec().

◆ BKE_blendfile_link_append_context_flag_set()

void BKE_blendfile_link_append_context_flag_set ( struct BlendfileLinkAppendContext lapp_context,
int  flag,
bool  do_set 
)

Set or clear flags in given lapp_context.

Parameters
flagA combination of:
do_setSet the given flag if true, clear it otherwise.

Definition at line 203 of file blendfile_link_append.c.

References LibraryLink_Params::flag, and BlendfileLinkAppendContext::params.

Referenced by wm_lib_relocate_exec_do().

◆ BKE_blendfile_link_append_context_free()

void BKE_blendfile_link_append_context_free ( struct BlendfileLinkAppendContext lapp_context)

◆ BKE_blendfile_link_append_context_is_empty()

bool BKE_blendfile_link_append_context_is_empty ( struct BlendfileLinkAppendContext lapp_context)

Check if given link/append context is empty (has no items to process) or not.

Definition at line 337 of file blendfile_link_append.c.

References BlendfileLinkAppendContext::num_items.

Referenced by wm_link_append_exec().

◆ BKE_blendfile_link_append_context_item_add()

BlendfileLinkAppendContextItem* BKE_blendfile_link_append_context_item_add ( struct BlendfileLinkAppendContext lapp_context,
const char *  idname,
short  idcode,
void userdata 
)

◆ BKE_blendfile_link_append_context_item_foreach()

void BKE_blendfile_link_append_context_item_foreach ( struct BlendfileLinkAppendContext lapp_context,
BKE_BlendfileLinkAppendContexteItemFunction  callback_function,
eBlendfileLinkAppendForeachItemFlag  flag,
void userdata 
)

Iterate over all (or a subset) of the items listed in given BlendfileLinkAppendContext, and call the callback_function on them.

Parameters
flagControl which type of items to process (see eBlendfileLinkAppendForeachItemFlag enum flags).
userdataAn opaque void pointer passed to the callback_function.

Definition at line 361 of file blendfile_link_append.c.

References BKE_BLENDFILE_LINK_APPEND_FOREACH_ITEM_FLAG_DO_DIRECT, BKE_BLENDFILE_LINK_APPEND_FOREACH_ITEM_FLAG_DO_INDIRECT, BlendfileLinkAppendContext::items, LINK_APPEND_TAG_INDIRECT, LinkNodePair::list, LinkNode::next, and BlendfileLinkAppendContextItem::tag.

Referenced by bpy_lib_exit().

◆ BKE_blendfile_link_append_context_item_idcode_get()

short BKE_blendfile_link_append_context_item_idcode_get ( struct BlendfileLinkAppendContext UNUSEDlapp_context,
struct BlendfileLinkAppendContextItem item 
)

Definition at line 354 of file blendfile_link_append.c.

References BlendfileLinkAppendContextItem::idcode.

◆ BKE_blendfile_link_append_context_item_idtypes_from_library_add()

int BKE_blendfile_link_append_context_item_idtypes_from_library_add ( struct BlendfileLinkAppendContext lapp_context,
struct ReportList reports,
uint64_t  id_types_filter,
int  library_index 
)

Search for all ID matching given id_types_filter in given library_index, and add them to the list of items to process.

Note
BKE_blendfile_link_append_context_library_add should never be called on the same lapp_context after this function.
Parameters
id_types_filterA set of FILTER_ID bitflags, the types of IDs to add to the items list.
library_indexThe index of the library to look into, in given lapp_context.
Returns
The number of items found and added to the list, or BLENDFILE_LINK_APPEND_INVALID if it could not open the .blend file.

Definition at line 278 of file blendfile_link_append.c.

References BKE_blendfile_link_append_context_item_add(), BKE_blendfile_link_append_context_item_library_index_enable(), BKE_idtype_idcode_is_linkable(), BKE_idtype_idcode_iter_step(), BKE_idtype_idcode_to_idfilter(), BLENDFILE_LINK_APPEND_INVALID, BLI_linklist_find(), BLO_blendhandle_get_datablock_names(), FILE_ASSETS_ONLY, LibraryLink_Params::flag, id_name(), BlendfileLinkAppendContext::libraries, LinkNode::link, link_append_context_library_blohandle_ensure(), LinkNodePair::list, MEM_freeN, LinkNode::next, NULL, and BlendfileLinkAppendContext::params.

Referenced by BKE_copybuffer_paste(), and BKE_copybuffer_read().

◆ BKE_blendfile_link_append_context_item_library_index_enable()

void BKE_blendfile_link_append_context_item_library_index_enable ( BlendfileLinkAppendContext UNUSEDlapp_context,
BlendfileLinkAppendContextItem item,
const int  library_index 
)

◆ BKE_blendfile_link_append_context_item_newid_get()

ID* BKE_blendfile_link_append_context_item_newid_get ( BlendfileLinkAppendContext UNUSEDlapp_context,
BlendfileLinkAppendContextItem item 
)

Definition at line 348 of file blendfile_link_append.c.

References BlendfileLinkAppendContextItem::new_id.

◆ BKE_blendfile_link_append_context_item_userdata_get()

void* BKE_blendfile_link_append_context_item_userdata_get ( BlendfileLinkAppendContext UNUSEDlapp_context,
BlendfileLinkAppendContextItem item 
)

Definition at line 342 of file blendfile_link_append.c.

References BlendfileLinkAppendContextItem::userdata.

◆ BKE_blendfile_link_append_context_library_add()

void BKE_blendfile_link_append_context_library_add ( struct BlendfileLinkAppendContext lapp_context,
const char *  libname,
struct BlendHandle blo_handle 
)

Add a new source library to search for items to be linked to the given link/append context.

Parameters
libnamethe absolute path to the library blend file.
blo_handlethe blend file handle of the library, NULL is not available. Note that this is only borrowed for linking purpose, no releasing or other management will be performed by #BKE_blendfile_link_append code on it.
Note
Never call BKE_blendfile_link_append_context_library_add() after having added some items.

Definition at line 232 of file blendfile_link_append.c.

References BLI_assert, BLI_linklist_append_arena(), BLI_memarena_alloc(), BLI_memarena_calloc(), BLI_strncpy(), BlendfileLinkAppendContextLibrary::blo_handle, BlendfileLinkAppendContextLibrary::blo_handle_is_owned, BlendfileLinkAppendContext::items, len, BlendfileLinkAppendContext::libraries, LinkNodePair::list, BlendfileLinkAppendContext::memarena, NULL, BlendfileLinkAppendContext::num_libraries, and BlendfileLinkAppendContextLibrary::path.

Referenced by BKE_copybuffer_paste(), BKE_copybuffer_read(), bpy_lib_exit(), wm_file_link_append_datablock_ex(), WM_lib_reload(), wm_lib_relocate_exec_do(), and wm_link_append_exec().

◆ BKE_blendfile_link_append_context_new()

BlendfileLinkAppendContext* BKE_blendfile_link_append_context_new ( struct LibraryLink_Params params)

◆ blendfile_library_relocate_remap()

static void blendfile_library_relocate_remap ( Main bmain,
ID old_id,
ID new_id,
ReportList reports,
const bool  do_reload,
const short  remap_flags 
)
static

◆ blendfile_link_append_proxies_convert()

static void blendfile_link_append_proxies_convert ( Main bmain,
ReportList reports 
)
static

◆ collection_instantiated_by_any_object()

static bool collection_instantiated_by_any_object ( Main bmain,
Collection collection 
)
static

◆ foreach_libblock_link_append_callback()

static int foreach_libblock_link_append_callback ( LibraryIDLinkCallbackData cb_data)
static

◆ link_append_context_library_blohandle_ensure()

static BlendHandle* link_append_context_library_blohandle_ensure ( BlendfileLinkAppendContext lapp_context,
BlendfileLinkAppendContextLibrary lib_context,
ReportList reports 
)
static

◆ link_append_context_library_blohandle_release()

static void link_append_context_library_blohandle_release ( BlendfileLinkAppendContext UNUSEDlapp_context,
BlendfileLinkAppendContextLibrary lib_context 
)
static

◆ loose_data_instantiate()

static void loose_data_instantiate ( LooseDataInstantiateContext instantiate_context)
static

◆ loose_data_instantiate_collection_parents_check_recursive()

static bool loose_data_instantiate_collection_parents_check_recursive ( Collection collection)
static

◆ loose_data_instantiate_collection_process()

static void loose_data_instantiate_collection_process ( LooseDataInstantiateContext instantiate_context)
static

◆ loose_data_instantiate_ensure_active_collection()

static void loose_data_instantiate_ensure_active_collection ( LooseDataInstantiateContext instantiate_context)
static

◆ loose_data_instantiate_obdata_preprocess()

static void loose_data_instantiate_obdata_preprocess ( LooseDataInstantiateContext instantiate_context)
static

◆ loose_data_instantiate_obdata_process()

static void loose_data_instantiate_obdata_process ( LooseDataInstantiateContext instantiate_context)
static

◆ loose_data_instantiate_object_base_instance_init()

static void loose_data_instantiate_object_base_instance_init ( Main bmain,
Collection collection,
Object ob,
ViewLayer view_layer,
const View3D v3d,
const int  flag,
bool  set_active 
)
static

◆ loose_data_instantiate_object_process()

static void loose_data_instantiate_object_process ( LooseDataInstantiateContext instantiate_context)
static

◆ loose_data_instantiate_object_rigidbody_postprocess()

static void loose_data_instantiate_object_rigidbody_postprocess ( LooseDataInstantiateContext instantiate_context)
static

◆ loose_data_instantiate_process_check()

static ID* loose_data_instantiate_process_check ( LooseDataInstantiateContext instantiate_context,
BlendfileLinkAppendContextItem item 
)
static

◆ new_id_to_item_mapping_add()

static void new_id_to_item_mapping_add ( BlendfileLinkAppendContext lapp_context,
ID id,
BlendfileLinkAppendContextItem item 
)
static

◆ new_id_to_item_mapping_create()

static void new_id_to_item_mapping_create ( BlendfileLinkAppendContext lapp_context)
static

◆ object_in_any_collection()

static bool object_in_any_collection ( Main bmain,
Object ob 
)
static

◆ object_in_any_scene()

static bool object_in_any_scene ( Main bmain,
Object ob 
)
static

Variable Documentation

◆ LOG

CLG_LogRef LOG = {"bke.blendfile_link_append"}
static