Changeset View
Changeset View
Standalone View
Standalone View
source/blender/modifiers/intern/MOD_meshcache_mdd.c
| Show First 20 Lines • Show All 149 Lines • ▼ Show 20 Lines | bool MOD_meshcache_read_mdd_index(FILE *fp, | ||||
| const char **err_str) | const char **err_str) | ||||
| { | { | ||||
| MDDHead mdd_head; | MDDHead mdd_head; | ||||
| if (meshcache_read_mdd_head(fp, verts_tot, &mdd_head, err_str) == false) { | if (meshcache_read_mdd_head(fp, verts_tot, &mdd_head, err_str) == false) { | ||||
| return false; | return false; | ||||
| } | } | ||||
| if (fseek(fp, mdd_head.frame_tot * sizeof(int), SEEK_CUR) != 0) { | if (BLI_fseek(fp, mdd_head.frame_tot * sizeof(int), SEEK_CUR) != 0) { | ||||
| *err_str = "Header seek failed"; | *err_str = "Header seek failed"; | ||||
| return false; | return false; | ||||
| } | } | ||||
| if (fseek(fp, sizeof(float) * 3 * index * mdd_head.verts_tot, SEEK_CUR) != 0) { | if (BLI_fseek(fp, sizeof(float) * 3 * index * mdd_head.verts_tot, SEEK_CUR) != 0) { | ||||
| *err_str = "Failed to seek frame"; | *err_str = "Failed to seek frame"; | ||||
| return false; | return false; | ||||
| } | } | ||||
| if (factor >= 1.0f) { | if (factor >= 1.0f) { | ||||
| #if 1 | #if 1 | ||||
| float *vco = *vertexCos; | float *vco = *vertexCos; | ||||
| uint i; | uint i; | ||||
| ▲ Show 20 Lines • Show All 57 Lines • ▼ Show 20 Lines | if (meshcache_read_mdd_range(fp, | ||||
| index_range, | index_range, | ||||
| &factor, /* read into these values */ | &factor, /* read into these values */ | ||||
| err_str) == false) { | err_str) == false) { | ||||
| return false; | return false; | ||||
| } | } | ||||
| if (index_range[0] == index_range[1]) { | if (index_range[0] == index_range[1]) { | ||||
| /* read single */ | /* read single */ | ||||
| if ((fseek(fp, 0, SEEK_SET) == 0) && | if ((BLI_fseek(fp, 0, SEEK_SET) == 0) && | ||||
| MOD_meshcache_read_mdd_index(fp, vertexCos, verts_tot, index_range[0], 1.0f, err_str)) { | MOD_meshcache_read_mdd_index(fp, vertexCos, verts_tot, index_range[0], 1.0f, err_str)) { | ||||
| return true; | return true; | ||||
| } | } | ||||
| else { | else { | ||||
| return false; | return false; | ||||
| } | } | ||||
| } | } | ||||
| else { | else { | ||||
| /* read both and interpolate */ | /* read both and interpolate */ | ||||
| if ((fseek(fp, 0, SEEK_SET) == 0) && | if ((BLI_fseek(fp, 0, SEEK_SET) == 0) && | ||||
| MOD_meshcache_read_mdd_index(fp, vertexCos, verts_tot, index_range[0], 1.0f, err_str) && | MOD_meshcache_read_mdd_index(fp, vertexCos, verts_tot, index_range[0], 1.0f, err_str) && | ||||
| (fseek(fp, 0, SEEK_SET) == 0) && | (BLI_fseek(fp, 0, SEEK_SET) == 0) && | ||||
| MOD_meshcache_read_mdd_index(fp, vertexCos, verts_tot, index_range[1], factor, err_str)) { | MOD_meshcache_read_mdd_index(fp, vertexCos, verts_tot, index_range[1], factor, err_str)) { | ||||
| return true; | return true; | ||||
| } | } | ||||
| else { | else { | ||||
| return false; | return false; | ||||
| } | } | ||||
| } | } | ||||
| } | } | ||||
| ▲ Show 20 Lines • Show All 53 Lines • Show Last 20 Lines | |||||