Răsfoiți Sursa

Merge remote-tracking branch 'upstream/master'

Kostadin Damyanov 9 ani în urmă
părinte
comite
7998197ff1
100 a modificat fișierele cu 251 adăugiri și 699 ștergeri
  1. 1 1
      LICENSE.md
  2. 16 9
      SConstruct
  3. 1 1
      bin/tests/test_containers.cpp
  4. 1 1
      bin/tests/test_containers.h
  5. 1 1
      bin/tests/test_detailer.cpp
  6. 1 1
      bin/tests/test_detailer.h
  7. 1 1
      bin/tests/test_gdscript.cpp
  8. 1 1
      bin/tests/test_gdscript.h
  9. 1 1
      bin/tests/test_gui.cpp
  10. 1 1
      bin/tests/test_gui.h
  11. 1 1
      bin/tests/test_image.cpp
  12. 1 1
      bin/tests/test_image.h
  13. 1 1
      bin/tests/test_io.cpp
  14. 1 1
      bin/tests/test_io.h
  15. 1 1
      bin/tests/test_main.cpp
  16. 1 1
      bin/tests/test_main.h
  17. 1 1
      bin/tests/test_math.cpp
  18. 1 1
      bin/tests/test_math.h
  19. 1 1
      bin/tests/test_misc.cpp
  20. 1 1
      bin/tests/test_misc.h
  21. 1 1
      bin/tests/test_particles.cpp
  22. 1 1
      bin/tests/test_particles.h
  23. 1 1
      bin/tests/test_physics.cpp
  24. 1 1
      bin/tests/test_physics.h
  25. 1 1
      bin/tests/test_physics_2d.cpp
  26. 1 1
      bin/tests/test_physics_2d.h
  27. 1 1
      bin/tests/test_python.cpp
  28. 1 1
      bin/tests/test_python.h
  29. 1 1
      bin/tests/test_render.cpp
  30. 1 1
      bin/tests/test_render.h
  31. 1 1
      bin/tests/test_shader_lang.cpp
  32. 1 1
      bin/tests/test_shader_lang.h
  33. 1 1
      bin/tests/test_sound.cpp
  34. 1 1
      bin/tests/test_sound.h
  35. 1 1
      bin/tests/test_string.cpp
  36. 1 1
      bin/tests/test_string.h
  37. 1 1
      core/allocators.h
  38. 1 1
      core/array.cpp
  39. 1 1
      core/array.h
  40. 1 1
      core/balloon_allocator.h
  41. 10 9
      core/bind/core_bind.cpp
  42. 2 1
      core/bind/core_bind.h
  43. 1 1
      core/color.cpp
  44. 1 1
      core/color.h
  45. 1 1
      core/command_queue_mt.cpp
  46. 2 2
      core/command_queue_mt.h
  47. 5 5
      core/compressed_translation.cpp
  48. 1 1
      core/compressed_translation.h
  49. 1 1
      core/core_string_names.cpp
  50. 1 1
      core/core_string_names.h
  51. 1 1
      core/dictionary.cpp
  52. 1 1
      core/dictionary.h
  53. 1 1
      core/dvector.cpp
  54. 1 1
      core/dvector.h
  55. 1 1
      core/error_list.h
  56. 1 1
      core/error_macros.cpp
  57. 1 1
      core/error_macros.h
  58. 1 1
      core/event_queue.cpp
  59. 1 1
      core/event_queue.h
  60. 1 1
      core/fpstr.cpp
  61. 1 1
      core/fpstr.h
  62. 4 1
      core/global_constants.cpp
  63. 1 1
      core/global_constants.h
  64. 11 8
      core/globals.cpp
  65. 1 1
      core/globals.h
  66. 1 1
      core/hash_map.h
  67. 1 1
      core/hashfuncs.h
  68. 1 1
      core/image.cpp
  69. 1 1
      core/image.h
  70. 1 1
      core/image_quantize.cpp
  71. 59 1
      core/input_map.cpp
  72. 2 1
      core/input_map.h
  73. 1 1
      core/int_types.h
  74. 1 1
      core/io/compression.cpp
  75. 1 1
      core/io/compression.h
  76. 40 563
      core/io/config_file.cpp
  77. 2 2
      core/io/config_file.h
  78. 1 1
      core/io/file_access_buffered.cpp
  79. 1 1
      core/io/file_access_buffered.h
  80. 1 1
      core/io/file_access_buffered_fa.h
  81. 1 1
      core/io/file_access_compressed.cpp
  82. 1 1
      core/io/file_access_compressed.h
  83. 1 1
      core/io/file_access_memory.cpp
  84. 1 1
      core/io/file_access_memory.h
  85. 1 1
      core/io/file_access_network.cpp
  86. 1 1
      core/io/file_access_network.h
  87. 1 1
      core/io/file_access_pack.cpp
  88. 1 1
      core/io/file_access_pack.h
  89. 1 1
      core/io/file_access_zip.cpp
  90. 1 1
      core/io/file_access_zip.h
  91. 7 6
      core/io/http_client.cpp
  92. 1 1
      core/io/http_client.h
  93. 1 1
      core/io/image_loader.cpp
  94. 1 1
      core/io/image_loader.h
  95. 1 1
      core/io/ip.cpp
  96. 1 1
      core/io/ip.h
  97. 1 1
      core/io/ip_address.cpp
  98. 1 1
      core/io/ip_address.h
  99. 4 4
      core/io/json.cpp
  100. 1 1
      core/io/json.h

+ 1 - 1
LICENSE.md

@@ -1,7 +1,7 @@
                          GODOT ENGINE                                
                   http://www.godotengine.org                         
 **********************************************************************
- Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.                 
+ Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 
                                                                        
  Permission is hereby granted, free of charge, to any person obtaining 
  a copy of this software and associated documentation files (the       

+ 16 - 9
SConstruct

@@ -66,20 +66,27 @@ env_base=Environment(tools=custom_tools,ENV = {'PATH' : os.environ['PATH']});
 
 #env_base=Environment(tools=custom_tools);
 env_base.global_defaults=global_defaults
-env_base.android_source_modules=[]
-env_base.android_source_files=[]
-env_base.android_module_libraries=[]
+env_base.android_maven_repos=[]
+env_base.android_dependencies=[]
+env_base.android_java_dirs=[]
+env_base.android_res_dirs=[]
+env_base.android_aidl_dirs=[]
+env_base.android_jni_dirs=[]
 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__.android_add_maven_repository=methods.android_add_maven_repository
+env_base.__class__.android_add_dependency=methods.android_add_dependency
+env_base.__class__.android_add_java_dir=methods.android_add_java_dir
+env_base.__class__.android_add_res_dir=methods.android_add_res_dir
+env_base.__class__.android_add_aidl_dir=methods.android_add_aidl_dir
+env_base.__class__.android_add_jni_dir=methods.android_add_jni_dir
+env_base.__class__.android_add_to_manifest = methods.android_add_to_manifest
+env_base.__class__.android_add_to_permissions = methods.android_add_to_permissions
+env_base.__class__.android_add_to_attributes = methods.android_add_to_attributes
 env_base.__class__.disable_module = methods.disable_module
 
 env_base.__class__.add_source_files = methods.add_source_files

+ 1 - 1
bin/tests/test_containers.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_containers.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_detailer.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_detailer.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_gdscript.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_gdscript.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_gui.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_gui.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_image.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_image.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_io.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_io.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_main.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_main.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_math.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_math.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_misc.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_misc.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_particles.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_particles.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_physics.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_physics.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_physics_2d.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_physics_2d.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_python.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_python.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_render.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_render.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_shader_lang.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_shader_lang.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_sound.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_sound.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_string.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
bin/tests/test_string.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/allocators.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/array.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/array.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/balloon_allocator.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 10 - 9
core/bind/core_bind.cpp

@@ -62,8 +62,8 @@ void _ResourceLoader::_bind_methods() {
 	ObjectTypeDB::bind_method(_MD("load:Resource","path","type_hint", "p_no_cache"),&_ResourceLoader::load,DEFVAL(""), DEFVAL(false));
 	ObjectTypeDB::bind_method(_MD("get_recognized_extensions_for_type","type"),&_ResourceLoader::get_recognized_extensions_for_type);
 	ObjectTypeDB::bind_method(_MD("set_abort_on_missing_resources","abort"),&_ResourceLoader::set_abort_on_missing_resources);
-	ObjectTypeDB::bind_method(_MD("get_dependencies"),&_ResourceLoader::get_dependencies);
-	ObjectTypeDB::bind_method(_MD("has"),&_ResourceLoader::has);
+	ObjectTypeDB::bind_method(_MD("get_dependencies","path"),&_ResourceLoader::get_dependencies);
+	ObjectTypeDB::bind_method(_MD("has","path"),&_ResourceLoader::has);
 }
 
 _ResourceLoader::_ResourceLoader() {
@@ -96,7 +96,7 @@ _ResourceSaver *_ResourceSaver::singleton=NULL;
 
 void _ResourceSaver::_bind_methods() {
 
-	ObjectTypeDB::bind_method(_MD("save","path","resource:Resource"),&_ResourceSaver::save, DEFVAL(0));
+	ObjectTypeDB::bind_method(_MD("save","path","resource:Resource","flags"),&_ResourceSaver::save,DEFVAL(0));
 	ObjectTypeDB::bind_method(_MD("get_recognized_extensions","type"),&_ResourceSaver::get_recognized_extensions);
 
 	BIND_CONSTANT(FLAG_RELATIVE_PATHS);
@@ -494,8 +494,8 @@ uint64_t _OS::get_unix_time() const {
 	return OS::get_singleton()->get_unix_time();
 };
 
-uint64_t _OS::get_system_time_msec() const {
-	return OS::get_singleton()->get_system_time_msec();
+uint64_t _OS::get_system_time_secs() const {
+	return OS::get_singleton()->get_system_time_secs();
 }
 
 void _OS::delay_usec(uint32_t p_usec) const {
@@ -810,9 +810,9 @@ void _OS::_bind_methods() {
 	ObjectTypeDB::bind_method(_MD("get_time","utc"),&_OS::get_time,DEFVAL(false));
 	ObjectTypeDB::bind_method(_MD("get_time_zone_info"),&_OS::get_time_zone_info);
 	ObjectTypeDB::bind_method(_MD("get_unix_time"),&_OS::get_unix_time);
-	ObjectTypeDB::bind_method(_MD("get_system_time_msec"), &_OS::get_system_time_msec);
+	ObjectTypeDB::bind_method(_MD("get_system_time_secs"), &_OS::get_system_time_secs);
 
-	ObjectTypeDB::bind_method(_MD("set_icon"),&_OS::set_icon);
+	ObjectTypeDB::bind_method(_MD("set_icon","icon"),&_OS::set_icon);
 
 	ObjectTypeDB::bind_method(_MD("delay_usec","usec"),&_OS::delay_usec);
 	ObjectTypeDB::bind_method(_MD("delay_msec","msec"),&_OS::delay_msec);
@@ -851,9 +851,9 @@ void _OS::_bind_methods() {
 	ObjectTypeDB::bind_method(_MD("get_frames_per_second"),&_OS::get_frames_per_second);
 
 	ObjectTypeDB::bind_method(_MD("print_all_textures_by_size"),&_OS::print_all_textures_by_size);
-	ObjectTypeDB::bind_method(_MD("print_resources_by_type"),&_OS::print_resources_by_type);
+	ObjectTypeDB::bind_method(_MD("print_resources_by_type","types"),&_OS::print_resources_by_type);
 
-	ObjectTypeDB::bind_method(_MD("native_video_play"),&_OS::native_video_play);
+	ObjectTypeDB::bind_method(_MD("native_video_play","path","volume","audio_track","subtitle_track"),&_OS::native_video_play);
 	ObjectTypeDB::bind_method(_MD("native_video_is_playing"),&_OS::native_video_is_playing);
 	ObjectTypeDB::bind_method(_MD("native_video_stop"),&_OS::native_video_stop);
 	ObjectTypeDB::bind_method(_MD("native_video_pause"),&_OS::native_video_pause);
@@ -1509,6 +1509,7 @@ void _File::_bind_methods() {
 	BIND_CONSTANT( READ );
 	BIND_CONSTANT( WRITE );
 	BIND_CONSTANT( READ_WRITE );
+	BIND_CONSTANT( WRITE_READ );
 }
 
 _File::_File(){

+ 2 - 1
core/bind/core_bind.h

@@ -208,7 +208,7 @@ public:
 	Dictionary get_time(bool utc) const;
 	Dictionary get_time_zone_info() const;
 	uint64_t get_unix_time() const;
-	uint64_t get_system_time_msec() const;
+	uint64_t get_system_time_secs() const;
 
 	int get_static_memory_usage() const;
 	int get_static_memory_peak_usage() const;
@@ -329,6 +329,7 @@ public:
 		READ=1,
 		WRITE=2,
 		READ_WRITE=3,
+		WRITE_READ=7,
 	};
 
 	Error open_encrypted(const String& p_path, int p_mode_flags,const Vector<uint8_t>& p_key);

+ 1 - 1
core/color.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/color.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/command_queue_mt.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 2 - 2
core/command_queue_mt.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */
@@ -983,7 +983,7 @@ public:
 	
 	void flush_all() {
 			
-		ERR_FAIL_COND(sync);
+		//ERR_FAIL_COND(sync);
 		lock();
 		while (true) {
 			bool exit = !flush_one();

+ 5 - 5
core/compressed_translation.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */
@@ -410,15 +410,15 @@ bool PHashTranslation::_set(const StringName& p_name, const Variant& p_value) {
 	String name = p_name.operator String();
 	if (name=="hash_table") {
 		hash_table=p_value;
-		print_line("translation: loaded hash table of size: "+itos(hash_table.size()));
+		//print_line("translation: loaded hash table of size: "+itos(hash_table.size()));
 	} else if (name=="bucket_table") {
 		bucket_table=p_value;
-		print_line("translation: loaded bucket table of size: "+itos(bucket_table.size()));
+		//print_line("translation: loaded bucket table of size: "+itos(bucket_table.size()));
 	} else if (name=="strings") {
 		strings=p_value;
-		print_line("translation: loaded string table of size: "+itos(strings.size()));
+		//print_line("translation: loaded string table of size: "+itos(strings.size()));
 	} else if (name=="load_from") {
-		print_line("generating");
+		//print_line("generating");
 		generate(p_value);
 	} else
 		return false;

+ 1 - 1
core/compressed_translation.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/core_string_names.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/core_string_names.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/dictionary.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/dictionary.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/dvector.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/dvector.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/error_list.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/error_macros.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/error_macros.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/event_queue.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/event_queue.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/fpstr.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/fpstr.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 4 - 1
core/global_constants.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */
@@ -402,6 +402,9 @@ static _GlobalConstant _global_constants[]={
 	BIND_GLOBAL_CONSTANT( JOY_ANALOG_2_X  ),
 	BIND_GLOBAL_CONSTANT( JOY_ANALOG_2_Y  ),
 
+	BIND_GLOBAL_CONSTANT( JOY_ANALOG_L2  ),
+	BIND_GLOBAL_CONSTANT( JOY_ANALOG_R2  ),
+
 
 	// error list
 

+ 1 - 1
core/global_constants.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 11 - 8
core/globals.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */
@@ -137,7 +137,7 @@ bool Globals::_set(const StringName& p_name, const Variant& p_value) {
 				props[p_name].order=last_order++;
 			}
 		} else {
-			props[p_name]=VariantContainer(p_value,last_order++ + registering_order?0:NO_ORDER_BASE);
+			props[p_name]=VariantContainer(p_value,last_order++ + (registering_order?0:NO_ORDER_BASE));
 		}
 	}
 
@@ -304,6 +304,7 @@ Error Globals::setup(const String& p_path,const String & p_main_pack) {
 
 		return OK;
 	}
+
 	if (OS::get_singleton()->get_resource_dir()!="") {
         //OS will call Globals->get_resource_path which will be empty if not overriden!
 		//if the OS would rather use somewhere else, then it will not be empty.
@@ -637,7 +638,9 @@ static Variant _decode_variant(const String& p_string) {
 		InputEvent ie;
 		ie.type=InputEvent::JOYSTICK_MOTION;
 		ie.device=params[0].to_int();
-		ie.joy_motion.axis=params[1].to_int();
+		int axis = params[1].to_int();;
+		ie.joy_motion.axis=axis>>1;
+		ie.joy_motion.axis_value=axis&1?1:-1;
 
 		return ie;
 	}
@@ -1028,7 +1031,7 @@ static String _encode_variant(const Variant& p_variant) {
 				} break;
 				case InputEvent::JOYSTICK_MOTION: {
 
-					return "jaxis("+itos(ev.device)+", "+itos(ev.joy_motion.axis)+")";
+					return "jaxis("+itos(ev.device)+", "+itos(ev.joy_motion.axis * 2 + (ev.joy_motion.axis_value<0?0:1))+")";
 				} break;
 				default: {
 
@@ -1390,11 +1393,11 @@ void Globals::_bind_methods() {
 	ObjectTypeDB::bind_method(_MD("localize_path","path"),&Globals::localize_path);
 	ObjectTypeDB::bind_method(_MD("globalize_path","path"),&Globals::globalize_path);
 	ObjectTypeDB::bind_method(_MD("save"),&Globals::save);
-	ObjectTypeDB::bind_method(_MD("has_singleton"),&Globals::has_singleton);
-	ObjectTypeDB::bind_method(_MD("get_singleton"),&Globals::get_singleton_object);
-	ObjectTypeDB::bind_method(_MD("load_resource_pack"),&Globals::_load_resource_pack);
+	ObjectTypeDB::bind_method(_MD("has_singleton","name"),&Globals::has_singleton);
+	ObjectTypeDB::bind_method(_MD("get_singleton","name"),&Globals::get_singleton_object);
+	ObjectTypeDB::bind_method(_MD("load_resource_pack","pack"),&Globals::_load_resource_pack);
 
-	ObjectTypeDB::bind_method(_MD("save_custom"),&Globals::_save_custom_bnd);
+	ObjectTypeDB::bind_method(_MD("save_custom","file"),&Globals::_save_custom_bnd);
 
 }
 

+ 1 - 1
core/globals.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/hash_map.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/hashfuncs.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/image.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/image.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/image_quantize.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 59 - 1
core/input_map.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */
@@ -204,6 +204,64 @@ bool InputMap::event_is_action(const InputEvent& p_event, const StringName& p_ac
 	return _find_event(E->get().inputs,p_event)!=NULL;
 }
 
+bool InputMap::event_is_joy_motion_action_pressed(const InputEvent& p_event) const {
+
+	ERR_FAIL_COND_V(p_event.type!=InputEvent::JOYSTICK_MOTION,false);
+	bool pressed=false;
+
+	//this could be optimized by having a separate list of joymotions?
+
+	for (Map<StringName, Action>::Element *A=input_map.front();A;A=A->next()) {
+
+		for (List<InputEvent>::Element *E=A->get().inputs.front();E;E=E->next()) {
+
+			const InputEvent& e=E->get();
+			if(e.type!=p_event.type)
+				continue;
+			if (e.type!=InputEvent::KEY && e.device!=p_event.device)
+				continue;
+
+			switch(p_event.type) {
+
+				case InputEvent::KEY: {
+
+					if (e.key.scancode==p_event.key.scancode && e.key.mod == p_event.key.mod)
+						return e.key.pressed;
+
+				} break;
+				case InputEvent::JOYSTICK_BUTTON: {
+
+					if (e.joy_button.button_index==p_event.joy_button.button_index) {
+						return e.joy_button.pressed;
+					}
+
+				} break;
+				case InputEvent::MOUSE_BUTTON: {
+
+					if (e.mouse_button.button_index==p_event.mouse_button.button_index) {
+						return e.mouse_button.pressed;
+					}
+
+				} break;
+				case InputEvent::JOYSTICK_MOTION: {
+
+					if (e.joy_motion.axis==p_event.joy_motion.axis) {
+						if (
+								(e.joy_motion.axis_value * p_event.joy_motion.axis_value >0) && //same axis
+								ABS(e.joy_motion.axis_value)>0.5 && ABS(p_event.joy_motion.axis_value)>0.5 )
+							pressed=true;
+					}
+
+				} break;
+			}
+
+		}
+	}
+
+	return pressed;
+
+}
+
 void InputMap::load_from_globals() {
 
 	input_map.clear();;

+ 2 - 1
core/input_map.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */
@@ -68,6 +68,7 @@ public:
 
 	const List<InputEvent> *get_action_list(const StringName& p_action);
 	bool event_is_action(const InputEvent& p_event, const StringName& p_action) const;
+	bool event_is_joy_motion_action_pressed(const InputEvent& p_event) const;
 
 
 	void load_from_globals();

+ 1 - 1
core/int_types.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/compression.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/compression.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 40 - 563
core/io/config_file.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */
@@ -29,6 +29,7 @@
 #include "config_file.h"
 #include "os/keyboard.h"
 #include "os/file_access.h"
+#include "variant_parser.h"
 
 StringArray ConfigFile::_get_sections() const {
 
@@ -83,10 +84,10 @@ void ConfigFile::set_value(const String& p_section, const String& p_key, const V
 	}
 
 }
-Variant ConfigFile::get_value(const String& p_section, const String& p_key) const{
+Variant ConfigFile::get_value(const String& p_section, const String& p_key, Variant p_default) const {
 
-	ERR_FAIL_COND_V(!values.has(p_section),Variant());
-	ERR_FAIL_COND_V(!values[p_section].has(p_key),Variant());
+	ERR_FAIL_COND_V(!values.has(p_section),p_default);
+	ERR_FAIL_COND_V(!values[p_section].has(p_key),p_default);
 	return values[p_section][p_key];
 
 }
@@ -118,151 +119,6 @@ void ConfigFile::get_section_keys(const String& p_section,List<String> *r_keys)
 
 }
 
-static String _encode_variant(const Variant& p_variant) {
-
-	switch(p_variant.get_type()) {
-
-		case Variant::BOOL: {
-			bool val = p_variant;
-			return (val?"true":"false");
-		} break;
-		case Variant::INT: {
-			int val = p_variant;
-			return itos(val);
-		} break;
-		case Variant::REAL: {
-			float val = p_variant;
-			return rtos(val)+(val==int(val)?".0":"");
-		} break;
-		case Variant::STRING: {
-			String val = p_variant;
-			return "\""+val.xml_escape()+"\"";
-		} break;
-		case Variant::COLOR: {
-
-			Color val = p_variant;
-			return "#"+val.to_html();
-		} break;
-		case Variant::STRING_ARRAY:
-		case Variant::INT_ARRAY:
-		case Variant::REAL_ARRAY:
-		case Variant::ARRAY: {
-			Array arr = p_variant;
-			String str="[";
-			for(int i=0;i<arr.size();i++) {
-
-				if (i>0)
-					str+=", ";
-				str+=_encode_variant(arr[i]);
-			}
-			str+="]";
-			return str;
-		} break;
-		case Variant::DICTIONARY: {
-			Dictionary d = p_variant;
-			String str="{";
-			List<Variant> keys;
-			d.get_key_list(&keys);
-			for(List<Variant>::Element *E=keys.front();E;E=E->next()) {
-
-				if (E!=keys.front())
-					str+=", ";
-				str+=_encode_variant(E->get());
-				str+=":";
-				str+=_encode_variant(d[E->get()]);
-
-			}
-			str+="}";
-			return str;
-		} break;
-		case Variant::IMAGE: {
-			String str="img(";
-
-			Image img=p_variant;
-			if (!img.empty()) {
-
-				String format;
-				switch(img.get_format()) {
-
-					case Image::FORMAT_GRAYSCALE: format="grayscale"; break;
-					case Image::FORMAT_INTENSITY: format="intensity"; break;
-					case Image::FORMAT_GRAYSCALE_ALPHA: format="grayscale_alpha"; break;
-					case Image::FORMAT_RGB: format="rgb"; break;
-					case Image::FORMAT_RGBA: format="rgba"; break;
-					case Image::FORMAT_INDEXED : format="indexed"; break;
-					case Image::FORMAT_INDEXED_ALPHA: format="indexed_alpha"; break;
-					case Image::FORMAT_BC1: format="bc1"; break;
-					case Image::FORMAT_BC2: format="bc2"; break;
-					case Image::FORMAT_BC3: format="bc3"; break;
-					case Image::FORMAT_BC4: format="bc4"; break;
-					case Image::FORMAT_BC5: format="bc5"; break;
-					case Image::FORMAT_CUSTOM: format="custom custom_size="+itos(img.get_data().size())+""; break;
-					default: {}
-				}
-
-				str+=format+", ";
-				str+=itos(img.get_mipmaps())+", ";
-				str+=itos(img.get_width())+", ";
-				str+=itos(img.get_height())+", ";
-				DVector<uint8_t> data = img.get_data();
-				int ds=data.size();
-				DVector<uint8_t>::Read r = data.read();
-				for(int i=0;i<ds;i++) {
-					uint8_t byte = r[i];
-					const char  hex[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
-					char bstr[3]={ hex[byte>>4], hex[byte&0xF], 0};
-					str+=bstr;
-				}
-			}
-			str+=")";
-			return str;
-		} break;
-		case Variant::INPUT_EVENT: {
-
-			InputEvent ev = p_variant;
-
-			switch(ev.type) {
-
-				case InputEvent::KEY: {
-
-					String mods;
-					if (ev.key.mod.control)
-						mods+="C";
-					if (ev.key.mod.shift)
-						mods+="S";
-					if (ev.key.mod.alt)
-						mods+="A";
-					if (ev.key.mod.meta)
-						mods+="M";
-					if (mods!="")
-						mods=", "+mods;
-
-					return "key("+keycode_get_string(ev.key.scancode)+mods+")";
-				} break;
-				case InputEvent::MOUSE_BUTTON: {
-
-					return "mbutton("+itos(ev.device)+", "+itos(ev.mouse_button.button_index)+")";
-				} break;
-				case InputEvent::JOYSTICK_BUTTON: {
-
-					return "jbutton("+itos(ev.device)+", "+itos(ev.joy_button.button_index)+")";
-				} break;
-				case InputEvent::JOYSTICK_MOTION: {
-
-					return "jaxis("+itos(ev.device)+", "+itos(ev.joy_motion.axis)+")";
-				} break;
-				default: {
-
-					return "nil";
-				} break;
-
-			}
-		} break;
-		default: {}
-	}
-
-	return "nil"; //don't know wha to do with this
-}
 
 
 Error ConfigFile::save(const String& p_path){
@@ -271,6 +127,8 @@ Error ConfigFile::save(const String& p_path){
 	FileAccess *file = FileAccess::open(p_path,FileAccess::WRITE,&err);
 
 	if (err) {
+		if (file)
+			memdelete(file);
 		return err;
 	}
 
@@ -283,7 +141,9 @@ Error ConfigFile::save(const String& p_path){
 
 		for(Map<String, Variant>::Element *F=E->get().front();F;F=F->next()) {
 
-			file->store_string(F->key()+"="+_encode_variant(F->get())+"\n");
+			String vstr;
+			VariantWriter::write_to_string(F->get(),vstr);
+			file->store_string(F->key()+"="+vstr+"\n");
 		}
 	}
 
@@ -292,432 +152,49 @@ Error ConfigFile::save(const String& p_path){
 	return OK;
 }
 
-static Vector<String> _decode_params(const String& p_string) {
-
-	int begin=p_string.find("(");
-	ERR_FAIL_COND_V(begin==-1,Vector<String>());
-	begin++;
-	int end=p_string.find(")");
-	ERR_FAIL_COND_V(end<begin,Vector<String>());
-	return p_string.substr(begin,end-begin).split(",");
-}
-
-static String _get_chunk(const String& str,int &pos, int close_pos) {
-
-
-	enum {
-		MIN_COMMA,
-		MIN_COLON,
-		MIN_CLOSE,
-		MIN_QUOTE,
-		MIN_PARENTHESIS,
-		MIN_CURLY_OPEN,
-		MIN_OPEN
-	};
-
-	int min_pos=close_pos;
-	int min_what=MIN_CLOSE;
-
-#define TEST_MIN(m_how,m_what) \
-{\
-int res = str.find(m_how,pos);\
-if (res!=-1 && res < min_pos) {\
-	min_pos=res;\
-	min_what=m_what;\
-}\
-}\
-
-
-	TEST_MIN(",",MIN_COMMA);
-	TEST_MIN("[",MIN_OPEN);
-	TEST_MIN("{",MIN_CURLY_OPEN);
-	TEST_MIN("(",MIN_PARENTHESIS);
-	TEST_MIN("\"",MIN_QUOTE);
-
-	int end=min_pos;
-
-
-	switch(min_what) {
-
-		case MIN_COMMA: {
-		} break;
-		case MIN_CLOSE: {
-			//end because it's done
-		} break;
-		case MIN_QUOTE: {
-			end=str.find("\"",min_pos+1)+1;
-			ERR_FAIL_COND_V(end==-1,Variant());
-
-		} break;
-		case MIN_PARENTHESIS: {
-
-			end=str.find(")",min_pos+1)+1;
-			ERR_FAIL_COND_V(end==-1,Variant());
-
-		} break;
-		case MIN_OPEN: {
-			int level=1;
-			end++;
-			while(end<close_pos) {
-
-				if (str[end]=='[')
-					level++;
-				if (str[end]==']') {
-					level--;
-					if (level==0)
-						break;
-				}
-				end++;
-			}
-			ERR_FAIL_COND_V(level!=0,Variant());
-			end++;
-		} break;
-		case MIN_CURLY_OPEN: {
-			int level=1;
-			end++;
-			while(end<close_pos) {
-
-				if (str[end]=='{')
-					level++;
-				if (str[end]=='}') {
-					level--;
-					if (level==0)
-						break;
-				}
-				end++;
-			}
-			ERR_FAIL_COND_V(level!=0,Variant());
-			end++;
-		} break;
-
-	}
-
-	String ret = str.substr(pos,end-pos);
-
-	pos=end;
-	while(pos<close_pos) {
-		if (str[pos]!=',' && str[pos]!=' ' && str[pos]!=':')
-			break;
-		pos++;
-	}
-
-	return ret;
-
-}
-
-
-static Variant _decode_variant(const String& p_string) {
-
-
-	String str = p_string.strip_edges();
-
-	if (str.nocasecmp_to("true")==0)
-		return Variant(true);
-	if (str.nocasecmp_to("false")==0)
-		return Variant(false);
-	if (str.nocasecmp_to("nil")==0)
-		return Variant();
-	if (str.is_valid_float()) {
-		if (str.find(".")==-1)
-			return str.to_int();
-		else
-			return str.to_double();
-
-	}
-	if (str.begins_with("#")) { //string
-		return Color::html(str);
-	}
-	if (str.begins_with("\"")) { //string
-		int end = str.find_last("\"");
-		ERR_FAIL_COND_V(end==0,Variant());
-		return str.substr(1,end-1).xml_unescape();
-
-	}
-
-	if (str.begins_with("[")) { //array
-
-		int close_pos = str.find_last("]");
-		ERR_FAIL_COND_V(close_pos==-1,Variant());
-		Array array;
-
-		int pos=1;
-
-		while(pos<close_pos) {
-
-			String s = _get_chunk(str,pos,close_pos);
-			array.push_back(_decode_variant(s));
-		}
-		return array;
-
-	}
-
-	if (str.begins_with("{")) { //array
-
-		int close_pos = str.find_last("}");
-		ERR_FAIL_COND_V(close_pos==-1,Variant());
-		Dictionary d;
-
-		int pos=1;
-
-		while(pos<close_pos) {
-
-			String key = _get_chunk(str,pos,close_pos);
-			String data = _get_chunk(str,pos,close_pos);
-			d[_decode_variant(key)]=_decode_variant(data);
-		}
-		return d;
-
-	}
-	if (str.begins_with("key")) {
-		Vector<String> params = _decode_params(p_string);
-		ERR_FAIL_COND_V(params.size()!=1 && params.size()!=2,Variant());
-		int scode=0;
-
-		if (params[0].is_numeric()) {
-			scode=params[0].to_int();
-			if (scode < 10) {
-				scode=KEY_0+scode;
-			}
-		} else
-			scode=find_keycode(params[0]);
-
-		InputEvent ie;
-		ie.type=InputEvent::KEY;
-		ie.key.scancode=scode;
-
-		if (params.size()==2) {
-			String mods=params[1];
-			if (mods.findn("C")!=-1)
-				ie.key.mod.control=true;
-			if (mods.findn("A")!=-1)
-				ie.key.mod.alt=true;
-			if (mods.findn("S")!=-1)
-				ie.key.mod.shift=true;
-			if (mods.findn("M")!=-1)
-				ie.key.mod.meta=true;
-		}
-		return ie;
-
-	}
-
-	if (str.begins_with("mbutton")) {
-		Vector<String> params = _decode_params(p_string);
-		ERR_FAIL_COND_V(params.size()!=2,Variant());
-
-		InputEvent ie;
-		ie.type=InputEvent::MOUSE_BUTTON;
-		ie.device=params[0].to_int();
-		ie.mouse_button.button_index=params[1].to_int();
-
-		return ie;
-	}
-
-	if (str.begins_with("jbutton")) {
-		Vector<String> params = _decode_params(p_string);
-		ERR_FAIL_COND_V(params.size()!=2,Variant());
-
-		InputEvent ie;
-		ie.type=InputEvent::JOYSTICK_BUTTON;
-		ie.device=params[0].to_int();
-		ie.joy_button.button_index=params[1].to_int();
-
-		return ie;
-	}
-
-	if (str.begins_with("jaxis")) {
-		Vector<String> params = _decode_params(p_string);
-		ERR_FAIL_COND_V(params.size()!=2,Variant());
-
-		InputEvent ie;
-		ie.type=InputEvent::JOYSTICK_MOTION;
-		ie.device=params[0].to_int();
-		ie.joy_motion.axis=params[1].to_int();
-
-		return ie;
-	}
-	if (str.begins_with("img")) {
-		Vector<String> params = _decode_params(p_string);
-		if (params.size()==0) {
-			return Image();
-		}
-
-		ERR_FAIL_COND_V(params.size()!=5,Image());
-
-		String format=params[0].strip_edges();
-
-		Image::Format imgformat;
-
-		if (format=="grayscale") {
-			imgformat=Image::FORMAT_GRAYSCALE;
-		} else if (format=="intensity") {
-			imgformat=Image::FORMAT_INTENSITY;
-		} else if (format=="grayscale_alpha") {
-			imgformat=Image::FORMAT_GRAYSCALE_ALPHA;
-		} else if (format=="rgb") {
-			imgformat=Image::FORMAT_RGB;
-		} else if (format=="rgba") {
-			imgformat=Image::FORMAT_RGBA;
-		} else if (format=="indexed") {
-			imgformat=Image::FORMAT_INDEXED;
-		} else if (format=="indexed_alpha") {
-			imgformat=Image::FORMAT_INDEXED_ALPHA;
-		} else if (format=="bc1") {
-			imgformat=Image::FORMAT_BC1;
-		} else if (format=="bc2") {
-			imgformat=Image::FORMAT_BC2;
-		} else if (format=="bc3") {
-			imgformat=Image::FORMAT_BC3;
-		} else if (format=="bc4") {
-			imgformat=Image::FORMAT_BC4;
-		} else if (format=="bc5") {
-			imgformat=Image::FORMAT_BC5;
-		} else if (format=="custom") {
-			imgformat=Image::FORMAT_CUSTOM;
-		} else {
-
-			ERR_FAIL_V( Image() );
-		}
-
-		int mipmaps=params[1].to_int();
-		int w=params[2].to_int();
-		int h=params[3].to_int();
-
-		if (w == 0 && h == 0) {
-			//r_v = Image(w, h, imgformat);
-			return Image();
-		};
-
-
-		String data=params[4];
-		int datasize=data.length()/2;
-		DVector<uint8_t> pixels;
-		pixels.resize(datasize);
-		DVector<uint8_t>::Write wb = pixels.write();
-		const CharType *cptr=data.c_str();
-
-		int idx=0;
-		uint8_t byte;
-		while( idx<datasize*2) {
-
-			CharType c=*(cptr++);
-
-			ERR_FAIL_COND_V(c=='<',ERR_FILE_CORRUPT);
-
-			if ( (c>='0' && c<='9') || (c>='A' && c<='F') || (c>='a' && c<='f') ) {
-
-				if (idx&1) {
-
-					byte|=HEX2CHR(c);
-					wb[idx>>1]=byte;
-				} else {
-
-					byte=HEX2CHR(c)<<4;
-				}
-
-				idx++;
-			}
-
-		}
-
-		wb = DVector<uint8_t>::Write();
-
-		return Image(w,h,mipmaps,imgformat,pixels);
-	}
-
-	if (str.find(",")!=-1) { //vector2 or vector3
-		Vector<float> farr = str.split_floats(",",true);
-		if (farr.size()==2) {
-			return Point2(farr[0],farr[1]);
-		}
-		if (farr.size()==3) {
-			return Vector3(farr[0],farr[1],farr[2]);
-		}
-		ERR_FAIL_V(Variant());
-	}
-
-
-	return Variant();
-}
 
 Error ConfigFile::load(const String& p_path) {
 
 	Error err;
 	FileAccess *f= FileAccess::open(p_path,FileAccess::READ,&err);
 
-	if (err!=OK) {
-
-		return err;
-	}
-
-
-	String line;
-	String section;
-	String subpath;
-
-	int line_count = 0;
-
-	while(!f->eof_reached()) {
-
-		String line = f->get_line().strip_edges();
-		line_count++;
-
-		if (line=="")
-			continue;
-
-		// find comments
-
-		 {
+	if (!f)
+		return ERR_CANT_OPEN;
 
-			int pos=0;
-			while (true) {
-				int ret = line.find(";",pos);
-				if (ret==-1)
-					break;
+	VariantParser::StreamFile stream;
+	stream.f=f;
 
-				int qc=0;
-				for(int i=0;i<ret;i++) {
+	String assign;
+	Variant value;
+	VariantParser::Tag next_tag;
 
-					if (line[i]=='"')
-						qc++;
-				}
+	int lines=0;
+	String error_text;
 
-				if ( !(qc&1) ) {
-					//not inside string, real comment
-					line=line.substr(0,ret);
-					break;
-
-				}
+	String section;
 
-				pos=ret+1;
+	while(true) {
 
+		assign=Variant();
+		next_tag.fields.clear();
+		next_tag.name=String();
 
-			}
+		err = VariantParser::parse_tag_assign_eof(&stream,lines,error_text,next_tag,assign,value,NULL,true);
+		if (err==ERR_FILE_EOF) {
+			memdelete(f);
+			return OK;
+		}
+		else if (err!=OK) {
+			ERR_PRINTS("ConfgFile::load - "+p_path+":"+itos(lines)+" error: "+error_text);
+			memdelete(f);
+			return err;
 		}
 
-		if (line.begins_with("[")) {
-
-			int end = line.find_last("]");
-			ERR_CONTINUE(end!=line.length()-1);
-
-			section=line.substr(1,line.length()-2);
-
-		} else if (line.find("=")!=-1) {
-
-
-			int eqpos = line.find("=");
-			String var=line.substr(0,eqpos).strip_edges();
-			String value=line.substr(eqpos+1,line.length()).strip_edges();
-
-			Variant val = _decode_variant(value);
-
-			set_value(section,var,val);
-
-		} else {
-
-			if (line.length() > 0) {
-				ERR_PRINT(String("Syntax error on line "+itos(line_count)+" of file "+p_path).ascii().get_data());
-			};
-		};
+		if (assign!=String()) {
+			set_value(section,assign,value);
+		} else if (next_tag.name!=String()) {
+			section=next_tag.name;
+		}
 	}
 
 	memdelete(f);
@@ -730,13 +207,13 @@ Error ConfigFile::load(const String& p_path) {
 void ConfigFile::_bind_methods(){
 
 	ObjectTypeDB::bind_method(_MD("set_value","section","key","value"),&ConfigFile::set_value);
-	ObjectTypeDB::bind_method(_MD("get_value","section","key"),&ConfigFile::get_value);
+	ObjectTypeDB::bind_method(_MD("get_value","section","key","default"),&ConfigFile::get_value,DEFVAL(Variant()));
 
 	ObjectTypeDB::bind_method(_MD("has_section","section"),&ConfigFile::has_section);
 	ObjectTypeDB::bind_method(_MD("has_section_key","section","key"),&ConfigFile::has_section_key);
 
 	ObjectTypeDB::bind_method(_MD("get_sections"),&ConfigFile::_get_sections);
-	ObjectTypeDB::bind_method(_MD("get_section_keys"),&ConfigFile::_get_section_keys);
+	ObjectTypeDB::bind_method(_MD("get_section_keys","section"),&ConfigFile::_get_section_keys);
 
 	ObjectTypeDB::bind_method(_MD("load:Error","path"),&ConfigFile::load);
 	ObjectTypeDB::bind_method(_MD("save:Error","path"),&ConfigFile::save);

+ 2 - 2
core/io/config_file.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */
@@ -46,7 +46,7 @@ protected:
 public:
 
 	void set_value(const String& p_section, const String& p_key, const Variant& p_value);
-	Variant get_value(const String& p_section, const String& p_key) const;
+	Variant get_value(const String& p_section, const String& p_key, Variant p_default=Variant()) const;
 
 	bool has_section(const String& p_section) const;
 	bool has_section_key(const String& p_section,const String& p_key) const;

+ 1 - 1
core/io/file_access_buffered.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/file_access_buffered.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/file_access_buffered_fa.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/file_access_compressed.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/file_access_compressed.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/file_access_memory.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/file_access_memory.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/file_access_network.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/file_access_network.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/file_access_pack.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/file_access_pack.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/file_access_zip.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/file_access_zip.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 7 - 6
core/io/http_client.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */
@@ -248,7 +248,7 @@ Error HTTPClient::poll(){
 							status=STATUS_SSL_HANDSHAKE_ERROR;
 							return ERR_CANT_CONNECT;
 						}
-						print_line("SSL! TURNED ON!");
+						//print_line("SSL! TURNED ON!");
 						connection=ssl;
 					}
 					status=STATUS_CONNECTED;
@@ -295,7 +295,7 @@ Error HTTPClient::poll(){
 					response_str.push_back(0);
 					String response;
 					response.parse_utf8((const char*)response_str.ptr());
-					print_line("END OF RESPONSE? :\n"+response+"\n------");
+					//print_line("END OF RESPONSE? :\n"+response+"\n------");
 					Vector<String> responses = response.split("\n");
 					body_size=0;
 					chunked=false;
@@ -307,16 +307,17 @@ Error HTTPClient::poll(){
 					for(int i=0;i<responses.size();i++) {
 
 						String s = responses[i].strip_edges();
+						s = s.to_lower();
 						if (s.length()==0)
 							continue;						
-						if (s.begins_with("Content-Length:")) {
+						if (s.begins_with("content-length:")) {
 							body_size = s.substr(s.find(":")+1,s.length()).strip_edges().to_int();
 							body_left=body_size;
 						}
 
-						if (s.begins_with("Transfer-Encoding:")) {
+						if (s.begins_with("transfer-encoding:")) {
 							String encoding = s.substr(s.find(":")+1,s.length()).strip_edges();
-							print_line("TRANSFER ENCODING: "+encoding);
+							//print_line("TRANSFER ENCODING: "+encoding);
 							if (encoding=="chunked") {
 								chunked=true;
 							}

+ 1 - 1
core/io/http_client.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/image_loader.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/image_loader.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/ip.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/ip.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/ip_address.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 1 - 1
core/io/ip_address.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

+ 4 - 4
core/io/json.cpp

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */
@@ -86,7 +86,7 @@ String JSON::_print_var(const Variant& p_var) {
 			s+="}";
 			return s;
 		};
-		default: return "\""+String(p_var).c_escape()+"\"";
+		default: return "\""+String(p_var).json_escape()+"\"";
 
 	}
 
@@ -288,7 +288,7 @@ Error JSON::_parse_value(Variant &value,Token& token,const CharType *p_str,int &
 
 	if (token.type==TK_CURLY_BRACKET_OPEN) {
 
-		Dictionary d;
+		Dictionary d(true);
 		Error err = _parse_object(d,p_str,index,p_len,line,r_err_str);
 		if (err)
 			return err;
@@ -296,7 +296,7 @@ Error JSON::_parse_value(Variant &value,Token& token,const CharType *p_str,int &
 		return OK;
 	} else if (token.type==TK_BRACKET_OPEN) {
 
-		Array a;
+		Array a(true);
 		Error err = _parse_array(a,p_str,index,p_len,line,r_err_str);
 		if (err)
 			return err;

+ 1 - 1
core/io/json.h

@@ -5,7 +5,7 @@
 /*                           GODOT ENGINE                                */
 /*                    http://www.godotengine.org                         */
 /*************************************************************************/
-/* Copyright (c) 2007-2015 Juan Linietsky, Ariel Manzur.                 */
+/* Copyright (c) 2007-2016 Juan Linietsky, Ariel Manzur.                 */
 /*                                                                       */
 /* Permission is hereby granted, free of charge, to any person obtaining */
 /* a copy of this software and associated documentation files (the       */

Unele fișiere nu au fost afișate deoarece prea multe fișiere au fost modificate în acest diff