Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenloader/intern/writefile.c
| Show First 20 Lines • Show All 112 Lines • ▼ Show 20 Lines | |||||
| #include "DNA_cachefile_types.h" | #include "DNA_cachefile_types.h" | ||||
| #include "DNA_camera_types.h" | #include "DNA_camera_types.h" | ||||
| #include "DNA_cloth_types.h" | #include "DNA_cloth_types.h" | ||||
| #include "DNA_constraint_types.h" | #include "DNA_constraint_types.h" | ||||
| #include "DNA_dynamicpaint_types.h" | #include "DNA_dynamicpaint_types.h" | ||||
| #include "DNA_genfile.h" | #include "DNA_genfile.h" | ||||
| #include "DNA_group_types.h" | #include "DNA_group_types.h" | ||||
| #include "DNA_gpencil_types.h" | #include "DNA_gpencil_types.h" | ||||
| #include "DNA_gpencil_modifier_types.h" | |||||
| #include "DNA_shader_fx_types.h" | |||||
| #include "DNA_fileglobal_types.h" | #include "DNA_fileglobal_types.h" | ||||
| #include "DNA_key_types.h" | #include "DNA_key_types.h" | ||||
| #include "DNA_lattice_types.h" | #include "DNA_lattice_types.h" | ||||
| #include "DNA_lamp_types.h" | #include "DNA_lamp_types.h" | ||||
| #include "DNA_layer_types.h" | #include "DNA_layer_types.h" | ||||
| #include "DNA_linestyle_types.h" | #include "DNA_linestyle_types.h" | ||||
| #include "DNA_meta_types.h" | #include "DNA_meta_types.h" | ||||
| #include "DNA_mesh_types.h" | #include "DNA_mesh_types.h" | ||||
| Show All 31 Lines | |||||
| #include "BKE_action.h" | #include "BKE_action.h" | ||||
| #include "BKE_blender_version.h" | #include "BKE_blender_version.h" | ||||
| #include "BKE_bpath.h" | #include "BKE_bpath.h" | ||||
| #include "BKE_curve.h" | #include "BKE_curve.h" | ||||
| #include "BKE_collection.h" | #include "BKE_collection.h" | ||||
| #include "BKE_constraint.h" | #include "BKE_constraint.h" | ||||
| #include "BKE_global.h" // for G | #include "BKE_global.h" // for G | ||||
| #include "BKE_gpencil_modifier.h" | |||||
| #include "BKE_idcode.h" | #include "BKE_idcode.h" | ||||
| #include "BKE_layer.h" | #include "BKE_layer.h" | ||||
| #include "BKE_library.h" // for set_listbasepointers | #include "BKE_library.h" // for set_listbasepointers | ||||
| #include "BKE_library_override.h" | #include "BKE_library_override.h" | ||||
| #include "BKE_main.h" | #include "BKE_main.h" | ||||
| #include "BKE_node.h" | #include "BKE_node.h" | ||||
| #include "BKE_report.h" | #include "BKE_report.h" | ||||
| #include "BKE_sequencer.h" | #include "BKE_sequencer.h" | ||||
| #include "BKE_shader_fx.h" | |||||
| #include "BKE_subsurf.h" | #include "BKE_subsurf.h" | ||||
| #include "BKE_modifier.h" | #include "BKE_modifier.h" | ||||
| #include "BKE_fcurve.h" | #include "BKE_fcurve.h" | ||||
| #include "BKE_pointcache.h" | #include "BKE_pointcache.h" | ||||
| #include "BKE_mesh.h" | #include "BKE_mesh.h" | ||||
| #include "BKE_workspace.h" | #include "BKE_workspace.h" | ||||
| #ifdef USE_NODE_COMPAT_CUSTOMNODES | #ifdef USE_NODE_COMPAT_CUSTOMNODES | ||||
| ▲ Show 20 Lines • Show All 1,599 Lines • ▼ Show 20 Lines | else if (md->type == eModifierType_SurfaceDeform) { | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| static void write_gpencil_modifiers(WriteData *wd, ListBase *modbase) | |||||
| { | |||||
| GpencilModifierData *md; | |||||
| if (modbase == NULL) { | |||||
| return; | |||||
| } | |||||
| for (md = modbase->first; md; md = md->next) { | |||||
| const GpencilModifierTypeInfo *mti = BKE_gpencil_modifierType_getInfo(md->type); | |||||
| if (mti == NULL) { | |||||
| return; | |||||
| } | |||||
| writestruct_id(wd, DATA, mti->struct_name, 1, md); | |||||
| if (md->type == eGpencilModifierType_Thick) { | |||||
| ThickGpencilModifierData *gpmd = (ThickGpencilModifierData *)md; | |||||
| if (gpmd->curve_thickness) { | |||||
| write_curvemapping(wd, gpmd->curve_thickness); | |||||
| } | |||||
| } | |||||
| else if (md->type == eGpencilModifierType_Hook) { | |||||
| HookGpencilModifierData *gpmd = (HookGpencilModifierData *)md; | |||||
| if (gpmd->curfalloff) { | |||||
| write_curvemapping(wd, gpmd->curfalloff); | |||||
| } | |||||
| } | |||||
| } | |||||
| } | |||||
| static void write_shaderfxs(WriteData *wd, ListBase *fxbase) | |||||
| { | |||||
| ShaderFxData *fx; | |||||
| if (fxbase == NULL) { | |||||
| return; | |||||
| } | |||||
| for (fx = fxbase->first; fx; fx = fx->next) { | |||||
| const ShaderFxTypeInfo *fxi = BKE_shaderfxType_getInfo(fx->type); | |||||
| if (fxi == NULL) { | |||||
| return; | |||||
| } | |||||
| writestruct_id(wd, DATA, fxi->struct_name, 1, fx); | |||||
| } | |||||
| } | |||||
| static void write_object(WriteData *wd, Object *ob) | static void write_object(WriteData *wd, Object *ob) | ||||
| { | { | ||||
| if (ob->id.us > 0 || wd->use_memfile) { | if (ob->id.us > 0 || wd->use_memfile) { | ||||
| /* write LibData */ | /* write LibData */ | ||||
| writestruct(wd, ID_OB, Object, 1, ob); | writestruct(wd, ID_OB, Object, 1, ob); | ||||
| write_iddata(wd, &ob->id); | write_iddata(wd, &ob->id); | ||||
| if (ob->adt) { | if (ob->adt) { | ||||
| Show All 38 Lines | if (ob->id.us > 0 || wd->use_memfile) { | ||||
| } | } | ||||
| if (ob->type == OB_EMPTY && ob->empty_drawtype == OB_EMPTY_IMAGE) { | if (ob->type == OB_EMPTY && ob->empty_drawtype == OB_EMPTY_IMAGE) { | ||||
| writestruct(wd, DATA, ImageUser, 1, ob->iuser); | writestruct(wd, DATA, ImageUser, 1, ob->iuser); | ||||
| } | } | ||||
| write_particlesystems(wd, &ob->particlesystem); | write_particlesystems(wd, &ob->particlesystem); | ||||
| write_modifiers(wd, &ob->modifiers); | write_modifiers(wd, &ob->modifiers); | ||||
| write_gpencil_modifiers(wd, &ob->greasepencil_modifiers); | |||||
| write_shaderfxs(wd, &ob->shader_fx); | |||||
| writelist(wd, DATA, LinkData, &ob->pc_ids); | writelist(wd, DATA, LinkData, &ob->pc_ids); | ||||
| writelist(wd, DATA, LodLevel, &ob->lodlevels); | writelist(wd, DATA, LodLevel, &ob->lodlevels); | ||||
| write_previews(wd, ob->preview); | write_previews(wd, ob->preview); | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 402 Lines • ▼ Show 20 Lines | if (ma->id.us > 0 || wd->use_memfile) { | ||||
| /* nodetree is integral part of material, no libdata */ | /* nodetree is integral part of material, no libdata */ | ||||
| if (ma->nodetree) { | if (ma->nodetree) { | ||||
| writestruct(wd, DATA, bNodeTree, 1, ma->nodetree); | writestruct(wd, DATA, bNodeTree, 1, ma->nodetree); | ||||
| write_nodetree_nolib(wd, ma->nodetree); | write_nodetree_nolib(wd, ma->nodetree); | ||||
| } | } | ||||
| write_previews(wd, ma->preview); | write_previews(wd, ma->preview); | ||||
| /* grease pencil settings */ | |||||
| if (ma->gp_style) { | |||||
| writestruct(wd, DATA, MaterialGPencilStyle, 1, ma->gp_style); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| static void write_world(WriteData *wd, World *wrld) | static void write_world(WriteData *wd, World *wrld) | ||||
| { | { | ||||
| if (wrld->id.us > 0 || wd->use_memfile) { | if (wrld->id.us > 0 || wd->use_memfile) { | ||||
| /* write LibData */ | /* write LibData */ | ||||
| writestruct(wd, ID_WO, World, 1, wrld); | writestruct(wd, ID_WO, World, 1, wrld); | ||||
| ▲ Show 20 Lines • Show All 187 Lines • ▼ Show 20 Lines | static void write_scene(WriteData *wd, Scene *sce) | ||||
| if (tos->sculpt) { | if (tos->sculpt) { | ||||
| writestruct(wd, DATA, Sculpt, 1, tos->sculpt); | writestruct(wd, DATA, Sculpt, 1, tos->sculpt); | ||||
| write_paint(wd, &tos->sculpt->paint); | write_paint(wd, &tos->sculpt->paint); | ||||
| } | } | ||||
| if (tos->uvsculpt) { | if (tos->uvsculpt) { | ||||
| writestruct(wd, DATA, UvSculpt, 1, tos->uvsculpt); | writestruct(wd, DATA, UvSculpt, 1, tos->uvsculpt); | ||||
| write_paint(wd, &tos->uvsculpt->paint); | write_paint(wd, &tos->uvsculpt->paint); | ||||
| } | } | ||||
| /* write grease-pencil drawing brushes to file */ | if (tos->gp_paint) { | ||||
| writelist(wd, DATA, bGPDbrush, &tos->gp_brushes); | writestruct(wd, DATA, GpPaint, 1, tos->gp_paint); | ||||
| for (bGPDbrush *brush = tos->gp_brushes.first; brush; brush = brush->next) { | write_paint(wd, &tos->gp_paint->paint); | ||||
| if (brush->cur_sensitivity) { | |||||
| write_curvemapping(wd, brush->cur_sensitivity); | |||||
| } | |||||
| if (brush->cur_strength) { | |||||
| write_curvemapping(wd, brush->cur_strength); | |||||
| } | |||||
| if (brush->cur_jitter) { | |||||
| write_curvemapping(wd, brush->cur_jitter); | |||||
| } | |||||
| } | } | ||||
| /* write grease-pencil custom ipo curve to file */ | /* write grease-pencil custom ipo curve to file */ | ||||
| if (tos->gp_interpolate.custom_ipo) { | if (tos->gp_interpolate.custom_ipo) { | ||||
| write_curvemapping(wd, tos->gp_interpolate.custom_ipo); | write_curvemapping(wd, tos->gp_interpolate.custom_ipo); | ||||
| } | } | ||||
| /* write grease-pencil multiframe falloff curve to file */ | |||||
| if (tos->gp_sculpt.cur_falloff) { | |||||
| write_curvemapping(wd, tos->gp_sculpt.cur_falloff); | |||||
| } | |||||
| write_paint(wd, &tos->imapaint.paint); | write_paint(wd, &tos->imapaint.paint); | ||||
| Editing *ed = sce->ed; | Editing *ed = sce->ed; | ||||
| if (ed) { | if (ed) { | ||||
| Sequence *seq; | Sequence *seq; | ||||
| writestruct(wd, DATA, Editing, 1, ed); | writestruct(wd, DATA, Editing, 1, ed); | ||||
| ▲ Show 20 Lines • Show All 157 Lines • ▼ Show 20 Lines | if (gpd->id.us > 0 || wd->use_memfile) { | ||||
| /* write gpd data block to file */ | /* write gpd data block to file */ | ||||
| writestruct(wd, ID_GD, bGPdata, 1, gpd); | writestruct(wd, ID_GD, bGPdata, 1, gpd); | ||||
| write_iddata(wd, &gpd->id); | write_iddata(wd, &gpd->id); | ||||
| if (gpd->adt) { | if (gpd->adt) { | ||||
| write_animdata(wd, gpd->adt); | write_animdata(wd, gpd->adt); | ||||
| } | } | ||||
| writedata(wd, DATA, sizeof(void *) * gpd->totcol, gpd->mat); | |||||
| /* write grease-pencil layers to file */ | /* write grease-pencil layers to file */ | ||||
| writelist(wd, DATA, bGPDlayer, &gpd->layers); | writelist(wd, DATA, bGPDlayer, &gpd->layers); | ||||
| for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) { | for (bGPDlayer *gpl = gpd->layers.first; gpl; gpl = gpl->next) { | ||||
| /* write this layer's frames to file */ | /* write this layer's frames to file */ | ||||
| writelist(wd, DATA, bGPDframe, &gpl->frames); | writelist(wd, DATA, bGPDframe, &gpl->frames); | ||||
| for (bGPDframe *gpf = gpl->frames.first; gpf; gpf = gpf->next) { | for (bGPDframe *gpf = gpl->frames.first; gpf; gpf = gpf->next) { | ||||
| /* write strokes */ | /* write strokes */ | ||||
| writelist(wd, DATA, bGPDstroke, &gpf->strokes); | writelist(wd, DATA, bGPDstroke, &gpf->strokes); | ||||
| for (bGPDstroke *gps = gpf->strokes.first; gps; gps = gps->next) { | for (bGPDstroke *gps = gpf->strokes.first; gps; gps = gps->next) { | ||||
| writestruct(wd, DATA, bGPDspoint, gps->totpoints, gps->points); | writestruct(wd, DATA, bGPDspoint, gps->totpoints, gps->points); | ||||
| write_dverts(wd, gps->totpoints, gps->dvert); | |||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| /* write grease-pencil palettes */ | |||||
| writelist(wd, DATA, bGPDpalette, &gpd->palettes); | |||||
| for (bGPDpalette *palette = gpd->palettes.first; palette; palette = palette->next) { | |||||
| writelist(wd, DATA, bGPDpalettecolor, &palette->colors); | |||||
| } | |||||
| } | } | ||||
| } | } | ||||
| static void write_region(WriteData *wd, ARegion *ar, int spacetype) | static void write_region(WriteData *wd, ARegion *ar, int spacetype) | ||||
| { | { | ||||
| writestruct(wd, DATA, ARegion, 1, ar); | writestruct(wd, DATA, ARegion, 1, ar); | ||||
| if (ar->regiondata) { | if (ar->regiondata) { | ||||
| ▲ Show 20 Lines • Show All 470 Lines • ▼ Show 20 Lines | |||||
| { | { | ||||
| if (brush->id.us > 0 || wd->use_memfile) { | if (brush->id.us > 0 || wd->use_memfile) { | ||||
| writestruct(wd, ID_BR, Brush, 1, brush); | writestruct(wd, ID_BR, Brush, 1, brush); | ||||
| write_iddata(wd, &brush->id); | write_iddata(wd, &brush->id); | ||||
| if (brush->curve) { | if (brush->curve) { | ||||
| write_curvemapping(wd, brush->curve); | write_curvemapping(wd, brush->curve); | ||||
| } | } | ||||
| if (brush->gpencil_settings) { | |||||
| writestruct(wd, DATA, BrushGpencilSettings, 1, brush->gpencil_settings); | |||||
| if (brush->gpencil_settings->curve_sensitivity) { | |||||
| write_curvemapping(wd, brush->gpencil_settings->curve_sensitivity); | |||||
| } | |||||
| if (brush->gpencil_settings->curve_strength) { | |||||
| write_curvemapping(wd, brush->gpencil_settings->curve_strength); | |||||
| } | |||||
| if (brush->gpencil_settings->curve_jitter) { | |||||
| write_curvemapping(wd, brush->gpencil_settings->curve_jitter); | |||||
| } | |||||
| } | |||||
| if (brush->gradient) { | if (brush->gradient) { | ||||
| writestruct(wd, DATA, ColorBand, 1, brush->gradient); | writestruct(wd, DATA, ColorBand, 1, brush->gradient); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| static void write_palette(WriteData *wd, Palette *palette) | static void write_palette(WriteData *wd, Palette *palette) | ||||
| { | { | ||||
| ▲ Show 20 Lines • Show All 982 Lines • Show Last 20 Lines | |||||