Browse Source

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

Anton Yabchinskiy 10 years ago
parent
commit
fa38e9b838
100 changed files with 692 additions and 288 deletions
  1. 4 0
      SConstruct
  2. 4 0
      demos/2d/polygon_path_finder_demo/.fscache
  3. 5 0
      demos/2d/polygon_path_finder_demo/engine.cfg
  4. BIN
      demos/2d/polygon_path_finder_demo/icon.png
  5. 1 0
      demos/2d/polygon_path_finder_demo/icon.png.flags
  6. BIN
      demos/2d/polygon_path_finder_demo/new_scene_poly_with_holes.scn
  7. 80 0
      demos/2d/polygon_path_finder_demo/polygonpathfinder.gd
  8. 36 0
      methods.py
  9. 53 69
      modules/gdscript/gd_compiler.h
  10. 3 0
      platform/osx/detect.py
  11. 3 0
      platform/server/detect.py
  12. 3 0
      platform/windows/os_windows.cpp
  13. 3 0
      platform/x11/detect.py
  14. 1 1
      platform/x11/export/export.cpp
  15. 103 8
      scene/animation/tween.cpp
  16. 11 3
      scene/animation/tween.h
  17. 9 2
      scene/gui/file_dialog.cpp
  18. 4 3
      scene/register_scene_types.cpp
  19. 2 16
      scene/resources/curve.cpp
  20. BIN
      scene/resources/default_theme/arrow_down.png
  21. BIN
      scene/resources/default_theme/arrow_right.png
  22. BIN
      scene/resources/default_theme/button_disabled.png
  23. BIN
      scene/resources/default_theme/button_hover.png
  24. BIN
      scene/resources/default_theme/button_normal.png
  25. BIN
      scene/resources/default_theme/button_pressed.png
  26. BIN
      scene/resources/default_theme/checked.png
  27. BIN
      scene/resources/default_theme/close_hl.png
  28. 355 179
      scene/resources/default_theme/default_theme.cpp
  29. BIN
      scene/resources/default_theme/dropdown.png
  30. BIN
      scene/resources/default_theme/focus.png
  31. BIN
      scene/resources/default_theme/full_panel_bg.png
  32. BIN
      scene/resources/default_theme/hscroll_bg.png
  33. BIN
      scene/resources/default_theme/hscroll_bg_focus.png
  34. BIN
      scene/resources/default_theme/hscroll_grabber.png
  35. BIN
      scene/resources/default_theme/hscroll_grabber_hl.png
  36. BIN
      scene/resources/default_theme/hslider_bg.png
  37. BIN
      scene/resources/default_theme/hslider_grabber.png
  38. BIN
      scene/resources/default_theme/hslider_grabber_hl.png
  39. BIN
      scene/resources/default_theme/hslider_tick.png
  40. BIN
      scene/resources/default_theme/hsplit_bg.png
  41. BIN
      scene/resources/default_theme/hsplitter.png
  42. BIN
      scene/resources/default_theme/icon_folder.png
  43. BIN
      scene/resources/default_theme/icon_play.png
  44. BIN
      scene/resources/default_theme/icon_stop.png
  45. BIN
      scene/resources/default_theme/line_edit.png
  46. BIN
      scene/resources/default_theme/line_edit_disabled.png
  47. BIN
      scene/resources/default_theme/option_arrow.png
  48. BIN
      scene/resources/default_theme/option_button_disabled.png
  49. BIN
      scene/resources/default_theme/option_button_hover.png
  50. BIN
      scene/resources/default_theme/option_button_normal.png
  51. BIN
      scene/resources/default_theme/option_button_pressed.png
  52. BIN
      scene/resources/default_theme/panel_bg.png
  53. BIN
      scene/resources/default_theme/popup_bg.png
  54. BIN
      scene/resources/default_theme/popup_checked.png
  55. BIN
      scene/resources/default_theme/popup_window.png
  56. BIN
      scene/resources/default_theme/progress_bar.png
  57. BIN
      scene/resources/default_theme/progress_fill.png
  58. BIN
      scene/resources/default_theme/scroll_bg.png
  59. BIN
      scene/resources/default_theme/scroll_button_down.png
  60. BIN
      scene/resources/default_theme/scroll_button_down_hl.png
  61. BIN
      scene/resources/default_theme/scroll_button_left.png
  62. BIN
      scene/resources/default_theme/scroll_button_left_hl.png
  63. BIN
      scene/resources/default_theme/scroll_button_right.png
  64. BIN
      scene/resources/default_theme/scroll_button_right_hl.png
  65. BIN
      scene/resources/default_theme/scroll_button_up.png
  66. BIN
      scene/resources/default_theme/scroll_button_up_hl.png
  67. BIN
      scene/resources/default_theme/scroll_grabber.png
  68. BIN
      scene/resources/default_theme/scroll_grabber_hl.png
  69. BIN
      scene/resources/default_theme/selection.png
  70. BIN
      scene/resources/default_theme/selection_oof.png
  71. BIN
      scene/resources/default_theme/submenu.png
  72. BIN
      scene/resources/default_theme/tab_behind.png
  73. BIN
      scene/resources/default_theme/tab_container_bg.png
  74. BIN
      scene/resources/default_theme/tab_current.png
  75. 3 3
      scene/resources/default_theme/theme_data.h
  76. BIN
      scene/resources/default_theme/toggle_off.png
  77. BIN
      scene/resources/default_theme/toggle_on.png
  78. BIN
      scene/resources/default_theme/tooltip_bg.png
  79. BIN
      scene/resources/default_theme/tree_bg.png
  80. BIN
      scene/resources/default_theme/tree_title.png
  81. BIN
      scene/resources/default_theme/tree_title_pressed.png
  82. BIN
      scene/resources/default_theme/unchecked.png
  83. BIN
      scene/resources/default_theme/updown.png
  84. BIN
      scene/resources/default_theme/vscroll_bg.png
  85. BIN
      scene/resources/default_theme/vscroll_bg_focus.png
  86. BIN
      scene/resources/default_theme/vscroll_grabber.png
  87. BIN
      scene/resources/default_theme/vscroll_grabber_hl.png
  88. BIN
      scene/resources/default_theme/vslider_bg.png
  89. BIN
      scene/resources/default_theme/vslider_grabber.png
  90. BIN
      scene/resources/default_theme/vslider_grabber_hl.png
  91. BIN
      scene/resources/default_theme/vslider_tick.png
  92. BIN
      scene/resources/default_theme/vsplit_bg.png
  93. BIN
      scene/resources/default_theme/vsplitter.png
  94. 1 1
      scene/resources/environment.cpp
  95. 3 3
      tools/editor/editor_node.cpp
  96. 5 0
      tools/editor/editor_settings.cpp
  97. BIN
      tools/editor/icons/icon_add.png
  98. BIN
      tools/editor/icons/icon_animation.png
  99. BIN
      tools/editor/icons/icon_atlas_texture.png
  100. BIN
      tools/editor/icons/icon_audio_stream_gibberish.png

+ 4 - 0
SConstruct

@@ -117,6 +117,7 @@ opts.Add("CFLAGS", "Custom flags for the C compiler");
 opts.Add("LINKFLAGS", "Custom flags for the linker");
 opts.Add('disable_3d', 'Disable 3D nodes for smaller executable (yes/no)', "no")
 opts.Add('disable_advanced_gui', 'Disable advance 3D gui nodes and behaviors (yes/no)', "no")
+opts.Add('colored', 'Enable colored output for the compilation (yes/no)', 'no')
 
 # add platform specific options
 
@@ -300,6 +301,9 @@ if selected_platform in platform_list:
 	if (env['xml']=='yes'):
 		env.Append(CPPFLAGS=['-DXML_ENABLED'])
 
+	if (env['colored']=='yes'):
+		methods.colored(sys,env)
+		
 
 	Export('env')
 

+ 4 - 0
demos/2d/polygon_path_finder_demo/.fscache

@@ -0,0 +1,4 @@
+::res://::1421147952
+icon.png::ImageTexture::1420046079::
+new_scene_poly_with_holes.scn::PackedScene::1421147952::
+polygonpathfinder.gd::GDScript::1421146502::

+ 5 - 0
demos/2d/polygon_path_finder_demo/engine.cfg

@@ -0,0 +1,5 @@
+[application]
+
+name="polygon_path_finder_demo"
+main_scene="res://new_scene_poly_with_holes.scn"
+icon="icon.png"

BIN
demos/2d/polygon_path_finder_demo/icon.png


+ 1 - 0
demos/2d/polygon_path_finder_demo/icon.png.flags

@@ -0,0 +1 @@
+gen_mipmaps=true

BIN
demos/2d/polygon_path_finder_demo/new_scene_poly_with_holes.scn


+ 80 - 0
demos/2d/polygon_path_finder_demo/polygonpathfinder.gd

@@ -0,0 +1,80 @@
+
+extends Spatial
+
+func _ready():
+	var pf = PolygonPathFinder.new()
+	
+	var points = Vector2Array()
+	var connections = IntArray()
+	
+	# poly 1
+	points.push_back(Vector2(0, 0))		#0
+	points.push_back(Vector2(10, 0))	#1
+	points.push_back(Vector2(10, 10))	#2
+	points.push_back(Vector2(0, 10))	#3
+
+	connections.push_back(0) # connect vertex 0 ...
+	connections.push_back(1) # ... to 1
+	drawLine(points[0], points[1], get_node("/root/Spatial/Polys"))
+	connections.push_back(1) # connect vertex 1 ...
+	connections.push_back(2) # ... to 2
+	drawLine(points[1], points[2], get_node("/root/Spatial/Polys"))
+	connections.push_back(2) # etc.
+	connections.push_back(3)
+	drawLine(points[2], points[3], get_node("/root/Spatial/Polys"))
+	connections.push_back(3) # connect vertex 3 ...
+	connections.push_back(0) # back to vertex 0, to close the polygon
+	drawLine(points[3], points[0], get_node("/root/Spatial/Polys"))
+
+	# poly 2, as obstacle inside poly 1
+	points.push_back(Vector2(2, 0.5))	#4
+	points.push_back(Vector2(4, 0.5))	#5
+	points.push_back(Vector2(4, 9.5))	#6
+	points.push_back(Vector2(2, 9.5))	#7
+
+	connections.push_back(4)
+	connections.push_back(5)
+	drawLine(points[4], points[5], get_node("/root/Spatial/Polys"))
+	connections.push_back(5)
+	connections.push_back(6)
+	drawLine(points[5], points[6], get_node("/root/Spatial/Polys"))
+	connections.push_back(6)
+	connections.push_back(7)
+	drawLine(points[6], points[7], get_node("/root/Spatial/Polys"))
+	connections.push_back(7)
+	connections.push_back(4)
+	drawLine(points[7], points[4], get_node("/root/Spatial/Polys"))
+
+	
+	print("points: ",points)
+	print("connections: ",connections)
+	
+	pf.setup(points, connections)
+	
+	var path = pf.find_path(Vector2(1, 5), Vector2(8, 5))
+	
+	var lastStep = null
+	print("path: ",path)
+	for step in path:
+		print("step: ",step)
+		if (lastStep != null):
+			var currPathSegment = Vector2Array()
+			drawLine(lastStep, step, get_node("/root/Spatial/Path"))
+		lastStep = step
+		
+
+
+func drawLine(pointA, pointB, immediateGeo):
+	var drawPosY = 0.1
+	var im = immediateGeo
+	
+	im.begin(Mesh.PRIMITIVE_POINTS, null)
+	im.add_vertex(Vector3(pointA.x, drawPosY, pointA.y))
+	im.add_vertex(Vector3(pointB.x, drawPosY, pointB.y))
+	im.end()
+	im.begin(Mesh.PRIMITIVE_LINE_STRIP, null)
+	im.add_vertex(Vector3(pointA.x, drawPosY, pointA.y))
+	im.add_vertex(Vector3(pointB.x, drawPosY, pointB.y))
+	im.end()
+	
+	

+ 36 - 0
methods.py

@@ -1316,3 +1316,39 @@ def save_active_platforms(apnames,ap):
 		logow = open(wf,"wb")
 		logow.write(str)
 
+
+def colored(sys,env):
+
+	#If the output is not a terminal, do nothing
+	if not sys.stdout.isatty():
+		return
+
+	colors = {}
+	colors['cyan']   = '\033[96m'
+	colors['purple'] = '\033[95m'
+	colors['blue']   = '\033[94m'
+	colors['green']  = '\033[92m'
+	colors['yellow'] = '\033[93m'
+	colors['red']    = '\033[91m'
+	colors['end']    = '\033[0m'
+
+	compile_source_message        = '%sCompiling %s==> %s$SOURCE%s' % (colors['blue'], colors['purple'], colors['yellow'], colors['end'])
+	java_compile_source_message   = '%sCompiling %s==> %s$SOURCE%s' % (colors['blue'], colors['purple'], colors['yellow'], colors['end'])
+	compile_shared_source_message = '%sCompiling shared %s==> %s$SOURCE%s' % (colors['blue'], colors['purple'], colors['yellow'], colors['end'])
+	link_program_message          = '%sLinking Program        %s==> %s$TARGET%s' % (colors['red'], colors['purple'], colors['yellow'], colors['end'])
+	link_library_message          = '%sLinking Static Library %s==> %s$TARGET%s' % (colors['red'], colors['purple'], colors['yellow'], colors['end'])
+	ranlib_library_message        = '%sRanlib Library         %s==> %s$TARGET%s' % (colors['red'], colors['purple'], colors['yellow'], colors['end'])
+	link_shared_library_message   = '%sLinking Shared Library %s==> %s$TARGET%s' % (colors['red'], colors['purple'], colors['yellow'], colors['end'])
+	java_library_message          = '%sCreating Java Archive  %s==> %s$TARGET%s' % (colors['red'], colors['purple'], colors['yellow'], colors['end'])
+
+	env.Append( CXXCOMSTR=[compile_source_message] )
+	env.Append( CCCOMSTR=[compile_source_message] )
+	env.Append( SHCCCOMSTR=[compile_shared_source_message] )
+	env.Append( SHCXXCOMSTR=[compile_shared_source_message] )
+	env.Append( ARCOMSTR=[link_library_message] )
+	env.Append( RANLIBCOMSTR=[ranlib_library_message] )
+	env.Append( SHLINKCOMSTR=[link_shared_library_message] )
+	env.Append( LINKCOMSTR=[link_program_message] )
+	env.Append( JARCOMSTR=[java_library_message] )
+	env.Append( JAVACCOMSTR=[java_compile_source_message] )
+

+ 53 - 69
modules/gdscript/gd_compiler.h

@@ -37,77 +37,65 @@ class GDCompiler {
 
 	const GDParser *parser;
 	struct CodeGen {
-
-
 		GDScript *script;
 		const GDParser::ClassNode *class_node;
 		const GDParser::FunctionNode *function_node;
-
-
-        bool debug_stack;
-
-
-        List< Map<StringName,int> > stack_id_stack;
-		Map<StringName,int> stack_identifiers;
-
-        List<GDFunction::StackDebug> stack_debug;
-        List< Map<StringName,int> > block_identifier_stack;
-        Map<StringName,int> block_identifiers;
-
-
-        void add_stack_identifier(const StringName& p_id,int p_stackpos) {
-
-            stack_identifiers[p_id]=p_stackpos;
-            if (debug_stack) {
-
-                block_identifiers[p_id]=p_stackpos;
-                GDFunction::StackDebug sd;
-                sd.added=true;
-                sd.line=current_line;
-                sd.identifier=p_id;
-                sd.pos=p_stackpos;
-                stack_debug.push_back(sd);
-            }
-        }
-
-        void push_stack_identifiers() {
-
-            stack_id_stack.push_back( stack_identifiers );
-            if (debug_stack) {
-
-                block_identifier_stack.push_back(block_identifiers);
-                block_identifiers.clear();
-            }
-        }
-
-        void pop_stack_identifiers() {
-
-            stack_identifiers = stack_id_stack.back()->get();
-            stack_id_stack.pop_back();
-
-            if (debug_stack) {
-                for (Map<StringName,int>::Element *E=block_identifiers.front();E;E=E->next()) {
-
-                    GDFunction::StackDebug sd;
-                    sd.added=false;
-                    sd.identifier=E->key();
-                    sd.line=current_line;
-                    sd.pos=E->get();
-                    stack_debug.push_back(sd);
-                }
-                block_identifiers=block_identifier_stack.back()->get();
-                block_identifier_stack.pop_back();
-            }
-
-        }
-
-
-	//	int get_identifier_pos(const StringName& p_dentifier) const;
+		bool debug_stack;
+
+	        List< Map<StringName,int> > stack_id_stack;
+			Map<StringName,int> stack_identifiers;
+	
+	        List<GDFunction::StackDebug> stack_debug;
+	        List< Map<StringName,int> > block_identifier_stack;
+	        Map<StringName,int> block_identifiers;
+
+	        void add_stack_identifier(const StringName& p_id,int p_stackpos) {
+	            stack_identifiers[p_id]=p_stackpos;
+	            if (debug_stack) {
+	                block_identifiers[p_id]=p_stackpos;
+	                GDFunction::StackDebug sd;
+	                sd.added=true;
+	                sd.line=current_line;
+	                sd.identifier=p_id;
+	                sd.pos=p_stackpos;
+	                stack_debug.push_back(sd);
+	            }
+	        }
+
+	        void push_stack_identifiers() {
+	            stack_id_stack.push_back( stack_identifiers );
+	            if (debug_stack) {
+	
+	                block_identifier_stack.push_back(block_identifiers);
+	                block_identifiers.clear();
+	            }
+	        }
+
+	        void pop_stack_identifiers() {
+	            stack_identifiers = stack_id_stack.back()->get();
+	            stack_id_stack.pop_back();
+	
+	            if (debug_stack) {
+	                for (Map<StringName,int>::Element *E=block_identifiers.front();E;E=E->next()) {
+	
+	                    GDFunction::StackDebug sd;
+	                    sd.added=false;
+	                    sd.identifier=E->key();
+	                    sd.line=current_line;
+	                    sd.pos=E->get();
+	                    stack_debug.push_back(sd);
+	                }
+	                block_identifiers=block_identifier_stack.back()->get();
+	                block_identifier_stack.pop_back();
+	            }
+	        }
+
+
+		//int get_identifier_pos(const StringName& p_dentifier) const;
 		HashMap<Variant,int,VariantHasher> constant_map;
 		Map<StringName,int> name_map;
 
 		int get_name_map_pos(const StringName& p_identifier) {
-
 			int ret;
 			if (!name_map.has(p_identifier)) {
 				ret=name_map.size();
@@ -118,11 +106,7 @@ class GDCompiler {
 			return ret;
 		}
 
-
-
 		int get_constant_pos(const Variant& p_constant) {
-
-
 			if (constant_map.has(p_constant))
 				return constant_map[p_constant];
 			int pos = constant_map.size();
@@ -134,7 +118,7 @@ class GDCompiler {
 		void alloc_stack(int p_level) { if (p_level >= stack_max) stack_max=p_level+1; }
 		void alloc_call(int p_params) { if (p_params >= call_max) call_max=p_params; }
 
-        int current_line;
+        	int current_line;
 		int stack_max;
 		int call_max;
 	};

+ 3 - 0
platform/osx/detect.py

@@ -84,6 +84,9 @@ def configure(env):
 		env.Append(CPPFLAGS=['-DTYPED_METHOD_BIND'])
 		env["CC"]="clang"
 		env["LD"]="clang++"
+		if (env["colored"]=="yes"):
+			if sys.stdout.isatty():
+				env.Append(CPPFLAGS=["-fcolor-diagnostics"])
 
 	import methods
 

+ 3 - 0
platform/server/detect.py

@@ -40,6 +40,9 @@ def configure(env):
 		env["CC"]="clang"
 		env["CXX"]="clang++"
 		env["LD"]="clang++"
+		if (env["colored"]=="yes"):
+			if sys.stdout.isatty():
+				env.Append(CXXFLAGS=["-fcolor-diagnostics"])
 
 	is64=sys.maxsize > 2**32
 

+ 3 - 0
platform/windows/os_windows.cpp

@@ -56,6 +56,9 @@
 #include "shlobj.h"
 static const WORD MAX_CONSOLE_LINES = 1500;
 
+extern "C" {
+	_declspec(dllexport) DWORD NvOptimusEnablement = 0x00000001;
+}
 
 //#define STDOUT_FILE
 

+ 3 - 0
platform/x11/detect.py

@@ -83,6 +83,9 @@ def configure(env):
 			env.extra_suffix=".llvms"
 		else:
 			env.extra_suffix=".llvm"
+		if (env["colored"]=="yes"):
+			if sys.stdout.isatty():
+				env.Append(CXXFLAGS=["-fcolor-diagnostics"])
 
 
 

+ 1 - 1
platform/x11/export/export.cpp

@@ -11,7 +11,7 @@ void register_x11_exporter() {
 
 	{
 		Ref<EditorExportPlatformPC> exporter = Ref<EditorExportPlatformPC>( memnew(EditorExportPlatformPC) );
-		exporter->set_binary_extension("bin");
+		exporter->set_binary_extension("");
 		exporter->set_release_binary32("linux_x11_32_release");
 		exporter->set_debug_binary32("linux_x11_32_debug");
 		exporter->set_release_binary64("linux_x11_64_release");

+ 103 - 8
scene/animation/tween.cpp

@@ -138,7 +138,8 @@ void Tween::_bind_methods() {
 
 	ObjectTypeDB::bind_method(_MD("interpolate_property","object","property","initial_val","final_val","times_in_sec","trans_type","ease_type","delay"),&Tween::interpolate_property, DEFVAL(0) );
 	ObjectTypeDB::bind_method(_MD("interpolate_method","object","method","initial_val","final_val","times_in_sec","trans_type","ease_type","delay"),&Tween::interpolate_method, DEFVAL(0) );
-	ObjectTypeDB::bind_method(_MD("interpolate_callback","object","times_in_sec","callback","args"),&Tween::interpolate_callback, DEFVAL(Variant()) );
+	ObjectTypeDB::bind_method(_MD("interpolate_callback","object","times_in_sec","callback","arg1", "arg2","arg3","arg4","arg5"),&Tween::interpolate_callback, DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()) );
+	ObjectTypeDB::bind_method(_MD("interpolate_deferred_callback","object","times_in_sec","callback","arg1","arg2","arg3","arg4","arg5"),&Tween::interpolate_deferred_callback, DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()), DEFVAL(Variant()) );
 	ObjectTypeDB::bind_method(_MD("follow_property","object","property","initial_val","target","target_property","times_in_sec","trans_type","ease_type","delay"),&Tween::follow_property, DEFVAL(0) );
 	ObjectTypeDB::bind_method(_MD("follow_method","object","method","initial_val","target","target_method","times_in_sec","trans_type","ease_type","delay"),&Tween::follow_method, DEFVAL(0) );
 	ObjectTypeDB::bind_method(_MD("targeting_property","object","property","initial","initial_val","final_val","times_in_sec","trans_type","ease_type","delay"),&Tween::targeting_property, DEFVAL(0) );
@@ -513,11 +514,33 @@ void Tween::_tween_process(float p_delta) {
 			if(data.finish) {
 
 				Variant::CallError error;
-				if (data.arg.get_type() != Variant::NIL) {
-					Variant *arg[1] = { &data.arg };
-					object->call(data.key, (const Variant **) arg, 1, error);
-				} else {
-					object->call(data.key, NULL, 0, error);
+				if (data.call_deferred) {
+
+					switch (data.args) {
+					case 0:
+						object->call_deferred(data.key); break;
+					case 1:
+						object->call_deferred(data.key, data.arg[0]); break;
+					case 2:
+						object->call_deferred(data.key, data.arg[0], data.arg[1]); break;
+					case 3:
+						object->call_deferred(data.key, data.arg[0], data.arg[1], data.arg[2]); break;
+					case 4:
+						object->call_deferred(data.key, data.arg[0], data.arg[1], data.arg[2], data.arg[3]); break;
+					case 5:
+						object->call_deferred(data.key, data.arg[0], data.arg[1], data.arg[2], data.arg[3], data.arg[4]); break;
+					}
+
+				}
+				else {
+					Variant *arg[5] = {
+						&data.arg[0],
+						&data.arg[1],
+						&data.arg[2],
+						&data.arg[3],
+						&data.arg[4],
+					};
+					object->call(data.key, (const Variant **) arg, data.args, error);
 				}
 			}
 			continue;
@@ -1003,7 +1026,58 @@ bool Tween::interpolate_method(Object *p_object
 bool Tween::interpolate_callback(Object *p_object
 	, real_t p_times_in_sec
 	, String p_callback
-	, Variant p_arg
+	, VARIANT_ARG_DECLARE
+) {
+
+	ERR_FAIL_COND_V(pending_update != 0, false);
+	ERR_FAIL_COND_V(p_object == NULL, false);
+	ERR_FAIL_COND_V(p_times_in_sec < 0, false);
+
+	ERR_FAIL_COND_V(!p_object->has_method(p_callback), false);
+
+	InterpolateData data;
+	data.active = true;
+	data.type = INTER_CALLBACK;
+	data.finish = false;
+	data.call_deferred = false;
+	data.elapsed = 0;
+
+	data.id = p_object->get_instance_ID();
+	data.key = p_callback;
+	data.times_in_sec = p_times_in_sec;
+	data.delay = 0;
+
+	int args=0;
+	if (p_arg5.get_type()!=Variant::NIL)
+		args=5;
+	else if (p_arg4.get_type()!=Variant::NIL)
+		args=4;
+	else if (p_arg3.get_type()!=Variant::NIL)
+		args=3;
+	else if (p_arg2.get_type()!=Variant::NIL)
+		args=2;
+	else if (p_arg1.get_type()!=Variant::NIL)
+		args=1;
+	else 
+		args=0;
+
+	data.args = args;
+	data.arg[0] = p_arg1;
+	data.arg[1] = p_arg2;
+	data.arg[2] = p_arg3;
+	data.arg[3] = p_arg4;
+	data.arg[4] = p_arg5;
+
+	pending_update ++;
+	interpolates.push_back(data);
+	pending_update --;
+	return true;
+}
+
+bool Tween::interpolate_deferred_callback(Object *p_object
+	, real_t p_times_in_sec
+	, String p_callback
+	, VARIANT_ARG_DECLARE
 ) {
 
 	ERR_FAIL_COND_V(pending_update != 0, false);
@@ -1016,13 +1090,34 @@ bool Tween::interpolate_callback(Object *p_object
 	data.active = true;
 	data.type = INTER_CALLBACK;
 	data.finish = false;
+	data.call_deferred = true;
 	data.elapsed = 0;
 
 	data.id = p_object->get_instance_ID();
 	data.key = p_callback;
 	data.times_in_sec = p_times_in_sec;
 	data.delay = 0;
-	data.arg = p_arg;
+
+	int args=0;
+	if (p_arg5.get_type()!=Variant::NIL)
+		args=5;
+	else if (p_arg4.get_type()!=Variant::NIL)
+		args=4;
+	else if (p_arg3.get_type()!=Variant::NIL)
+		args=3;
+	else if (p_arg2.get_type()!=Variant::NIL)
+		args=2;
+	else if (p_arg1.get_type()!=Variant::NIL)
+		args=1;
+	else 
+		args=0;
+
+	data.args = args;
+	data.arg[0] = p_arg1;
+	data.arg[1] = p_arg2;
+	data.arg[2] = p_arg3;
+	data.arg[3] = p_arg4;
+	data.arg[4] = p_arg5;
 
 	pending_update ++;
 	interpolates.push_back(data);

+ 11 - 3
scene/animation/tween.h

@@ -83,6 +83,7 @@ private:
 		bool active;
 		InterpolateType type;
 		bool finish;
+		bool call_deferred;
 		real_t elapsed;
 		ObjectID id;
 		StringName key;
@@ -95,7 +96,8 @@ private:
 		TransitionType trans_type;
 		EaseType ease_type;
 		real_t delay;
-		Variant arg;
+		int args;
+		Variant arg[5];
 	};
 
 	String autoplay;
@@ -178,10 +180,16 @@ public:
 		, real_t p_delay = 0
 	);
 
-	bool interpolate_callback(Object *p_node
+	bool interpolate_callback(Object *p_object
 		, real_t p_times_in_sec
 		, String p_callback
-		, Variant p_arg = Variant()
+		, VARIANT_ARG_DECLARE
+	);
+	
+	bool interpolate_deferred_callback(Object *p_object
+		, real_t p_times_in_sec
+		, String p_callback
+		, VARIANT_ARG_DECLARE
 	);
 
 	bool follow_property(Object *p_node

+ 9 - 2
scene/gui/file_dialog.cpp

@@ -156,7 +156,6 @@ void FileDialog::_action_pressed() {
 
 	if (mode==MODE_SAVE_FILE) {
 		
-		String ext = f.extension();
 		bool valid=false;
 
 		if (filter->get_selected()==filter->get_item_count()-1) {
@@ -184,7 +183,8 @@ void FileDialog::_action_pressed() {
 			if (idx>=0 && idx<filters.size()) {
 
 				String flt=filters[idx].get_slice(";",0);
-				for (int j=0;j<flt.get_slice_count(",");j++) {
+				int filterSliceCount=flt.get_slice_count(",");
+				for (int j=0;j<filterSliceCount;j++) {
 
 					String str = (flt.get_slice(",",j).strip_edges());
 					if (f.match(str)) {
@@ -192,6 +192,13 @@ void FileDialog::_action_pressed() {
 						break;
 					}
 				}
+
+				if (!valid && filterSliceCount>0) {
+					String str = (flt.get_slice(",",0).strip_edges());
+					f+=str.substr(1, str.length()-1);
+					file->set_text(f.get_file());
+					valid=true;
+				}
 			} else {
 				valid=true;
 			}

+ 4 - 3
scene/register_scene_types.cpp

@@ -496,17 +496,18 @@ void register_scene_types() {
 
 	/* REGISTER RESOURCES */
 
+	ObjectTypeDB::register_virtual_type<Shader>();
+	ObjectTypeDB::register_virtual_type<ShaderGraph>();
+	ObjectTypeDB::register_type<CanvasItemShader>();
+
 #ifndef _3D_DISABLED
 	ObjectTypeDB::register_type<Mesh>();
 	ObjectTypeDB::register_virtual_type<Material>();
 	ObjectTypeDB::register_type<FixedMaterial>();
 	ObjectTypeDB::register_type<ShaderMaterial>();
 	ObjectTypeDB::register_type<RoomBounds>();
-	ObjectTypeDB::register_virtual_type<Shader>();
-	ObjectTypeDB::register_virtual_type<ShaderGraph>();
 	ObjectTypeDB::register_type<MaterialShaderGraph>();
 	ObjectTypeDB::register_type<MaterialShader>();
-	ObjectTypeDB::register_type<CanvasItemShader>();
 	ObjectTypeDB::add_compatibility_type("Shader","MaterialShader");
 	ObjectTypeDB::add_compatibility_type("ParticleSystemMaterial","FixedMaterial");
 	ObjectTypeDB::add_compatibility_type("UnshadedMaterial","FixedMaterial");

+ 2 - 16
scene/resources/curve.cpp

@@ -541,19 +541,12 @@ void Curve2D::_bake() const {
 
 
 	Vector2 pos=points[0].pos;
-	int point=0;
-	float ofs=0;
 	List<Vector2> pointlist;
 
 
 	for(int i=0;i<points.size()-1;i++) {
 
-		float slen=points[i].pos.distance_to(points[i+1].pos);
-		float divs = slen / bake_interval;
-		if (divs>1)
-			divs=1;
-
-		float step = divs*0.1; // 10 substeps ought to be enough?
+		float step = 0.1; // at least 10 substeps ought to be enough?
 		float p = 0;
 
 		while(p<1.0) {
@@ -1014,19 +1007,12 @@ void Curve3D::_bake() const {
 
 
 	Vector3 pos=points[0].pos;
-	int point=0;
-	float ofs=0;
 	List<Plane> pointlist;
 	pointlist.push_back(Plane(pos,points[0].tilt));
 
 	for(int i=0;i<points.size()-1;i++) {
 
-		float slen=points[i].pos.distance_to(points[i+1].pos);
-		float divs = slen / bake_interval;
-		if (divs>1)
-			divs=1;
-
-		float step = divs*0.1; // 10 substeps ought to be enough?
+		float step = 0.1; // at least 10 substeps ought to be enough?
 		float p = 0;
 
 		while(p<1.0) {

BIN
scene/resources/default_theme/arrow_down.png


BIN
scene/resources/default_theme/arrow_right.png


BIN
scene/resources/default_theme/button_disabled.png


BIN
scene/resources/default_theme/button_hover.png


BIN
scene/resources/default_theme/button_normal.png


BIN
scene/resources/default_theme/button_pressed.png


BIN
scene/resources/default_theme/checked.png


BIN
scene/resources/default_theme/close_hl.png


+ 355 - 179
scene/resources/default_theme/default_theme.cpp

@@ -168,8 +168,6 @@ void make_default_theme() {
 
 	tex_cache = memnew( TexCacheMap );
 
-	uint32_t last=OS::get_singleton()->get_ticks_msec();
-
 	Ref<Theme> t( memnew( Theme ) );
 
 	//Ref<Font> default_font = make_font(_bi_font_normal_height,_bi_font_normal_ascent,_bi_font_normal_valign,_bi_font_normal_charcount,_bi_font_normal_characters,make_icon(font_normal_png));
@@ -177,167 +175,240 @@ void make_default_theme() {
 	Ref<Font> source_font=make_font2(_builtin_source_font_height,_builtin_source_font_ascent,_builtin_source_font_charcount,&_builtin_source_font_charrects[0][0],_builtin_source_font_kerning_pair_count,&_builtin_source_font_kerning_pairs[0][0],_builtin_source_font_img_width,_builtin_source_font_img_height,_builtin_source_font_img_data);
 	Ref<Font> large_font=make_font2(_builtin_large_font_height,_builtin_large_font_ascent,_builtin_large_font_charcount,&_builtin_large_font_charrects[0][0],_builtin_large_font_kerning_pair_count,&_builtin_large_font_kerning_pairs[0][0],_builtin_large_font_img_width,_builtin_large_font_img_height,_builtin_large_font_img_data);
 
+	// Font Colors
+
+	Color control_font_color = Color::html("e0e0e0");
+	Color control_font_color_low = Color::html("b0b0b0");
+	Color control_font_color_hover = Color::html("f0f0f0");
+	Color control_font_color_disabled = Color(0.9,0.9,0.9,0.2);
+	Color control_font_color_pressed = Color::html("ffffff");
+	Color font_color_selection = Color::html("7d7d7d");
+
+
+	// Panel
+
 	t->set_stylebox("panel","Panel", make_stylebox( panel_bg_png,0,0,0,0) );
 
-	Color control_font_color = Color::html("cfc9d5");
-	Color control_font_color_low = Color::html("bab4c1");
-	Color control_font_color_hover = Color::html("ffffff");
-	Color control_font_color_disabled = Color(0.9,0.9,0.9,0.6);
-	Color control_font_color_pressed = Color::html("bfb9c5");
-	Color font_color_selection = Color::html("715e7d");
-	Ref<Texture> empty_icon = memnew( ImageTexture );
 
-	t->set_stylebox("normal","Button", make_stylebox( button_normal_png,5,5,5,5,8,3,8,4) );
-	t->set_stylebox("pressed","Button", make_stylebox( button_pressed_png,5,5,5,5,3,3,3,3) );
-	t->set_stylebox("hover","Button", make_stylebox( button_hover_png,5,5,5,5,3,0,3,0) );
-	t->set_stylebox("disabled","Button", make_stylebox( button_disabled_png,5,5,5,5,3,3,3,3) );
-	Ref<StyleBoxTexture> focus = make_stylebox( focus_png,6,6,6,6,3,3,3,3);
+
+	// Focus
+
+	Ref<StyleBoxTexture> focus = make_stylebox( focus_png,5,5,5,5);
 	for(int i=0;i<4;i++) {
 		focus->set_expand_margin_size(Margin(i),2);
 	}
+
+
+
+	// Button
+
+	t->set_stylebox("normal","Button", make_stylebox( button_normal_png,4,4,4,4,8,4,8,4) );
+	t->set_stylebox("pressed","Button", make_stylebox( button_pressed_png,4,4,4,4) );
+	t->set_stylebox("hover","Button", make_stylebox( button_hover_png,4,4,4,4) );
+	t->set_stylebox("disabled","Button", make_stylebox( button_disabled_png,4,4,4,4) );
 	t->set_stylebox("focus","Button", focus );
+
 	t->set_font("font","Button", default_font );
+
 	t->set_color("font_color","Button", control_font_color );
 	t->set_color("font_color_pressed","Button", control_font_color_pressed );
 	t->set_color("font_color_hover","Button", control_font_color_hover );
 	t->set_color("font_color_disabled","Button", control_font_color_disabled );
-	t->set_constant("hseparation","Button", 2 );
 
+	t->set_constant("hseparation","Button", 2);
+
+
+
+	// ColorPickerButton
+
+	t->set_stylebox("normal","ColorPickerButton", make_stylebox( button_normal_png,4,4,4,4) );
+	t->set_stylebox("pressed","ColorPickerButton", make_stylebox( button_pressed_png,4,4,4,4) );
+	t->set_stylebox("hover","ColorPickerButton", make_stylebox( button_hover_png,4,4,4,4) );
+	t->set_stylebox("disabled","ColorPickerButton", make_stylebox( button_disabled_png,4,4,4,4) );
+	t->set_stylebox("focus","ColorPickerButton", focus );
 
-	t->set_stylebox("normal","ColorPickerButton", make_stylebox( button_normal_png,7,7,7,7,8,3,8,3) );
-	t->set_stylebox("pressed","ColorPickerButton", make_stylebox( button_pressed_png,5,5,5,5,3,3,3,3) );
-	t->set_stylebox("hover","ColorPickerButton", make_stylebox( button_hover_png,4,4,4,4,3,3,3,3) );
-	t->set_stylebox("disabled","ColorPickerButton", make_stylebox( button_disabled_png,4,4,4,4,3,3,3,3) );
-	t->set_stylebox("focus","ColorPickerButton", make_stylebox( focus_png,5,5,5,5,3,3,3,3) );
 	t->set_font("font","ColorPickerButton", default_font );
+
 	t->set_color("font_color","ColorPickerButton", Color(1,1,1,1) );
 	t->set_color("font_color_pressed","ColorPickerButton", Color(0.8,0.8,0.8,1) );
 	t->set_color("font_color_hover","ColorPickerButton", Color(1,1,1,1) );
-	t->set_color("font_color_disabled","ColorPickerButton", Color(0.9,0.9,0.9,0.6) );
+	t->set_color("font_color_disabled","ColorPickerButton", Color(0.9,0.9,0.9,0.3) );
+
 	t->set_constant("hseparation","ColorPickerButton", 2 );
 
-	t->set_stylebox("normal","ToolButton", make_empty_stylebox(5,3,5,3) );
-	t->set_stylebox("pressed","ToolButton", make_stylebox( button_pressed_png,5,5,5,5,3,3,3,3) );
 
-	t->set_stylebox("hover","ToolButton", make_stylebox( button_normal_png,5,5,5,5,3,3,3,3) );
-	//t->set_stylebox("disabled","ToolButton", make_stylebox( button_disabled_png,5,5,5,5,3,3,3,3) );
-	t->set_stylebox("disabled","ToolButton", make_empty_stylebox(3,3,3,3) );
-	t->set_stylebox("focus","ToolButton", make_stylebox( focus_png,5,5,5,5,3,3,3,3) );
+	// ToolButton
+
+	Ref<StyleBox> tb_empty = memnew( StyleBoxEmpty );
+	tb_empty->set_default_margin(MARGIN_LEFT,8);
+	tb_empty->set_default_margin(MARGIN_RIGHT,8);
+	tb_empty->set_default_margin(MARGIN_TOP,4);
+	tb_empty->set_default_margin(MARGIN_BOTTOM,4);
+
+	t->set_stylebox("normal","ToolButton", tb_empty);
+	t->set_stylebox("pressed","ToolButton", make_stylebox( button_pressed_png,4,4,4,4) );
+	t->set_stylebox("hover","ToolButton", make_stylebox( button_normal_png,4,4,4,4) );
+	t->set_stylebox("disabled","ToolButton", make_empty_stylebox(4,4,4,4) );
+	t->set_stylebox("focus","ToolButton", focus );
+
 	t->set_font("font","ToolButton", default_font );
+
 	t->set_color("font_color","ToolButton", control_font_color );
 	t->set_color("font_color_pressed","ToolButton", control_font_color_pressed );
 	t->set_color("font_color_hover","ToolButton", control_font_color_hover );
-	t->set_color("font_color_disabled","ToolButton", Color(0.9,0.95,1,0.6) );
-	t->set_constant("hseparation","ToolButton", 2 );
+	t->set_color("font_color_disabled","ToolButton", Color(0.9,0.95,1,0.3) );
+
+	t->set_constant("hseparation","ToolButton", 0 );
+
+
+
+	// OptionButton
 
-	t->set_stylebox("normal","OptionButton", make_stylebox( option_button_normal_png,4,4,20,5,8,3,20,4) );
-	t->set_stylebox("pressed","OptionButton", make_stylebox( option_button_pressed_png,4,4,20,5,3,3,3,3) );
-	t->set_stylebox("hover","OptionButton", make_stylebox( option_button_hover_png,4,4,20,5,3,3,3,3) );
-	t->set_stylebox("disabled","OptionButton", make_stylebox( option_button_disabled_png,4,4,20,5,3,3,3,3) );
+	t->set_stylebox("normal","OptionButton", make_stylebox( option_button_normal_png,5,5,21,5,8,4,8,4) );
+	t->set_stylebox("pressed","OptionButton", make_stylebox( option_button_pressed_png,5,5,21,5) );
+	t->set_stylebox("hover","OptionButton", make_stylebox( option_button_hover_png,5,5,21,5) );
+	t->set_stylebox("disabled","OptionButton", make_stylebox( option_button_disabled_png,5,5,21,5) );
 	t->set_stylebox("focus","OptionButton", focus );
-	t->set_constant("arrow_margin","OptionButton", 1 );
+
 	t->set_icon("arrow","OptionButton", make_icon( option_arrow_png ) );
 
 	t->set_font("font","OptionButton", default_font );
+
 	t->set_color("font_color","OptionButton", control_font_color );
 	t->set_color("font_color_pressed","OptionButton", control_font_color_pressed );
 	t->set_color("font_color_hover","OptionButton", control_font_color_hover );
 	t->set_color("font_color_disabled","OptionButton", control_font_color_disabled );
 
 	t->set_constant("hseparation","OptionButton", 2 );
+	t->set_constant("arrow_margin","OptionButton", 2 );
+
+
 
-	t->set_stylebox("normal","MenuButton", make_stylebox( button_normal_png,6,6,6,6,3,3,3,3) );
-	t->set_stylebox("pressed","MenuButton", make_stylebox( tool_button_pressed_png ,6,6,6,6,3,3,3,3) );
-	t->set_stylebox("hover","MenuButton", make_stylebox( button_normal_png,6,6,6,6,3,3,3,3) );
+	// MenuButton
+
+	t->set_stylebox("normal","MenuButton", make_stylebox( button_normal_png,4,4,4,4,8,4,8,4) );
+	t->set_stylebox("pressed","MenuButton", make_stylebox( tool_button_pressed_png ,4,4,4,4) );
+	t->set_stylebox("hover","MenuButton", make_stylebox( button_normal_png,4,4,4,4) );
 	t->set_stylebox("disabled","MenuButton", make_empty_stylebox(0,0,0,0) );
+
 	t->set_font("font","MenuButton", default_font );
+
 	t->set_color("font_color","MenuButton", control_font_color );
 	t->set_color("font_color_pressed","MenuButton", control_font_color_pressed );
 	t->set_color("font_color_hover","MenuButton", control_font_color_hover );
 	t->set_color("font_color_disabled","MenuButton", Color(1,1,1,0.3) );
-	t->set_stylebox("focus","OptionButton", Ref<StyleBox>( memnew( StyleBoxEmpty )) );
 
-	t->set_constant("hseparation","MenuButton", 2 );
+	t->set_constant("hseparation","MenuButton", 0 );
+
+
+
+	// CheckButton
 	
 	Ref<StyleBox> cb_empty = memnew( StyleBoxEmpty );
+	cb_empty->set_default_margin(MARGIN_LEFT,6);
 	cb_empty->set_default_margin(MARGIN_RIGHT,70);
 	cb_empty->set_default_margin(MARGIN_TOP,4);
 	cb_empty->set_default_margin(MARGIN_BOTTOM,4);
+
 	t->set_stylebox("normal","CheckButton", cb_empty );
 	t->set_stylebox("pressed","CheckButton", cb_empty );
 	t->set_stylebox("disabled","CheckButton", cb_empty );
 	t->set_stylebox("hover","CheckButton", cb_empty );
-	//t->set_stylebox("hover","CheckButton", make_stylebox( button_hover_png,5,5,5,5,3,3,3,3) );
+	t->set_stylebox("focus","CheckButton", focus );
+
+	t->set_icon("on","CheckButton", make_icon(toggle_on_png) );
+	t->set_icon("off","CheckButton", make_icon(toggle_off_png));
+
 	t->set_font("font","CheckButton", default_font );
+
 	t->set_color("font_color","CheckButton", control_font_color );
 	t->set_color("font_color_pressed","CheckButton", control_font_color_pressed );
 	t->set_color("font_color_hover","CheckButton", control_font_color_hover );
 	t->set_color("font_color_disabled","CheckButton", control_font_color_disabled );
-	t->set_icon("on","CheckButton", make_icon(toggle_on_png) );
-	t->set_icon("off","CheckButton", make_icon(toggle_off_png));
-	t->set_stylebox("focus","CheckButton", focus );
+
 	t->set_constant("hseparation","CheckButton",4);
 	t->set_constant("check_vadjust","CheckButton",0);
 
+
+
+	// Label
 	            
 	t->set_font("font","Label", default_font );
+
 	t->set_color("font_color","Label", Color(1,1,1) );
 	t->set_color("font_color_shadow","Label", Color(0,0,0,0) );
+
 	t->set_constant("shadow_offset_x","Label", 1 );
 	t->set_constant("shadow_offset_y","Label", 1 );
 	t->set_constant("shadow_as_outline","Label", 0 );
 
-	t->set_stylebox("normal","LineEdit", make_stylebox( line_edit_png,4,4,4,4,3,4,3,4) );
-	t->set_stylebox("focus","LineEdit", focus );
-	t->set_stylebox("read_only","LineEdit", make_stylebox( line_edit_disabled_png,6,6,6,6,4,4,4,4) );
-	Image n(line_edit_png);
-	Image nf(line_edit_focus_png);
 
 
+	// LineEdit
+
+	t->set_stylebox("normal","LineEdit", make_stylebox( line_edit_png,5,5,5,5) );
+	t->set_stylebox("focus","LineEdit", focus );
+	t->set_stylebox("read_only","LineEdit", make_stylebox( line_edit_disabled_png,6,6,6,6) );
 
 	t->set_font("font","LineEdit", default_font );
+
 	t->set_color("font_color","LineEdit", control_font_color );
 	t->set_color("font_color_selected","LineEdit", Color(0,0,0) );
 	t->set_color("cursor_color","LineEdit", control_font_color_hover );
 	t->set_color("selection_color","LineEdit", font_color_selection );
-	t->set_constant("minimum_spaces","LineEdit", 8 );
 
-	t->set_stylebox("bg","ProgressBar", make_stylebox( progress_bar_png,5,5,5,5,0,0,0,0) );
-	t->set_stylebox("fg","ProgressBar", make_stylebox( progress_fill_png,5,5,5,5,2,2,2,2) );
+	t->set_constant("minimum_spaces","LineEdit", 12 );
+
+
+
+	// ProgressBar
+
+	t->set_stylebox("bg","ProgressBar", make_stylebox( progress_bar_png,4,4,4,4,0,0,0,0) );
+	t->set_stylebox("fg","ProgressBar", make_stylebox( progress_fill_png,6,6,6,6,2,1,2,1) );
+
 	t->set_font("font","ProgressBar", default_font );
-	t->set_color("font_color","ProgressBar", control_font_color );
+
+	t->set_color("font_color","ProgressBar", control_font_color_hover );
 	t->set_color("font_color_shadow","ProgressBar", Color(0,0,0) );
 
-	t->set_icon("tab","TextEdit", make_icon( tab_png) );
 
-	t->set_stylebox("normal","TextEdit", make_stylebox( tree_bg_png,12,12,12,12,3,3,3,3) );
-	t->set_stylebox("focus","TextEdit", focus );
 
-	t->set_stylebox("completion","TextEdit", make_stylebox( tree_bg_png,4,4,4,5,3,3,3,3) );
-	t->set_constant("completion_lines","TextEdit", 7 );
-	t->set_constant("completion_max_width","TextEdit", 50 );
-	t->set_constant("completion_scroll_width","TextEdit", 3 );
-	t->set_color("completion_scroll_color","TextEdit", control_font_color_pressed );
-	t->set_color("completion_existing","TextEdit", control_font_color );
+	// TextEdit
 
-	//t->set_font("font","TextEdit", mono_font );
+	t->set_stylebox("normal","TextEdit", make_stylebox( tree_bg_png,3,3,3,3) );
+	t->set_stylebox("focus","TextEdit", focus );
+	t->set_stylebox("completion","TextEdit", make_stylebox( tree_bg_png,3,3,3,3) );
+
+	t->set_icon("tab","TextEdit", make_icon( tab_png) );
 
 	t->set_font("font","TextEdit", default_font );
+
+	t->set_color("completion_scroll_color","TextEdit", control_font_color_pressed );
+	t->set_color("completion_existing","TextEdit", control_font_color );
 	t->set_color("font_color","TextEdit", control_font_color );
 	t->set_color("font_color_selected","TextEdit", Color(0,0,0) );
 	t->set_color("selection_color","TextEdit", font_color_selection );
 	t->set_color("mark_color","TextEdit", Color(1.0,0.4,0.4,0.4) );
-	t->set_color("breakpoint_color","TextEdit", Color(0.8,0.8,0.4,0.4) );
-	t->set_color("current_line_color","TextEdit", Color(0.3,0.5,0.8,0.15) );
+	t->set_color("breakpoint_color","TextEdit", Color(0.8,0.8,0.4,0.2) );
+	t->set_color("current_line_color","TextEdit", Color(0.25,0.25,0.26,0.8) );
 	t->set_color("cursor_color","TextEdit", control_font_color );
 	t->set_color("symbol_color","TextEdit", control_font_color_hover );
 	t->set_color("brace_mismatch_color","TextEdit", Color(1,0.2,0.2) );
-	t->set_constant("line_spacing","TextEdit",1 );
 
-	t->set_stylebox("scroll","HScrollBar", make_stylebox( hscroll_bg_png,3,3,3,3,0,0,0,0) );
-	t->set_stylebox("scroll_focus","HScrollBar", make_stylebox( hscroll_bg_png,3,3,3,3,0,0,0,0) );
-	t->set_stylebox("grabber","HScrollBar", make_stylebox( hscroll_grabber_png,3,3,3,3,2,2,2,2) );
-	t->set_stylebox("grabber_hilite","HScrollBar", make_stylebox( hscroll_grabber_hl_png,3,3,3,3,2,2,2,2) );
+	t->set_constant("completion_lines","TextEdit", 7 );
+	t->set_constant("completion_max_width","TextEdit", 50 );
+	t->set_constant("completion_scroll_width","TextEdit", 3 );
+	t->set_constant("line_spacing","TextEdit",4 );
+
+
+	Ref<Texture> empty_icon = memnew( ImageTexture );
+
+	// HScrollBar
+
+	t->set_stylebox("scroll","HScrollBar", make_stylebox( scroll_bg_png,3,3,3,3,0,0,0,0) );
+	t->set_stylebox("scroll_focus","HScrollBar", make_stylebox( scroll_bg_png,3,3,3,3,0,0,0,0) );
+	t->set_stylebox("grabber","HScrollBar", make_stylebox( scroll_grabber_png,3,3,3,3,2,2,2,2) );
+	t->set_stylebox("grabber_hilite","HScrollBar", make_stylebox( scroll_grabber_hl_png,3,3,3,3,2,2,2,2) );
 
 	t->set_icon("increment","HScrollBar",empty_icon);
 	t->set_icon("increment_hilite","HScrollBar",empty_icon);
@@ -345,77 +416,112 @@ void make_default_theme() {
 	t->set_icon("decrement_hilite","HScrollBar",empty_icon);
 
 
-	t->set_stylebox("scroll","VScrollBar", make_stylebox( vscroll_bg_png,3,3,3,3,0,0,0,0) );
-	t->set_stylebox("scroll_focus","VScrollBar", make_stylebox( vscroll_bg_png,3,3,3,3,0,0,0,0) );
-	t->set_stylebox("grabber","VScrollBar", make_stylebox( vscroll_grabber_png,3,3,3,3,2,2,2,2) );
-	t->set_stylebox("grabber_hilite","VScrollBar", make_stylebox( vscroll_grabber_hl_png,3,3,3,3,2,2,2,2) );
+
+	// VScrollBar
+
+	t->set_stylebox("scroll","VScrollBar", make_stylebox( scroll_bg_png,3,3,3,3,0,0,0,0) );
+	t->set_stylebox("scroll_focus","VScrollBar", make_stylebox( scroll_bg_png,3,3,3,3,0,0,0,0) );
+	t->set_stylebox("grabber","VScrollBar", make_stylebox( scroll_grabber_png,3,3,3,3,2,2,2,2) );
+	t->set_stylebox("grabber_hilite","VScrollBar", make_stylebox( scroll_grabber_hl_png,3,3,3,3,2,2,2,2) );
+
 	t->set_icon("increment","VScrollBar",empty_icon);
 	t->set_icon("increment_hilite","VScrollBar",empty_icon);
 	t->set_icon("decrement","VScrollBar",empty_icon);
 	t->set_icon("decrement_hilite","VScrollBar",empty_icon);
 
-	t->set_stylebox("slider","HSlider", make_stylebox( hslider_bg_png,5,5,5,5,1,1,1,1) );
-	t->set_stylebox("focus","HSlider", make_stylebox( focus_png,3,3,3,3,1,1,1,1) );
-	//t->set_stylebox("slider_focus","HSlider", make_stylebox( hslider_bg_focus_png,6,6,6,6,2,2,2,2) );
+
+
+	// HSlider
+
+	t->set_stylebox("slider","HSlider", make_stylebox( hslider_bg_png,4,4,4,4) );
+	t->set_stylebox("grabber_hilite","HSlider", make_stylebox( hslider_grabber_hl_png,6,6,6,6) );
+	t->set_stylebox("focus","HSlider", focus );
+
 	t->set_icon("grabber","HSlider", make_icon( hslider_grabber_png ) );
 	t->set_icon("grabber_hilite","HSlider", make_icon( hslider_grabber_hl_png ) );
 	t->set_icon("tick","HSlider", make_icon( hslider_tick_png ) );
-	t->set_stylebox("grabber_hilite","HSlider", make_stylebox( hslider_grabber_hl_png,6,6,6,6,2,2,2,2) );
 
-	t->set_stylebox("slider","VSlider", make_stylebox( vslider_bg_png,5,5,5,5,1,1,1,1) );
-	t->set_stylebox("focus","HSlider", make_stylebox( focus_png,3,3,3,3,1,1,1,1) );
-	//t->set_stylebox("slider_focus","VSlider", make_stylebox( vslider_bg_focus_png,6,6,6,6,2,2,2,2) );
+
+
+
+	// VSlider
+
+	t->set_stylebox("slider","VSlider", make_stylebox( vslider_bg_png,4,4,4,4) );
+	t->set_stylebox("grabber_hilite","VSlider", make_stylebox( vslider_grabber_hl_png,6,6,6,6) );
+	t->set_stylebox("focus","HSlider", focus );
+
 	t->set_icon("grabber","VSlider", make_icon( vslider_grabber_png)  );
 	t->set_icon("grabber_hilite","VSlider", make_icon( vslider_grabber_hl_png ) );
 	t->set_icon("tick","VSlider", make_icon( vslider_tick_png ) );
-	t->set_stylebox("grabber_hilite","VSlider", make_stylebox( vslider_grabber_hl_png,6,6,6,6,2,2,2,2) );
+
+
+
+	// SpinBox
 
 	t->set_icon("updown","SpinBox",make_icon(spinbox_updown_png));
 
 
-	Ref<StyleBoxTexture> style_pp_win = make_stylebox( popup_window_png,6,28,6,7,8,8,8,8);
+
+	// WindowDialog
+
+	Ref<StyleBoxTexture> style_pp_win = make_stylebox( popup_window_png,6,28,6,7);
 	for(int i=0;i<4;i++)
 		style_pp_win->set_expand_margin_size((Margin)i,3);
 	style_pp_win->set_expand_margin_size(MARGIN_TOP,26);
+
 	t->set_stylebox("panel","WindowDialog", style_pp_win );
-	t->set_constant("titlebar_height","WindowDialog", 18 );
-	t->set_constant("title_height","WindowDialog", 20 );
-	t->set_font("title_font","WindowDialog", large_font );
-	t->set_color("title_color","WindowDialog", Color(0,0,0) );
+
 	t->set_icon("close","WindowDialog", make_icon( close_png ) );
 	t->set_icon("close_hilite","WindowDialog", make_icon( close_hl_png ) );
+
+	t->set_font("title_font","WindowDialog", large_font );
+
+	t->set_color("title_color","WindowDialog", Color(0,0,0) );
+
 	t->set_constant("close_h_ofs","WindowDialog", 22 );
 	t->set_constant("close_v_ofs","WindowDialog", 20 );
+	t->set_constant("titlebar_height","WindowDialog", 18 );
+	t->set_constant("title_height","WindowDialog", 20 );
 
 
-	Ref<StyleBoxTexture> style_pp = make_stylebox( popup_bg_png,6,19,6,7,8,8,8,8);
-	style_pp->set_expand_margin_size(MARGIN_LEFT,2);
-	style_pp->set_expand_margin_size(MARGIN_TOP,3);
-	style_pp->set_expand_margin_size(MARGIN_RIGHT,2);
-	style_pp->set_expand_margin_size(MARGIN_BOTTOM,3);
 
+	// Popup
 
-	t->set_stylebox("panel","PopupMenu", style_pp );
-	t->set_stylebox("panel","PopupPanel", style_pp );
+	Ref<StyleBoxTexture> style_pp = make_stylebox( popup_bg_png,4,4,4,4,8,8,8,8);
 
 	Ref<StyleBoxTexture> selected = make_stylebox( selection_png,6,6,6,6);
 	for(int i=0;i<4;i++) {
 		selected->set_expand_margin_size(Margin(i),2);
 	}
 
-	t->set_stylebox("panel_disabled","PopupMenu", make_stylebox( popup_bg_disabled_png,5,5,5,5) );
+	t->set_stylebox("panel","PopupPanel", style_pp );
+
+
+
+
+	// PopupMenu
+
+	t->set_stylebox("panel","PopupMenu", make_stylebox( popup_bg_png,4,4,4,4,10,10,10,10) );
+	t->set_stylebox("panel_disabled","PopupMenu", make_stylebox( popup_bg_disabled_png,4,4,4,4) );
 	t->set_stylebox("hover","PopupMenu", selected );
 	t->set_stylebox("separator","PopupMenu", make_stylebox( vseparator_png,3,3,3,3) );
-	t->set_icon("checked","PopupMenu", make_icon(popup_checked_png) );
-	t->set_icon("unchecked","PopupMenu", make_icon(popup_unchecked_png) );
+
+	t->set_icon("checked","PopupMenu", make_icon(checked_png) );
+	t->set_icon("unchecked","PopupMenu", make_icon(unchecked_png) );
 	t->set_icon("submenu","PopupMenu", make_icon(submenu_png) );
+
 	t->set_font("font","PopupMenu", default_font );
+
 	t->set_color("font_color","PopupMenu", control_font_color );
 	t->set_color("font_color_accel","PopupMenu", Color(0.7,0.7,0.7,0.8) );
 	t->set_color("font_color_disabled","PopupMenu", Color(0.4,0.4,0.4,0.8) );
 	t->set_color("font_color_hover","PopupMenu", control_font_color );
-	t->set_constant("hseparation","PopupMenu",2);
-	t->set_constant("vseparation","PopupMenu",1);
+
+	t->set_constant("hseparation","PopupMenu",4);
+	t->set_constant("vseparation","PopupMenu",4);
+
+
+	// GraphNode
 
 	Ref<StyleBoxTexture> graphsb = make_stylebox(graph_node_png,6,24,6,5,16,24,16,5);
 	//graphsb->set_expand_margin_size(MARGIN_LEFT,10);
@@ -431,57 +537,65 @@ void make_default_theme() {
 	t->set_constant("port_offset","GraphNode", 3);
 
 
-	t->set_stylebox("bg","Tree", make_stylebox( tree_bg_png,4,4,4,5,3,3,3,3) );
+	// Tree
+
+	Ref<StyleBoxTexture> tree_selected = make_stylebox( selection_png,4,4,4,4,8,0,8,0);
+	Ref<StyleBoxTexture> tree_selected_oof = make_stylebox( selection_oof_png,4,4,4,4,8,0,8,0);
+
+	t->set_stylebox("bg","Tree", make_stylebox( tree_bg_png,4,4,4,5) );
 	t->set_stylebox("bg_focus","Tree", focus );
-	Ref<StyleBoxTexture> tree_selected = make_stylebox( selection_png,4,4,4,4);
-	Ref<StyleBoxTexture> tree_selected_oof = make_stylebox( selection_oof_png,4,4,4,4);
-	for(int i=0;i<4;i++) {
-		tree_selected->set_expand_margin_size(Margin(i),2);
-		tree_selected_oof->set_expand_margin_size(Margin(i),2);
-	}
 	t->set_stylebox("selected","Tree", tree_selected_oof );
 	t->set_stylebox("selected_focus","Tree", tree_selected );
-	t->set_stylebox("completion_selected","TextEdit", tree_selected );
-
-
 	t->set_stylebox("cursor","Tree", focus );
 	t->set_stylebox("cursor_unfocused","Tree", focus );
-	t->set_stylebox("button_pressed","Tree",make_stylebox( button_pressed_png,5,5,5,5,3,3,3,3));
+	t->set_stylebox("button_pressed","Tree",make_stylebox( button_pressed_png,4,4,4,4));
+	t->set_stylebox("title_button_normal","Tree", make_stylebox( tree_title_png,4,4,4,4) );
+	t->set_stylebox("title_button_pressed","Tree", make_stylebox( tree_title_pressed_png,4,4,4,4) );
+	t->set_stylebox("title_button_hover","Tree", make_stylebox( tree_title_png,4,4,4,4) );
+
+	t->set_icon("checked","Tree",make_icon(checked_png));
+	t->set_icon("unchecked","Tree",make_icon(unchecked_png));
+	t->set_icon("updown","Tree",make_icon(updown_png));
+	t->set_icon("select_arrow","Tree",make_icon(dropdown_png));
+	t->set_icon("arrow","Tree",make_icon(arrow_down_png));
+	t->set_icon("arrow_collapsed","Tree",make_icon(arrow_right_png));
+
+	t->set_font("title_button_font","Tree", default_font );
 	t->set_font("font","Tree", default_font );
+
+	t->set_color("title_button_color","Tree", control_font_color );
 	t->set_color("font_color","Tree", control_font_color_low );
-	t->set_color("font_color_selected","Tree", control_font_color );
+	t->set_color("font_color_selected","Tree", control_font_color_pressed );
 	t->set_color("selection_color","Tree", Color(0.1,0.1,1,0.8) );
 	t->set_color("cursor_color","Tree", Color(0,0,0) );
 	t->set_color("guide_color","Tree", Color(0,0,0,0.1) );
-	t->set_constant("hseparation","Tree",2);
-	t->set_constant("vseparation","Tree",1);
-	t->set_constant("guide_width","Tree",1);
+
+	t->set_constant("hseparation","Tree",4);
+	t->set_constant("vseparation","Tree",2);
+	t->set_constant("guide_width","Tree",2);
 	t->set_constant("item_margin","Tree",12);
-	t->set_constant("button_margin","Tree",2);
+	t->set_constant("button_margin","Tree",4);
 
-	t->set_stylebox("title_button_normal","Tree", make_stylebox( tree_title_png,4,4,4,4,3,3,3,3) );
-	t->set_stylebox("title_button_pressed","Tree", make_stylebox( tree_title_pressed_png,4,4,4,4,3,3,3,3) );
-	t->set_stylebox("title_button_hover","Tree", make_stylebox( tree_title_png,4,4,4,4,3,3,3,3) );
-	t->set_color("title_button_color","Tree", control_font_color );
-	t->set_font("title_button_font","Tree", default_font );
 
 
-	t->set_icon("checked","Tree",make_icon(checked_png));
-	t->set_icon("unchecked","Tree",make_icon(unchecked_png));
-	t->set_icon("updown","Tree",make_icon(updown_png));
-	t->set_icon("select_arrow","Tree",make_icon(dropdown_png));
-	t->set_icon("arrow","Tree",make_icon(arrow_down_png));
-	t->set_icon("arrow_collapsed","Tree",make_icon(arrow_right_png));
+	// TextEdit
 
-	t->set_stylebox("tab_fg","TabContainer", make_stylebox( tab_current_png,5,5,5,5,8,3,8,3) );
-	t->set_stylebox("tab_bg","TabContainer", make_stylebox( tab_behind_png,5,5,5,5,8,4,8,3) );
-	Ref<StyleBoxTexture> tc_sb = make_stylebox( tab_container_bg_png,6,19,6,7);
+	t->set_stylebox("completion_selected","TextEdit", tree_selected );
+
+
+
+	// TabContainer
+
+	Ref<StyleBoxTexture> tc_sb = make_stylebox( tab_container_bg_png,4,4,4,4);
 	for(int i=0;i<4;i++) {
-		tc_sb->set_default_margin(Margin(i),7);
+		tc_sb->set_default_margin(Margin(i),4);
 		tc_sb->set_expand_margin_size(Margin(i),2);
 	}
-	//tc_sb->set_expand_margin_size(MARGIN_TOP,2);
-	//tc_sb->set_default_margin(MARGIN_TOP,6);
+	tc_sb->set_expand_margin_size(MARGIN_TOP,2);
+	tc_sb->set_default_margin(MARGIN_TOP,8);
+
+	t->set_stylebox("tab_fg","TabContainer", make_stylebox( tab_current_png,4,4,4,4,16,4,16,4) );
+	t->set_stylebox("tab_bg","TabContainer", make_stylebox( tab_behind_png,4,4,4,4,16,6,16,4) );
 	t->set_stylebox("panel","TabContainer", tc_sb );
 
 	t->set_icon("increment","TabContainer",make_icon( scroll_button_right_png));
@@ -490,116 +604,178 @@ void make_default_theme() {
 	t->set_icon("decrement_hilite","TabContainer",make_icon( scroll_button_left_hl_png));
 
 	t->set_font("font","TabContainer", default_font );
+
 	t->set_color("font_color_fg","TabContainer", control_font_color_hover );
-	t->set_color("font_color_bg","TabContainer", control_font_color );
-	t->set_constant("side_margin","TabContainer", 5 );
+	t->set_color("font_color_bg","TabContainer", control_font_color_low );
+
+	t->set_constant("side_margin","TabContainer", 8 );
 	t->set_constant("top_margin","TabContainer", 24);
-	t->set_constant("label_valign_fg","TabContainer", 4);
-	t->set_constant("label_valign_bg","TabContainer", 5);
-	t->set_constant("hseparation","TabContainer", 2);
+	t->set_constant("label_valign_fg","TabContainer", 0);
+	t->set_constant("label_valign_bg","TabContainer", 2);
+	t->set_constant("hseparation","TabContainer", 4);
+
+
+
+	// Tabs
+
+	t->set_stylebox("tab_fg","Tabs", make_stylebox( tab_current_png,4,4,4,4,16,4,16,4) );
+	t->set_stylebox("tab_bg","Tabs", make_stylebox( tab_behind_png,4,4,4,4,16,6,16,4) );
+	t->set_stylebox("panel","Tabs", make_stylebox( tab_container_bg_png,4,4,4,4) );
 
-	t->set_stylebox("tab_fg","Tabs", make_stylebox( tab_current_png,5,5,5,5,8,3,8,3) );
-	t->set_stylebox("tab_bg","Tabs", make_stylebox( tab_behind_png,5,5,5,5,8,4,8,3) );
-	t->set_stylebox("panel","Tabs", make_stylebox( tab_container_bg_png,3,3,3,3) );
 	t->set_font("font","Tabs", default_font );
+
 	t->set_color("font_color_fg","Tabs", control_font_color_hover );
-	t->set_color("font_color_bg","Tabs", control_font_color );
+	t->set_color("font_color_bg","Tabs", control_font_color_low );
+
 	t->set_constant("top_margin","Tabs", 24);
-	t->set_constant("label_valign_fg","Tabs", 4);
-	t->set_constant("label_valign_bg","Tabs", 5);
-	t->set_constant("hseparation","Tabs", 2);
+	t->set_constant("label_valign_fg","Tabs", 0);
+	t->set_constant("label_valign_bg","Tabs", 2);
+	t->set_constant("hseparation","Tabs", 4);
+
+
+
+	// Separators
 
 	t->set_stylebox("separator","HSeparator", make_stylebox( vseparator_png,3,3,3,3) );
-	t->set_constant("separation","HSeparator", 7);
 	t->set_stylebox("separator","VSeparator", make_stylebox( hseparator_png,3,3,3,3) );
-	t->set_constant("separation","VSeparator", 7);
 
 	t->set_icon("close","Icons", make_icon(icon_close_png));
 	t->set_font("source","Fonts", source_font);
 	t->set_font("normal","Fonts", default_font );
 	t->set_font("large","Fonts", large_font );
 
+	t->set_constant("separation","HSeparator", 4);
+	t->set_constant("separation","VSeparator", 4);
+
 
+	// Dialogs
 
-	t->set_constant("margin","Dialogs",10);
+	t->set_constant("margin","Dialogs",8);
 	t->set_constant("button_margin","Dialogs",32);
+
+
+
+	// FileDialog
 	
 	t->set_icon("folder","FileDialog",make_icon(icon_folder_png));
+
 	t->set_color("files_disabled","FileDialog",Color(0,0,0,0.7));
 
+
+
+	// colorPicker
+
 	t->set_constant("value_height","ColorPicker", 23 );
 	t->set_constant("value_width","ColorPicker", 50);
 	t->set_constant("color_width","ColorPicker", 100);
-	t->set_constant("label_width","ColorPicker", 15);
+	t->set_constant("label_width","ColorPicker", 20);
 	t->set_constant("hseparator","ColorPicker", 4);
 
-	Ref<StyleBoxTexture> style_tt = make_stylebox( tooltip_bg_png,9,9,9,9,8,8,8,8);
+
+
+	// TooltipPanel
+
+	Ref<StyleBoxTexture> style_tt = make_stylebox( tooltip_bg_png,4,4,4,4);
 	for(int i=0;i<4;i++)
 		style_tt->set_expand_margin_size((Margin)i,4);
+
 	t->set_stylebox("panel","TooltipPanel", style_tt );
+
 	t->set_font("font","TooltipLabel", default_font );
+
 	t->set_color("font_color","TooltipLabel", Color(0,0,0) );
 	t->set_color("font_color_shadow","TooltipLabel", Color(0,0,0,0.1) );
+
 	t->set_constant("shadow_offset_x","TooltipLabel", 1 );
 	t->set_constant("shadow_offset_y","TooltipLabel", 1 );
 
+
+
+	// RichTextLabel
+
+	t->set_stylebox("focus","RichTextLabel", focus );
+
 	t->set_font("default_font","RichTextLabel", default_font );
+
 	t->set_color("default_color","RichTextLabel", control_font_color );
 	t->set_color("font_color_selected","RichTextLabel", font_color_selection );
 	t->set_color("selection_color","RichTextLabel", Color(0.1,0.1,1,0.8) );
+
 	t->set_constant("line_separation","RichTextLabel", 1 );
-	t->set_stylebox("focus","RichTextLabel", focus );
 
 
+
+	// Containers
+
+	t->set_stylebox("bg","VSplitContainer", make_stylebox( vsplit_bg_png,1,1,1,1) );
+	t->set_stylebox("bg","HSplitContainer", make_stylebox( hsplit_bg_png,1,1,1,1) );
+
+	t->set_icon("grabber","VSplitContainer",make_icon(vsplitter_png));
+	t->set_icon("grabber","HSplitContainer",make_icon(hsplitter_png));
+
 	t->set_constant("separation","HBoxContainer",4);
 	t->set_constant("separation","VBoxContainer",4);
-	t->set_constant("margin","MarginContainer",15);
-
+	t->set_constant("margin","MarginContainer",8);
 	t->set_constant("separation","GridContainer",4);
-
-	t->set_constant("separation","HSplitContainer",8);
-	t->set_constant("separation","VSplitContainer",8);
+	t->set_constant("separation","HSplitContainer",12);
+	t->set_constant("separation","VSplitContainer",12);
 	t->set_constant("autohide","HSplitContainer",1);
 	t->set_constant("autohide","VSplitContainer",1);
-	t->set_icon("grabber","VSplitContainer",make_icon(vsplitter_png));
-	t->set_icon("grabber","HSplitContainer",make_icon(hsplitter_png));
 
-	t->set_stylebox("bg","VSplitContainer", make_stylebox( vsplit_bg_png,1,1,1,1,1,1,1,1) );
-	t->set_stylebox("bg","HSplitContainer", make_stylebox( hsplit_bg_png,1,1,1,1,1,1,1,1) );
 
-	t->set_stylebox("normal","HButtonArray", make_stylebox( button_normal_png,2,2,2,2,3,3,3,3) );
-	t->set_stylebox("selected","HButtonArray", make_stylebox( button_pressed_png,5,5,5,5,3,3,3,3) );
-	t->set_stylebox("hover","HButtonArray", make_stylebox( button_hover_png,5,5,5,5,3,3,3,3) );
-	t->set_stylebox("focus","HButtonArray", make_stylebox( focus_png,5,5,5,5,3,3,3,3) );
+
+	// HButtonArray
+
+	t->set_stylebox("normal","HButtonArray", make_stylebox( button_normal_png,4,4,4,4,0,4,22,4) );
+	t->set_stylebox("selected","HButtonArray", make_stylebox( button_pressed_png,4,4,4,4,0,4,22,4) );
+	t->set_stylebox("hover","HButtonArray", make_stylebox( button_hover_png,4,4,4,4) );
+
 	t->set_font("font","HButtonArray", default_font);
 	t->set_font("font_selected","HButtonArray", default_font);
-	t->set_color("font_color","HButtonArray", Color(1,1,1,1) );
-	t->set_color("font_color_selected","HButtonArray", Color(0.7,0.7,0.7,1) );
-	t->set_constant("icon_separator","HButtonArray", 2 );
-	t->set_constant("button_separator","HButtonArray", 3 );
-
-	t->set_stylebox("normal","VButtonArray", make_stylebox( button_normal_png,2,2,2,2,3,3,3,3) );
-	t->set_stylebox("selected","VButtonArray", make_stylebox( button_pressed_png,5,5,5,5,3,3,3,3) );
-	t->set_stylebox("hover","VButtonArray", make_stylebox( button_hover_png,5,5,5,5,3,3,3,3) );
-	t->set_stylebox("focus","VButtonArray", make_stylebox( focus_png,5,5,5,5,3,3,3,3) );
+
+	t->set_color("font_color","HButtonArray", control_font_color_low );
+	t->set_color("font_color_selected","HButtonArray", control_font_color_hover );
+
+	t->set_constant("icon_separator","HButtonArray", 4 );
+	t->set_constant("button_separator","HButtonArray", 8 );
+
+	t->set_stylebox("focus","HButtonArray", focus );
+
+
+	// VButtonArray
+
+	t->set_stylebox("normal","VButtonArray", make_stylebox( button_normal_png,4,4,4,4,0,4,22,4) );
+	t->set_stylebox("selected","VButtonArray", make_stylebox( button_pressed_png,4,4,4,4,0,4,22,4) );
+	t->set_stylebox("hover","VButtonArray", make_stylebox( button_hover_png,4,4,4,4) );
+
 	t->set_font("font","VButtonArray", default_font);
 	t->set_font("font_selected","VButtonArray", default_font);
-	t->set_color("font_color","VButtonArray", Color(1,1,1,1) );
-	t->set_color("font_color_selected","VButtonArray", Color(0.7,0.7,0.7,1) );
-	t->set_constant("icon_separator","VButtonArray", 2 );
-	t->set_constant("button_separator","VButtonArray", 3 );
 
-	t->set_stylebox("border","ReferenceFrame", make_stylebox( reference_border_png,5,5,5,5,3,3,3,3) );
+	t->set_color("font_color","VButtonArray", control_font_color_low );
+	t->set_color("font_color_selected","VButtonArray", control_font_color_hover );
+
+	t->set_constant("icon_separator","VButtonArray", 4);
+	t->set_constant("button_separator","VButtonArray", 8);
+
+	t->set_stylebox("focus","VButtonArray", focus );
+
+
+	// ReferenceFrame
 
 	Ref<StyleBoxTexture> ttnc = make_stylebox( full_panel_bg_png,8,8,8,8);
 	ttnc->set_draw_center(false);
+
+	t->set_stylebox("border","ReferenceFrame", make_stylebox( reference_border_png,4,4,4,4) );
 	t->set_stylebox("panelnc","Panel", ttnc );
 	t->set_stylebox("panelf","Panel", tc_sb );
-
 	t->set_stylebox("panel","PanelContainer", tc_sb );
 
 	t->set_icon( "logo","Icons", make_icon(logo_png) );
 
+
+
+	// Theme
+
 	Theme::set_default( t );
 	Theme::set_default_icon( make_icon(error_icon_png) );
 	Theme::set_default_style( make_stylebox( error_icon_png,2,2,2,2) );
@@ -626,8 +802,8 @@ void make_default_theme() {
 	style->set_texture(texture);
 
 	for(int i=0;i<4;i++) {
-		style->set_margin_size(  Margin(),2);
-		style->set_default_margin(  Margin(),2);
+		style->set_margin_size(  Margin(),8);
+		style->set_default_margin(  Margin(),8);
 	}
 
 	Ref<Font> f = make_default_font();

BIN
scene/resources/default_theme/dropdown.png


BIN
scene/resources/default_theme/focus.png


BIN
scene/resources/default_theme/full_panel_bg.png


BIN
scene/resources/default_theme/hscroll_bg.png


BIN
scene/resources/default_theme/hscroll_bg_focus.png


BIN
scene/resources/default_theme/hscroll_grabber.png


BIN
scene/resources/default_theme/hscroll_grabber_hl.png


BIN
scene/resources/default_theme/hslider_bg.png


BIN
scene/resources/default_theme/hslider_grabber.png


BIN
scene/resources/default_theme/hslider_grabber_hl.png


BIN
scene/resources/default_theme/hslider_tick.png


BIN
scene/resources/default_theme/hsplit_bg.png


BIN
scene/resources/default_theme/hsplitter.png


BIN
scene/resources/default_theme/icon_folder.png


BIN
scene/resources/default_theme/icon_play.png


BIN
scene/resources/default_theme/icon_stop.png


BIN
scene/resources/default_theme/line_edit.png


BIN
scene/resources/default_theme/line_edit_disabled.png


BIN
scene/resources/default_theme/option_arrow.png


BIN
scene/resources/default_theme/option_button_disabled.png


BIN
scene/resources/default_theme/option_button_hover.png


BIN
scene/resources/default_theme/option_button_normal.png


BIN
scene/resources/default_theme/option_button_pressed.png


BIN
scene/resources/default_theme/panel_bg.png


BIN
scene/resources/default_theme/popup_bg.png


BIN
scene/resources/default_theme/popup_checked.png


BIN
scene/resources/default_theme/popup_window.png


BIN
scene/resources/default_theme/progress_bar.png


BIN
scene/resources/default_theme/progress_fill.png


BIN
scene/resources/default_theme/scroll_bg.png


BIN
scene/resources/default_theme/scroll_button_down.png


BIN
scene/resources/default_theme/scroll_button_down_hl.png


BIN
scene/resources/default_theme/scroll_button_left.png


BIN
scene/resources/default_theme/scroll_button_left_hl.png


BIN
scene/resources/default_theme/scroll_button_right.png


BIN
scene/resources/default_theme/scroll_button_right_hl.png


BIN
scene/resources/default_theme/scroll_button_up.png


BIN
scene/resources/default_theme/scroll_button_up_hl.png


BIN
scene/resources/default_theme/scroll_grabber.png


BIN
scene/resources/default_theme/scroll_grabber_hl.png


BIN
scene/resources/default_theme/selection.png


BIN
scene/resources/default_theme/selection_oof.png


BIN
scene/resources/default_theme/submenu.png


BIN
scene/resources/default_theme/tab_behind.png


BIN
scene/resources/default_theme/tab_container_bg.png


BIN
scene/resources/default_theme/tab_current.png


File diff suppressed because it is too large
+ 3 - 3
scene/resources/default_theme/theme_data.h


BIN
scene/resources/default_theme/toggle_off.png


BIN
scene/resources/default_theme/toggle_on.png


BIN
scene/resources/default_theme/tooltip_bg.png


BIN
scene/resources/default_theme/tree_bg.png


BIN
scene/resources/default_theme/tree_title.png


BIN
scene/resources/default_theme/tree_title_pressed.png


BIN
scene/resources/default_theme/unchecked.png


BIN
scene/resources/default_theme/updown.png


BIN
scene/resources/default_theme/vscroll_bg.png


BIN
scene/resources/default_theme/vscroll_bg_focus.png


BIN
scene/resources/default_theme/vscroll_grabber.png


BIN
scene/resources/default_theme/vscroll_grabber_hl.png


BIN
scene/resources/default_theme/vslider_bg.png


BIN
scene/resources/default_theme/vslider_grabber.png


BIN
scene/resources/default_theme/vslider_grabber_hl.png


BIN
scene/resources/default_theme/vslider_tick.png


BIN
scene/resources/default_theme/vsplit_bg.png


BIN
scene/resources/default_theme/vsplitter.png


+ 1 - 1
scene/resources/environment.cpp

@@ -111,7 +111,7 @@ void Environment::_bind_methods() {
 	ADD_PROPERTY( PropertyInfo(Variant::INT,"background/mode",PROPERTY_HINT_ENUM,"Keep,Default Color,Color,Texture,Cubemap,Texture RGBE,Cubemap RGBE"),_SCS("set_background"),_SCS("get_background"));
 	ADD_PROPERTYI( PropertyInfo(Variant::COLOR,"background/color"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_COLOR);
 	ADD_PROPERTYI( PropertyInfo(Variant::OBJECT,"background/texture",PROPERTY_HINT_RESOURCE_TYPE,"Texture"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_TEXTURE);
-	ADD_PROPERTYI( PropertyInfo(Variant::OBJECT,"background/cubemap",PROPERTY_HINT_RESOURCE_TYPE,"Texture"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_CUBEMAP);
+	ADD_PROPERTYI( PropertyInfo(Variant::OBJECT,"background/cubemap",PROPERTY_HINT_RESOURCE_TYPE,"CubeMap"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_CUBEMAP);
 	ADD_PROPERTYI( PropertyInfo(Variant::REAL,"background/energy",PROPERTY_HINT_RANGE,"0,128,0.01"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_ENERGY);
 	ADD_PROPERTYI( PropertyInfo(Variant::REAL,"background/scale",PROPERTY_HINT_RANGE,"0.001,16,0.001"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_SCALE);
 	ADD_PROPERTYI( PropertyInfo(Variant::REAL,"background/glow",PROPERTY_HINT_RANGE,"0.00,8,0.01"),_SCS("set_background_param"),_SCS("get_background_param"), BG_PARAM_GLOW);

+ 3 - 3
tools/editor/editor_node.cpp

@@ -4088,9 +4088,9 @@ EditorNode::EditorNode() {
 
 	Globals::get_singleton()->set("debug/indicators_enabled",true);
 	Globals::get_singleton()->set("render/room_cull_enabled",false);
-	theme->set_color("prop_category","Editor",Color::hex(0x3f3945ff));
-	theme->set_color("prop_section","Editor",Color::hex(0x38323dff));
-	theme->set_color("prop_subsection","Editor",Color::hex(0x342e39ff));
+	theme->set_color("prop_category","Editor",Color::hex(0x403d41ff));
+	theme->set_color("prop_section","Editor",Color::hex(0x383539ff));
+	theme->set_color("prop_subsection","Editor",Color::hex(0x343135ff));
 	theme->set_color("fg_selected","Editor",Color::html("ffbd8e8e"));
 	theme->set_color("fg_error","Editor",Color::html("ffbd8e8e"));
 

+ 5 - 0
tools/editor/editor_settings.cpp

@@ -404,6 +404,7 @@ void EditorSettings::_load_defaults() {
 	set("text_editor/symbol_color",Color::html("badfff"));
 	set("text_editor/selection_color",Color::html("7b5dbe"));
 	set("text_editor/brace_mismatch_color",Color(1,0.2,0.2));
+	set("text_editor/current_line_color",Color(0.3,0.5,0.8,0.15));
 
 	set("text_editor/idle_parse_delay",2);
 	set("text_editor/create_signal_callbacks",true);
@@ -413,6 +414,10 @@ void EditorSettings::_load_defaults() {
 	set("text_editor/auto_brace_complete", false);
 
 
+	set("scenetree_editor/duplicate_node_name_num_separator",0);
+	hints["scenetree_editor/duplicate_node_name_num_separator"]=PropertyInfo(Variant::INT,"scenetree_editor/duplicate_node_name_num_separator",PROPERTY_HINT_ENUM, "None,Space,Underscore,Dash");
+
+
 	set("3d_editor/default_fov",45.0);
 	set("3d_editor/default_z_near",0.1);
 	set("3d_editor/default_z_far",500.0);

BIN
tools/editor/icons/icon_add.png


BIN
tools/editor/icons/icon_animation.png


BIN
tools/editor/icons/icon_atlas_texture.png


BIN
tools/editor/icons/icon_audio_stream_gibberish.png


Some files were not shown because too many files changed in this diff