ソースを参照

Implicit inheritance now defaults to Resource, will error for node scripts if extends not used.

Juan Linietsky 8 年 前
コミット
6dd7d2c1f7
2 ファイル変更8 行追加1 行削除
  1. 6 1
      modules/gdscript/gd_compiler.cpp
  2. 2 0
      modules/gdscript/gd_script.cpp

+ 6 - 1
modules/gdscript/gd_compiler.cpp

@@ -1729,9 +1729,14 @@ Error GDCompiler::_parse_class(GDScript *p_script, GDScript *p_owner, const GDPa
 		}
 
 
+	}else {
+		// without extends, implicitly extend Reference
+		int native_idx = GDScriptLanguage::get_singleton()->get_global_map()["Reference"];
+		native = GDScriptLanguage::get_singleton()->get_global_array()[native_idx];
+		ERR_FAIL_COND_V(native.is_null(), ERR_BUG);
+		p_script->native=native;
 	}
 
-
 	//print_line("Script: "+p_script->get_path()+" indices: "+itos(p_script->member_indices.size()));
 
 

+ 2 - 0
modules/gdscript/gd_script.cpp

@@ -160,6 +160,8 @@ Variant GDScript::_new(const Variant** p_args,int p_argcount,Variant::CallError&
 		_baseptr=_baseptr->_base;
 	}
 
+	ERR_FAIL_COND_V(_baseptr->native.is_null(), Variant());
+
 	if (_baseptr->native.ptr()) {
 		owner=_baseptr->native->instance();
 	} else {