Browse Source

fix custom scene arguments from the editor

sequel of #7347

Play edited scene and Play custom scene didn't worked when main_run_args
hadn't $scene as argument.

Changes/Fixes the way how the editor handles scene paths when starting the
project/a scene
Play the project - no scene path
Play the edited scene - scene path of active scene in the editor
Play custom scene - scene path of custom scene

main_arg_runs is now empty by default and $scene won't be replaced
by the scene path anymore

Changed declaration if EditorRun::run, to remove a unused value
Benjamin Bäumler 8 years ago
parent
commit
edd37eccd4
3 changed files with 19 additions and 24 deletions
  1. 12 21
      tools/editor/editor_node.cpp
  2. 6 2
      tools/editor/editor_run.cpp
  3. 1 1
      tools/editor/editor_run.h

+ 12 - 21
tools/editor/editor_node.cpp

@@ -1792,7 +1792,7 @@ void EditorNode::_run(bool p_current,const String& p_custom) {
 	play_custom_scene_button->set_pressed(false);
 	play_custom_scene_button->set_icon(gui_base->get_icon("PlayCustom","EditorIcons"));
 
-	String current_filename;
+	String main_scene;
 	String run_filename;
 	String args;
 
@@ -1819,25 +1819,16 @@ void EditorNode::_run(bool p_current,const String& p_custom) {
 
 		}
 
-
-
-		if (run_settings_dialog->get_run_mode()==RunSettingsDialog::RUN_LOCAL_SCENE) {
-
-			run_filename=scene->get_filename();
-		} else {
-			current_filename=scene->get_filename();
-		}
-
+		run_filename=scene->get_filename();
 	} else if (p_custom!="") {
-
-		run_filename=p_custom;
+		run_filename = p_custom;
 	}
 
 	if (run_filename=="") {
 
 		//evidently, run the scene
-		run_filename=GLOBAL_DEF("application/main_scene","");
-		if (run_filename=="") {
+		main_scene=GLOBAL_DEF("application/main_scene","");
+		if (main_scene=="") {
 
 			current_option=-1;
 			//accept->get_cancel()->hide();
@@ -1846,21 +1837,21 @@ void EditorNode::_run(bool p_current,const String& p_custom) {
 			return;
 		}
 
-		if (!FileAccess::exists(run_filename)) {
+		if (!FileAccess::exists(main_scene)) {
 
 			current_option=-1;
 			//accept->get_cancel()->hide();
-			pick_main_scene->set_text(vformat(TTR("Selected scene '%s' does not exist, select a valid one?\nYou can change it later in \"Project Settings\" under the 'application' category."), run_filename));
+			pick_main_scene->set_text(vformat(TTR("Selected scene '%s' does not exist, select a valid one?\nYou can change it later in \"Project Settings\" under the 'application' category."), main_scene));
 			pick_main_scene->popup_centered_minsize();
 			return;
 
 		}
 
-		if (ResourceLoader::get_resource_type(run_filename)!="PackedScene") {
+		if (ResourceLoader::get_resource_type(main_scene)!="PackedScene") {
 
 			current_option=-1;
 			//accept->get_cancel()->hide();
-			pick_main_scene->set_text(vformat(TTR("Selected scene '%s' is not a scene file, select a valid one?\nYou can change it later in \"Project Settings\" under the 'application' category."), run_filename));
+			pick_main_scene->set_text(vformat(TTR("Selected scene '%s' is not a scene file, select a valid one?\nYou can change it later in \"Project Settings\" under the 'application' category."), main_scene));
 			pick_main_scene->popup_centered_minsize();
 			return;
 
@@ -1908,7 +1899,7 @@ void EditorNode::_run(bool p_current,const String& p_custom) {
 
 	args = GlobalConfig::get_singleton()->get("editor/main_run_args");
 
-	Error error = editor_run.run(run_filename,args,breakpoints,current_filename);
+	Error error = editor_run.run(run_filename,args,breakpoints);
 
 	if (error!=OK) {
 
@@ -1926,7 +1917,7 @@ void EditorNode::_run(bool p_current,const String& p_custom) {
 		play_scene_button->set_pressed(true);
 		play_scene_button->set_icon(gui_base->get_icon("Reload","EditorIcons"));
 	} else if (p_custom!="") {
-		run_custom_filename=run_filename;
+		run_custom_filename=p_custom;
 		play_custom_scene_button->set_pressed(true);
 		play_custom_scene_button->set_icon(gui_base->get_icon("Reload","EditorIcons"));
 	} else {
@@ -5224,7 +5215,7 @@ EditorNode::EditorNode() {
 
 	register_exporters();
 
-	GLOBAL_DEF("editor/main_run_args","$scene");
+	GLOBAL_DEF("editor/main_run_args","");
 
 	ClassDB::set_class_enabled("CollisionShape",true);
 	ClassDB::set_class_enabled("CollisionShape2D",true);

+ 6 - 2
tools/editor/editor_run.cpp

@@ -35,7 +35,7 @@ EditorRun::Status EditorRun::get_status() const {
 
 	return status;
 }
-Error EditorRun::run(const String& p_scene,const String p_custom_args,const List<String>& p_breakpoints,const String& p_edited_scene) {
+Error EditorRun::run(const String& p_scene,const String p_custom_args,const List<String>& p_breakpoints) {
 
 	List<String> args;
 
@@ -141,11 +141,15 @@ Error EditorRun::run(const String& p_scene,const String p_custom_args,const List
 
 		args.push_back(bpoints);
 	}
+	
+	if (p_scene!="") {
+		args.push_back(p_scene);
+	}
 
 	if (p_custom_args!="") {
 		Vector<String> cargs=p_custom_args.split(" ",false);
 		for(int i=0;i<cargs.size();i++) {
-			args.push_back(cargs[i].replace("$scene",p_scene).replace(" ","%20"));
+			args.push_back(cargs[i].replace(" ","%20"));
 		}
 	}
 

+ 1 - 1
tools/editor/editor_run.h

@@ -49,7 +49,7 @@ private:
 public:
 
 	Status get_status() const;
-	Error run(const String& p_scene,const String p_custom_args,const List<String>& p_breakpoints,const String& p_edited_scene);
+	Error run(const String& p_scene,const String p_custom_args,const List<String>& p_breakpoints);
 	void run_native_notify() { status=STATUS_PLAY; }
 	void stop();