Commit: 44aa221600448ac8649bfd58dbed9ee1356bc8af
Author: Campbell Barton
Date:   Mon Aug 11 13:25:25 2014 +1000
Branches: master
https://developer.blender.org/rB44aa221600448ac8649bfd58dbed9ee1356bc8af

Utility functions for getting boundbox size/scale

===================================================================

M       source/blender/blenkernel/BKE_object.h
M       source/blender/blenkernel/intern/object.c
M       source/blender/editors/space_view3d/drawobject.c

===================================================================

diff --git a/source/blender/blenkernel/BKE_object.h 
b/source/blender/blenkernel/BKE_object.h
index c0da816..1468d60 100644
--- a/source/blender/blenkernel/BKE_object.h
+++ b/source/blender/blenkernel/BKE_object.h
@@ -124,14 +124,18 @@ void BKE_object_where_is_calc_mat4(struct Scene *scene, 
struct Object *ob, float
 /* possibly belong in own moduke? */
 struct BoundBox *BKE_boundbox_alloc_unit(void);
 void BKE_boundbox_init_from_minmax(struct BoundBox *bb, const float min[3], 
const float max[3]);
-bool BKE_boundbox_ray_hit_check(struct BoundBox *bb, const float ray_start[3], 
const float ray_normal[3],
-                                float *r_lambda);
+bool BKE_boundbox_ray_hit_check(
+        const struct BoundBox *bb,
+        const float ray_start[3], const float ray_normal[3],
+        float *r_lambda);
+void BKE_boundbox_calc_center_aabb(const struct BoundBox *bb, float r_cent[3]);
+void BKE_boundbox_calc_size_aabb(const struct BoundBox *bb, float r_size[3]);
 
 struct BoundBox *BKE_object_boundbox_get(struct Object *ob);
 void BKE_object_dimensions_get(struct Object *ob, float vec[3]);
 void BKE_object_dimensions_set(struct Object *ob, const float value[3]);
 void BKE_object_empty_draw_type_set(struct Object *ob, const int value);
-void BKE_object_boundbox_flag(struct Object *ob, int flag, int set);
+void BKE_object_boundbox_flag(struct Object *ob, int flag, const bool set);
 void BKE_object_minmax(struct Object *ob, float r_min[3], float r_max[3], 
const bool use_hidden);
 bool BKE_object_minmax_dupli(struct Scene *scene, struct Object *ob, float 
r_min[3], float r_max[3], const bool use_hidden);
 
diff --git a/source/blender/blenkernel/intern/object.c 
b/source/blender/blenkernel/intern/object.c
index 98a197b..6f1ffcd 100644
--- a/source/blender/blenkernel/intern/object.c
+++ b/source/blender/blenkernel/intern/object.c
@@ -2469,6 +2469,20 @@ void BKE_boundbox_init_from_minmax(BoundBox *bb, const 
float min[3], const float
        bb->vec[1][2] = bb->vec[2][2] = bb->vec[5][2] = bb->vec[6][2] = max[2];
 }
 
+void BKE_boundbox_calc_center_aabb(const BoundBox *bb, float r_cent[3])
+{
+       r_cent[0] = 0.5f * (bb->vec[0][0] + bb->vec[4][0]);
+       r_cent[1] = 0.5f * (bb->vec[0][1] + bb->vec[2][1]);
+       r_cent[2] = 0.5f * (bb->vec[0][2] + bb->vec[1][2]);
+}
+
+void BKE_boundbox_calc_size_aabb(const BoundBox *bb, float r_size[3])
+{
+       r_size[0] = 0.5f * fabsf(bb->vec[0][0] - bb->vec[4][0]);
+       r_size[1] = 0.5f * fabsf(bb->vec[0][1] - bb->vec[2][1]);
+       r_size[2] = 0.5f * fabsf(bb->vec[0][2] - bb->vec[1][2]);
+}
+
 BoundBox *BKE_object_boundbox_get(Object *ob)
 {
        BoundBox *bb = NULL;
@@ -2486,7 +2500,7 @@ BoundBox *BKE_object_boundbox_get(Object *ob)
 }
 
 /* used to temporally disable/enable boundbox */
-void BKE_object_boundbox_flag(Object *ob, int flag, int set)
+void BKE_object_boundbox_flag(Object *ob, int flag, const bool set)
 {
        BoundBox *bb = BKE_object_boundbox_get(ob);
        if (bb) {
@@ -3129,8 +3143,10 @@ int BKE_object_obdata_texspace_get(Object *ob, short 
**r_texflag, float **r_loc,
  * Test a bounding box for ray intersection
  * assumes the ray is already local to the boundbox space
  */
-bool BKE_boundbox_ray_hit_check(struct BoundBox *bb, const float ray_start[3], 
const float ray_normal[3],
-                                float *r_lambda)
+bool BKE_boundbox_ray_hit_check(
+        const struct BoundBox *bb,
+        const float ray_start[3], const float ray_normal[3],
+        float *r_lambda)
 {
        const int triangle_indexes[12][3] = {
            {0, 1, 2}, {0, 2, 3},
diff --git a/source/blender/editors/space_view3d/drawobject.c 
b/source/blender/editors/space_view3d/drawobject.c
index 13e010d..7d6fdca 100644
--- a/source/blender/editors/space_view3d/drawobject.c
+++ b/source/blender/editors/space_view3d/drawobject.c
@@ -6700,28 +6700,6 @@ static void draw_box(float vec[8][3])
        glEnd();
 }
 
-/* uses boundbox, function used by Ketsji */
-#if 0
-static void get_local_bounds(Object *ob, float center[3], float size[3])
-{
-       BoundBox *bb = BKE_object_boundbox_get(ob);
-       
-       if (bb == NULL) {
-               zero_v3(center);
-               copy_v3_v3(size, ob->size);
-       }
-       else {
-               size[0] = 0.5 * fabsf(bb->vec[0][0] - bb->vec[4][0]);
-               size[1] = 0.5 * fabsf(bb->vec[0][1] - bb->vec[2][1]);
-               size[2] = 0.5 * fabsf(bb->vec[0][2] - bb->vec[1][2]);
-
-               center[0] = (bb->vec[0][0] + bb->vec[4][0]) / 2.0;
-               center[1] = (bb->vec[0][1] + bb->vec[2][1]) / 2.0;
-               center[2] = (bb->vec[0][2] + bb->vec[1][2]) / 2.0;
-       }
-}
-#endif
-
 static void draw_bb_quadric(BoundBox *bb, char type, bool around_origin)
 {
        float size[3], cent[3];
@@ -6729,17 +6707,13 @@ static void draw_bb_quadric(BoundBox *bb, char type, 
bool around_origin)
        
        gluQuadricDrawStyle(qobj, GLU_SILHOUETTE);
        
-       size[0] = 0.5f * fabsf(bb->vec[0][0] - bb->vec[4][0]);
-       size[1] = 0.5f * fabsf(bb->vec[0][1] - bb->vec[2][1]);
-       size[2] = 0.5f * fabsf(bb->vec[0][2] - bb->vec[1][2]);
+       BKE_boundbox_calc_size_aabb(bb, size);
 
        if (around_origin) {
                zero_v3(cent);
        }
        else {
-               cent[0] = 0.5f * (bb->vec[0][0] + bb->vec[4][0]);
-               cent[1] = 0.5f * (bb->vec[0][1] + bb->vec[2][1]);
-               cent[2] = 0.5f * (bb->vec[0][2] + bb->vec[1][2]);
+               BKE_boundbox_calc_center_aabb(bb, cent);
        }
        
        glPushMatrix();
@@ -6808,9 +6782,7 @@ static void draw_bounding_volume(Object *ob, char type)
                if (type == OB_BOUND_BOX) {
                        float vec[8][3], size[3];
                        
-                       size[0] = 0.5f * fabsf(bb->vec[0][0] - bb->vec[4][0]);
-                       size[1] = 0.5f * fabsf(bb->vec[0][1] - bb->vec[2][1]);
-                       size[2] = 0.5f * fabsf(bb->vec[0][2] - bb->vec[1][2]);
+                       BKE_boundbox_calc_size_aabb(bb, size);
                        
                        vec[0][0] = vec[1][0] = vec[2][0] = vec[3][0] = 
-size[0];
                        vec[4][0] = vec[5][0] = vec[6][0] = vec[7][0] = 
+size[0];
@@ -7125,9 +7097,7 @@ static void draw_rigidbody_shape(Object *ob)
 
        switch (ob->rigidbody_object->shape) {
                case RB_SHAPE_BOX:
-                       size[0] = 0.5f * fabsf(bb->vec[0][0] - bb->vec[4][0]);
-                       size[1] = 0.5f * fabsf(bb->vec[0][1] - bb->vec[2][1]);
-                       size[2] = 0.5f * fabsf(bb->vec[0][2] - bb->vec[1][2]);
+                       BKE_boundbox_calc_size_aabb(bb, size);
                        
                        vec[0][0] = vec[1][0] = vec[2][0] = vec[3][0] = 
-size[0];
                        vec[4][0] = vec[5][0] = vec[6][0] = vec[7][0] = 
+size[0];

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to