Commit: 4777b17ec50502f9f1ea2f287f338b5850702aa1
Author: Martin Felke
Date:   Thu Dec 1 11:32:02 2016 +0100
Branches: fracture_modifier
https://developer.blender.org/rB4777b17ec50502f9f1ea2f287f338b5850702aa1

fix for physics visualization in FM, strings for constraint identifiers were 
not displayed properly under windows

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

M       intern/rigidbody/rb_bullet_api.cpp
M       source/blender/editors/space_view3d/view3d_draw.c

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

diff --git a/intern/rigidbody/rb_bullet_api.cpp 
b/intern/rigidbody/rb_bullet_api.cpp
index 8b814cc..ac81a36 100644
--- a/intern/rigidbody/rb_bullet_api.cpp
+++ b/intern/rigidbody/rb_bullet_api.cpp
@@ -190,7 +190,7 @@ class TickDiscreteDynamicsWorld : public 
btFractureDynamicsWorld
                virtual void debugDrawWorld(draw_string str_callback);
 };
 
-btScalar connection_dist(btFractureBody *fbody, int index, btVector3 impact)
+static btScalar connection_dist(btFractureBody *fbody, int index, btVector3 
impact)
 {
        btConnection& con = fbody->m_connections[index];
        btVector3 con_posA = con.m_parent->getWorldTransform().inverse() * 
con.m_obA->getWorldTransform().getOrigin();
@@ -201,7 +201,7 @@ btScalar connection_dist(btFractureBody *fbody, int index, 
btVector3 impact)
 }
 
 //KDTree needed here, we need a range search of which points are closer than 
distance x to the impact point
-int connection_binary_search(btFractureBody *fbody, btVector3 impact, btScalar 
range)
+static int connection_binary_search(btFractureBody *fbody, btVector3 impact, 
btScalar range)
 {
        int mid, low = 0, high = fbody->m_connections.size();
 
@@ -230,7 +230,7 @@ int connection_binary_search(btFractureBody *fbody, 
btVector3 impact, btScalar r
        return low;
 }
 
-bool weakenCompound(const btCollisionObject *body, btScalar force, btVector3 
impact, btFractureDynamicsWorld *world)
+static bool weakenCompound(const btCollisionObject *body, btScalar force, 
btVector3 impact, btFractureDynamicsWorld *world)
 {
        //just weaken strengths of this obA and obB according to force !
        if (body->getInternalType() & CUSTOM_FRACTURE_TYPE && force > 0.0f)
@@ -293,7 +293,7 @@ bool weakenCompound(const btCollisionObject *body, btScalar 
force, btVector3 imp
        return false;
 }
 
-void tickCallback(btDynamicsWorld *world, btScalar timeStep)
+static void tickCallback(btDynamicsWorld *world, btScalar timeStep)
 {
        btFractureDynamicsWorld *fworld = (btFractureDynamicsWorld*)world;
        fworld->updateBodies();
@@ -436,12 +436,13 @@ void 
TickDiscreteDynamicsWorld::debugDrawWorld(draw_string str_callback)
        }
 }
 
-const char* val_to_str(rbConstraint* con, int precision, int *length)
+static const char* val_to_str(rbConstraint* con, int precision, int *length)
 {
        std::ostringstream oss;
        oss << std::fixed << std::setprecision(precision) << con->id << ":" << 
con->con->getAppliedImpulse() << ":" << con->con->getBreakingImpulseThreshold();
        *length = oss.str().length();
-       return oss.str().c_str();
+       const char *ret = strdup(oss.str().c_str());
+       return ret;
 }
 
 void TickDiscreteDynamicsWorld::debugDrawConstraints(rbConstraint* con , 
draw_string str_callback, float loc[3])
@@ -2052,7 +2053,9 @@ void RB_constraint_set_target_velocity_motor(rbConstraint 
*con, float velocity_l
 
 void RB_constraint_set_id(rbConstraint *con, char id[64])
 {
-       strncpy(con->id, id, strlen(id));
+       int len = strlen(id);
+       memset(con->id, '\0', 64);
+       strncpy(con->id, id, len);
 }
 
 /* ********************************** */
diff --git a/source/blender/editors/space_view3d/view3d_draw.c 
b/source/blender/editors/space_view3d/view3d_draw.c
index c213912..1630b06 100644
--- a/source/blender/editors/space_view3d/view3d_draw.c
+++ b/source/blender/editors/space_view3d/view3d_draw.c
@@ -2722,7 +2722,7 @@ void view3d_draw_string(float loc[3], const char *str, 
const size_t len, float c
 {
        // why is this char[] vs char* stuff necessary here ?
        unsigned char col[3];
-       rgba_float_to_uchar(col , color);
+       rgb_float_to_uchar(col , color);
        view3d_cached_text_draw_add(loc, str, len, 0, V3D_CACHE_TEXT_ASCII | 
V3D_CACHE_TEXT_GLOBALSPACE , col);
 }

_______________________________________________
Bf-blender-cvs mailing list
Bf-blender-cvs@blender.org
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to