Commit: ba4a30c71baffde4af8e94257f2758a1f35aa23b Author: Clément Foucault Date: Mon Jan 30 12:19:51 2017 +0100 Branches: clay-engine https://developer.blender.org/rBba4a30c71baffde4af8e94257f2758a1f35aa23b
Fix read/writefile.c =================================================================== M source/blender/blenloader/intern/readfile.c M source/blender/blenloader/intern/writefile.c =================================================================== diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c index a8dc9d0ed8..783eb8fd5f 100644 --- a/source/blender/blenloader/intern/readfile.c +++ b/source/blender/blenloader/intern/readfile.c @@ -3968,6 +3968,7 @@ static void lib_link_material(FileData *fd, Main *main) static void direct_link_material(FileData *fd, Material *ma) { int a; + MaterialEngineSettings *mes; ma->adt = newdataadr(fd, ma->adt); direct_link_animdata(fd, ma->adt); @@ -3988,6 +3989,12 @@ static void direct_link_material(FileData *fd, Material *ma) ma->preview = direct_link_preview_image(fd, ma->preview); BLI_listbase_clear(&ma->gpumaterial); + + link_list(fd, &ma->engines_settings); + for (mes = ma->engines_settings.first; mes; mes = mes->next) { + mes->runtime = NULL; + mes->data = newdataadr(fd, mes->data); + } } /* ************ READ PARTICLE SETTINGS ***************** */ @@ -6210,12 +6217,12 @@ static void direct_link_scene(FileData *fd, Scene *sce) sl->basact = newdataadr(fd, sl->basact); direct_link_layer_collections(fd, &sl->layer_collections); } -#if 0 + link_list(fd, &sce->engines_settings); for (res = sce->engines_settings.first; res; res = res->next) { res->runtime = NULL; + res->data = newdataadr(fd, res->data); } -#endif } /* ************ READ WM ***************** */ diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c index 4032dbe9d2..151fd06ed6 100644 --- a/source/blender/blenloader/intern/writefile.c +++ b/source/blender/blenloader/intern/writefile.c @@ -2468,6 +2468,21 @@ static void write_textures(WriteData *wd, ListBase *idbase) mywrite_flush(wd); } +static void write_material_engines_settings(WriteData *wd, ListBase *lb) +{ + for (MaterialEngineSettings *res = lb->first; res; res = res->next) { + writestruct(wd, DATA, MaterialEngineSettings, 1, res); + + if (STREQ(res->name, RE_engine_id_BLENDER_CLAY)) { + writestruct(wd, DATA, MaterialEngineSettingsClay, 1, res->data); + } + else { + /* No engine matched */ + /* error: don't know how to write this file */ + } + } +} + static void write_materials(WriteData *wd, ListBase *idbase) { Material *ma; @@ -2504,6 +2519,8 @@ static void write_materials(WriteData *wd, ListBase *idbase) } write_previews(wd, ma->preview); + + write_material_engines_settings(wd, &ma->engines_settings); } ma = ma->id.next; } @@ -2650,6 +2667,21 @@ static void write_layer_collections(WriteData *wd, ListBase *lb) } } +static void write_render_engines_settings(WriteData *wd, ListBase *lb) +{ + for (RenderEngineSettings *res = lb->first; res; res = res->next) { + writestruct(wd, DATA, RenderEngineSettings, 1, res); + + if (STREQ(res->name, RE_engine_id_BLENDER_CLAY)) { + writestruct(wd, DATA, RenderEngineSettingsClay, 1, res->data); + } + else { + /* No engine matched */ + /* error: don't know how to write this file */ + } + } +} + static void write_scenes(WriteData *wd, ListBase *scebase) { Scene *sce; @@ -2666,7 +2698,6 @@ static void write_scenes(WriteData *wd, ListBase *scebase) FreestyleModuleConfig *fmc; FreestyleLineSet *fls; SceneLayer *sl; - RenderEngineSettings *res; sce = scebase->first; while (sce) { @@ -2879,11 +2910,9 @@ static void write_scenes(WriteData *wd, ListBase *scebase) writelist(wd, DATA, ObjectBase, &sl->object_bases); write_layer_collections(wd, &sl->layer_collections); } -#if 0 - for (res = sce->engines_settings.first; res; res = res->next) { - /* How to write if struct type is not known? */ - } -#endif + + write_render_engines_settings(wd, &sce->engines_settings); + sce = sce->id.next; } _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs