diff options
Diffstat (limited to 'source/blender/makesrna/intern/rna_mesh_api.c')
-rw-r--r-- | source/blender/makesrna/intern/rna_mesh_api.c | 36 |
1 files changed, 22 insertions, 14 deletions
diff --git a/source/blender/makesrna/intern/rna_mesh_api.c b/source/blender/makesrna/intern/rna_mesh_api.c index 579898cce44..a08555794d8 100644 --- a/source/blender/makesrna/intern/rna_mesh_api.c +++ b/source/blender/makesrna/intern/rna_mesh_api.c @@ -48,7 +48,9 @@ #include "DNA_mesh_types.h" #include "BKE_mesh.h" +#include "BKE_mesh_tangent.h" #include "BKE_mesh_mapping.h" +#include "BKE_mesh_runtime.h" #include "ED_mesh.h" static const char *rna_Mesh_unit_test_compare(struct Mesh *mesh, struct Mesh *mesh2) @@ -92,7 +94,7 @@ static void rna_Mesh_calc_tangents(Mesh *mesh, ReportList *reports, const char * BKE_mesh_calc_normals_split(mesh); } - BKE_mesh_loop_tangents(mesh, uvmap, r_looptangents, reports); + BKE_mesh_calc_loop_tangent_single(mesh, uvmap, r_looptangents, reports); } static void rna_Mesh_free_tangents(Mesh *mesh) @@ -100,9 +102,9 @@ static void rna_Mesh_free_tangents(Mesh *mesh) CustomData_free_layers(&mesh->ldata, CD_MLOOPTANGENT, mesh->totloop); } -static void rna_Mesh_calc_tessface(Mesh *mesh, bool free_mpoly) +static void rna_Mesh_calc_looptri(Mesh *mesh) { - ED_mesh_calc_tessface(mesh, free_mpoly != 0); + BKE_mesh_runtime_looptri_ensure(mesh); } static void rna_Mesh_calc_smooth_groups(Mesh *mesh, bool use_bitflags, int *r_poly_group_len, @@ -172,7 +174,7 @@ static void rna_Mesh_normals_split_custom_set(Mesh *mesh, ReportList *reports, i rna_Mesh_normals_split_custom_do(mesh, loopnors, false); - DAG_id_tag_update(&mesh->id, 0); + DEG_id_tag_update(&mesh->id, 0); } static void rna_Mesh_normals_split_custom_set_from_vertices( @@ -190,14 +192,14 @@ static void rna_Mesh_normals_split_custom_set_from_vertices( rna_Mesh_normals_split_custom_do(mesh, vertnors, true); - DAG_id_tag_update(&mesh->id, 0); + DEG_id_tag_update(&mesh->id, 0); } static void rna_Mesh_transform(Mesh *mesh, float *mat, bool shape_keys) { BKE_mesh_transform(mesh, (float (*)[4])mat, shape_keys); - DAG_id_tag_update(&mesh->id, 0); + DEG_id_tag_update(&mesh->id, 0); } static void rna_Mesh_flip_normals(Mesh *mesh) @@ -205,8 +207,9 @@ static void rna_Mesh_flip_normals(Mesh *mesh) BKE_mesh_polygons_flip(mesh->mpoly, mesh->mloop, &mesh->ldata, mesh->totpoly); BKE_mesh_tessface_clear(mesh); BKE_mesh_calc_normals(mesh); + BKE_mesh_runtime_clear_geometry(mesh); - DAG_id_tag_update(&mesh->id, 0); + DEG_id_tag_update(&mesh->id, 0); } static void rna_Mesh_split_faces(Mesh *mesh, bool free_loop_normals) @@ -214,6 +217,12 @@ static void rna_Mesh_split_faces(Mesh *mesh, bool free_loop_normals) BKE_mesh_split_faces(mesh, free_loop_normals != 0); } +static void rna_Mesh_update_gpu_tag(Mesh *mesh) +{ + BKE_mesh_batch_cache_dirty_tag(mesh, BKE_MESH_BATCH_DIRTY_ALL); +} + + #else void RNA_api_mesh(StructRNA *srna) @@ -262,12 +271,8 @@ void RNA_api_mesh(StructRNA *srna) func = RNA_def_function(srna, "free_tangents", "rna_Mesh_free_tangents"); RNA_def_function_ui_description(func, "Free tangents"); - func = RNA_def_function(srna, "calc_tessface", "rna_Mesh_calc_tessface"); - RNA_def_function_ui_description(func, "Calculate face tessellation (supports editmode too)"); - RNA_def_boolean(func, "free_mpoly", 0, "Free MPoly", "Free data used by polygons and loops. " - "WARNING: This destructive operation removes regular faces, " - "only used on temporary mesh data-blocks to reduce memory footprint of render " - "engines and export scripts"); + func = RNA_def_function(srna, "calc_loop_triangles", "rna_Mesh_calc_looptri"); + RNA_def_function_ui_description(func, "Calculate loop triangle tessellation (supports editmode too)"); func = RNA_def_function(srna, "calc_smooth_groups", "rna_Mesh_calc_smooth_groups"); RNA_def_function_ui_description(func, "Calculate smooth groups from sharp edges"); @@ -301,9 +306,12 @@ void RNA_api_mesh(StructRNA *srna) func = RNA_def_function(srna, "update", "ED_mesh_update"); RNA_def_boolean(func, "calc_edges", 0, "Calculate Edges", "Force recalculation of edges"); - RNA_def_boolean(func, "calc_tessface", 0, "Calculate Tessellation", "Force recalculation of tessellation faces"); + RNA_def_boolean(func, "calc_edges_loose", 0, "Calculate Loose Edges", "Calculate the loose state of each edge"); + RNA_def_boolean(func, "calc_loop_triangles", 0, "Calculate Triangules", "Force recalculation of triangle tessellation"); RNA_def_function_flag(func, FUNC_USE_CONTEXT); + RNA_def_function(srna, "update_gpu_tag", "rna_Mesh_update_gpu_tag"); + func = RNA_def_function(srna, "unit_test_compare", "rna_Mesh_unit_test_compare"); RNA_def_pointer(func, "mesh", "Mesh", "", "Mesh to compare to"); /* return value */ |