Added BKE_freestyle_lineset_delete() by generalizing FRS_delete_active_lineset().
[blender.git] / source / blender / blenkernel / BKE_bvhutils.h
index eff5019a49cb528e7b8bc829dddf4aba1a46d76f..4bc8fc44bb4617c5562c5fe7c58dc352caf78e91 100644 (file)
@@ -51,20 +51,20 @@ typedef struct BVHTreeFromMesh {
        BVHTree_NearestPointCallback nearest_callback;
        BVHTree_RayCastCallback raycast_callback;
 
-       /* Mesh represented on this BVHTree */
-       struct DerivedMesh *mesh;
-
        /* Vertex array, so that callbacks have instante access to data */
        struct MVert *vert;
        struct MEdge *edge;     /* only used for BVHTreeFromMeshEdges */
        struct MFace *face;
+       bool vert_allocated;
+       bool face_allocated;
+       bool edge_allocated;
 
        /* radius for raycast */
        float sphere_radius;
 
        /* Private data */
-       int cached;
        void *em_evil;  /* var only for snapping */
+       bool cached;
 
 } BVHTreeFromMesh;
 
@@ -108,7 +108,7 @@ void free_bvhtree_from_mesh(struct BVHTreeFromMesh *data);
  * Math functions used by callbacks
  */
 float bvhtree_ray_tri_intersection(const BVHTreeRay *ray, const float m_dist, const float v0[3], const float v1[3], const float v2[3]);
-float nearest_point_in_tri_surface(const float v0[3], const float v1[3], const float v2[3], const float p[3], int *v, int *e, float nearest[3]);
+float nearest_point_in_tri_surface_squared(const float v0[3], const float v1[3], const float v2[3], const float p[3], int *v, int *e, float nearest[3]);
 
 /*
  * BVHCache
@@ -119,6 +119,8 @@ float nearest_point_in_tri_surface(const float v0[3], const float v1[3], const f
 #define BVHTREE_FROM_VERTICES   1
 #define BVHTREE_FROM_EDGES      2
 
+#define BVHTREE_FROM_FACES_EDITMESH  3
+
 typedef struct LinkNode *BVHCache;