Bugfix #23000: AnimData on Meshes not saved (and loaded)
authorJoshua Leung <aligorith@gmail.com>
Tue, 27 Jul 2010 06:06:36 +0000 (06:06 +0000)
committerJoshua Leung <aligorith@gmail.com>
Tue, 27 Jul 2010 06:06:36 +0000 (06:06 +0000)
* Animation data for meshes wasn't getting saved at all (the linked actions were, but that doesn't really count)
* Lib-linked actions from other files may not load correctly too

source/blender/blenloader/intern/readfile.c
source/blender/blenloader/intern/writefile.c

index 3514eb9..71a9fc2 100644 (file)
@@ -3298,6 +3298,7 @@ static void direct_link_mesh(FileData *fd, Mesh *mesh)
        mesh->msticky= newdataadr(fd, mesh->msticky);
        mesh->dvert= newdataadr(fd, mesh->dvert);
        
+       /* animdata */
        mesh->adt= newdataadr(fd, mesh->adt);
        direct_link_animdata(fd, mesh->adt);
 
@@ -11681,6 +11682,9 @@ static void expand_mesh(FileData *fd, Main *mainvar, Mesh *me)
        TFace *tf;
        int a, i;
        
+       if(me->adt)
+               expand_animdata(fd, mainvar, me->adt);
+               
        for(a=0; a<me->totcol; a++) {
                expand_doit(fd, mainvar, me->mat[a]);
        }
index bee1b0a..eab6a4c 100644 (file)
@@ -1538,6 +1538,7 @@ static void write_meshs(WriteData *wd, ListBase *idbase)
 
                        /* direct data */
                        if (mesh->id.properties) IDP_WriteProperty(mesh->id.properties, wd);
+                       if (mesh->adt) write_animdata(wd, mesh->adt);
 
                        writedata(wd, DATA, sizeof(void *)*mesh->totcol, mesh->mat);