diff options
author | Campbell Barton <ideasman42@gmail.com> | 2015-07-22 10:39:33 +0300 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2015-07-22 14:32:14 +0300 |
commit | df41f7bf4f1b16d833eb548e57b4512dfb1a3bfa (patch) | |
tree | 01045715f1c945c4b6e76ce8adac4980d9e1191f /source/blender | |
parent | f9a6780dc642ced8dc73f82d0d76cf928c33a094 (diff) |
Use const for BVH mesh arrays
Diffstat (limited to 'source/blender')
-rw-r--r-- | source/blender/blenkernel/BKE_bvhutils.h | 40 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/bvhutils.c | 45 | ||||
-rw-r--r-- | source/blender/blenkernel/intern/dynamicpaint.c | 8 |
3 files changed, 52 insertions, 41 deletions
diff --git a/source/blender/blenkernel/BKE_bvhutils.h b/source/blender/blenkernel/BKE_bvhutils.h index a360511dcd3..e78fa65bbbf 100644 --- a/source/blender/blenkernel/BKE_bvhutils.h +++ b/source/blender/blenkernel/BKE_bvhutils.h @@ -53,9 +53,9 @@ typedef struct BVHTreeFromMesh { BVHTree_RayCastCallback raycast_callback; /* Vertex array, so that callbacks have instante access to data */ - struct MVert *vert; - struct MEdge *edge; /* only used for BVHTreeFromMeshEdges */ - struct MFace *face; + const struct MVert *vert; + const struct MEdge *edge; /* only used for BVHTreeFromMeshEdges */ + const struct MFace *face; bool vert_allocated; bool edge_allocated; bool face_allocated; @@ -69,7 +69,7 @@ typedef struct BVHTreeFromMesh { } BVHTreeFromMesh; -/* +/** * Builds a bvh tree where nodes are the relevant elements of the given mesh. * Configures BVHTreeFromMesh. * @@ -79,18 +79,26 @@ typedef struct BVHTreeFromMesh { * * free_bvhtree_from_mesh should be called when the tree is no longer needed. */ -BVHTree *bvhtree_from_mesh_verts(struct BVHTreeFromMesh *data, struct DerivedMesh *mesh, float epsilon, int tree_type, int axis); -BVHTree *bvhtree_from_mesh_verts_ex(struct BVHTreeFromMesh *data, struct MVert *vert, const int numVerts, - const bool vert_allocated, BLI_bitmap *mask, int numVerts_active, - float epsilon, int tree_type, int axis); - -BVHTree *bvhtree_from_mesh_edges(struct BVHTreeFromMesh *data, struct DerivedMesh *mesh, float epsilon, int tree_type, int axis); - -BVHTree *bvhtree_from_mesh_faces(struct BVHTreeFromMesh *data, struct DerivedMesh *mesh, float epsilon, int tree_type, int axis); -BVHTree *bvhtree_from_mesh_faces_ex(struct BVHTreeFromMesh *data, struct MVert *vert, const bool vert_allocated, - struct MFace *face, const int numFaces, const bool face_allocated, - BLI_bitmap *mask, int numFaces_active, - float epsilon, int tree_type, int axis); +BVHTree *bvhtree_from_mesh_verts( + struct BVHTreeFromMesh *data, struct DerivedMesh *mesh, float epsilon, int tree_type, int axis); +BVHTree *bvhtree_from_mesh_verts_ex( + struct BVHTreeFromMesh *data, struct MVert *vert, const int numVerts, + const bool vert_allocated, BLI_bitmap *mask, int numVerts_active, + float epsilon, int tree_type, int axis); + +BVHTree *bvhtree_from_mesh_edges( + struct BVHTreeFromMesh *data, struct DerivedMesh *mesh, + float epsilon, int tree_type, int axis); + +BVHTree *bvhtree_from_mesh_faces( + struct BVHTreeFromMesh *data, struct DerivedMesh *mesh, float epsilon, + int tree_type, int axis); +BVHTree *bvhtree_from_mesh_faces_ex( + struct BVHTreeFromMesh *data, + struct MVert *vert, const bool vert_allocated, + struct MFace *face, const int numFaces, const bool face_allocated, + BLI_bitmap *mask, int numFaces_active, + float epsilon, int tree_type, int axis); /* * Frees data allocated by a call to bvhtree_from_mesh_*. diff --git a/source/blender/blenkernel/intern/bvhutils.c b/source/blender/blenkernel/intern/bvhutils.c index 1a4a4bd6bce..4472e937950 100644 --- a/source/blender/blenkernel/intern/bvhutils.c +++ b/source/blender/blenkernel/intern/bvhutils.c @@ -84,8 +84,8 @@ static float sphereray_tri_intersection(const BVHTreeRay *ray, float radius, con static void mesh_faces_nearest_point(void *userdata, int index, const float co[3], BVHTreeNearest *nearest) { const BVHTreeFromMesh *data = (BVHTreeFromMesh *) userdata; - MVert *vert = data->vert; - MFace *face = data->face + index; + const MVert *vert = data->vert; + const MFace *face = data->face + index; const float *t0, *t1, *t2, *t3; t0 = vert[face->v1].co; @@ -148,8 +148,8 @@ static void editmesh_faces_nearest_point(void *userdata, int index, const float static void mesh_faces_spherecast(void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit) { const BVHTreeFromMesh *data = (BVHTreeFromMesh *) userdata; - MVert *vert = data->vert; - MFace *face = data->face + index; + const MVert *vert = data->vert; + const MFace *face = &data->face[index]; const float *t0, *t1, *t2, *t3; t0 = vert[face->v1].co; @@ -217,8 +217,8 @@ static void editmesh_faces_spherecast(void *userdata, int index, const BVHTreeRa static void mesh_edges_nearest_point(void *userdata, int index, const float co[3], BVHTreeNearest *nearest) { const BVHTreeFromMesh *data = (BVHTreeFromMesh *) userdata; - MVert *vert = data->vert; - MEdge *edge = data->edge + index; + const MVert *vert = data->vert; + const MEdge *edge = data->edge + index; float nearest_tmp[3], dist_sq; const float *t0, *t1; @@ -262,7 +262,7 @@ static void mesh_verts_spherecast_do( static void mesh_verts_spherecast(void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit) { const BVHTreeFromMesh *data = (BVHTreeFromMesh *)userdata; - float *v = data->vert[index].co; + const float *v = data->vert[index].co; mesh_verts_spherecast_do(data, index, v, ray, hit); } @@ -272,8 +272,8 @@ static void mesh_verts_spherecast(void *userdata, int index, const BVHTreeRay *r static void mesh_edges_spherecast(void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit) { const BVHTreeFromMesh *data = (BVHTreeFromMesh *)userdata; - MVert *vert = data->vert; - MEdge *edge = &data->edge[index]; + const MVert *vert = data->vert; + const MEdge *edge = &data->edge[index]; const float radius_sq = SQUARE(data->sphere_radius); float dist; @@ -624,10 +624,11 @@ static BVHTree *bvhtree_from_mesh_faces_create_tree(float epsilon, int tree_type return tree; } -static void bvhtree_from_mesh_faces_setup_data(BVHTreeFromMesh *data, BVHTree *tree, const bool is_cached, - float epsilon, BMEditMesh *em, - MVert *vert, const bool vert_allocated, - MFace *face, const bool face_allocated) +static void bvhtree_from_mesh_faces_setup_data( + BVHTreeFromMesh *data, BVHTree *tree, const bool is_cached, + float epsilon, BMEditMesh *em, + MVert *vert, const bool vert_allocated, + MFace *face, const bool face_allocated) { memset(data, 0, sizeof(*data)); data->em_evil = em; @@ -727,12 +728,14 @@ BVHTree *bvhtree_from_mesh_faces(BVHTreeFromMesh *data, DerivedMesh *dm, float e * \param mask if not null, true elements give which faces to add to BVH tree. * \param numFaces_active if >= 0, number of active faces to add to BVH tree (else will be computed from mask). */ -BVHTree *bvhtree_from_mesh_faces_ex(BVHTreeFromMesh *data, MVert *vert, const bool vert_allocated, - MFace *face, const int numFaces, const bool face_allocated, - BLI_bitmap *mask, int numFaces_active, float epsilon, int tree_type, int axis) +BVHTree *bvhtree_from_mesh_faces_ex( + BVHTreeFromMesh *data, MVert *vert, const bool vert_allocated, + MFace *face, const int numFaces, const bool face_allocated, + BLI_bitmap *mask, int numFaces_active, float epsilon, int tree_type, int axis) { - BVHTree *tree = bvhtree_from_mesh_faces_create_tree(epsilon, tree_type, axis, NULL, vert, face, numFaces, - mask, numFaces_active); + BVHTree *tree = bvhtree_from_mesh_faces_create_tree( + epsilon, tree_type, axis, NULL, vert, face, numFaces, + mask, numFaces_active); /* Setup BVHTreeFromMesh */ bvhtree_from_mesh_faces_setup_data(data, tree, false, epsilon, NULL, vert, vert_allocated, face, face_allocated); @@ -749,13 +752,13 @@ void free_bvhtree_from_mesh(struct BVHTreeFromMesh *data) } if (data->vert_allocated) { - MEM_freeN(data->vert); + MEM_freeN((void *)data->vert); } if (data->edge_allocated) { - MEM_freeN(data->edge); + MEM_freeN((void *)data->edge); } if (data->face_allocated) { - MEM_freeN(data->face); + MEM_freeN((void *)data->face); } memset(data, 0, sizeof(*data)); diff --git a/source/blender/blenkernel/intern/dynamicpaint.c b/source/blender/blenkernel/intern/dynamicpaint.c index c6a04c783ef..4372f9635c7 100644 --- a/source/blender/blenkernel/intern/dynamicpaint.c +++ b/source/blender/blenkernel/intern/dynamicpaint.c @@ -2894,8 +2894,8 @@ static void dynamicPaint_doMaterialTex(BrushMaterials *bMats, float color[3], fl static void mesh_faces_spherecast_dp(void *userdata, int index, const BVHTreeRay *ray, BVHTreeRayHit *hit) { const BVHTreeFromMesh *data = (BVHTreeFromMesh *) userdata; - MVert *vert = data->vert; - MFace *face = data->face + index; + const MVert *vert = data->vert; + const MFace *face = data->face + index; short quad = 0; const float *t0, *t1, *t2, *t3; @@ -2930,8 +2930,8 @@ static void mesh_faces_spherecast_dp(void *userdata, int index, const BVHTreeRay static void mesh_faces_nearest_point_dp(void *userdata, int index, const float co[3], BVHTreeNearest *nearest) { const BVHTreeFromMesh *data = (BVHTreeFromMesh *) userdata; - MVert *vert = data->vert; - MFace *face = data->face + index; + const MVert *vert = data->vert; + const MFace *face = data->face + index; short quad = 0; const float *t0, *t1, *t2, *t3; |