TexFace to Material Settings big patch
[blender.git] / source / blender / blenloader / intern / readfile.c
index 38454547f483d5ca6b8c1e0fb86c695ed59a5f20..a5484d218d2374a848e97561730dd1d904983177 100644 (file)
@@ -238,6 +238,7 @@ typedef struct OldNewMap {
 /* local prototypes */
 static void *read_struct(FileData *fd, BHead *bh, const char *blockname);
 static void direct_link_modifiers(FileData *fd, ListBase *lb);
+static void convert_tface_mt(FileData *fd, Main *main);
 
 static OldNewMap *oldnewmap_new(void) 
 {
@@ -3478,6 +3479,9 @@ static void lib_link_mesh(FileData *fd, Main *main)
                }
                me= me->id.next;
        }
+
+       /* convert texface options to material */
+       convert_tface_mt(fd, main);
 }
 
 static void direct_link_dverts(FileData *fd, int count, MDeformVert *mdverts)
@@ -7038,6 +7042,27 @@ static void do_versions_nodetree_dynamic_sockets(bNodeTree *ntree)
                sock->flag |= SOCK_DYNAMIC;
 }
 
+void convert_tface_mt(FileData *fd, Main *main)
+{
+       Main *gmain;
+
+       /* this is a delayed do_version (so it can create new materials) */
+       if (main->versionfile < 259 || (main->versionfile == 259 && main->subversionfile < 3)) {
+
+               //XXX hack, material.c uses G.main all over the place, instead of main
+               // temporarily set G.main to the current main
+               gmain = G.main;
+               G.main = main;
+
+               if(!(do_version_tface(main, 1))) {
+                       BKE_report(fd->reports, RPT_ERROR, "Texface conversion problem. Error in console");
+               }
+
+               //XXX hack, material.c uses G.main allover the place, instead of main
+               G.main = gmain;
+       }
+}
+
 static void do_versions(FileData *fd, Library *lib, Main *main)
 {
        /* WATCH IT!!!: pointers from libdata have not been converted */