Browse Source

Expose more 2D/3D physics options in project settings

(cherry picked from commit 1d09c27ba4b94e677b66d8d2c2b9e38f7829ad38)
Fabio Alessandrelli 9 years ago
parent
commit
359b5f3b25

+ 4 - 0
scene/resources/world.cpp

@@ -332,6 +332,10 @@ World::World() {
 	sound_space = SpatialSoundServer::get_singleton()->space_create();
 
 	PhysicsServer::get_singleton()->space_set_active(space,true);
+	PhysicsServer::get_singleton()->area_set_param(space,PhysicsServer::AREA_PARAM_GRAVITY,GLOBAL_DEF("physics/default_gravity",9.8));
+	PhysicsServer::get_singleton()->area_set_param(space,PhysicsServer::AREA_PARAM_GRAVITY_VECTOR,GLOBAL_DEF("physics/default_gravity_vector",Vector3(0,-1,0)));
+	PhysicsServer::get_singleton()->area_set_param(space,PhysicsServer::AREA_PARAM_LINEAR_DAMP,GLOBAL_DEF("physics/default_linear_damp",0.1));
+	PhysicsServer::get_singleton()->area_set_param(space,PhysicsServer::AREA_PARAM_ANGULAR_DAMP,GLOBAL_DEF("physics/default_angular_damp",0.1));
 
 #ifdef _3D_DISABLED
 	indexer = NULL;

+ 0 - 6
scene/resources/world_2d.cpp

@@ -416,12 +416,6 @@ World2D::World2D() {
 	}
 	Physics2DServer::get_singleton()->area_set_param(space,Physics2DServer::AREA_PARAM_LINEAR_DAMP,GLOBAL_DEF("physics_2d/default_linear_damp",0.1));
 	Physics2DServer::get_singleton()->area_set_param(space,Physics2DServer::AREA_PARAM_ANGULAR_DAMP,GLOBAL_DEF("physics_2d/default_angular_damp",1));
-	Physics2DServer::get_singleton()->space_set_param(space,Physics2DServer::SPACE_PARAM_CONTACT_RECYCLE_RADIUS,1.0);
-	Physics2DServer::get_singleton()->space_set_param(space,Physics2DServer::SPACE_PARAM_CONTACT_MAX_SEPARATION,1.5);
-	Physics2DServer::get_singleton()->space_set_param(space,Physics2DServer::SPACE_PARAM_BODY_MAX_ALLOWED_PENETRATION,0.3);
-	Physics2DServer::get_singleton()->space_set_param(space,Physics2DServer::SPACE_PARAM_BODY_LINEAR_VELOCITY_SLEEP_TRESHOLD,2);
-	Physics2DServer::get_singleton()->space_set_param(space,Physics2DServer::SPACE_PARAM_CONSTRAINT_DEFAULT_BIAS,0.2);
-
 	indexer = memnew( SpatialIndexer2D );
 
 }

+ 1 - 0
scene/resources/world_2d.h

@@ -31,6 +31,7 @@
 
 #include "resource.h"
 #include "servers/physics_2d_server.h"
+#include "globals.h"
 
 class SpatialIndexer2D;
 class VisibilityNotifier2D;

+ 1 - 1
servers/physics/space_sw.cpp

@@ -721,7 +721,7 @@ SpaceSW::SpaceSW() {
 	constraint_bias = 0.01;
 	body_linear_velocity_sleep_threshold=GLOBAL_DEF("physics/sleep_threshold_linear",0.1);
 	body_angular_velocity_sleep_threshold=GLOBAL_DEF("physics/sleep_threshold_angular", (8.0 / 180.0 * Math_PI) );
-	body_time_to_sleep=0.5;
+	body_time_to_sleep=GLOBAL_DEF("physics/time_before_sleep",0.5);
 	body_angular_velocity_damp_ratio=10;
 
 

+ 1 - 0
servers/physics/space_sw.h

@@ -37,6 +37,7 @@
 #include "area_pair_sw.h"
 #include "broad_phase_sw.h"
 #include "collision_object_sw.h"
+#include "globals.h"
 
 
 class PhysicsDirectSpaceStateSW : public PhysicsDirectSpaceState {

+ 8 - 8
servers/physics_2d/space_2d_sw.cpp

@@ -1305,14 +1305,14 @@ Space2DSW::Space2DSW() {
 	contact_debug_count=0;
 
 	locked=false;
-	contact_recycle_radius=0.01;
-	contact_max_separation=0.05;
-	contact_max_allowed_penetration= 0.01;
-
-	constraint_bias = 0.01;
-	body_linear_velocity_sleep_treshold=0.01;
-	body_angular_velocity_sleep_treshold=(8.0 / 180.0 * Math_PI);
-	body_time_to_sleep=0.5;
+	contact_recycle_radius=1.0;
+	contact_max_separation=1.5;
+	contact_max_allowed_penetration= 0.3;
+
+	constraint_bias = 0.2;
+	body_linear_velocity_sleep_treshold=GLOBAL_DEF("physics_2d/sleep_threashold_linear",2.0);
+	body_angular_velocity_sleep_treshold=GLOBAL_DEF("physics_2d/sleep_threshold_angular",(8.0 / 180.0 * Math_PI));
+	body_time_to_sleep=GLOBAL_DEF("physics_2d/time_before_sleep",0.5);
 
 
 	broadphase = BroadPhase2DSW::create_func();

+ 1 - 0
servers/physics_2d/space_2d_sw.h

@@ -37,6 +37,7 @@
 #include "area_pair_2d_sw.h"
 #include "broad_phase_2d_sw.h"
 #include "collision_object_2d_sw.h"
+#include "globals.h"
 
 
 class Physics2DDirectSpaceStateSW : public Physics2DDirectSpaceState {