Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMitchell Stokes <mogurijin@gmail.com>2012-06-07 05:46:28 +0400
committerMitchell Stokes <mogurijin@gmail.com>2012-06-07 05:46:28 +0400
commitebb2dc84fcbb344ae3625e0e9d89b724d5378ca0 (patch)
tree84633ee9e121c0dc5c837f4bf85c4db00553dacb /source/gameengine/Converter/KX_BlenderSceneConverter.cpp
parent8beea054f7490ee9892b963c96b5ce80886483be (diff)
Some slight refactoring of the BGE's LibLoad code to make things a bit cleaner (no functional changes).
Diffstat (limited to 'source/gameengine/Converter/KX_BlenderSceneConverter.cpp')
-rw-r--r--source/gameengine/Converter/KX_BlenderSceneConverter.cpp60
1 files changed, 26 insertions, 34 deletions
diff --git a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
index 0613b137fe8..78e5d7b32c2 100644
--- a/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
+++ b/source/gameengine/Converter/KX_BlenderSceneConverter.cpp
@@ -930,13 +930,34 @@ bool KX_BlenderSceneConverter::LinkBlendFilePath(const char *path, char *group,
return LinkBlendFile(bpy_openlib, path, group, scene_merge, err_str, options);
}
-bool KX_BlenderSceneConverter::LinkBlendFile(BlendHandle *bpy_openlib, const char *path, char *group, KX_Scene *scene_merge, char **err_str, short options)
+static void load_datablocks(Main *main_newlib, BlendHandle *bpy_openlib, const char *path, int idcode)
{
- Main *main_newlib; /* stored as a dynamic 'main' until we free it */
Main *main_tmp= NULL; /* created only for linking, then freed */
LinkNode *names = NULL;
- int idcode= BKE_idcode_from_name(group);
short flag= 0; /* don't need any special options */
+
+ /* here appending/linking starts */
+ main_tmp = BLO_library_append_begin(main_newlib, &bpy_openlib, (char *)path);
+
+ int totnames_dummy;
+ names = BLO_blendhandle_get_datablock_names( bpy_openlib, idcode, &totnames_dummy);
+
+ int i=0;
+ LinkNode *n= names;
+ while(n) {
+ BLO_library_append_named_part(main_tmp, &bpy_openlib, (char *)n->link, idcode);
+ n= (LinkNode *)n->next;
+ i++;
+ }
+ BLI_linklist_free(names, free); /* free linklist *and* each node's data */
+
+ BLO_library_append_end(NULL, main_tmp, &bpy_openlib, idcode, flag);
+}
+
+bool KX_BlenderSceneConverter::LinkBlendFile(BlendHandle *bpy_openlib, const char *path, char *group, KX_Scene *scene_merge, char **err_str, short options)
+{
+ Main *main_newlib; /* stored as a dynamic 'main' until we free it */
+ int idcode= BKE_idcode_from_name(group);
ReportList reports;
static char err_local[255];
@@ -964,40 +985,11 @@ bool KX_BlenderSceneConverter::LinkBlendFile(BlendHandle *bpy_openlib, const cha
main_newlib= (Main *)MEM_callocN( sizeof(Main), "BgeMain");
BKE_reports_init(&reports, RPT_STORE);
- /* here appending/linking starts */
- main_tmp = BLO_library_append_begin(main_newlib, &bpy_openlib, (char *)path);
-
- int totnames_dummy;
- names = BLO_blendhandle_get_datablock_names( bpy_openlib, idcode, &totnames_dummy);
-
- int i=0;
- LinkNode *n= names;
- while(n) {
- BLO_library_append_named_part(main_tmp, &bpy_openlib, (char *)n->link, idcode);
- n= (LinkNode *)n->next;
- i++;
- }
- BLI_linklist_free(names, free); /* free linklist *and* each node's data */
-
- BLO_library_append_end(NULL, main_tmp, &bpy_openlib, idcode, flag);
+ load_datablocks(main_newlib, bpy_openlib, path, idcode);
/* now do another round of linking for Scenes so all actions are properly loaded */
if (idcode==ID_SCE && options & LIB_LOAD_LOAD_ACTIONS) {
- main_tmp = BLO_library_append_begin(main_newlib, &bpy_openlib, (char *)path);
-
- int totnames_dummy;
- names = BLO_blendhandle_get_datablock_names( bpy_openlib, ID_AC, &totnames_dummy);
-
- int i=0;
- LinkNode *n= names;
- while(n) {
- BLO_library_append_named_part(main_tmp, &bpy_openlib, (char *)n->link, ID_AC);
- n= (LinkNode *)n->next;
- i++;
- }
- BLI_linklist_free(names, free); /* free linklist *and* each node's data */
-
- BLO_library_append_end(NULL, main_tmp, &bpy_openlib, ID_AC, flag);
+ load_datablocks(main_newlib, bpy_openlib, path, ID_AC);
}
BLO_blendhandle_close(bpy_openlib);