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:
authorTon Roosendaal <ton@blender.org>2004-10-13 21:59:44 +0400
committerTon Roosendaal <ton@blender.org>2004-10-13 21:59:44 +0400
commit627a296ac68281b5c5468e5af1e3503665fa5265 (patch)
treee7019748b05309143d6a23fc75f298258aa597f6 /source/blender/blenloader
parent6ba75821e0e2f74579afae5904d21cbad260b518 (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.c20
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);