You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-22 15:06:45 +00:00
Use real_t as floating point type in physics code.
This is a continuation of an on-going work for 64-bit floating point builds, started in PR #7528. Covers physics, physics/joints and physics_2d code. Also removed matrixToEulerXYZ function in favor of Basis::get_euler.
This commit is contained in:
@@ -115,8 +115,8 @@ struct _ConcaveCollisionInfo {
|
||||
int aabb_tests;
|
||||
int collisions;
|
||||
bool tested;
|
||||
float margin_A;
|
||||
float margin_B;
|
||||
real_t margin_A;
|
||||
real_t margin_B;
|
||||
Vector3 close_A,close_B;
|
||||
|
||||
};
|
||||
@@ -136,7 +136,7 @@ void CollisionSolverSW::concave_callback(void *p_userdata, ShapeSW *p_convex) {
|
||||
|
||||
}
|
||||
|
||||
bool CollisionSolverSW::solve_concave(const ShapeSW *p_shape_A,const Transform& p_transform_A,const ShapeSW *p_shape_B,const Transform& p_transform_B,CallbackResult p_result_callback,void *p_userdata,bool p_swap_result,float p_margin_A,float p_margin_B) {
|
||||
bool CollisionSolverSW::solve_concave(const ShapeSW *p_shape_A,const Transform& p_transform_A,const ShapeSW *p_shape_B,const Transform& p_transform_B,CallbackResult p_result_callback,void *p_userdata,bool p_swap_result,real_t p_margin_A,real_t p_margin_B) {
|
||||
|
||||
|
||||
const ConcaveShapeSW *concave_B=static_cast<const ConcaveShapeSW*>(p_shape_B);
|
||||
@@ -164,10 +164,10 @@ bool CollisionSolverSW::solve_concave(const ShapeSW *p_shape_A,const Transform&
|
||||
for(int i=0;i<3;i++) {
|
||||
|
||||
Vector3 axis( p_transform_B.basis.get_axis(i) );
|
||||
float axis_scale = 1.0/axis.length();
|
||||
real_t axis_scale = 1.0/axis.length();
|
||||
axis*=axis_scale;
|
||||
|
||||
float smin,smax;
|
||||
real_t smin,smax;
|
||||
p_shape_A->project_range(axis,rel_transform,smin,smax);
|
||||
smin-=p_margin_A;
|
||||
smax+=p_margin_A;
|
||||
@@ -186,7 +186,7 @@ bool CollisionSolverSW::solve_concave(const ShapeSW *p_shape_A,const Transform&
|
||||
}
|
||||
|
||||
|
||||
bool CollisionSolverSW::solve_static(const ShapeSW *p_shape_A,const Transform& p_transform_A,const ShapeSW *p_shape_B,const Transform& p_transform_B,CallbackResult p_result_callback,void *p_userdata,Vector3 *r_sep_axis,float p_margin_A,float p_margin_B) {
|
||||
bool CollisionSolverSW::solve_static(const ShapeSW *p_shape_A,const Transform& p_transform_A,const ShapeSW *p_shape_B,const Transform& p_transform_B,CallbackResult p_result_callback,void *p_userdata,Vector3 *r_sep_axis,real_t p_margin_A,real_t p_margin_B) {
|
||||
|
||||
|
||||
PhysicsServer::ShapeType type_A=p_shape_A->get_type();
|
||||
@@ -291,7 +291,7 @@ bool CollisionSolverSW::solve_distance_plane(const ShapeSW *p_shape_A,const Tran
|
||||
|
||||
bool collided=false;
|
||||
Vector3 closest;
|
||||
float closest_d;
|
||||
real_t closest_d;
|
||||
|
||||
|
||||
for(int i=0;i<support_count;i++) {
|
||||
@@ -362,10 +362,10 @@ bool CollisionSolverSW::solve_distance(const ShapeSW *p_shape_A,const Transform&
|
||||
for(int i=0;i<3;i++) {
|
||||
|
||||
Vector3 axis( p_transform_B.basis.get_axis(i) );
|
||||
float axis_scale = 1.0/axis.length();
|
||||
real_t axis_scale = ((real_t)1.0)/axis.length();
|
||||
axis*=axis_scale;
|
||||
|
||||
float smin,smax;
|
||||
real_t smin,smax;
|
||||
|
||||
if (use_cc_hint) {
|
||||
cc_hint_aabb.project_range_in_plane(Plane(axis,0),smin,smax);
|
||||
|
||||
Reference in New Issue
Block a user