diff options
author | Ton Roosendaal <ton@blender.org> | 2004-10-13 21:59:44 +0400 |
---|---|---|
committer | Ton Roosendaal <ton@blender.org> | 2004-10-13 21:59:44 +0400 |
commit | 627a296ac68281b5c5468e5af1e3503665fa5265 (patch) | |
tree | e7019748b05309143d6a23fc75f298258aa597f6 /source/blender/blenloader | |
parent | 6ba75821e0e2f74579afae5904d21cbad260b518 (diff) |
Fix for #1569
Problem was dynamic linking of files with game logic. The links between
sensors/controllers/actuators got lost.
Never though i'd still understand the code, not too bad at all! :)
Diffstat (limited to 'source/blender/blenloader')
-rw-r--r-- | source/blender/blenloader/intern/readfile.c | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index 938b1d600d7..fd41e39ced1 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -1119,7 +1119,6 @@ static void link_glob_list(FileData *fd, ListBase *lb) /* for glob data */ void *poin; if(lb->first==0) return; - poin= newdataadr(fd, lb->first); if(lb->first) { oldnewmap_insert(fd->globmap, lb->first, poin, 0); @@ -2160,8 +2159,10 @@ static void lib_link_object(FileData *fd, Main *main) sens= ob->sensors.first; while(sens) { - for(a=0; a<sens->totlinks; a++) { - sens->links[a]= newglobadr(fd, sens->links[a]); + if(ob->id.lib==NULL) { // done in expand_main + for(a=0; a<sens->totlinks; a++) { + sens->links[a]= newglobadr(fd, sens->links[a]); + } } if(sens->type==SENS_TOUCH) { bTouchSensor *ts= sens->data; @@ -2177,8 +2178,10 @@ static void lib_link_object(FileData *fd, Main *main) cont= ob->controllers.first; while(cont) { - for(a=0; a<cont->totlinks; a++) { - cont->links[a]= newglobadr(fd, cont->links[a]); + if(ob->id.lib==NULL) { // done in expand_main + for(a=0; a<cont->totlinks; a++) { + cont->links[a]= newglobadr(fd, cont->links[a]); + } } if(cont->type==CONT_PYTHON) { bPythonCont *pc= cont->data; @@ -4972,8 +4975,12 @@ static void expand_object(FileData *fd, Main *mainvar, Object *ob) for(a=0; a<ob->totcol; a++) { expand_doit(fd, mainvar, ob->mat[a]); } + sens= ob->sensors.first; while(sens) { + for(a=0; a<sens->totlinks; a++) { + sens->links[a]= newglobadr(fd, sens->links[a]); + } if(sens->type==SENS_TOUCH) { bTouchSensor *ts= sens->data; expand_doit(fd, mainvar, ts->ma); @@ -4987,6 +4994,9 @@ static void expand_object(FileData *fd, Main *mainvar, Object *ob) cont= ob->controllers.first; while(cont) { + for(a=0; a<cont->totlinks; a++) { + cont->links[a]= newglobadr(fd, cont->links[a]); + } if(cont->type==CONT_PYTHON) { bPythonCont *pc= cont->data; expand_doit(fd, mainvar, pc->text); |