Browse Source

-All variables from script are visible through get_property_list(), not just those with export()
-Added PROPERTY_USAGE_SCRIPT_VARIABLE to identify what comes from script
-closes #5146

Juan Linietsky 9 years ago
parent
commit
9ddc13a5cc

+ 1 - 0
core/global_constants.cpp

@@ -489,6 +489,7 @@ static _GlobalConstant _global_constants[]={
 	BIND_GLOBAL_CONSTANT( PROPERTY_USAGE_STORE_IF_NONONE ),
 	BIND_GLOBAL_CONSTANT( PROPERTY_USAGE_STORE_IF_NONONE ),
 	BIND_GLOBAL_CONSTANT( PROPERTY_USAGE_NO_INSTANCE_STATE ),
 	BIND_GLOBAL_CONSTANT( PROPERTY_USAGE_NO_INSTANCE_STATE ),
 	BIND_GLOBAL_CONSTANT( PROPERTY_USAGE_RESTART_IF_CHANGED ),
 	BIND_GLOBAL_CONSTANT( PROPERTY_USAGE_RESTART_IF_CHANGED ),
+	BIND_GLOBAL_CONSTANT( PROPERTY_USAGE_SCRIPT_VARIABLE ),
 
 
 	BIND_GLOBAL_CONSTANT( PROPERTY_USAGE_DEFAULT  ),
 	BIND_GLOBAL_CONSTANT( PROPERTY_USAGE_DEFAULT  ),
 	BIND_GLOBAL_CONSTANT( PROPERTY_USAGE_DEFAULT_INTL ),
 	BIND_GLOBAL_CONSTANT( PROPERTY_USAGE_DEFAULT_INTL ),

+ 1 - 0
core/object.h

@@ -86,6 +86,7 @@ enum PropertyUsageFlags {
 	PROPERTY_USAGE_STORE_IF_NONONE=1024, //only store if false
 	PROPERTY_USAGE_STORE_IF_NONONE=1024, //only store if false
 	PROPERTY_USAGE_NO_INSTANCE_STATE=2048,
 	PROPERTY_USAGE_NO_INSTANCE_STATE=2048,
 	PROPERTY_USAGE_RESTART_IF_CHANGED=4096,
 	PROPERTY_USAGE_RESTART_IF_CHANGED=4096,
+	PROPERTY_USAGE_SCRIPT_VARIABLE=8192,
 
 
 	PROPERTY_USAGE_DEFAULT=PROPERTY_USAGE_STORAGE|PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_NETWORK,
 	PROPERTY_USAGE_DEFAULT=PROPERTY_USAGE_STORAGE|PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_NETWORK,
 	PROPERTY_USAGE_DEFAULT_INTL=PROPERTY_USAGE_STORAGE|PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_NETWORK|PROPERTY_USAGE_INTERNATIONALIZED,
 	PROPERTY_USAGE_DEFAULT_INTL=PROPERTY_USAGE_STORAGE|PROPERTY_USAGE_EDITOR|PROPERTY_USAGE_NETWORK|PROPERTY_USAGE_INTERNATIONALIZED,

+ 3 - 0
modules/gdscript/gd_compiler.cpp

@@ -1611,6 +1611,9 @@ Error GDCompiler::_parse_class(GDScript *p_script, GDScript *p_owner, const GDPa
 				p_script->member_default_values[name]=p_class->variables[i].default_value;
 				p_script->member_default_values[name]=p_class->variables[i].default_value;
 			}
 			}
 #endif
 #endif
+		} else {
+
+			p_script->member_info[name]=PropertyInfo(Variant::NIL,name,PROPERTY_HINT_NONE,"",PROPERTY_USAGE_SCRIPT_VARIABLE);
 		}
 		}
 
 
 		//int new_idx = p_script->member_indices.size();
 		//int new_idx = p_script->member_indices.size();

+ 4 - 0
modules/gdscript/gd_parser.cpp

@@ -2408,6 +2408,7 @@ void GDParser::_parse_class(ClassNode *p_class) {
 							return;
 							return;
 						}
 						}
 						current_export.type=type;
 						current_export.type=type;
+						current_export.usage|=PROPERTY_USAGE_SCRIPT_VARIABLE;
 						tokenizer->advance();
 						tokenizer->advance();
 						if (tokenizer->get_token()==GDTokenizer::TK_COMMA) {
 						if (tokenizer->get_token()==GDTokenizer::TK_COMMA) {
 							// hint expected next!
 							// hint expected next!
@@ -2782,6 +2783,8 @@ void GDParser::_parse_class(ClassNode *p_class) {
 
 
 						current_export.type=Variant::OBJECT;
 						current_export.type=Variant::OBJECT;
 						current_export.hint=PROPERTY_HINT_RESOURCE_TYPE;
 						current_export.hint=PROPERTY_HINT_RESOURCE_TYPE;
+						current_export.usage|=PROPERTY_USAGE_SCRIPT_VARIABLE;
+
 						current_export.hint_string=identifier;
 						current_export.hint_string=identifier;
 
 
 						tokenizer->advance();
 						tokenizer->advance();
@@ -2901,6 +2904,7 @@ void GDParser::_parse_class(ClassNode *p_class) {
 								return;
 								return;
 							}
 							}
 							member._export.type=cn->value.get_type();
 							member._export.type=cn->value.get_type();
+							member._export.usage|=PROPERTY_USAGE_SCRIPT_VARIABLE;
 						}
 						}
 					}
 					}
 #ifdef TOOLS_ENABLED
 #ifdef TOOLS_ENABLED