Changeset View
Changeset View
Standalone View
Standalone View
source/blender/blenkernel/intern/mesh_validate.c
| Show All 34 Lines | |||||
| #include "BLI_sys_types.h" | #include "BLI_sys_types.h" | ||||
| #include "BLI_utildefines.h" | #include "BLI_utildefines.h" | ||||
| #include "BLI_edgehash.h" | #include "BLI_edgehash.h" | ||||
| #include "BLI_math_base.h" | #include "BLI_math_base.h" | ||||
| #include "BLI_math_vector.h" | #include "BLI_math_vector.h" | ||||
| #include "BKE_customdata.h" | |||||
| #include "BKE_deform.h" | #include "BKE_deform.h" | ||||
| #include "BKE_mesh.h" | #include "BKE_mesh.h" | ||||
| #include "DEG_depsgraph.h" | #include "DEG_depsgraph.h" | ||||
| #include "MEM_guardedalloc.h" | #include "MEM_guardedalloc.h" | ||||
| /* loop v/e are unsigned, so using max uint_32 value as invalid marker... */ | /* loop v/e are unsigned, so using max uint_32 value as invalid marker... */ | ||||
| ▲ Show 20 Lines • Show All 832 Lines • ▼ Show 20 Lines | bool BKE_mesh_validate_all_customdata( | ||||
| CustomData *pdata, const uint totpoly, | CustomData *pdata, const uint totpoly, | ||||
| const bool check_meshmask, | const bool check_meshmask, | ||||
| const bool do_verbose, const bool do_fixes, | const bool do_verbose, const bool do_fixes, | ||||
| bool *r_change) | bool *r_change) | ||||
| { | { | ||||
| bool is_valid = true; | bool is_valid = true; | ||||
| bool is_change_v, is_change_e, is_change_l, is_change_p; | bool is_change_v, is_change_e, is_change_l, is_change_p; | ||||
| int tot_uvloop, tot_vcolloop; | int tot_uvloop, tot_vcolloop; | ||||
| CustomDataMask mask = check_meshmask ? CD_MASK_MESH : 0; | CustomData_MeshMasks mask = {0}; | ||||
| if (check_meshmask) { | |||||
| mask = CD_MASK_MESH; | |||||
| } | |||||
| is_valid &= mesh_validate_customdata(vdata, mask, totvert, do_verbose, do_fixes, &is_change_v); | is_valid &= mesh_validate_customdata(vdata, mask.vmask, totvert, do_verbose, do_fixes, &is_change_v); | ||||
| is_valid &= mesh_validate_customdata(edata, mask, totedge, do_verbose, do_fixes, &is_change_e); | is_valid &= mesh_validate_customdata(edata, mask.emask, totedge, do_verbose, do_fixes, &is_change_e); | ||||
| is_valid &= mesh_validate_customdata(ldata, mask, totloop, do_verbose, do_fixes, &is_change_l); | is_valid &= mesh_validate_customdata(ldata, mask.lmask, totloop, do_verbose, do_fixes, &is_change_l); | ||||
| is_valid &= mesh_validate_customdata(pdata, mask, totpoly, do_verbose, do_fixes, &is_change_p); | is_valid &= mesh_validate_customdata(pdata, mask.pmask, totpoly, do_verbose, do_fixes, &is_change_p); | ||||
| tot_uvloop = CustomData_number_of_layers(ldata, CD_MLOOPUV); | tot_uvloop = CustomData_number_of_layers(ldata, CD_MLOOPUV); | ||||
| tot_vcolloop = CustomData_number_of_layers(ldata, CD_MLOOPCOL); | tot_vcolloop = CustomData_number_of_layers(ldata, CD_MLOOPCOL); | ||||
| if (tot_uvloop > MAX_MTFACE) { | if (tot_uvloop > MAX_MTFACE) { | ||||
| PRINT_ERR("\tMore UV layers than %d allowed, %d last ones won't be available for render, shaders, etc.\n", | PRINT_ERR("\tMore UV layers than %d allowed, %d last ones won't be available for render, shaders, etc.\n", | ||||
| MAX_MTFACE, tot_uvloop - MAX_MTFACE); | MAX_MTFACE, tot_uvloop - MAX_MTFACE); | ||||
| } | } | ||||
| if (tot_vcolloop > MAX_MCOL) { | if (tot_vcolloop > MAX_MCOL) { | ||||
| ▲ Show 20 Lines • Show All 626 Lines • Show Last 20 Lines | |||||