Selaa lähdekoodia

begin work on debugging collisions....

Juan Linietsky 10 vuotta sitten
vanhempi
commit
3f9e5afe68

+ 7 - 0
main/main.cpp

@@ -97,6 +97,7 @@ static OS::VideoMode video_mode;
 static bool init_maximized=false;
 static bool init_fullscreen=false;
 static bool init_use_custom_pos=false;
+static bool debug_collisions=false;
 static Vector2 init_custom_pos;
 static int video_driver_idx=-1;
 static int audio_driver_idx=-1;
@@ -514,6 +515,8 @@ Error Main::setup(const char *execpath,int argc, char *argv[],bool p_second_phas
 
 		} else if (I->get()=="-debug" || I->get()=="-d") {
 			debug_mode="local";
+		} else if (I->get()=="-debugcol" || I->get()=="-dc") {
+			debug_collisions=true;
 		} else if (I->get()=="-editor_scene") {
 
 			if (I->next()) {
@@ -1154,8 +1157,12 @@ bool Main::start() {
 		
 		SceneTree *sml = main_loop->cast_to<SceneTree>();
 
+		if (debug_collisions) {
+			sml->set_debug_collisions_hint(true);
+		}
 #ifdef TOOLS_ENABLED
 
+
 		EditorNode *editor_node=NULL;
 		if (editor) {
 

+ 4 - 0
scene/2d/collision_shape_2d.cpp

@@ -92,8 +92,12 @@ void CollisionShape2D::_notification(int p_what) {
 		} break;*/
 		case NOTIFICATION_DRAW: {
 
+			if (!get_tree()->is_editor_hint() && !get_tree()->is_debugging_collisions_hint())
+				break;
+
 			rect=Rect2();
 
+
 			Color draw_col=Color(0,0.6,0.7,0.5);
 
 			if (shape->cast_to<LineShape2D>()) {

+ 13 - 0
scene/main/scene_main_loop.cpp

@@ -471,6 +471,7 @@ void SceneTree::init() {
 
 
 	editor_hint=false;
+	debug_collisions_hint=false;
 	pause=false;
 
 	root->_set_tree(this);
@@ -624,6 +625,16 @@ bool SceneTree::is_editor_hint() const {
 	return editor_hint;
 }
 
+void SceneTree::set_debug_collisions_hint(bool p_enabled) {
+
+	debug_collisions_hint=p_enabled;
+}
+
+bool SceneTree::is_debugging_collisions_hint() const {
+
+	return debug_collisions_hint;
+}
+
 void SceneTree::set_pause(bool p_enabled) {
 
 	if (p_enabled==pause)
@@ -1424,6 +1435,8 @@ void SceneTree::_bind_methods() {
 
 	ObjectTypeDB::bind_method(_MD("set_editor_hint","enable"),&SceneTree::set_editor_hint);
 	ObjectTypeDB::bind_method(_MD("is_editor_hint"),&SceneTree::is_editor_hint);
+	ObjectTypeDB::bind_method(_MD("set_debug_collisions_hint","enable"),&SceneTree::set_debug_collisions_hint);
+	ObjectTypeDB::bind_method(_MD("is_debugging_collisions_hint"),&SceneTree::is_debugging_collisions_hint);
 #ifdef TOOLS_ENABLED
 	ObjectTypeDB::bind_method(_MD("set_edited_scene_root","scene"),&SceneTree::set_edited_scene_root);
 	ObjectTypeDB::bind_method(_MD("get_edited_scene_root"),&SceneTree::get_edited_scene_root);

+ 4 - 0
scene/main/scene_main_loop.h

@@ -87,6 +87,7 @@ private:
 	uint32_t last_id;
 
 	bool editor_hint;
+	bool debug_collisions_hint;
 	bool pause;
 	int root_lock;
 
@@ -270,6 +271,9 @@ public:
 	void set_camera(const RID& p_camera);
 	RID get_camera() const;
 
+	void set_debug_collisions_hint(bool p_enabled);
+	bool is_debugging_collisions_hint() const;
+
 	int64_t get_frame() const;
 
 	int get_node_count() const;