Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenloader/intern/writefile.c
| Show First 20 Lines • Show All 2,095 Lines • ▼ Show 20 Lines | for (i = 0; i < count; ++i) { | ||||
| sizeof(*gpm->data) * gridsize * gridsize, | sizeof(*gpm->data) * gridsize * gridsize, | ||||
| gpm->data); | gpm->data); | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| static void write_customdata( | static void write_customdata( | ||||
| WriteData *wd, ID *id, int count, CustomData *data, CustomDataLayer *layers, | WriteData *wd, ID *id, | ||||
| int count, CustomData *data, CustomDataLayer *layers, CustomDataMask cddata_mask, | |||||
| int partial_type, int partial_count) | int partial_type, int partial_count) | ||||
| { | { | ||||
| int i; | int i; | ||||
| /* write external customdata (not for undo) */ | /* write external customdata (not for undo) */ | ||||
| if (data->external && (wd->use_memfile == false)) { | if (data->external && (wd->use_memfile == false)) { | ||||
| CustomData_external_write(data, id, CD_MASK_MESH, count, 0); | CustomData_external_write(data, id, cddata_mask, count, 0); | ||||
| } | } | ||||
| writestruct_at_address(wd, DATA, CustomDataLayer, data->totlayer, data->layers, layers); | writestruct_at_address(wd, DATA, CustomDataLayer, data->totlayer, data->layers, layers); | ||||
| for (i = 0; i < data->totlayer; i++) { | for (i = 0; i < data->totlayer; i++) { | ||||
| CustomDataLayer *layer = &layers[i]; | CustomDataLayer *layer = &layers[i]; | ||||
| const char *structname; | const char *structname; | ||||
| int structnum, datasize; | int structnum, datasize; | ||||
| ▲ Show 20 Lines • Show All 84 Lines • ▼ Show 20 Lines | /* write LibData */ | ||||
| /* direct data */ | /* direct data */ | ||||
| if (mesh->adt) { | if (mesh->adt) { | ||||
| write_animdata(wd, mesh->adt); | write_animdata(wd, mesh->adt); | ||||
| } | } | ||||
| writedata(wd, DATA, sizeof(void *) * mesh->totcol, mesh->mat); | writedata(wd, DATA, sizeof(void *) * mesh->totcol, mesh->mat); | ||||
| writedata(wd, DATA, sizeof(MSelect) * mesh->totselect, mesh->mselect); | writedata(wd, DATA, sizeof(MSelect) * mesh->totselect, mesh->mselect); | ||||
| write_customdata(wd, &mesh->id, mesh->totvert, &mesh->vdata, vlayers, -1, 0); | write_customdata(wd, &mesh->id, mesh->totvert, &mesh->vdata, vlayers, CD_MASK_MESH.vmask, -1, 0); | ||||
| write_customdata(wd, &mesh->id, mesh->totedge, &mesh->edata, elayers, -1, 0); | write_customdata(wd, &mesh->id, mesh->totedge, &mesh->edata, elayers, CD_MASK_MESH.emask, -1, 0); | ||||
| /* fdata is really a dummy - written so slots align */ | /* fdata is really a dummy - written so slots align */ | ||||
| write_customdata(wd, &mesh->id, mesh->totface, &mesh->fdata, flayers, -1, 0); | write_customdata(wd, &mesh->id, mesh->totface, &mesh->fdata, flayers, CD_MASK_MESH.fmask, -1, 0); | ||||
| write_customdata(wd, &mesh->id, mesh->totloop, &mesh->ldata, llayers, -1, 0); | write_customdata(wd, &mesh->id, mesh->totloop, &mesh->ldata, llayers, CD_MASK_MESH.lmask, -1, 0); | ||||
| write_customdata(wd, &mesh->id, mesh->totpoly, &mesh->pdata, players, -1, 0); | write_customdata(wd, &mesh->id, mesh->totpoly, &mesh->pdata, players, CD_MASK_MESH.pmask, -1, 0); | ||||
| /* restore pointer */ | /* restore pointer */ | ||||
| mesh = old_mesh; | mesh = old_mesh; | ||||
| } | } | ||||
| } | } | ||||
| if (vlayers && vlayers != vlayers_buff) { | if (vlayers && vlayers != vlayers_buff) { | ||||
| MEM_freeN(vlayers); | MEM_freeN(vlayers); | ||||
| ▲ Show 20 Lines • Show All 2,020 Lines • Show Last 20 Lines | |||||