瀏覽代碼

Merge branch 'master' of https://github.com/okamstudio/godot

Anton Yabchinskiy 10 年之前
父節點
當前提交
43713810de
共有 100 個文件被更改,包括 149 次插入1 次删除
  1. 4 0
      LICENSE.md
  2. 4 0
      SConstruct
  3. 10 0
      core/io/resource_format_binary.cpp
  4. 5 0
      core/io/resource_format_xml.cpp
  5. 18 1
      core/math/camera_matrix.cpp
  6. 8 0
      core/object.cpp
  7. 1 0
      core/object.h
  8. 3 0
      core/variant_op.cpp
  9. 二進制
      demos/2d/isometric_light/character_shder.res
  10. 二進制
      demos/2d/isometric_light/column.scn
  11. 96 0
      demos/2d/isometric_light/cubio.gd
  12. 二進制
      demos/2d/isometric_light/cubio.scn
  13. 二進制
      demos/2d/isometric_light/cubio/idle0001.png
  14. 二進制
      demos/2d/isometric_light/cubio/idle0002.png
  15. 二進制
      demos/2d/isometric_light/cubio/idle0003.png
  16. 二進制
      demos/2d/isometric_light/cubio/idle0004.png
  17. 二進制
      demos/2d/isometric_light/cubio/idle0005.png
  18. 二進制
      demos/2d/isometric_light/cubio/idle0006.png
  19. 二進制
      demos/2d/isometric_light/cubio/idle0007.png
  20. 二進制
      demos/2d/isometric_light/cubio/idle0008.png
  21. 二進制
      demos/2d/isometric_light/cubio/idle0009.png
  22. 二進制
      demos/2d/isometric_light/cubio/idle0010.png
  23. 二進制
      demos/2d/isometric_light/cubio/idle0011.png
  24. 二進制
      demos/2d/isometric_light/cubio/idle0012.png
  25. 二進制
      demos/2d/isometric_light/cubio/idle0013.png
  26. 二進制
      demos/2d/isometric_light/cubio/idle0014.png
  27. 二進制
      demos/2d/isometric_light/cubio/idle0015.png
  28. 二進制
      demos/2d/isometric_light/cubio/idle0016.png
  29. 二進制
      demos/2d/isometric_light/cubio/idle0017.png
  30. 二進制
      demos/2d/isometric_light/cubio/idle0018.png
  31. 二進制
      demos/2d/isometric_light/cubio/idle0019.png
  32. 二進制
      demos/2d/isometric_light/cubio/idle0020.png
  33. 二進制
      demos/2d/isometric_light/cubio/idle0021.png
  34. 二進制
      demos/2d/isometric_light/cubio/idle0022.png
  35. 二進制
      demos/2d/isometric_light/cubio/idle0023.png
  36. 二進制
      demos/2d/isometric_light/cubio/idle0024.png
  37. 二進制
      demos/2d/isometric_light/cubio/idle0025.png
  38. 二進制
      demos/2d/isometric_light/cubio/idle0026.png
  39. 二進制
      demos/2d/isometric_light/cubio/idle0027.png
  40. 二進制
      demos/2d/isometric_light/cubio/idle0028.png
  41. 二進制
      demos/2d/isometric_light/cubio/idle0029.png
  42. 二進制
      demos/2d/isometric_light/cubio/idle0030.png
  43. 二進制
      demos/2d/isometric_light/cubio/idle0031.png
  44. 二進制
      demos/2d/isometric_light/cubio/idle0032.png
  45. 二進制
      demos/2d/isometric_light/cubio/idle0033.png
  46. 二進制
      demos/2d/isometric_light/cubio/idle0034.png
  47. 二進制
      demos/2d/isometric_light/cubio/idle0035.png
  48. 二進制
      demos/2d/isometric_light/cubio/idle0036.png
  49. 二進制
      demos/2d/isometric_light/cubio/idle0037.png
  50. 二進制
      demos/2d/isometric_light/cubio/idle0038.png
  51. 二進制
      demos/2d/isometric_light/cubio/idle0039.png
  52. 二進制
      demos/2d/isometric_light/cubio/idle0040.png
  53. 二進制
      demos/2d/isometric_light/cubio/idle0041.png
  54. 二進制
      demos/2d/isometric_light/cubio/idle0042.png
  55. 二進制
      demos/2d/isometric_light/cubio/idle0043.png
  56. 二進制
      demos/2d/isometric_light/cubio/idle0044.png
  57. 二進制
      demos/2d/isometric_light/cubio/idle0045.png
  58. 二進制
      demos/2d/isometric_light/cubio/idle0046.png
  59. 二進制
      demos/2d/isometric_light/cubio/idle0047.png
  60. 二進制
      demos/2d/isometric_light/cubio/idle0048.png
  61. 二進制
      demos/2d/isometric_light/cubio/idle0049.png
  62. 二進制
      demos/2d/isometric_light/cubio/idle0050.png
  63. 二進制
      demos/2d/isometric_light/cubio/idle0051.png
  64. 二進制
      demos/2d/isometric_light/cubio/idle0052.png
  65. 二進制
      demos/2d/isometric_light/cubio/idle0053.png
  66. 二進制
      demos/2d/isometric_light/cubio/idle0054.png
  67. 二進制
      demos/2d/isometric_light/cubio/idle0055.png
  68. 二進制
      demos/2d/isometric_light/cubio/idle0056.png
  69. 二進制
      demos/2d/isometric_light/cubio/idle0057.png
  70. 二進制
      demos/2d/isometric_light/cubio/idle0058.png
  71. 二進制
      demos/2d/isometric_light/cubio/idle0059.png
  72. 二進制
      demos/2d/isometric_light/cubio/idle0060.png
  73. 二進制
      demos/2d/isometric_light/cubio/norm-b-0001.png
  74. 二進制
      demos/2d/isometric_light/cubio/norm-b-0002.png
  75. 二進制
      demos/2d/isometric_light/cubio/norm-b-0003.png
  76. 二進制
      demos/2d/isometric_light/cubio/norm-b-0004.png
  77. 二進制
      demos/2d/isometric_light/cubio/norm-b-0005.png
  78. 二進制
      demos/2d/isometric_light/cubio/norm-b-0006.png
  79. 二進制
      demos/2d/isometric_light/cubio/norm-b-0007.png
  80. 二進制
      demos/2d/isometric_light/cubio/norm-b-0008.png
  81. 二進制
      demos/2d/isometric_light/cubio/norm-b-0009.png
  82. 二進制
      demos/2d/isometric_light/cubio/norm-b-0010.png
  83. 二進制
      demos/2d/isometric_light/cubio/norm-b-0011.png
  84. 二進制
      demos/2d/isometric_light/cubio/norm-b-0012.png
  85. 二進制
      demos/2d/isometric_light/cubio/norm-b-0013.png
  86. 二進制
      demos/2d/isometric_light/cubio/norm-b-0014.png
  87. 二進制
      demos/2d/isometric_light/cubio/norm-b-0015.png
  88. 二進制
      demos/2d/isometric_light/cubio/norm-b-0016.png
  89. 二進制
      demos/2d/isometric_light/cubio/norm-b-0017.png
  90. 二進制
      demos/2d/isometric_light/cubio/norm-b-0018.png
  91. 二進制
      demos/2d/isometric_light/cubio/norm-b-0019.png
  92. 二進制
      demos/2d/isometric_light/cubio/norm-b-0020.png
  93. 二進制
      demos/2d/isometric_light/cubio/norm-bl-0001.png
  94. 二進制
      demos/2d/isometric_light/cubio/norm-bl-0002.png
  95. 二進制
      demos/2d/isometric_light/cubio/norm-bl-0003.png
  96. 二進制
      demos/2d/isometric_light/cubio/norm-bl-0004.png
  97. 二進制
      demos/2d/isometric_light/cubio/norm-bl-0005.png
  98. 二進制
      demos/2d/isometric_light/cubio/norm-bl-0006.png
  99. 二進制
      demos/2d/isometric_light/cubio/norm-bl-0007.png
  100. 二進制
      demos/2d/isometric_light/cubio/norm-bl-0008.png

+ 4 - 0
LICENSE.md

@@ -21,3 +21,7 @@
  CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  
  TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     
  SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                
+
+
+**********************************************************************
+

+ 4 - 0
SConstruct

@@ -67,12 +67,16 @@ env_base.android_source_modules=[]
 env_base.android_source_files=[]
 env_base.android_module_libraries=[]
 env_base.android_manifest_chunk=""
+env_base.android_permission_chunk=""
+env_base.android_appattributes_chunk=""
 env_base.disabled_modules=[]
 
 env_base.__class__.android_module_source = methods.android_module_source
 env_base.__class__.android_module_library = methods.android_module_library
 env_base.__class__.android_module_file = methods.android_module_file
 env_base.__class__.android_module_manifest = methods.android_module_manifest
+env_base.__class__.android_module_permission = methods.android_module_permission
+env_base.__class__.android_module_attribute = methods.android_module_attribute
 env_base.__class__.disable_module = methods.disable_module
 
 env_base.__class__.add_source_files = methods.add_source_files

+ 10 - 0
core/io/resource_format_binary.cpp

@@ -1778,6 +1778,11 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path,const RES& p_
 	f->store_32(VERSION_MINOR);
 	f->store_32(FORMAT_VERSION);
 
+	if (f->get_error()!=OK && f->get_error()!=ERR_FILE_EOF) {
+		f->close();
+		return ERR_CANT_CREATE;
+	}
+
 	//f->store_32(saved_resources.size()+external_resources.size()); // load steps -not needed
 	save_unicode_string(p_resource->get_type());
 	uint64_t md_at = f->get_pos();
@@ -1910,6 +1915,11 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path,const RES& p_
 
 	f->store_buffer((const uint8_t*)"RSRC",4); //magic at end
 
+	if (f->get_error()!=OK && f->get_error()!=ERR_FILE_EOF) {
+		f->close();
+		return ERR_CANT_CREATE;
+	}
+
 	f->close();
 
 

+ 5 - 0
core/io/resource_format_xml.cpp

@@ -2592,6 +2592,11 @@ Error ResourceFormatSaverXMLInstance::save(const String &p_path,const RES& p_res
 	}
 
 	exit_tag("resource_file");
+	if (f->get_error()!=OK && f->get_error()!=ERR_FILE_EOF) {
+		f->close();
+		return ERR_CANT_CREATE;
+	}
+
 	f->close();
 	//memdelete(f);
 

+ 18 - 1
core/math/camera_matrix.cpp

@@ -121,7 +121,7 @@ void CameraMatrix::set_orthogonal(float p_size, float p_aspect, float p_znear, f
 
 
 void CameraMatrix::set_frustum(float p_left, float p_right, float p_bottom, float p_top, float p_near, float p_far) {
-
+#if 0
 	///@TODO, give a check to this. I'm not sure if it's working.
 	set_identity();
 
@@ -133,10 +133,27 @@ void CameraMatrix::set_frustum(float p_left, float p_right, float p_bottom, floa
 	matrix[2][3]=-(2*p_far*p_near) / (p_far-p_near);
 	matrix[3][2]=-1;
 	matrix[3][3]=0;
+#else
+	float *te = &matrix[0][0];
+	float x = 2 * p_near / ( p_right - p_left );
+	float y = 2 * p_near / ( p_top - p_bottom );
+
+	float a = ( p_right + p_left ) / ( p_right - p_left );
+	float b = ( p_top + p_bottom ) / ( p_top - p_bottom );
+	float c = - ( p_far + p_near ) / ( p_far - p_near );
+	float d = - 2 * p_far * p_near / ( p_far - p_near );
+
+	te[0] = x;	te[4] = 0;	te[8] = a;	te[12] = 0;
+	te[1] = 0;	te[5] = y;	te[9] = b;	te[13] = 0;
+	te[2] = 0;	te[6] = 0;	te[10] = c;	te[14] = d;
+	te[3] = 0;	te[7] = 0;	te[11] = - 1;	te[15] = 0;
+
+#endif
 
 }
 
 
+
 float CameraMatrix::get_z_far() const {
 	
 	const float * matrix = (const float*)this->matrix;			

+ 8 - 0
core/object.cpp

@@ -1033,6 +1033,13 @@ void Object::add_user_signal(const MethodInfo& p_signal) {
 	signal_map[p_signal.name]=s;
 }
 
+bool Object::_has_user_signal(const StringName& p_name) const {
+
+	if (!signal_map.has(p_name))
+		return false;
+	return signal_map[p_name].user.name.length()>0;
+}
+
 struct _ObjectSignalDisconnectData {
 
 	StringName signal;
@@ -1431,6 +1438,7 @@ void Object::_bind_methods() {
 //	ObjectTypeDB::bind_method(_MD("call_deferred","method","arg1","arg2","arg3","arg4"),&Object::_call_deferred_bind,DEFVAL(Variant()),DEFVAL(Variant()),DEFVAL(Variant()),DEFVAL(Variant()));
 
 	ObjectTypeDB::bind_method(_MD("add_user_signal","signal","arguments"),&Object::_add_user_signal,DEFVAL(Array()));
+	ObjectTypeDB::bind_method(_MD("has_user_signal","signal"),&Object::_has_user_signal);
 //	ObjectTypeDB::bind_method(_MD("emit_signal","signal","arguments"),&Object::_emit_signal,DEFVAL(Array()));
 
 

+ 1 - 0
core/object.h

@@ -386,6 +386,7 @@ friend void postinitialize_handler(Object*);
 	Dictionary metadata;
 
 	void _add_user_signal(const String& p_name, const Array& p_pargs=Array());
+	bool _has_user_signal(const StringName& p_name) const;
 	Variant _emit_signal(const Variant** p_args, int p_argcount, Variant::CallError& r_error);
 	Array _get_signal_list() const;
 	Array _get_signal_connection_list(const String& p_signal) const;

+ 3 - 0
core/variant_op.cpp

@@ -552,6 +552,9 @@ void Variant::evaluate(const Operator& p_op, const Variant& p_a, const Variant&
 					if (p_b.type==MATRIX32) {
 						_RETURN( *p_a._data._matrix32 * *p_b._data._matrix32 );
 					};
+					if (p_b.type==VECTOR2) {
+						_RETURN( p_a._data._matrix32->xform( *(const Vector2*)p_b._data._mem) );
+					};
 					r_valid=false;
 					return;
 				} break;

二進制
demos/2d/isometric_light/character_shder.res


二進制
demos/2d/isometric_light/column.scn


+ 96 - 0
demos/2d/isometric_light/cubio.gd

@@ -0,0 +1,96 @@
+
+extends KinematicBody2D
+
+# member variables here, example:
+# var a=2
+# var b="textvar"
+
+const MAX_SPEED = 300.0
+const IDLE_SPEED = 10.0
+const ACCEL=5.0
+const VSCALE=0.5
+const SHOOT_INTERVAL=0.3
+
+var speed=Vector2()
+var current_anim=""
+var current_mirror=false
+
+var shoot_countdown=0
+
+func _input(ev):
+	if (ev.type==InputEvent.MOUSE_BUTTON and ev.button_index==1 and ev.pressed and shoot_countdown<=0):
+		var pos = get_canvas_transform().affine_inverse() * ev.pos
+		var dir = (pos-get_global_pos()).normalized()
+		var bullet = preload("res://shoot.scn").instance()
+		bullet.advance_dir=dir
+		bullet.set_pos( get_global_pos() + dir * 60 )
+		get_parent().add_child(bullet)
+		shoot_countdown=SHOOT_INTERVAL
+		
+		
+		
+
+func _fixed_process(delta):
+	
+	shoot_countdown-=delta
+	var dir = Vector2()
+	if (Input.is_action_pressed("up")):
+		dir+=Vector2(0,-1)
+	if (Input.is_action_pressed("down")):
+		dir+=Vector2(0,1)
+	if (Input.is_action_pressed("left")):
+		dir+=Vector2(-1,0)
+	if (Input.is_action_pressed("right")):
+		dir+=Vector2(1,0)
+		
+	if (dir!=Vector2()):
+		dir=dir.normalized()
+	speed = speed.linear_interpolate(dir*MAX_SPEED,delta*ACCEL)
+	var motion = speed * delta
+	motion.y*=VSCALE
+	motion=move(motion)
+	
+	if (is_colliding()):
+		var n = get_collision_normal()
+		motion=n.slide(motion)
+		move(motion)
+
+	var next_anim=""
+	var next_mirror=false
+	
+	if (dir==Vector2() and speed.length()<IDLE_SPEED):
+		next_anim="idle"
+		next_mirror=false
+	elif (speed.length()>IDLE_SPEED*0.1):
+		var angle = atan2(abs(speed.x),speed.y)	
+		
+		next_mirror = speed.x>0
+		if (angle<PI/8):
+			next_anim="bottom"
+			next_mirror=false
+		elif (angle<PI/4+PI/8):
+			next_anim="bottom_left"
+		elif (angle<PI*2/4+PI/8):
+			next_anim="left"
+		elif (angle<PI*3/4+PI/8):
+			next_anim="top_left"
+		else:
+			next_anim="top"
+			next_mirror=false
+		
+			
+	if (next_anim!=current_anim or next_mirror!=current_mirror):
+		get_node("frames").set_flip_h(next_mirror)
+		get_node("anim").play(next_anim)
+		current_anim=next_anim
+		current_mirror=next_mirror
+		
+
+
+func _ready():
+	# Initialization here
+	set_fixed_process(true)
+	set_process_input(true)
+	pass
+
+

二進制
demos/2d/isometric_light/cubio.scn


二進制
demos/2d/isometric_light/cubio/idle0001.png


二進制
demos/2d/isometric_light/cubio/idle0002.png


二進制
demos/2d/isometric_light/cubio/idle0003.png


二進制
demos/2d/isometric_light/cubio/idle0004.png


二進制
demos/2d/isometric_light/cubio/idle0005.png


二進制
demos/2d/isometric_light/cubio/idle0006.png


二進制
demos/2d/isometric_light/cubio/idle0007.png


二進制
demos/2d/isometric_light/cubio/idle0008.png


二進制
demos/2d/isometric_light/cubio/idle0009.png


二進制
demos/2d/isometric_light/cubio/idle0010.png


二進制
demos/2d/isometric_light/cubio/idle0011.png


二進制
demos/2d/isometric_light/cubio/idle0012.png


二進制
demos/2d/isometric_light/cubio/idle0013.png


二進制
demos/2d/isometric_light/cubio/idle0014.png


二進制
demos/2d/isometric_light/cubio/idle0015.png


二進制
demos/2d/isometric_light/cubio/idle0016.png


二進制
demos/2d/isometric_light/cubio/idle0017.png


二進制
demos/2d/isometric_light/cubio/idle0018.png


二進制
demos/2d/isometric_light/cubio/idle0019.png


二進制
demos/2d/isometric_light/cubio/idle0020.png


二進制
demos/2d/isometric_light/cubio/idle0021.png


二進制
demos/2d/isometric_light/cubio/idle0022.png


二進制
demos/2d/isometric_light/cubio/idle0023.png


二進制
demos/2d/isometric_light/cubio/idle0024.png


二進制
demos/2d/isometric_light/cubio/idle0025.png


二進制
demos/2d/isometric_light/cubio/idle0026.png


二進制
demos/2d/isometric_light/cubio/idle0027.png


二進制
demos/2d/isometric_light/cubio/idle0028.png


二進制
demos/2d/isometric_light/cubio/idle0029.png


二進制
demos/2d/isometric_light/cubio/idle0030.png


二進制
demos/2d/isometric_light/cubio/idle0031.png


二進制
demos/2d/isometric_light/cubio/idle0032.png


二進制
demos/2d/isometric_light/cubio/idle0033.png


二進制
demos/2d/isometric_light/cubio/idle0034.png


二進制
demos/2d/isometric_light/cubio/idle0035.png


二進制
demos/2d/isometric_light/cubio/idle0036.png


二進制
demos/2d/isometric_light/cubio/idle0037.png


二進制
demos/2d/isometric_light/cubio/idle0038.png


二進制
demos/2d/isometric_light/cubio/idle0039.png


二進制
demos/2d/isometric_light/cubio/idle0040.png


二進制
demos/2d/isometric_light/cubio/idle0041.png


二進制
demos/2d/isometric_light/cubio/idle0042.png


二進制
demos/2d/isometric_light/cubio/idle0043.png


二進制
demos/2d/isometric_light/cubio/idle0044.png


二進制
demos/2d/isometric_light/cubio/idle0045.png


二進制
demos/2d/isometric_light/cubio/idle0046.png


二進制
demos/2d/isometric_light/cubio/idle0047.png


二進制
demos/2d/isometric_light/cubio/idle0048.png


二進制
demos/2d/isometric_light/cubio/idle0049.png


二進制
demos/2d/isometric_light/cubio/idle0050.png


二進制
demos/2d/isometric_light/cubio/idle0051.png


二進制
demos/2d/isometric_light/cubio/idle0052.png


二進制
demos/2d/isometric_light/cubio/idle0053.png


二進制
demos/2d/isometric_light/cubio/idle0054.png


二進制
demos/2d/isometric_light/cubio/idle0055.png


二進制
demos/2d/isometric_light/cubio/idle0056.png


二進制
demos/2d/isometric_light/cubio/idle0057.png


二進制
demos/2d/isometric_light/cubio/idle0058.png


二進制
demos/2d/isometric_light/cubio/idle0059.png


二進制
demos/2d/isometric_light/cubio/idle0060.png


二進制
demos/2d/isometric_light/cubio/norm-b-0001.png


二進制
demos/2d/isometric_light/cubio/norm-b-0002.png


二進制
demos/2d/isometric_light/cubio/norm-b-0003.png


二進制
demos/2d/isometric_light/cubio/norm-b-0004.png


二進制
demos/2d/isometric_light/cubio/norm-b-0005.png


二進制
demos/2d/isometric_light/cubio/norm-b-0006.png


二進制
demos/2d/isometric_light/cubio/norm-b-0007.png


二進制
demos/2d/isometric_light/cubio/norm-b-0008.png


二進制
demos/2d/isometric_light/cubio/norm-b-0009.png


二進制
demos/2d/isometric_light/cubio/norm-b-0010.png


二進制
demos/2d/isometric_light/cubio/norm-b-0011.png


二進制
demos/2d/isometric_light/cubio/norm-b-0012.png


二進制
demos/2d/isometric_light/cubio/norm-b-0013.png


二進制
demos/2d/isometric_light/cubio/norm-b-0014.png


二進制
demos/2d/isometric_light/cubio/norm-b-0015.png


二進制
demos/2d/isometric_light/cubio/norm-b-0016.png


二進制
demos/2d/isometric_light/cubio/norm-b-0017.png


二進制
demos/2d/isometric_light/cubio/norm-b-0018.png


二進制
demos/2d/isometric_light/cubio/norm-b-0019.png


二進制
demos/2d/isometric_light/cubio/norm-b-0020.png


二進制
demos/2d/isometric_light/cubio/norm-bl-0001.png


二進制
demos/2d/isometric_light/cubio/norm-bl-0002.png


二進制
demos/2d/isometric_light/cubio/norm-bl-0003.png


二進制
demos/2d/isometric_light/cubio/norm-bl-0004.png


二進制
demos/2d/isometric_light/cubio/norm-bl-0005.png


二進制
demos/2d/isometric_light/cubio/norm-bl-0006.png


二進制
demos/2d/isometric_light/cubio/norm-bl-0007.png


二進制
demos/2d/isometric_light/cubio/norm-bl-0008.png


部分文件因文件數量過多而無法顯示