diff options
| -rw-r--r-- | scene/resources/scene_format_text.cpp | 55 | ||||
| -rw-r--r-- | scene/resources/scene_format_text.h | 2 | 
2 files changed, 35 insertions, 22 deletions
diff --git a/scene/resources/scene_format_text.cpp b/scene/resources/scene_format_text.cpp index c7e2fc4e73..95645107d4 100644 --- a/scene/resources/scene_format_text.cpp +++ b/scene/resources/scene_format_text.cpp @@ -67,12 +67,17 @@ Error ResourceInteractiveLoaderText::_parse_sub_resource(VariantParser::Stream*  	String path = local_path+"::"+itos(index); -	if (!ResourceCache::has(path)) { -		r_err_str="Can't load cached sub-resource: "+path; -		return ERR_PARSE_ERROR; -	} +	if (!ignore_resource_parsing) { -	r_res=RES(ResourceCache::get(path)); +		if (!ResourceCache::has(path)) { +			r_err_str="Can't load cached sub-resource: "+path; +			return ERR_PARSE_ERROR; +		} + +		r_res=RES(ResourceCache::get(path)); +	} else { +		r_res=RES(); +	}  	VariantParser::get_token(p_stream,token,line,r_err_str);  	if (token.type!=VariantParser::TK_PARENTHESIS_CLOSE) { @@ -95,25 +100,29 @@ Error ResourceInteractiveLoaderText::_parse_ext_resource(VariantParser::Stream*  	int id = token.value; +	if (!ignore_resource_parsing) { -	if (!ext_resources.has(id)) { -		r_err_str="Can't load cached ext-resource #"+itos(id); -		return ERR_PARSE_ERROR; -	} +		if (!ext_resources.has(id)) { +			r_err_str="Can't load cached ext-resource #"+itos(id); +			return ERR_PARSE_ERROR; +		} -	String path = ext_resources[id].path; -	String type = ext_resources[id].type; +		String path = ext_resources[id].path; +		String type = ext_resources[id].type; -	if (path.find("://")==-1 && path.is_rel_path()) { -		// path is relative to file being loaded, so convert to a resource path -		path=Globals::get_singleton()->localize_path(res_path.get_base_dir().plus_file(path)); +		if (path.find("://")==-1 && path.is_rel_path()) { +			// path is relative to file being loaded, so convert to a resource path +			path=Globals::get_singleton()->localize_path(res_path.get_base_dir().plus_file(path)); -	} +		} -	r_res=ResourceLoader::load(path,type); +		r_res=ResourceLoader::load(path,type); -	if (r_res.is_null()) { -		WARN_PRINT(String("Couldn't load external resource: "+path).utf8().get_data()); +		if (r_res.is_null()) { +			WARN_PRINT(String("Couldn't load external resource: "+path).utf8().get_data()); +		} +	} else { +		r_res=RES();  	}  	VariantParser::get_token(p_stream,token,line,r_err_str); @@ -625,6 +634,7 @@ void ResourceInteractiveLoaderText::get_dependencies(FileAccess *f,List<String>  	open(f); +	ignore_resource_parsing=true;  	ERR_FAIL_COND(error!=OK);  	while(next_tag.name=="ext_resource") { @@ -662,6 +672,7 @@ void ResourceInteractiveLoaderText::get_dependencies(FileAccess *f,List<String>  		Error err = VariantParser::parse_tag(&stream,lines,error_text,next_tag,&rp);  		if (err) { +			print_line(error_text+" - "+itos(lines));  			error_text="Unexpected end of file";  			_printerr();  			error=ERR_FILE_CORRUPT; @@ -676,7 +687,7 @@ Error ResourceInteractiveLoaderText::rename_dependencies(FileAccess *p_f, const  	open(p_f,true);  	ERR_FAIL_COND_V(error!=OK,error); - +	ignore_resource_parsing=true;  	//FileAccess  	FileAccess *fw = NULL; @@ -794,7 +805,7 @@ void ResourceInteractiveLoaderText::open(FileAccess *p_f,bool p_skip_first_tag)  	stream.f=f;  	is_scene=false; - +	ignore_resource_parsing=false;  	resource_current=0; @@ -879,6 +890,8 @@ String ResourceInteractiveLoaderText::recognize(FileAccess *p_f) {  	stream.f=f; +	ignore_resource_parsing=true; +  	VariantParser::Tag tag;  	Error err = VariantParser::parse_tag(&stream,lines,error_text,tag); @@ -1296,7 +1309,7 @@ Error ResourceFormatSaverTextInstance::save(const String &p_path,const RES& p_re  				if ((PE->get().usage&PROPERTY_USAGE_STORE_IF_NONZERO && value.is_zero())||(PE->get().usage&PROPERTY_USAGE_STORE_IF_NONONE && value.is_one()) )  					continue; -				if (PE->get().type==Variant::OBJECT && value.is_zero() && (!PE->get().usage&PROPERTY_USAGE_STORE_IF_NULL)) +				if (PE->get().type==Variant::OBJECT && value.is_zero() && !(PE->get().usage&PROPERTY_USAGE_STORE_IF_NULL))  					continue;  				String vars; diff --git a/scene/resources/scene_format_text.h b/scene/resources/scene_format_text.h index 8dbfbfda48..6122a1f9d8 100644 --- a/scene/resources/scene_format_text.h +++ b/scene/resources/scene_format_text.h @@ -56,7 +56,7 @@ class ResourceInteractiveLoaderText : public ResourceInteractiveLoader {  	bool is_scene;  	String res_type; - +	bool ignore_resource_parsing;  //	Map<String,String> remaps;  |