Browse Source

added http requests library
added AsyncTask class
added multi display support
improved integration with Oxygine Editor
refactored oxygine.cpp
added virtual Actor::onAdded2Stage/onRemovedFromStage
refactored filesystem - removed copy paste
ability to use native ios/mac osx api for loading images
improved readme
fixed ios/mac projects
removed mac 32 bit support
added Actor::TweenSize
clean up
minor changes

dmuratshin 11 years ago
parent
commit
857ae40bec
100 changed files with 1456 additions and 894 deletions
  1. 2 2
      .hg_archival.txt
  2. 35 134
      .hgignore
  3. 1 0
      Android.mk
  4. 44 2
      CMakeLists.txt
  5. BIN
      examples/Demo/data/ext/fonts.xml.ox/bmfc_font/big_0.png
  6. BIN
      examples/Demo/data/ext/fonts.xml.ox/bmfc_font/main_0.png
  7. BIN
      examples/Demo/data/images/slide.png
  8. 2 0
      examples/Demo/proj.android/AndroidManifest.xml
  9. 1 1
      examples/Demo/proj.cmake/CMakeLists.txt
  10. 1 1
      examples/Demo/proj.emscripten/CMakeLists.txt
  11. 90 74
      examples/Demo/proj.ios/demo_ios.xcodeproj/project.pbxproj
  12. 37 37
      examples/Demo/proj.macosx/demo_macosx.xcodeproj/project.pbxproj
  13. 3 3
      examples/Demo/proj.win32/Demo_vs2010.vcxproj
  14. 3 3
      examples/Demo/proj.win32/Demo_vs2013.vcxproj
  15. 1 1
      examples/Demo/src/TestPolygon.h
  16. 5 7
      examples/Demo/src/TestUserShader2.h
  17. 1 10
      examples/Demo/src/entry_point.cpp
  18. 39 22
      examples/Demo/src/example.cpp
  19. 9 2
      examples/DemoBox2D/proj.ios/DemoBox2D_ios.xcodeproj/project.pbxproj
  20. 5 7
      examples/DemoBox2D/proj.macosx/DemoBox2D_macosx.xcodeproj/project.pbxproj
  21. 2 0
      examples/Game/part1/proj.ios/GamePart1_ios.xcodeproj/project.pbxproj
  22. 3 5
      examples/Game/part1/proj.macosx/GamePart1_macosx.xcodeproj/project.pbxproj
  23. 2 2
      examples/Game/part1/proj.win32/GamePart1_vs2010.vcxproj
  24. 2 2
      examples/Game/part1/proj.win32/GamePart1_vs2013.vcxproj
  25. 2 0
      examples/Game/part2/proj.ios/GamePart2_ios.xcodeproj/project.pbxproj
  26. 3 5
      examples/Game/part2/proj.macosx/GamePart2_macosx.xcodeproj/project.pbxproj
  27. 2 2
      examples/Game/part2/proj.win32/GamePart2_vs2010.vcxproj
  28. 2 2
      examples/Game/part2/proj.win32/GamePart2_vs2013.vcxproj
  29. 2 0
      examples/Game/part3/proj.ios/GamePart3_ios.xcodeproj/project.pbxproj
  30. 3 5
      examples/Game/part3/proj.macosx/GamePart3_macosx.xcodeproj/project.pbxproj
  31. 2 2
      examples/Game/part3/proj.win32/GamePart3_vs2010.vcxproj
  32. 2 2
      examples/Game/part3/proj.win32/GamePart3_vs2013.vcxproj
  33. 2 0
      examples/Game/part4/proj.ios/GamePart4_ios.xcodeproj/project.pbxproj
  34. 0 16
      examples/Game/part4/proj.ios/GamePart5/GamePart5_ios-Prefix.pch
  35. 3 5
      examples/Game/part4/proj.macosx/GamePart4_macosx.xcodeproj/project.pbxproj
  36. 0 9
      examples/Game/part4/proj.macosx/GamePart5/GamePart5_macosx-Prefix.pch
  37. 2 2
      examples/Game/part4/proj.win32/GamePart4_vs2010.vcxproj
  38. 2 2
      examples/Game/part4/proj.win32/GamePart4_vs2013.vcxproj
  39. 2 0
      examples/Game/part5/proj.ios/GamePart5_ios.xcodeproj/project.pbxproj
  40. 3 5
      examples/Game/part5/proj.macosx/GamePart5_macosx.xcodeproj/project.pbxproj
  41. 2 2
      examples/Game/part5/proj.win32/GamePart5_vs2010.vcxproj
  42. 2 2
      examples/Game/part5/proj.win32/GamePart5_vs2013.vcxproj
  43. 42 32
      examples/HelloWorld/proj.ios/HelloWorld_ios.xcodeproj/project.pbxproj
  44. 55 43
      examples/HelloWorld/proj.macosx/HelloWorld_macosx.xcodeproj/project.pbxproj
  45. 2 2
      examples/HelloWorld/proj.win32/HelloWorld_vs2010.vcxproj
  46. 2 2
      examples/HelloWorld/proj.win32/HelloWorld_vs2013.vcxproj
  47. 2 0
      examples/Match3/proj.ios/Match3_ios.xcodeproj/project.pbxproj
  48. 3 5
      examples/Match3/proj.macosx/Match3_macosx.xcodeproj/project.pbxproj
  49. 2 2
      examples/Match3/proj.win32/Match3_vs2010.vcxproj
  50. 2 2
      examples/Match3/proj.win32/Match3_vs2013.vcxproj
  51. 2 0
      examples/TutorialResources/proj.ios/TutorialResources_ios.xcodeproj/project.pbxproj
  52. 3 5
      examples/TutorialResources/proj.macosx/TutorialResources_macosx.xcodeproj/project.pbxproj
  53. 2 2
      examples/TutorialResources/proj.win32/TutorialResources_vs2010.vcxproj
  54. 2 2
      examples/TutorialResources/proj.win32/TutorialResources_vs2013.vcxproj
  55. 46 0
      oxygine/SDL/ios/oxygine/oxygine_ios.xcodeproj/project.pbxproj
  56. 67 7
      oxygine/SDL/macosx/oxygine_macosx/oxygine_macosx.xcodeproj/project.pbxproj
  57. 181 183
      oxygine/SDL/qt/oxygine-framework/oxygine-framework.pro
  58. 10 2
      oxygine/SDL/win32/oxygine_vs2010.vcxproj
  59. 27 0
      oxygine/SDL/win32/oxygine_vs2010.vcxproj.filters
  60. 10 2
      oxygine/SDL/win32/oxygine_vs2013.vcxproj
  61. 27 0
      oxygine/SDL/win32/oxygine_vs2013.vcxproj.filters
  62. 1 0
      oxygine/marmalade/oxygine-framework.mkf
  63. 1 0
      oxygine/marmalade/oxygine.mkf
  64. 1 0
      oxygine/marmalade/oxygine_lib.mkf
  65. 63 14
      oxygine/src/Actor.cpp
  66. 28 8
      oxygine/src/Actor.h
  67. 12 1
      oxygine/src/AnimationFrame.cpp
  68. 7 1
      oxygine/src/AnimationFrame.h
  69. 4 4
      oxygine/src/Box9Sprite.cpp
  70. 8 2
      oxygine/src/Box9Sprite.h
  71. 7 5
      oxygine/src/Button.cpp
  72. 11 2
      oxygine/src/Button.h
  73. 6 6
      oxygine/src/ClipRectActor.cpp
  74. 8 2
      oxygine/src/ClipRectActor.h
  75. 83 1
      oxygine/src/Clock.cpp
  76. 11 5
      oxygine/src/ColorRectSprite.cpp
  77. 12 2
      oxygine/src/ColorRectSprite.h
  78. 18 17
      oxygine/src/DebugActor.cpp
  79. 2 0
      oxygine/src/DebugActor.h
  80. 5 5
      oxygine/src/Draggable.cpp
  81. 20 0
      oxygine/src/EventDispatcher.cpp
  82. 1 0
      oxygine/src/EventDispatcher.h
  83. 6 6
      oxygine/src/Input.cpp
  84. 4 3
      oxygine/src/Input.h
  85. 4 0
      oxygine/src/KeyEvent.h
  86. 26 4
      oxygine/src/MaskedSprite.cpp
  87. 15 2
      oxygine/src/MaskedSprite.h
  88. 68 42
      oxygine/src/MemoryTexture.cpp
  89. 4 4
      oxygine/src/Polygon.cpp
  90. 11 2
      oxygine/src/Polygon.h
  91. 15 6
      oxygine/src/ProgressBar.cpp
  92. 11 3
      oxygine/src/ProgressBar.h
  93. 76 61
      oxygine/src/Property.h
  94. 3 0
      oxygine/src/Serializable.h
  95. 23 0
      oxygine/src/Serialize.cpp
  96. 11 2
      oxygine/src/Serialize.h
  97. 5 5
      oxygine/src/SlidingActor.cpp
  98. 7 2
      oxygine/src/SlidingActor.h
  99. 30 5
      oxygine/src/Sprite.cpp
  100. 17 5
      oxygine/src/Sprite.h

+ 2 - 2
.hg_archival.txt

@@ -1,5 +1,5 @@
 repo: b6d71054df5712e643a0685bc3ba54b123db5729
 repo: b6d71054df5712e643a0685bc3ba54b123db5729
-node: 648f0344190d8b71fdb978bf7bd20da03633445e
+node: 81a82172b0d10ff54826b604faa6f3f3a56144d0
 branch: default
 branch: default
 latesttag: oldrender
 latesttag: oldrender
-latesttagdistance: 554
+latesttagdistance: 627

+ 35 - 134
.hgignore

@@ -1,142 +1,43 @@
 syntax: glob
 syntax: glob
-.DS_Store
-._*
-*.xcodeproj/*.pbxuser
-*.xcodeproj/*.perspective*
-*.xcodeproj/*.mode*
-oxygine/marmalade/build_oxygine_lib_vc10/
-examples/Example/build_example1_vc10/
-tools/PatchMarmalade
-examples/Example2/build_example2_lib_vc10
-examples/Example2/build_example2_vc10
-examples/Example/build_example1_lib_vc10
-build/
-oxygine.zip
+*/proj.android/obj/
+*/proj.android/out/
+*/proj.emscripten/build/
+*/proj.emscripten/build_release/
+*/proj.marmalade/build_*
+*/proj.win32/Debug/
+*/proj.win32/Release/
 *.pyc
 *.pyc
-oxygine/sdl/oxygine/Debug/
-*.ncb
-*.suo
-oxygine/cocos2dx/win32/Debug/
-oxygine/template/oxygine/Debug/
-oxygine/greenlets/greenlets/Debug/
-oxygine/greenlets/greenlets/greenlets.sdf
-*.ipch
 *.opensdf
 *.opensdf
-oxygine/greenlets/greenlets_xcode/
-examples/Match3/build_match3_vc10
-oxygine/greenlets/android/obj/
 *.sdf
 *.sdf
-oxygine/cocos2dx/win32/Release/
-examples/HelloWorld/build_helloworld_vc10/
-examples/SDL/HelloWorld/win32/Debug/
+oxygine/SDL/win32/Debug_*
+examples/*/data/*.dll
 oxygine/SDL/win32/Debug/
 oxygine/SDL/win32/Debug/
-examples/DemoBox2D/box2d/build_box2d_vc10
-examples/DemoBox2D/build_box2d_vc10/
-examples/GameTemplate/build_gametemplate_vc10/
-examples/DemoBox2D/build_box2d_lib_vc10
-examples/HelloWorld/build_helloworld_lib_vc10/
-examples/Match3/build_match3_lib_vc10/
-examples/GameTemplate/build_gametemplate_lib_vc10/
-examples/GameTemplate/build_gametemplate_lib_vc10
-examples/HelloWorld/data-ram/log.txt
-tools/out.xml
-examples/SDL/HelloWorld/win32/
 oxygine/SDL/win32/Release/
 oxygine/SDL/win32/Release/
-oxygine/marmalade/lib/
-oxygine/SDL/lib/
-examples/HelloWorld/build_helloworld_src_vc10
-examples/DemoBox2D/build_box2d_src_vc10
-examples/GameTemplate/build_gametemplate_src_vc10/
-examples/Match3/build_match3_src_vc10
-examples/GameTemplate/data-ram/
-_oxygine.zip
-lib/
-oxygine/marmalade/build_oxygine_lib_xcode
-
-doc/html/
-temp/
-
-examples/Demo/build_demo_src_vc10
-examples/Demo/win32/Debug
-examples/Demo/data/*.dll
-examples/Demo/win32/Release/
-*.orig
-oxygine/system_data/data2
-examples/Demo/build_demo_src_vc11
-examples/Demo/build_demo_vc10
-examples/HelloWorld/build_helloworld_src_vc11
-examples/DemoBox2D/build_box2d_src_vc11
-examples/GameTemplate/build_gametemplate_src_vc11
-examples/Match3/build_match3_src_vc11/
-
-oxygine-framework.zip
-examples/TutorialResources/build_tutorialresources_vc11/
-oxygine/system_data/system.zip
-examples/Demo/data/ext/res_ui.xml.ox/
-examples/Demo/data/ext/res.xml.ox/
+*.suo
+examples/*/proj.win32/Debug*
+examples/*/proj.win32/Release*
+examples/*/proj.win32/ipch/
+oxygine/SDL/win32/Release*
+oxygine/SDL/win32/Debug*
 oxygine/system_data/data/
 oxygine/system_data/data/
-examples/Demo/win32/My Inspector XE Results *
-examples/DemoBox2D/build_box2d_vc11/
-examples/Demo/build_demo_vc11/
-examples/TutorialResources/build_tutorialresources_vc10
-examples/Game/part1/build_game_vc
-examples/Game/part1/build_game_vc10
-examples/Demo/proj.marmalade/build_demo_vc10
-examples/Demo/proj.win32/Debug
-examples/Demo/proj.win32/Release
-examples/Demo/data-ram/
-examples/Demo/proj.android/libs/
-examples/Demo/proj.android/obj/
-obj/
-examples/Demo/proj.android/bin/
-examples/Demo/proj.android/gen/
-examples/Demo/proj.android/.idea
-examples/Demo/proj.android/out
-*.iml
-examples/Demo/proj.android/assets/
-libs/
-examples/Game/part3/proj.win32/Debug/
-examples/HelloWorld/proj.win32/Debug/
-examples/Match3/proj.win32/Debug/
-examples/HelloWorld/proj.android/bin/
-examples/HelloWorld/proj.android/gen/
-examples/Game/part1/proj.win32/Debug/
-examples/Game/part4/proj.win32/Debug/
-examples/DemoBox2D/box2d/Debug/
-examples/DemoBox2D/box2d/Release/
-examples/DemoBox2D/proj.marmalade/build_demobox2d_*
-examples/TutorialResources/proj.win32/Debug/
-oxygine/SDL/qt/build-oxygine-*
-examples/HelloWorld/build-hello-*
-examples/DemoBox2D/proj.win32/Debug/
-oxygine/SDL/qt/build-oxygine-Debug
-examples/Demo/proj.android/local.properties
-proguard-project.txt
-examples/Demo/proj.marmalade/build_demo_
-examples/Demo/proj.marmalade/build_demo_*
-examples/DemoBox2D/data/*.dll
-examples/Game/part4/data/*.dll
-examples/HelloWorld/data/*.dll
-examples/Match3/data/*.dll
-examples/TutorialResources/data/*.dll
-examples/Demo/proj.win32/Win32/
-data.js
-examples/HelloWorld/proj.win32/Win32/
-ident.free
-examples/Game/part4/build_game_vc12/
-Debug_vs2010
-Release_vs2010
-Debug_vs2013
-Release_vs2013
-examples/HelloWorld/proj.win32/Release/
-examples/Game/part4/build_game_vc10/
-build_release
-*/proj.android/gen/
-*/proj.android/bin/
-oxygine/SDL/win32/Debug_vs2015
-oxygine-framework-with-sdl.zip
-examples/Game/part2/proj.win32/Debug
-*/proj.win32/Debug/
+examples/*/proj.emscripten/data.js
+oxygine/system_data/system.zip
+examples/Game/*/proj.emscripten/data.js
+oxygine/SDL/android/lib/gen/
 .idea
 .idea
-syntax: regexp
-^build/
+examples/*/proj.android/gen/
+examples/*/proj.android/bin/
+oxygine/SDL/android/lib/bin/
+examples/*/data-ram/
+examples/*/proj.android/libs/
+oxygine/SDL/android/lib/src/org/libsdl/app/SDLActivity.java
+oxygine-framework-with-sdl.zip
+oxygine-framework.zip
+*.orig
+xcuserdata
+contents.xcworkspacedata
+examples/Demo/data/ext/res_ui.xml.ox
+examples/Demo/data/ext/res.xml.ox
+examples/*/proj.cmake/build/
+temp/
+examples/Game/*/proj.cmake/build/

+ 1 - 0
Android.mk

@@ -45,6 +45,7 @@ LOCAL_SRC_FILES += \
 LOCAL_SRC_FILES += \
 LOCAL_SRC_FILES += \
 				$(SRC)/core/android/jniUtils.cpp \
 				$(SRC)/core/android/jniUtils.cpp \
 				$(SRC)/core/android/jniHelper.cpp \
 				$(SRC)/core/android/jniHelper.cpp \
+				$(SRC)/core/android/HttpRequestJavaTask.cpp
 
 
 LOCAL_SRC_FILES += \
 LOCAL_SRC_FILES += \
 				$(SRC)/core/gl/NativeTextureGLES.cpp \
 				$(SRC)/core/gl/NativeTextureGLES.cpp \

+ 44 - 2
CMakeLists.txt

@@ -18,6 +18,9 @@ else(WIN32)
 		message(STATUS "SDL notfound")
 		message(STATUS "SDL notfound")
 		set(SDL2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../SDL/include)					
 		set(SDL2_INCLUDE_DIRS ${CMAKE_CURRENT_SOURCE_DIR}/../SDL/include)					
 	endif()
 	endif()
+
+	find_package(CURL)
+
 endif(WIN32)
 endif(WIN32)
 
 
 
 
@@ -43,9 +46,12 @@ elseif(MINGW)
 	set(THIRD_PARTY ${CMAKE_CURRENT_SOURCE_DIR}/oxygine/third_party/win32_mingw)
 	set(THIRD_PARTY ${CMAKE_CURRENT_SOURCE_DIR}/oxygine/third_party/win32_mingw)
 	set(libprefix lib)
 	set(libprefix lib)
 	set(OX_HAVE_LIBJPEG 0)
 	set(OX_HAVE_LIBJPEG 0)
+	file(GLOB OXYGINE_JS_LIBRARIES ${CMAKE_CURRENT_SOURCE_DIR}/oxygine/src/core/emscripten/*.js)
 endif()
 endif()
+ 
 
 
 if (EMSCRIPTEN)
 if (EMSCRIPTEN)
+	set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/oxygine/src/core/emscripten/HttpRequestEmscriptenTask.cpp)
 else(EMSCRIPTEN)
 else(EMSCRIPTEN)
 	set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/oxygine/greenlets/src/greenlet.c)
 	set(SOURCES ${CMAKE_CURRENT_SOURCE_DIR}/oxygine/greenlets/src/greenlet.c)
 endif(EMSCRIPTEN)
 endif(EMSCRIPTEN)
@@ -53,6 +59,19 @@ endif(EMSCRIPTEN)
 
 
 set(OXYGINE_ROOT_SRC ${CMAKE_CURRENT_SOURCE_DIR}/oxygine/src)
 set(OXYGINE_ROOT_SRC ${CMAKE_CURRENT_SOURCE_DIR}/oxygine/src)
 set(FOLDERS . closure minizip core core/gl dev_tools minizip math pugixml res text_utils utils winnie_alloc)
 set(FOLDERS . closure minizip core core/gl dev_tools minizip math pugixml res text_utils utils winnie_alloc)
+if (WIN32)
+	set(FOLDERS ${FOLDERS} core/curl)
+	include_directories(${THIRD_PARTY}/curl/)
+	set(OX_HAVE_LIBCURL 1)
+else(WIN32)
+	include_directories(${CURL_INCLUDE_DIRS})
+	set(CORE_LIBS ${CORE_LIBS} ${CURL_LIBRARIES})
+	#set(FOLDERS ${FOLDERS} core/curl)
+	set(OX_HAVE_LIBCURL 0)
+	set(OX_NO_HTTP 1)
+	set(OX_DEFINITIONS ${OX_DEFINITIONS} -DOX_NO_HTTP)
+endif(WIN32)
+
 foreach(F ${FOLDERS})
 foreach(F ${FOLDERS})
 	file(GLOB FLS #RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/
 	file(GLOB FLS #RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}/
 		${OXYGINE_ROOT_SRC}/${F}/*.cpp
 		${OXYGINE_ROOT_SRC}/${F}/*.cpp
@@ -86,6 +105,12 @@ set(OXYGINE_LIBRARY_DIRS
 	${OXYGINE_SOURCE_DIR}/libs
 	${OXYGINE_SOURCE_DIR}/libs
 	${THIRD_PARTY}/libraries)
 	${THIRD_PARTY}/libraries)
 
 
+
+if (MINGW) 
+	set(CORE_LIBS ${CORE_LIBS}	mingw32)
+endif(MINGW)
+ 
+
 set(CORE_LIBS 
 set(CORE_LIBS 
 	${CORE_LIBS}
 	${CORE_LIBS}
 	oxygine-framework
 	oxygine-framework
@@ -94,12 +119,14 @@ set(CORE_LIBS
 	${OPENGL_LIBRARIES}		
 	${OPENGL_LIBRARIES}		
 )
 )
 
 
-
 if (WIN32)
 if (WIN32)
-	set(CORE_LIBS
+	set(CORE_LIBS		
 		${CORE_LIBS}
 		${CORE_LIBS}
 		pthreadVCE2
 		pthreadVCE2
+		libcurl_imp
+		ws2_32
 		)
 		)
+
 elseif(EMSCRIPTEN)
 elseif(EMSCRIPTEN)
 
 
 else(WIN32)
 else(WIN32)
@@ -109,6 +136,7 @@ else(WIN32)
 	)
 	)
 endif(WIN32)
 endif(WIN32)
 
 
+
 #add png library
 #add png library
 if (OX_HAVE_LIBPNG)
 if (OX_HAVE_LIBPNG)
 	set(CORE_LIBS
 	set(CORE_LIBS
@@ -131,6 +159,9 @@ else(EMSCRIPTEN)
 		${libprefix}z${libprefix})
 		${libprefix}z${libprefix})
 endif(EMSCRIPTEN)
 endif(EMSCRIPTEN)
 
 
+
+message(STATUS ${CORE_LIBS})
+
 #add jpeg library
 #add jpeg library
 if (OX_HAVE_LIBJPEG)
 if (OX_HAVE_LIBJPEG)
 	set(OX_DEFINITIONS	${OX_DEFINITIONS}
 	set(OX_DEFINITIONS	${OX_DEFINITIONS}
@@ -141,6 +172,11 @@ if (OX_HAVE_LIBJPEG)
 endif(OX_HAVE_LIBJPEG)
 endif(OX_HAVE_LIBJPEG)
 
 
 
 
+if (OX_HAVE_LIBCURL)
+	set(OX_DEFINITIONS ${OX_DEFINITIONS}
+		-DOX_HAVE_LIBCURL)
+endif(OX_HAVE_LIBCURL)
+
 add_definitions(${OX_DEFINITIONS})
 add_definitions(${OX_DEFINITIONS})
 add_library(oxygine-framework STATIC ${SOURCES})
 add_library(oxygine-framework STATIC ${SOURCES})
 
 
@@ -161,6 +197,12 @@ set(OXYGINE_INCLUDE_DIRS
 	${OXYGINE_INCLUDE_DIRS}
 	${OXYGINE_INCLUDE_DIRS}
 	PARENT_SCOPE)
 	PARENT_SCOPE)
 
 
+set(OXYGINE_JS_LIBRARIES
+	${OXYGINE_JS_LIBRARIES}
+	PARENT_SCOPE)
+
+
+
 set(CMAKE_INSTALL_PREFIX ../libs)
 set(CMAKE_INSTALL_PREFIX ../libs)
 install(TARGETS oxygine-framework CONFIGURATIONS Debug DESTINATION ./debug)
 install(TARGETS oxygine-framework CONFIGURATIONS Debug DESTINATION ./debug)
 install(TARGETS oxygine-framework CONFIGURATIONS Release DESTINATION ./release)
 install(TARGETS oxygine-framework CONFIGURATIONS Release DESTINATION ./release)

BIN
examples/Demo/data/ext/fonts.xml.ox/bmfc_font/big_0.png


BIN
examples/Demo/data/ext/fonts.xml.ox/bmfc_font/main_0.png


BIN
examples/Demo/data/images/slide.png


+ 2 - 0
examples/Demo/proj.android/AndroidManifest.xml

@@ -26,6 +26,8 @@
 
 
     <!-- Android 2.3.3 -->
     <!-- Android 2.3.3 -->
     <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="12" />
     <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="12" />
+    <uses-permission android:name="android.permission.INTERNET" />
+    <uses-permission android:name="android.permission.WAKE_LOCK" />
 
 
     <!-- OpenGL ES 2.0 -->
     <!-- OpenGL ES 2.0 -->
     <uses-feature android:glEsVersion="0x00020000" /> 
     <uses-feature android:glEsVersion="0x00020000" /> 

+ 1 - 1
examples/Demo/proj.cmake/CMakeLists.txt

@@ -6,6 +6,6 @@ add_definitions(${OXYGINE_DEFINITIONS})
 include_directories(${OXYGINE_INCLUDE_DIRS})
 include_directories(${OXYGINE_INCLUDE_DIRS})
 link_directories(${OXYGINE_LIBRARY_DIRS})
 link_directories(${OXYGINE_LIBRARY_DIRS})
 
 
-add_executable(Demo ../src/entry_point.cpp ../src/example.cpp ../src/test.cpp  ../src/TestBox9Sprite.h ../src/TestClipRect.h ../src/TestDrag.h ../src/TestInputText.h ../src/TestManageRes.h ../src/TestMask.h ../src/TestPerf.h ../src/TestProgressBar.h ../src/TestRender2Texture.h ../src/TestSliding.h ../src/TestTexel2Pixel.h ../src/TestText.h ../src/TestTextureFormat.h ../src/TestTweens.h ../src/TestUserShader.h  ../src/TestUserShader2.h ../src/example.h ../src/test.h )
+add_executable(Demo ../src/entry_point.cpp ../src/example.cpp ../src/test.cpp  ../src/TestBox9Sprite.h ../src/TestClipRect.h ../src/TestDrag.h ../src/TestHttp.h ../src/TestInputText.h ../src/TestManageRes.h ../src/TestMask.h ../src/TestPerf.h ../src/TestPolygon.h ../src/TestProgressBar.h ../src/TestRender2Texture.h ../src/TestSliding.h ../src/TestTexel2Pixel.h ../src/TestText.h ../src/TestTextureFormat.h ../src/TestTweens.h ../src/TestUserShader.h ../src/TestUserShader2.h ../src/example.h ../src/test.h )
 
 
 target_link_libraries(Demo ${OXYGINE_CORE_LIBS})
 target_link_libraries(Demo ${OXYGINE_CORE_LIBS})

+ 1 - 1
examples/Demo/proj.emscripten/CMakeLists.txt

@@ -22,4 +22,4 @@ set(linkFlags "${linkFlags} -s NO_EXIT_RUNTIME=1 -s FULL_ES2=1 -s WARN_ON_UNDEFI
 set_target_properties(Demo PROPERTIES LINK_FLAGS "${linkFlags}")
 set_target_properties(Demo PROPERTIES LINK_FLAGS "${linkFlags}")
 
 
 target_link_libraries(Demo ${OXYGINE_CORE_LIBS})
 target_link_libraries(Demo ${OXYGINE_CORE_LIBS})
-em_link_pre_js(Demo ${CMAKE_CURRENT_SOURCE_DIR}/data.js)
+em_link_pre_js(Demo ${OXYGINE_JS_LIBRARIES} ${CMAKE_CURRENT_SOURCE_DIR}/data.js)

+ 90 - 74
examples/Demo/proj.ios/demo_ios.xcodeproj/project.pbxproj

@@ -13,6 +13,7 @@
 		04998EE717F8ADB4003441C3 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE217F8ADB4003441C3 /* QuartzCore.framework */; };
 		04998EE717F8ADB4003441C3 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE217F8ADB4003441C3 /* QuartzCore.framework */; };
 		04998EE817F8ADB4003441C3 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE317F8ADB4003441C3 /* AudioToolbox.framework */; };
 		04998EE817F8ADB4003441C3 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE317F8ADB4003441C3 /* AudioToolbox.framework */; };
 		04998EE917F8ADB4003441C3 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE417F8ADB4003441C3 /* CoreAudio.framework */; };
 		04998EE917F8ADB4003441C3 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE417F8ADB4003441C3 /* CoreAudio.framework */; };
+		04998EE917F8ADB4003441C3 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE417F8ADB4003441C3 /* CoreAudio.framework */; };
 		04998EEA17F8ADB4003441C3 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE517F8ADB4003441C3 /* OpenGLES.framework */; };
 		04998EEA17F8ADB4003441C3 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE517F8ADB4003441C3 /* OpenGLES.framework */; };
 		04998EEE17F8ADD4003441C3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EEB17F8ADD4003441C3 /* UIKit.framework */; };
 		04998EEE17F8ADD4003441C3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EEB17F8ADD4003441C3 /* UIKit.framework */; };
 		04998EEF17F8ADD4003441C3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EEC17F8ADD4003441C3 /* Foundation.framework */; };
 		04998EEF17F8ADD4003441C3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EEC17F8ADD4003441C3 /* Foundation.framework */; };
@@ -21,15 +22,16 @@
 		04998EF817F8B6F3003441C3 /* libjpeg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EF617F8B6F3003441C3 /* libjpeg.a */; };
 		04998EF817F8B6F3003441C3 /* libjpeg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EF617F8B6F3003441C3 /* libjpeg.a */; };
 		049B52B11871EBFA00EF3C66 /* liboxygine_ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 049B52AD1871EBBA00EF3C66 /* liboxygine_ios.a */; };
 		049B52B11871EBFA00EF3C66 /* liboxygine_ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 049B52AD1871EBBA00EF3C66 /* liboxygine_ios.a */; };
 		04E9AD3F1876FE84006A7317 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 04E9AD3E1876FE84006A7317 /* Images.xcassets */; };
 		04E9AD3F1876FE84006A7317 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 04E9AD3E1876FE84006A7317 /* Images.xcassets */; };
-		1E839D002B2BA83FC83A695A /* demo in Resources */ = {isa = PBXBuildFile; fileRef = 04FE4D4FB640E0DF92DFB865 /* demo */; };
-		2DC477AC10D6C07B3FE008F6 /* entry_point.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 360377333740D8A2FD15BBE6 /* entry_point.cpp */; };
-		3A631A475DE035FC53ADE5EA /* ext in Resources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* ext */; };
-		923A9E9D1A1FCCF300A6F08E /* light_fs.glsl in Resources */ = {isa = PBXBuildFile; fileRef = 923A9E9B1A1FCCF300A6F08E /* light_fs.glsl */; };
-		923A9E9E1A1FCCF300A6F08E /* light_vs.glsl in Resources */ = {isa = PBXBuildFile; fileRef = 923A9E9C1A1FCCF300A6F08E /* light_vs.glsl */; };
-		C8860D93875589970329DCCD /* test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DA100C319512824B7570663 /* test.cpp */; };
-		CD59C69314E9E74CD0A11E03 /* images in Resources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* images */; };
-		DA49ED8903C628BA578C8670 /* example.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BF9628FC8D38F9748F0CDEB /* example.cpp */; };
-		EFF139F8BA484314F7AAF645 /* xmls in Resources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* xmls */; };
+		2DC477AC10D6C07B3FE008F6 /* ../src/entry_point.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 360377333740D8A2FD15BBE6 /* ../src/entry_point.cpp */; };
+		DA49ED8903C628BA578C8670 /* ../src/example.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BF9628FC8D38F9748F0CDEB /* ../src/example.cpp */; };
+		C8860D93875589970329DCCD /* ../src/test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DA100C319512824B7570663 /* ../src/test.cpp */; };
+		1E839D002B2BA83FC83A695A /* ../data/demo in Sources */ = {isa = PBXBuildFile; fileRef = 04FE4D4FB640E0DF92DFB865 /* ../data/demo */; };
+		3A631A475DE035FC53ADE5EA /* ../data/ext in Sources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* ../data/ext */; };
+		CD59C69314E9E74CD0A11E03 /* ../data/images in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/images */; };
+		EFF139F8BA484314F7AAF645 /* ../data/light_fs.glsl in Sources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* ../data/light_fs.glsl */; };
+		F2CFD518E4E2E05ECEDBB262 /* ../data/light_vs.glsl in Sources */ = {isa = PBXBuildFile; fileRef = BA41FC88D76540A6905224D6 /* ../data/light_vs.glsl */; };
+		693088A7AB377368EE4A018E /* ../data/xmls in Sources */ = {isa = PBXBuildFile; fileRef = 2CE4BD5BB9DEF92439C0AB58 /* ../data/xmls */; };
+
 /* End PBXBuildFile section */
 /* End PBXBuildFile section */
 
 
 /* Begin PBXContainerItemProxy section */
 /* Begin PBXContainerItemProxy section */
@@ -64,8 +66,6 @@
 /* End PBXContainerItemProxy section */
 /* End PBXContainerItemProxy section */
 
 
 /* Begin PBXFileReference section */
 /* Begin PBXFileReference section */
-		047F6BD19F885FF186A1447C /* TestTextureFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestTextureFormat.h; path = ../src/TestTextureFormat.h; sourceTree = "<group>"; };
-		048AD0AD197D24AB001963EF /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
 		04998CEC17F8A933003441C3 /* Demo_ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Demo_ios.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		04998CEC17F8A933003441C3 /* Demo_ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Demo_ios.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		04998D2F17F8A96E003441C3 /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = "../../../..//SDL/Xcode-iOS/SDL/SDL.xcodeproj"; sourceTree = "<group>"; };
 		04998D2F17F8A96E003441C3 /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = "../../../..//SDL/Xcode-iOS/SDL/SDL.xcodeproj"; sourceTree = "<group>"; };
 		04998D3917F8A9AA003441C3 /* oxygine_ios.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = oxygine_ios.xcodeproj; path = "../../..//oxygine/SDL/ios/oxygine/oxygine_ios.xcodeproj"; sourceTree = "<group>"; };
 		04998D3917F8A9AA003441C3 /* oxygine_ios.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = oxygine_ios.xcodeproj; path = "../../..//oxygine/SDL/ios/oxygine/oxygine_ios.xcodeproj"; sourceTree = "<group>"; };
@@ -73,38 +73,44 @@
 		04998EE217F8ADB4003441C3 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
 		04998EE217F8ADB4003441C3 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
 		04998EE317F8ADB4003441C3 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
 		04998EE317F8ADB4003441C3 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
 		04998EE417F8ADB4003441C3 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
 		04998EE417F8ADB4003441C3 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
+		048AD0AD197D24AB001963EF /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
 		04998EE517F8ADB4003441C3 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
 		04998EE517F8ADB4003441C3 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
 		04998EEB17F8ADD4003441C3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
 		04998EEB17F8ADD4003441C3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
 		04998EEC17F8ADD4003441C3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
 		04998EEC17F8ADD4003441C3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
 		04998EED17F8ADD4003441C3 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
 		04998EED17F8ADD4003441C3 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
 		04998EF517F8B6F3003441C3 /* libpng.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpng.a; path = "../../..//oxygine/third_party/ios/libraries/libpng.a"; sourceTree = "<group>"; };
 		04998EF517F8B6F3003441C3 /* libpng.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpng.a; path = "../../..//oxygine/third_party/ios/libraries/libpng.a"; sourceTree = "<group>"; };
 		04998EF617F8B6F3003441C3 /* libjpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjpeg.a; path = "../../..//oxygine/third_party/ios/libraries/libjpeg.a"; sourceTree = "<group>"; };
 		04998EF617F8B6F3003441C3 /* libjpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjpeg.a; path = "../../..//oxygine/third_party/ios/libraries/libjpeg.a"; sourceTree = "<group>"; };
-		04E9AD3E1876FE84006A7317 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = Demo/Images.xcassets; sourceTree = "<group>"; };
-		04FE4D4FB640E0DF92DFB865 /* demo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = demo; path = ../data/demo; sourceTree = "<group>"; };
-		0BF9628FC8D38F9748F0CDEB /* example.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = example.cpp; path = ../src/example.cpp; sourceTree = "<group>"; };
-		2418B9A339E6004913AF5980 /* TestUserShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestUserShader.h; path = ../src/TestUserShader.h; sourceTree = "<group>"; };
-		2CE4BD5BB9DEF92439C0AB58 /* TestClipRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestClipRect.h; path = ../src/TestClipRect.h; sourceTree = "<group>"; };
-		360377333740D8A2FD15BBE6 /* entry_point.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = entry_point.cpp; path = ../src/entry_point.cpp; sourceTree = "<group>"; };
-		4DA100C319512824B7570663 /* test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = test.cpp; path = ../src/test.cpp; sourceTree = "<group>"; };
-		4E9DE6A8FCBDF43BC876EC90 /* TestTexel2Pixel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestTexel2Pixel.h; path = ../src/TestTexel2Pixel.h; sourceTree = "<group>"; };
-		5DE458993031811A4C7D28C1 /* xmls */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = xmls; path = ../data/xmls; sourceTree = "<group>"; };
-		67194AC90FEA68E7C96E6907 /* test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = test.h; path = ../src/test.h; sourceTree = "<group>"; };
-		7623D793B59EF0CD569E6EC2 /* TestPerf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestPerf.h; path = ../src/TestPerf.h; sourceTree = "<group>"; };
-		7746CA7A63049ED8F7D6BF42 /* TestInputText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestInputText.h; path = ../src/TestInputText.h; sourceTree = "<group>"; };
-		7EEFDEEC289FCBB5FA67F822 /* TestSliding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestSliding.h; path = ../src/TestSliding.h; sourceTree = "<group>"; };
-		7F3B12E3C9D554D9FE28101D /* ext */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = ext; path = ../data/ext; sourceTree = "<group>"; };
-		8F2AFB956EEAEED67C5B7571 /* TestText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestText.h; path = ../src/TestText.h; sourceTree = "<group>"; };
-		923A9E9B1A1FCCF300A6F08E /* light_fs.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = light_fs.glsl; path = ../data/light_fs.glsl; sourceTree = "<group>"; };
-		923A9E9C1A1FCCF300A6F08E /* light_vs.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; name = light_vs.glsl; path = ../data/light_vs.glsl; sourceTree = "<group>"; };
-		AFA30E959880563E6ABBBC4F /* TestProgressBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestProgressBar.h; path = ../src/TestProgressBar.h; sourceTree = "<group>"; };
-		B52CCD463855CF91A7FBDB8E /* TestRender2Texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestRender2Texture.h; path = ../src/TestRender2Texture.h; sourceTree = "<group>"; };
-		BA41FC88D76540A6905224D6 /* TestBox9Sprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestBox9Sprite.h; path = ../src/TestBox9Sprite.h; sourceTree = "<group>"; };
-		BD0E956CC3A2F7EB94822B5C /* TestMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestMask.h; path = ../src/TestMask.h; sourceTree = "<group>"; };
-		C570FAEF487CD34B62389F89 /* TestTweens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestTweens.h; path = ../src/TestTweens.h; sourceTree = "<group>"; };
-		CAD9D6A98986EA8082368448 /* example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
-		D954BD82D7708B65A08FB6B9 /* TestManageRes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestManageRes.h; path = ../src/TestManageRes.h; sourceTree = "<group>"; };
-		F196143B0370A9D348494ACC /* TestDrag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestDrag.h; path = ../src/TestDrag.h; sourceTree = "<group>"; };
-		F6123B1E6FE4471A00F49751 /* images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
+		04E9AD3E1876FE84006A7317 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name =Images.xcassets; path = Demo/Images.xcassets; sourceTree = "<group>"; };
+		360377333740D8A2FD15BBE6 /* ../src/entry_point.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = entry_point.cpp; path = ../src/entry_point.cpp; sourceTree = "<group>"; };
+		0BF9628FC8D38F9748F0CDEB /* ../src/example.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = example.cpp; path = ../src/example.cpp; sourceTree = "<group>"; };
+		4DA100C319512824B7570663 /* ../src/test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = test.cpp; path = ../src/test.cpp; sourceTree = "<group>"; };
+		F196143B0370A9D348494ACC /* ../src/TestBox9Sprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestBox9Sprite.h; path = ../src/TestBox9Sprite.h; sourceTree = "<group>"; };
+		7746CA7A63049ED8F7D6BF42 /* ../src/TestClipRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestClipRect.h; path = ../src/TestClipRect.h; sourceTree = "<group>"; };
+		D954BD82D7708B65A08FB6B9 /* ../src/TestDrag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestDrag.h; path = ../src/TestDrag.h; sourceTree = "<group>"; };
+		BD0E956CC3A2F7EB94822B5C /* ../src/TestHttp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestHttp.h; path = ../src/TestHttp.h; sourceTree = "<group>"; };
+		7623D793B59EF0CD569E6EC2 /* ../src/TestInputText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestInputText.h; path = ../src/TestInputText.h; sourceTree = "<group>"; };
+		AFA30E959880563E6ABBBC4F /* ../src/TestManageRes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestManageRes.h; path = ../src/TestManageRes.h; sourceTree = "<group>"; };
+		B52CCD463855CF91A7FBDB8E /* ../src/TestMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestMask.h; path = ../src/TestMask.h; sourceTree = "<group>"; };
+		7EEFDEEC289FCBB5FA67F822 /* ../src/TestPerf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestPerf.h; path = ../src/TestPerf.h; sourceTree = "<group>"; };
+		4E9DE6A8FCBDF43BC876EC90 /* ../src/TestPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestPolygon.h; path = ../src/TestPolygon.h; sourceTree = "<group>"; };
+		8F2AFB956EEAEED67C5B7571 /* ../src/TestProgressBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestProgressBar.h; path = ../src/TestProgressBar.h; sourceTree = "<group>"; };
+		047F6BD19F885FF186A1447C /* ../src/TestRender2Texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestRender2Texture.h; path = ../src/TestRender2Texture.h; sourceTree = "<group>"; };
+		C570FAEF487CD34B62389F89 /* ../src/TestSliding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestSliding.h; path = ../src/TestSliding.h; sourceTree = "<group>"; };
+		2418B9A339E6004913AF5980 /* ../src/TestTexel2Pixel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestTexel2Pixel.h; path = ../src/TestTexel2Pixel.h; sourceTree = "<group>"; };
+		CAD9D6A98986EA8082368448 /* ../src/TestText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestText.h; path = ../src/TestText.h; sourceTree = "<group>"; };
+		67194AC90FEA68E7C96E6907 /* ../src/TestTextureFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestTextureFormat.h; path = ../src/TestTextureFormat.h; sourceTree = "<group>"; };
+		5AFC0664D7BA80AE2A75BF0E /* ../src/TestTweens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestTweens.h; path = ../src/TestTweens.h; sourceTree = "<group>"; };
+		12CAC42FDF06ABE860CFEA53 /* ../src/TestUserShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestUserShader.h; path = ../src/TestUserShader.h; sourceTree = "<group>"; };
+		0F4469FB587862663D529DC9 /* ../src/TestUserShader2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestUserShader2.h; path = ../src/TestUserShader2.h; sourceTree = "<group>"; };
+		B6A9281364AF5D3B581D374C /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
+		4013C6794AAE8DFC641D2870 /* ../src/test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = test.h; path = ../src/test.h; sourceTree = "<group>"; };
+		04FE4D4FB640E0DF92DFB865 /* ../data/demo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = demo; path = ../data/demo; sourceTree = "<group>"; };
+		7F3B12E3C9D554D9FE28101D /* ../data/ext */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = ext; path = ../data/ext; sourceTree = "<group>"; };
+		F6123B1E6FE4471A00F49751 /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
+		5DE458993031811A4C7D28C1 /* ../data/light_fs.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = light_fs.glsl; path = ../data/light_fs.glsl; sourceTree = "<group>"; };
+		BA41FC88D76540A6905224D6 /* ../data/light_vs.glsl */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = light_vs.glsl; path = ../data/light_vs.glsl; sourceTree = "<group>"; };
+		2CE4BD5BB9DEF92439C0AB58 /* ../data/xmls */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = xmls; path = ../data/xmls; sourceTree = "<group>"; };
+
 /* End PBXFileReference section */
 /* End PBXFileReference section */
 
 
 /* Begin PBXFrameworksBuildPhase section */
 /* Begin PBXFrameworksBuildPhase section */
@@ -178,15 +184,17 @@
 			name = Frameworks;
 			name = Frameworks;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+
 		04998CF617F8A933003441C3 /* Supporting Files */ = {
 		04998CF617F8A933003441C3 /* Supporting Files */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
-				923A9E9B1A1FCCF300A6F08E /* light_fs.glsl */,
-				923A9E9C1A1FCCF300A6F08E /* light_vs.glsl */,
-				04FE4D4FB640E0DF92DFB865 /* demo */,
-				7F3B12E3C9D554D9FE28101D /* ext */,
-				F6123B1E6FE4471A00F49751 /* images */,
-				5DE458993031811A4C7D28C1 /* xmls */,
+				04FE4D4FB640E0DF92DFB865 /* demo */, 
+				7F3B12E3C9D554D9FE28101D /* ext */, 
+				F6123B1E6FE4471A00F49751 /* images */, 
+				5DE458993031811A4C7D28C1 /* light_fs.glsl */, 
+				BA41FC88D76540A6905224D6 /* light_vs.glsl */, 
+				2CE4BD5BB9DEF92439C0AB58 /* xmls */, 
+
 			);
 			);
 			name = "Supporting Files";
 			name = "Supporting Files";
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -202,26 +210,30 @@
 		04998D4417F8A9ED003441C3 /* src */ = {
 		04998D4417F8A9ED003441C3 /* src */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
-				360377333740D8A2FD15BBE6 /* entry_point.cpp */,
-				0BF9628FC8D38F9748F0CDEB /* example.cpp */,
-				4DA100C319512824B7570663 /* test.cpp */,
-				BA41FC88D76540A6905224D6 /* TestBox9Sprite.h */,
-				2CE4BD5BB9DEF92439C0AB58 /* TestClipRect.h */,
-				F196143B0370A9D348494ACC /* TestDrag.h */,
-				7746CA7A63049ED8F7D6BF42 /* TestInputText.h */,
-				D954BD82D7708B65A08FB6B9 /* TestManageRes.h */,
-				BD0E956CC3A2F7EB94822B5C /* TestMask.h */,
-				7623D793B59EF0CD569E6EC2 /* TestPerf.h */,
-				AFA30E959880563E6ABBBC4F /* TestProgressBar.h */,
-				B52CCD463855CF91A7FBDB8E /* TestRender2Texture.h */,
-				7EEFDEEC289FCBB5FA67F822 /* TestSliding.h */,
-				4E9DE6A8FCBDF43BC876EC90 /* TestTexel2Pixel.h */,
-				8F2AFB956EEAEED67C5B7571 /* TestText.h */,
-				047F6BD19F885FF186A1447C /* TestTextureFormat.h */,
-				C570FAEF487CD34B62389F89 /* TestTweens.h */,
-				2418B9A339E6004913AF5980 /* TestUserShader.h */,
-				CAD9D6A98986EA8082368448 /* example.h */,
-				67194AC90FEA68E7C96E6907 /* test.h */,
+				360377333740D8A2FD15BBE6 /* entry_point.cpp */, 
+				0BF9628FC8D38F9748F0CDEB /* example.cpp */, 
+				4DA100C319512824B7570663 /* test.cpp */, 
+				F196143B0370A9D348494ACC /* TestBox9Sprite.h */, 
+				7746CA7A63049ED8F7D6BF42 /* TestClipRect.h */, 
+				D954BD82D7708B65A08FB6B9 /* TestDrag.h */, 
+				BD0E956CC3A2F7EB94822B5C /* TestHttp.h */, 
+				7623D793B59EF0CD569E6EC2 /* TestInputText.h */, 
+				AFA30E959880563E6ABBBC4F /* TestManageRes.h */, 
+				B52CCD463855CF91A7FBDB8E /* TestMask.h */, 
+				7EEFDEEC289FCBB5FA67F822 /* TestPerf.h */, 
+				4E9DE6A8FCBDF43BC876EC90 /* TestPolygon.h */, 
+				8F2AFB956EEAEED67C5B7571 /* TestProgressBar.h */, 
+				047F6BD19F885FF186A1447C /* TestRender2Texture.h */, 
+				C570FAEF487CD34B62389F89 /* TestSliding.h */, 
+				2418B9A339E6004913AF5980 /* TestTexel2Pixel.h */, 
+				CAD9D6A98986EA8082368448 /* TestText.h */, 
+				67194AC90FEA68E7C96E6907 /* TestTextureFormat.h */, 
+				5AFC0664D7BA80AE2A75BF0E /* TestTweens.h */, 
+				12CAC42FDF06ABE860CFEA53 /* TestUserShader.h */, 
+				0F4469FB587862663D529DC9 /* TestUserShader2.h */, 
+				B6A9281364AF5D3B581D374C /* example.h */, 
+				4013C6794AAE8DFC641D2870 /* test.h */, 
+
 			);
 			);
 			name = src;
 			name = src;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -265,7 +277,7 @@
 				LastUpgradeCheck = 0510;
 				LastUpgradeCheck = 0510;
 				ORGANIZATIONNAME = Mac;
 				ORGANIZATIONNAME = Mac;
 			};
 			};
-			buildConfigurationList = 04998CE717F8A933003441C3 /* Build configuration list for PBXProject "demo_ios" */;
+			buildConfigurationList = 04998CE717F8A933003441C3 /* Build configuration list for PBXProject "Demo_ios" */;
 			compatibilityVersion = "Xcode 3.2";
 			compatibilityVersion = "Xcode 3.2";
 			developmentRegion = English;
 			developmentRegion = English;
 			hasScannedForEncodings = 0;
 			hasScannedForEncodings = 0;
@@ -316,12 +328,13 @@
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
 				04E9AD3F1876FE84006A7317 /* Images.xcassets in Resources */,
 				04E9AD3F1876FE84006A7317 /* Images.xcassets in Resources */,
-				923A9E9E1A1FCCF300A6F08E /* light_vs.glsl in Resources */,
-				1E839D002B2BA83FC83A695A /* demo in Resources */,
-				3A631A475DE035FC53ADE5EA /* ext in Resources */,
-				923A9E9D1A1FCCF300A6F08E /* light_fs.glsl in Resources */,
-				CD59C69314E9E74CD0A11E03 /* images in Resources */,
-				EFF139F8BA484314F7AAF645 /* xmls in Resources */,
+				1E839D002B2BA83FC83A695A /* demo */, 
+				3A631A475DE035FC53ADE5EA /* ext */, 
+				CD59C69314E9E74CD0A11E03 /* images */, 
+				EFF139F8BA484314F7AAF645 /* light_fs.glsl */, 
+				F2CFD518E4E2E05ECEDBB262 /* light_vs.glsl */, 
+				693088A7AB377368EE4A018E /* xmls */, 
+
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
@@ -332,9 +345,10 @@
 			isa = PBXSourcesBuildPhase;
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
-				2DC477AC10D6C07B3FE008F6 /* entry_point.cpp in Sources */,
-				DA49ED8903C628BA578C8670 /* example.cpp in Sources */,
-				C8860D93875589970329DCCD /* test.cpp in Sources */,
+				2DC477AC10D6C07B3FE008F6 /* entry_point.cpp */, 
+				DA49ED8903C628BA578C8670 /* example.cpp */, 
+				C8860D93875589970329DCCD /* test.cpp */, 
+
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
@@ -371,6 +385,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = NO;
 				COPY_PHASE_STRIP = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
@@ -411,6 +426,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = YES;
 				COPY_PHASE_STRIP = YES;
 				ENABLE_NS_ASSERTIONS = NO;
 				ENABLE_NS_ASSERTIONS = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
@@ -479,7 +495,7 @@
 /* End XCBuildConfiguration section */
 /* End XCBuildConfiguration section */
 
 
 /* Begin XCConfigurationList section */
 /* Begin XCConfigurationList section */
-		04998CE717F8A933003441C3 /* Build configuration list for PBXProject "demo_ios" */ = {
+		04998CE717F8A933003441C3 /* Build configuration list for PBXProject "Demo_ios" */ = {
 			isa = XCConfigurationList;
 			isa = XCConfigurationList;
 			buildConfigurations = (
 			buildConfigurations = (
 				04998D1F17F8A933003441C3 /* Debug */,
 				04998D1F17F8A933003441C3 /* Debug */,

+ 37 - 37
examples/Demo/proj.macosx/demo_macosx.xcodeproj/project.pbxproj

@@ -101,22 +101,23 @@
 		F196143B0370A9D348494ACC /* ../src/TestBox9Sprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestBox9Sprite.h; path = ../src/TestBox9Sprite.h; sourceTree = "<group>"; };
 		F196143B0370A9D348494ACC /* ../src/TestBox9Sprite.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestBox9Sprite.h; path = ../src/TestBox9Sprite.h; sourceTree = "<group>"; };
 		7746CA7A63049ED8F7D6BF42 /* ../src/TestClipRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestClipRect.h; path = ../src/TestClipRect.h; sourceTree = "<group>"; };
 		7746CA7A63049ED8F7D6BF42 /* ../src/TestClipRect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestClipRect.h; path = ../src/TestClipRect.h; sourceTree = "<group>"; };
 		D954BD82D7708B65A08FB6B9 /* ../src/TestDrag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestDrag.h; path = ../src/TestDrag.h; sourceTree = "<group>"; };
 		D954BD82D7708B65A08FB6B9 /* ../src/TestDrag.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestDrag.h; path = ../src/TestDrag.h; sourceTree = "<group>"; };
-		BD0E956CC3A2F7EB94822B5C /* ../src/TestInputText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestInputText.h; path = ../src/TestInputText.h; sourceTree = "<group>"; };
-		7623D793B59EF0CD569E6EC2 /* ../src/TestManageRes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestManageRes.h; path = ../src/TestManageRes.h; sourceTree = "<group>"; };
-		AFA30E959880563E6ABBBC4F /* ../src/TestMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestMask.h; path = ../src/TestMask.h; sourceTree = "<group>"; };
-		B52CCD463855CF91A7FBDB8E /* ../src/TestPerf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestPerf.h; path = ../src/TestPerf.h; sourceTree = "<group>"; };
-		7EEFDEEC289FCBB5FA67F822 /* ../src/TestPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestPolygon.h; path = ../src/TestPolygon.h; sourceTree = "<group>"; };
-		4E9DE6A8FCBDF43BC876EC90 /* ../src/TestProgressBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestProgressBar.h; path = ../src/TestProgressBar.h; sourceTree = "<group>"; };
-		8F2AFB956EEAEED67C5B7571 /* ../src/TestRender2Texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestRender2Texture.h; path = ../src/TestRender2Texture.h; sourceTree = "<group>"; };
-		047F6BD19F885FF186A1447C /* ../src/TestSliding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestSliding.h; path = ../src/TestSliding.h; sourceTree = "<group>"; };
-		C570FAEF487CD34B62389F89 /* ../src/TestTexel2Pixel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestTexel2Pixel.h; path = ../src/TestTexel2Pixel.h; sourceTree = "<group>"; };
-		2418B9A339E6004913AF5980 /* ../src/TestText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestText.h; path = ../src/TestText.h; sourceTree = "<group>"; };
-		CAD9D6A98986EA8082368448 /* ../src/TestTextureFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestTextureFormat.h; path = ../src/TestTextureFormat.h; sourceTree = "<group>"; };
-		67194AC90FEA68E7C96E6907 /* ../src/TestTweens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestTweens.h; path = ../src/TestTweens.h; sourceTree = "<group>"; };
-		5AFC0664D7BA80AE2A75BF0E /* ../src/TestUserShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestUserShader.h; path = ../src/TestUserShader.h; sourceTree = "<group>"; };
-		12CAC42FDF06ABE860CFEA53 /* ../src/TestUserShader2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestUserShader2.h; path = ../src/TestUserShader2.h; sourceTree = "<group>"; };
-		0F4469FB587862663D529DC9 /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
-		B6A9281364AF5D3B581D374C /* ../src/test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = test.h; path = ../src/test.h; sourceTree = "<group>"; };
+		BD0E956CC3A2F7EB94822B5C /* ../src/TestHttp.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestHttp.h; path = ../src/TestHttp.h; sourceTree = "<group>"; };
+		7623D793B59EF0CD569E6EC2 /* ../src/TestInputText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestInputText.h; path = ../src/TestInputText.h; sourceTree = "<group>"; };
+		AFA30E959880563E6ABBBC4F /* ../src/TestManageRes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestManageRes.h; path = ../src/TestManageRes.h; sourceTree = "<group>"; };
+		B52CCD463855CF91A7FBDB8E /* ../src/TestMask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestMask.h; path = ../src/TestMask.h; sourceTree = "<group>"; };
+		7EEFDEEC289FCBB5FA67F822 /* ../src/TestPerf.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestPerf.h; path = ../src/TestPerf.h; sourceTree = "<group>"; };
+		4E9DE6A8FCBDF43BC876EC90 /* ../src/TestPolygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestPolygon.h; path = ../src/TestPolygon.h; sourceTree = "<group>"; };
+		8F2AFB956EEAEED67C5B7571 /* ../src/TestProgressBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestProgressBar.h; path = ../src/TestProgressBar.h; sourceTree = "<group>"; };
+		047F6BD19F885FF186A1447C /* ../src/TestRender2Texture.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestRender2Texture.h; path = ../src/TestRender2Texture.h; sourceTree = "<group>"; };
+		C570FAEF487CD34B62389F89 /* ../src/TestSliding.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestSliding.h; path = ../src/TestSliding.h; sourceTree = "<group>"; };
+		2418B9A339E6004913AF5980 /* ../src/TestTexel2Pixel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestTexel2Pixel.h; path = ../src/TestTexel2Pixel.h; sourceTree = "<group>"; };
+		CAD9D6A98986EA8082368448 /* ../src/TestText.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestText.h; path = ../src/TestText.h; sourceTree = "<group>"; };
+		67194AC90FEA68E7C96E6907 /* ../src/TestTextureFormat.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestTextureFormat.h; path = ../src/TestTextureFormat.h; sourceTree = "<group>"; };
+		5AFC0664D7BA80AE2A75BF0E /* ../src/TestTweens.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestTweens.h; path = ../src/TestTweens.h; sourceTree = "<group>"; };
+		12CAC42FDF06ABE860CFEA53 /* ../src/TestUserShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestUserShader.h; path = ../src/TestUserShader.h; sourceTree = "<group>"; };
+		0F4469FB587862663D529DC9 /* ../src/TestUserShader2.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestUserShader2.h; path = ../src/TestUserShader2.h; sourceTree = "<group>"; };
+		B6A9281364AF5D3B581D374C /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
+		4013C6794AAE8DFC641D2870 /* ../src/test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = test.h; path = ../src/test.h; sourceTree = "<group>"; };
 		04FE4D4FB640E0DF92DFB865 /* ../data/demo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = demo; path = ../data/demo; sourceTree = "<group>"; };
 		04FE4D4FB640E0DF92DFB865 /* ../data/demo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = demo; path = ../data/demo; sourceTree = "<group>"; };
 		7F3B12E3C9D554D9FE28101D /* ../data/ext */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = ext; path = ../data/ext; sourceTree = "<group>"; };
 		7F3B12E3C9D554D9FE28101D /* ../data/ext */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = ext; path = ../data/ext; sourceTree = "<group>"; };
 		F6123B1E6FE4471A00F49751 /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
 		F6123B1E6FE4471A00F49751 /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
@@ -232,22 +233,23 @@
 				F196143B0370A9D348494ACC /* TestBox9Sprite.h */, 
 				F196143B0370A9D348494ACC /* TestBox9Sprite.h */, 
 				7746CA7A63049ED8F7D6BF42 /* TestClipRect.h */, 
 				7746CA7A63049ED8F7D6BF42 /* TestClipRect.h */, 
 				D954BD82D7708B65A08FB6B9 /* TestDrag.h */, 
 				D954BD82D7708B65A08FB6B9 /* TestDrag.h */, 
-				BD0E956CC3A2F7EB94822B5C /* TestInputText.h */, 
-				7623D793B59EF0CD569E6EC2 /* TestManageRes.h */, 
-				AFA30E959880563E6ABBBC4F /* TestMask.h */, 
-				B52CCD463855CF91A7FBDB8E /* TestPerf.h */, 
-				7EEFDEEC289FCBB5FA67F822 /* TestPolygon.h */, 
-				4E9DE6A8FCBDF43BC876EC90 /* TestProgressBar.h */, 
-				8F2AFB956EEAEED67C5B7571 /* TestRender2Texture.h */, 
-				047F6BD19F885FF186A1447C /* TestSliding.h */, 
-				C570FAEF487CD34B62389F89 /* TestTexel2Pixel.h */, 
-				2418B9A339E6004913AF5980 /* TestText.h */, 
-				CAD9D6A98986EA8082368448 /* TestTextureFormat.h */, 
-				67194AC90FEA68E7C96E6907 /* TestTweens.h */, 
-				5AFC0664D7BA80AE2A75BF0E /* TestUserShader.h */, 
-				12CAC42FDF06ABE860CFEA53 /* TestUserShader2.h */, 
-				0F4469FB587862663D529DC9 /* example.h */, 
-				B6A9281364AF5D3B581D374C /* test.h */, 
+				BD0E956CC3A2F7EB94822B5C /* TestHttp.h */, 
+				7623D793B59EF0CD569E6EC2 /* TestInputText.h */, 
+				AFA30E959880563E6ABBBC4F /* TestManageRes.h */, 
+				B52CCD463855CF91A7FBDB8E /* TestMask.h */, 
+				7EEFDEEC289FCBB5FA67F822 /* TestPerf.h */, 
+				4E9DE6A8FCBDF43BC876EC90 /* TestPolygon.h */, 
+				8F2AFB956EEAEED67C5B7571 /* TestProgressBar.h */, 
+				047F6BD19F885FF186A1447C /* TestRender2Texture.h */, 
+				C570FAEF487CD34B62389F89 /* TestSliding.h */, 
+				2418B9A339E6004913AF5980 /* TestTexel2Pixel.h */, 
+				CAD9D6A98986EA8082368448 /* TestText.h */, 
+				67194AC90FEA68E7C96E6907 /* TestTextureFormat.h */, 
+				5AFC0664D7BA80AE2A75BF0E /* TestTweens.h */, 
+				12CAC42FDF06ABE860CFEA53 /* TestUserShader.h */, 
+				0F4469FB587862663D529DC9 /* TestUserShader2.h */, 
+				B6A9281364AF5D3B581D374C /* example.h */, 
+				4013C6794AAE8DFC641D2870 /* test.h */, 
 
 
 			);
 			);
 			name = src;
 			name = src;
@@ -292,7 +294,7 @@
 		049B57261871FBE900EF3C66 /* Project object */ = {
 		049B57261871FBE900EF3C66 /* Project object */ = {
 			isa = PBXProject;
 			isa = PBXProject;
 			attributes = {
 			attributes = {
-				LastUpgradeCheck = 0510;
+				LastUpgradeCheck = 0610;
 				ORGANIZATIONNAME = oxygine;
 				ORGANIZATIONNAME = oxygine;
 			};
 			};
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "Demo_macosx" */;
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "Demo_macosx" */;
@@ -442,7 +444,7 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
@@ -476,14 +478,13 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
 		049B57601871FBE900EF3C66 /* Debug */ = {
 		049B57601871FBE900EF3C66 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -502,7 +503,6 @@
 		049B57611871FBE900EF3C66 /* Release */ = {
 		049B57611871FBE900EF3C66 /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;

+ 3 - 3
examples/Demo/proj.win32/Demo_vs2010.vcxproj

@@ -56,7 +56,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -78,7 +78,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
@@ -91,7 +91,7 @@
     <ClCompile Include="../src/entry_point.cpp" /><ClCompile Include="../src/example.cpp" /><ClCompile Include="../src/test.cpp" />
     <ClCompile Include="../src/entry_point.cpp" /><ClCompile Include="../src/example.cpp" /><ClCompile Include="../src/test.cpp" />
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
-    <ClInclude Include="../src/TestBox9Sprite.h" /><ClInclude Include="../src/TestClipRect.h" /><ClInclude Include="../src/TestDrag.h" /><ClInclude Include="../src/TestInputText.h" /><ClInclude Include="../src/TestManageRes.h" /><ClInclude Include="../src/TestMask.h" /><ClInclude Include="../src/TestPerf.h" /><ClInclude Include="../src/TestPolygon.h" /><ClInclude Include="../src/TestProgressBar.h" /><ClInclude Include="../src/TestRender2Texture.h" /><ClInclude Include="../src/TestSliding.h" /><ClInclude Include="../src/TestTexel2Pixel.h" /><ClInclude Include="../src/TestText.h" /><ClInclude Include="../src/TestTextureFormat.h" /><ClInclude Include="../src/TestTweens.h" /><ClInclude Include="../src/TestUserShader.h" /><ClInclude Include="../src/TestUserShader2.h" /><ClInclude Include="../src/example.h" /><ClInclude Include="../src/test.h" />
+    <ClInclude Include="../src/TestBox9Sprite.h" /><ClInclude Include="../src/TestClipRect.h" /><ClInclude Include="../src/TestDrag.h" /><ClInclude Include="../src/TestHttp.h" /><ClInclude Include="../src/TestInputText.h" /><ClInclude Include="../src/TestManageRes.h" /><ClInclude Include="../src/TestMask.h" /><ClInclude Include="../src/TestPerf.h" /><ClInclude Include="../src/TestPolygon.h" /><ClInclude Include="../src/TestProgressBar.h" /><ClInclude Include="../src/TestRender2Texture.h" /><ClInclude Include="../src/TestSliding.h" /><ClInclude Include="../src/TestTexel2Pixel.h" /><ClInclude Include="../src/TestText.h" /><ClInclude Include="../src/TestTextureFormat.h" /><ClInclude Include="../src/TestTweens.h" /><ClInclude Include="../src/TestUserShader.h" /><ClInclude Include="../src/TestUserShader2.h" /><ClInclude Include="../src/example.h" /><ClInclude Include="../src/test.h" />
   </ItemGroup>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   <ImportGroup Label="ExtensionTargets">

+ 3 - 3
examples/Demo/proj.win32/Demo_vs2013.vcxproj

@@ -58,7 +58,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -80,7 +80,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>
@@ -93,7 +93,7 @@
     <ClCompile Include="../src/entry_point.cpp" /><ClCompile Include="../src/example.cpp" /><ClCompile Include="../src/test.cpp" />
     <ClCompile Include="../src/entry_point.cpp" /><ClCompile Include="../src/example.cpp" /><ClCompile Include="../src/test.cpp" />
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
-    <ClInclude Include="../src/TestBox9Sprite.h" /><ClInclude Include="../src/TestClipRect.h" /><ClInclude Include="../src/TestDrag.h" /><ClInclude Include="../src/TestInputText.h" /><ClInclude Include="../src/TestManageRes.h" /><ClInclude Include="../src/TestMask.h" /><ClInclude Include="../src/TestPerf.h" /><ClInclude Include="../src/TestPolygon.h" /><ClInclude Include="../src/TestProgressBar.h" /><ClInclude Include="../src/TestRender2Texture.h" /><ClInclude Include="../src/TestSliding.h" /><ClInclude Include="../src/TestTexel2Pixel.h" /><ClInclude Include="../src/TestText.h" /><ClInclude Include="../src/TestTextureFormat.h" /><ClInclude Include="../src/TestTweens.h" /><ClInclude Include="../src/TestUserShader.h" /><ClInclude Include="../src/TestUserShader2.h" /><ClInclude Include="../src/example.h" /><ClInclude Include="../src/test.h" />
+    <ClInclude Include="../src/TestBox9Sprite.h" /><ClInclude Include="../src/TestClipRect.h" /><ClInclude Include="../src/TestDrag.h" /><ClInclude Include="../src/TestHttp.h" /><ClInclude Include="../src/TestInputText.h" /><ClInclude Include="../src/TestManageRes.h" /><ClInclude Include="../src/TestMask.h" /><ClInclude Include="../src/TestPerf.h" /><ClInclude Include="../src/TestPolygon.h" /><ClInclude Include="../src/TestProgressBar.h" /><ClInclude Include="../src/TestRender2Texture.h" /><ClInclude Include="../src/TestSliding.h" /><ClInclude Include="../src/TestTexel2Pixel.h" /><ClInclude Include="../src/TestText.h" /><ClInclude Include="../src/TestTextureFormat.h" /><ClInclude Include="../src/TestTweens.h" /><ClInclude Include="../src/TestUserShader.h" /><ClInclude Include="../src/TestUserShader2.h" /><ClInclude Include="../src/example.h" /><ClInclude Include="../src/test.h" />
   </ItemGroup>
   </ItemGroup>
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
   <ImportGroup Label="ExtensionTargets">
   <ImportGroup Label="ExtensionTargets">

+ 1 - 1
examples/Demo/src/TestPolygon.h

@@ -26,7 +26,7 @@ public:
 
 
 		//by default all textures has mode "clamp to edge"
 		//by default all textures has mode "clamp to edge"
 		//disable it and allow tiling
 		//disable it and allow tiling
-		texture->setWrapMode(false);
+		texture->setClamp2Edge(false);
 
 
 		poly->setResAnim(rs);
 		poly->setResAnim(rs);
 
 

+ 5 - 7
examples/Demo/src/TestUserShader2.h

@@ -4,7 +4,6 @@
 #include "core/UberShaderProgram.h"
 #include "core/UberShaderProgram.h"
 #include "core/gl/VideoDriverGLES20.h"
 #include "core/gl/VideoDriverGLES20.h"
 #include "core/gl/oxgl.h"
 #include "core/gl/oxgl.h"
-
 #include "core/gl/ShaderProgramGL.h"
 #include "core/gl/ShaderProgramGL.h"
 
 
 
 
@@ -28,13 +27,13 @@ public:
 		//load vertex shader
 		//load vertex shader
 		file::buffer vsdata;
 		file::buffer vsdata;
 		file::read("light_vs.glsl", vsdata);
 		file::read("light_vs.glsl", vsdata);
-		vsdata.push_back(0);
+		vsdata.push_back(0);///null terminating string
 		unsigned int vs = ShaderProgramGL::createShader(GL_VERTEX_SHADER, (const char*)&vsdata.front(), "", "");
 		unsigned int vs = ShaderProgramGL::createShader(GL_VERTEX_SHADER, (const char*)&vsdata.front(), "", "");
 
 
 		//load fragment shader
 		//load fragment shader
 		file::buffer fsdata;
 		file::buffer fsdata;
 		file::read("light_fs.glsl", fsdata);
 		file::read("light_fs.glsl", fsdata);
-		fsdata.push_back(0);
+		fsdata.push_back(0);///null terminating string
 		unsigned int ps = ShaderProgramGL::createShader(GL_FRAGMENT_SHADER, (const char*)&fsdata.front(), "", "");
 		unsigned int ps = ShaderProgramGL::createShader(GL_FRAGMENT_SHADER, (const char*)&fsdata.front(), "", "");
 
 
 		//link into 1 shader program
 		//link into 1 shader program
@@ -62,7 +61,6 @@ public:
 		_base = 0;
 		_base = 0;
 		_normal = 0;
 		_normal = 0;
 
 
-		_light = getStage()->getDescendant("light")->getPosition();
 		_driver->setUniform("light", &_light, 1);
 		_driver->setUniform("light", &_light, 1);
 
 
 		_driver->setState(IVideoDriver::STATE_BLEND, 1);
 		_driver->setState(IVideoDriver::STATE_BLEND, 1);
@@ -136,6 +134,8 @@ public:
 	LightningRenderer _renderer;
 	LightningRenderer _renderer;
 	void render(const RenderState &parent)
 	void render(const RenderState &parent)
 	{
 	{
+		_renderer.setLightPosition(_getStage()->getDescendant("light")->getPosition());
+
 		RenderState rs = parent;
 		RenderState rs = parent;
 		rs.renderer = &_renderer;
 		rs.renderer = &_renderer;
 		_renderer.begin(parent.renderer);
 		_renderer.begin(parent.renderer);
@@ -151,8 +151,7 @@ public:
 	Draggable drag;
 	Draggable drag;
 
 
 	TestUserShader2() :_shader(0)
 	TestUserShader2() :_shader(0)
-	{
-		
+	{		
 		spActor lightning = new LightningActor;
 		spActor lightning = new LightningActor;
 		this->content->addChild(lightning);
 		this->content->addChild(lightning);
 		lightning->setSize(this->content->getSize());
 		lightning->setSize(this->content->getSize());
@@ -164,7 +163,6 @@ public:
 		spr->attachTo(lightning);
 		spr->attachTo(lightning);
 		
 		
 
 
-		//spSprite light = new Sprite2(resources.getResAnim("defnormal")->getFrame(0));
 		spSprite light = new Sprite;
 		spSprite light = new Sprite;
 		light->setName("light");
 		light->setName("light");
 		light->setResAnim(resources.getResAnim("light"));
 		light->setResAnim(resources.getResAnim("light"));

+ 1 - 10
examples/Demo/src/entry_point.cpp

@@ -125,15 +125,7 @@ int main(int argc, char* argv[])
 
 
 
 
 #ifdef OXYGINE_SDL
 #ifdef OXYGINE_SDL
-#ifdef __MINGW32__
-int WinMain(HINSTANCE hInstance,
-	HINSTANCE hPrevInstance,
-	LPSTR lpCmdLine, int nCmdShow)
-{
-	run();
-	return 0;
-}
-#else
+
 #include "SDL_main.h"
 #include "SDL_main.h"
 extern "C"
 extern "C"
 {
 {
@@ -144,7 +136,6 @@ extern "C"
 	}
 	}
 };
 };
 #endif
 #endif
-#endif
 
 
 #ifdef EMSCRIPTEN
 #ifdef EMSCRIPTEN
 #include <emscripten.h>
 #include <emscripten.h>

+ 39 - 22
examples/Demo/src/example.cpp

@@ -18,6 +18,7 @@
 #include "TestMask.h"
 #include "TestMask.h"
 #include "TestPolygon.h"
 #include "TestPolygon.h"
 #include "TestInputText.h"
 #include "TestInputText.h"
+#include "TestHttp.h"
 #include "core/STDFileSystem.h"
 #include "core/STDFileSystem.h"
 
 
 #ifdef __S3E__
 #ifdef __S3E__
@@ -33,13 +34,15 @@ spActor _tests;
 Resources resources;
 Resources resources;
 Resources resourcesUI;
 Resources resourcesUI;
 
 
+//extern spStage stage2;
 
 
 class TestActor: public Test
 class TestActor: public Test
 {
 {
 public:		
 public:		
 
 
 	TestActor()
 	TestActor()
-	{	
+	{
+
 		_x = 90;//getStage()->getWidth()/2.0f;
 		_x = 90;//getStage()->getWidth()/2.0f;
 		_y = 80;
 		_y = 80;
 
 
@@ -63,95 +66,100 @@ public:
 		addButton("polygon", "Polygon");
 		addButton("polygon", "Polygon");
 		addButton("inputtext", "Input Text");		
 		addButton("inputtext", "Input Text");		
 		addButton("openbrowser", "Open Browser");
 		addButton("openbrowser", "Open Browser");
-		
-	}
+		addButton("http", "Http requests");
+    }
 
 
-	void clicked(string id)
+	void showTest(spActor actor)
 	{
 	{
 		setVisible(false);
 		setVisible(false);
+		//spStage stage = stage2;
+		getStage()->addChild(actor);
+	}
 
 
+	void clicked(string id)
+	{
 		if (id == "perf")
 		if (id == "perf")
 		{
 		{
-			getStage()->addChild(new PerfTest);
+			showTest(new PerfTest);
 		}
 		}
 		if (id == "tweens")
 		if (id == "tweens")
 		{
 		{
-			getStage()->addChild(new TweensTest);
+			showTest(new TweensTest);
 		}
 		}
 		if (id == "drag")
 		if (id == "drag")
 		{
 		{
-			getStage()->addChild(new DragTest);
+			showTest(new DragTest);
 		}
 		}
 		if (id == "drag2")
 		if (id == "drag2")
 		{
 		{
-			getStage()->addChild(new Drag2Test);
+			showTest(new Drag2Test);
 		}
 		}
 		if (id == "manage_res")
 		if (id == "manage_res")
 		{
 		{
-			getStage()->addChild(new ManageResTest);
+			showTest(new ManageResTest);
 		}
 		}
 		if (id == "r2t")
 		if (id == "r2t")
 		{
 		{
-			getStage()->addChild(new TestRender2Texture);
+			showTest(new TestRender2Texture);
 		}
 		}
 		if (id == "text")
 		if (id == "text")
 		{
 		{
-			getStage()->addChild(new TestText);
+			showTest(new TestText);
 		}
 		}
 
 
 		if (id == "progress_bar")
 		if (id == "progress_bar")
 		{
 		{
-			getStage()->addChild(new TestProgressBar);
+			showTest(new TestProgressBar);
 		}
 		}
 
 
 		if (id == "texture_format")
 		if (id == "texture_format")
 		{
 		{
-			getStage()->addChild(new TestTextureFormat);
+			showTest(new TestTextureFormat);
 		}
 		}
 
 
 		if (id == "sliding")
 		if (id == "sliding")
 		{
 		{
-			getStage()->addChild(new TestSliding);
+			showTest(new TestSliding);
 		}
 		}
 
 
 		if (id == "t2p")
 		if (id == "t2p")
 		{
 		{
-			getStage()->addChild(new TestTexel2Pixel);
+			showTest(new TestTexel2Pixel);
 		}
 		}
 
 
 		if (id == "box9sprite")
 		if (id == "box9sprite")
 		{
 		{
-			getStage()->addChild(new TestBox9Sprite);
+			showTest(new TestBox9Sprite);
 		}
 		}
 
 
 		if (id == "cliprect")
 		if (id == "cliprect")
 		{
 		{
-			getStage()->addChild(new TestClipRect);
+			showTest(new TestClipRect);
 		}
 		}
 
 
 		if (id == "usershader")
 		if (id == "usershader")
 		{
 		{
-			getStage()->addChild(new TestUserShader);
+			showTest(new TestUserShader);
 		}
 		}
 
 
 		if (id == "usershader2")
 		if (id == "usershader2")
 		{
 		{
-			getStage()->addChild(new TestUserShader2);
+			showTest(new TestUserShader2);
 		}
 		}
 
 
 		if (id == "mask")
 		if (id == "mask")
 		{
 		{
-			getStage()->addChild(new TestMask);
+			showTest(new TestMask);
 		}
 		}
 
 
 		if (id == "polygon")
 		if (id == "polygon")
 		{
 		{
-			getStage()->addChild(new TestPolygon);
+			showTest(new TestPolygon);
 		}
 		}
 
 
 		if (id == "inputtext")
 		if (id == "inputtext")
 		{
 		{
-			getStage()->addChild(new TestInputText);
+			showTest(new TestInputText);
 		}
 		}
 
 
 		if (id == "openbrowser")
 		if (id == "openbrowser")
@@ -159,6 +167,11 @@ public:
 			core::execute("http://oxygine.org/");
 			core::execute("http://oxygine.org/");
 			setVisible(true);
 			setVisible(true);
 		}
 		}
+
+		if (id == "http")
+		{
+			showTest(new TestHttp);
+		}
 	}
 	}
 };
 };
 
 
@@ -204,6 +217,9 @@ void example_init()
 
 
 	_tests = new TestActor;
 	_tests = new TestActor;
 	getStage()->addChild(_tests);
 	getStage()->addChild(_tests);
+    
+    //initialize http requests
+    HttpRequestTask::init();
 }
 }
 
 
 void example_update()
 void example_update()
@@ -217,4 +233,5 @@ void example_destroy()
 	_tests = 0;
 	_tests = 0;
 	resources.free();
 	resources.free();
 	resourcesUI.free();
 	resourcesUI.free();
+    HttpRequestTask::release();
 }
 }

+ 9 - 2
examples/DemoBox2D/proj.ios/DemoBox2D_ios.xcodeproj/project.pbxproj

@@ -520,6 +520,11 @@
 			attributes = {
 			attributes = {
 				LastUpgradeCheck = 0510;
 				LastUpgradeCheck = 0510;
 				ORGANIZATIONNAME = Mac;
 				ORGANIZATIONNAME = Mac;
+				TargetAttributes = {
+					04998CEB17F8A933003441C3 = {
+						DevelopmentTeam = QPA9676C88;
+					};
+				};
 			};
 			};
 			buildConfigurationList = 04998CE717F8A933003441C3 /* Build configuration list for PBXProject "DemoBox2D_ios" */;
 			buildConfigurationList = 04998CE717F8A933003441C3 /* Build configuration list for PBXProject "DemoBox2D_ios" */;
 			compatibilityVersion = "Xcode 3.2";
 			compatibilityVersion = "Xcode 3.2";
@@ -669,6 +674,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = NO;
 				COPY_PHASE_STRIP = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
@@ -709,6 +715,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = YES;
 				COPY_PHASE_STRIP = YES;
 				ENABLE_NS_ASSERTIONS = NO;
 				ENABLE_NS_ASSERTIONS = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
@@ -745,7 +752,7 @@
 				);
 				);
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				PRODUCT_NAME = DemoBox2D_ios;
 				PRODUCT_NAME = DemoBox2D_ios;
-				PROVISIONING_PROFILE = "A34F5D84-E1EB-47B5-AD4B-67D0FA4A5BE6";
+				PROVISIONING_PROFILE = "";
 				TARGETED_DEVICE_FAMILY = "1,2";
 				TARGETED_DEVICE_FAMILY = "1,2";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include ../box2d";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include ../box2d";
 				WRAPPER_EXTENSION = app;
 				WRAPPER_EXTENSION = app;
@@ -771,7 +778,7 @@
 				);
 				);
 				ONLY_ACTIVE_ARCH = NO;
 				ONLY_ACTIVE_ARCH = NO;
 				PRODUCT_NAME = DemoBox2D_ios;
 				PRODUCT_NAME = DemoBox2D_ios;
-				PROVISIONING_PROFILE = "A34F5D84-E1EB-47B5-AD4B-67D0FA4A5BE6";
+				PROVISIONING_PROFILE = "";
 				TARGETED_DEVICE_FAMILY = "1,2";
 				TARGETED_DEVICE_FAMILY = "1,2";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include ../box2d";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include ../box2d";
 				WRAPPER_EXTENSION = app;
 				WRAPPER_EXTENSION = app;

+ 5 - 7
examples/DemoBox2D/proj.macosx/DemoBox2D_macosx.xcodeproj/project.pbxproj

@@ -537,7 +537,7 @@
 		049B57261871FBE900EF3C66 /* Project object */ = {
 		049B57261871FBE900EF3C66 /* Project object */ = {
 			isa = PBXProject;
 			isa = PBXProject;
 			attributes = {
 			attributes = {
-				LastUpgradeCheck = 0510;
+				LastUpgradeCheck = 0610;
 				ORGANIZATIONNAME = oxygine;
 				ORGANIZATIONNAME = oxygine;
 			};
 			};
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "DemoBox2D_macosx" */;
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "DemoBox2D_macosx" */;
@@ -727,7 +727,7 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include ../box2d";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include ../box2d";
-				VALID_ARCHS = i386;
+				VALID_ARCHS = x86_64;
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
@@ -761,14 +761,13 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include ../box2d";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include ../box2d";
-				VALID_ARCHS = i386;
+				VALID_ARCHS = x86_64;
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
 		049B57601871FBE900EF3C66 /* Debug */ = {
 		049B57601871FBE900EF3C66 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -780,7 +779,7 @@
 					"../../..//oxygine/third_party/ios/libraries",
 					"../../..//oxygine/third_party/ios/libraries",
 				);
 				);
 				PRODUCT_NAME = DemoBox2D_macosx;
 				PRODUCT_NAME = DemoBox2D_macosx;
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = x86_64;
 				WRAPPER_EXTENSION = app;
 				WRAPPER_EXTENSION = app;
 			};
 			};
 			name = Debug;
 			name = Debug;
@@ -788,7 +787,6 @@
 		049B57611871FBE900EF3C66 /* Release */ = {
 		049B57611871FBE900EF3C66 /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -800,7 +798,7 @@
 					"../../..//oxygine/third_party/ios/libraries",
 					"../../..//oxygine/third_party/ios/libraries",
 				);
 				);
 				PRODUCT_NAME = DemoBox2D_macosx;
 				PRODUCT_NAME = DemoBox2D_macosx;
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = x86_64;
 				WRAPPER_EXTENSION = app;
 				WRAPPER_EXTENSION = app;
 			};
 			};
 			name = Release;
 			name = Release;

+ 2 - 0
examples/Game/part1/proj.ios/GamePart1_ios.xcodeproj/project.pbxproj

@@ -357,6 +357,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = NO;
 				COPY_PHASE_STRIP = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
@@ -397,6 +398,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = YES;
 				COPY_PHASE_STRIP = YES;
 				ENABLE_NS_ASSERTIONS = NO;
 				ENABLE_NS_ASSERTIONS = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;

+ 3 - 5
examples/Game/part1/proj.macosx/GamePart1_macosx.xcodeproj/project.pbxproj

@@ -266,7 +266,7 @@
 		049B57261871FBE900EF3C66 /* Project object */ = {
 		049B57261871FBE900EF3C66 /* Project object */ = {
 			isa = PBXProject;
 			isa = PBXProject;
 			attributes = {
 			attributes = {
-				LastUpgradeCheck = 0510;
+				LastUpgradeCheck = 0610;
 				ORGANIZATIONNAME = oxygine;
 				ORGANIZATIONNAME = oxygine;
 			};
 			};
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "GamePart1_macosx" */;
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "GamePart1_macosx" */;
@@ -416,7 +416,7 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
@@ -450,14 +450,13 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
 		049B57601871FBE900EF3C66 /* Debug */ = {
 		049B57601871FBE900EF3C66 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -476,7 +475,6 @@
 		049B57611871FBE900EF3C66 /* Release */ = {
 		049B57611871FBE900EF3C66 /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;

+ 2 - 2
examples/Game/part1/proj.win32/GamePart1_vs2010.vcxproj

@@ -56,7 +56,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -78,7 +78,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 2
examples/Game/part1/proj.win32/GamePart1_vs2013.vcxproj

@@ -58,7 +58,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -80,7 +80,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 0
examples/Game/part2/proj.ios/GamePart2_ios.xcodeproj/project.pbxproj

@@ -369,6 +369,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = NO;
 				COPY_PHASE_STRIP = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
@@ -409,6 +410,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = YES;
 				COPY_PHASE_STRIP = YES;
 				ENABLE_NS_ASSERTIONS = NO;
 				ENABLE_NS_ASSERTIONS = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;

+ 3 - 5
examples/Game/part2/proj.macosx/GamePart2_macosx.xcodeproj/project.pbxproj

@@ -276,7 +276,7 @@
 		049B57261871FBE900EF3C66 /* Project object */ = {
 		049B57261871FBE900EF3C66 /* Project object */ = {
 			isa = PBXProject;
 			isa = PBXProject;
 			attributes = {
 			attributes = {
-				LastUpgradeCheck = 0510;
+				LastUpgradeCheck = 0610;
 				ORGANIZATIONNAME = oxygine;
 				ORGANIZATIONNAME = oxygine;
 			};
 			};
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "GamePart2_macosx" */;
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "GamePart2_macosx" */;
@@ -428,7 +428,7 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
@@ -462,14 +462,13 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
 		049B57601871FBE900EF3C66 /* Debug */ = {
 		049B57601871FBE900EF3C66 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -488,7 +487,6 @@
 		049B57611871FBE900EF3C66 /* Release */ = {
 		049B57611871FBE900EF3C66 /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;

+ 2 - 2
examples/Game/part2/proj.win32/GamePart2_vs2010.vcxproj

@@ -56,7 +56,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -78,7 +78,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 2
examples/Game/part2/proj.win32/GamePart2_vs2013.vcxproj

@@ -58,7 +58,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -80,7 +80,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 0
examples/Game/part3/proj.ios/GamePart3_ios.xcodeproj/project.pbxproj

@@ -393,6 +393,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = NO;
 				COPY_PHASE_STRIP = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
@@ -433,6 +434,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = YES;
 				COPY_PHASE_STRIP = YES;
 				ENABLE_NS_ASSERTIONS = NO;
 				ENABLE_NS_ASSERTIONS = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;

+ 3 - 5
examples/Game/part3/proj.macosx/GamePart3_macosx.xcodeproj/project.pbxproj

@@ -296,7 +296,7 @@
 		049B57261871FBE900EF3C66 /* Project object */ = {
 		049B57261871FBE900EF3C66 /* Project object */ = {
 			isa = PBXProject;
 			isa = PBXProject;
 			attributes = {
 			attributes = {
-				LastUpgradeCheck = 0510;
+				LastUpgradeCheck = 0610;
 				ORGANIZATIONNAME = oxygine;
 				ORGANIZATIONNAME = oxygine;
 			};
 			};
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "GamePart3_macosx" */;
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "GamePart3_macosx" */;
@@ -452,7 +452,7 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
@@ -486,14 +486,13 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
 		049B57601871FBE900EF3C66 /* Debug */ = {
 		049B57601871FBE900EF3C66 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -512,7 +511,6 @@
 		049B57611871FBE900EF3C66 /* Release */ = {
 		049B57611871FBE900EF3C66 /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;

+ 2 - 2
examples/Game/part3/proj.win32/GamePart3_vs2010.vcxproj

@@ -56,7 +56,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -78,7 +78,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 2
examples/Game/part3/proj.win32/GamePart3_vs2013.vcxproj

@@ -58,7 +58,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -80,7 +80,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 0
examples/Game/part4/proj.ios/GamePart4_ios.xcodeproj/project.pbxproj

@@ -403,6 +403,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = NO;
 				COPY_PHASE_STRIP = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
@@ -443,6 +444,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = YES;
 				COPY_PHASE_STRIP = YES;
 				ENABLE_NS_ASSERTIONS = NO;
 				ENABLE_NS_ASSERTIONS = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;

+ 0 - 16
examples/Game/part4/proj.ios/GamePart5/GamePart5_ios-Prefix.pch

@@ -1,16 +0,0 @@
-//
-//  Prefix header
-//
-//  The contents of this file are implicitly included at the beginning of every source file.
-//
-
-#import <Availability.h>
-
-#ifndef __IPHONE_5_0
-#warning "This project uses features only available in iOS SDK 5.0 and later."
-#endif
-
-#ifdef __OBJC__
-    #import <UIKit/UIKit.h>
-    #import <Foundation/Foundation.h>
-#endif

+ 3 - 5
examples/Game/part4/proj.macosx/GamePart4_macosx.xcodeproj/project.pbxproj

@@ -304,7 +304,7 @@
 		049B57261871FBE900EF3C66 /* Project object */ = {
 		049B57261871FBE900EF3C66 /* Project object */ = {
 			isa = PBXProject;
 			isa = PBXProject;
 			attributes = {
 			attributes = {
-				LastUpgradeCheck = 0510;
+				LastUpgradeCheck = 0610;
 				ORGANIZATIONNAME = oxygine;
 				ORGANIZATIONNAME = oxygine;
 			};
 			};
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "GamePart4_macosx" */;
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "GamePart4_macosx" */;
@@ -462,7 +462,7 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
@@ -496,14 +496,13 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
 		049B57601871FBE900EF3C66 /* Debug */ = {
 		049B57601871FBE900EF3C66 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -522,7 +521,6 @@
 		049B57611871FBE900EF3C66 /* Release */ = {
 		049B57611871FBE900EF3C66 /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;

+ 0 - 9
examples/Game/part4/proj.macosx/GamePart5/GamePart5_macosx-Prefix.pch

@@ -1,9 +0,0 @@
-//
-//  Prefix header
-//
-//  The contents of this file are implicitly included at the beginning of every source file.
-//
-
-#ifdef __OBJC__
-    #import <Cocoa/Cocoa.h>
-#endif

+ 2 - 2
examples/Game/part4/proj.win32/GamePart4_vs2010.vcxproj

@@ -56,7 +56,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -78,7 +78,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 2
examples/Game/part4/proj.win32/GamePart4_vs2013.vcxproj

@@ -58,7 +58,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -80,7 +80,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 0
examples/Game/part5/proj.ios/GamePart5_ios.xcodeproj/project.pbxproj

@@ -403,6 +403,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = NO;
 				COPY_PHASE_STRIP = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
@@ -443,6 +444,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = YES;
 				COPY_PHASE_STRIP = YES;
 				ENABLE_NS_ASSERTIONS = NO;
 				ENABLE_NS_ASSERTIONS = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;

+ 3 - 5
examples/Game/part5/proj.macosx/GamePart5_macosx.xcodeproj/project.pbxproj

@@ -304,7 +304,7 @@
 		049B57261871FBE900EF3C66 /* Project object */ = {
 		049B57261871FBE900EF3C66 /* Project object */ = {
 			isa = PBXProject;
 			isa = PBXProject;
 			attributes = {
 			attributes = {
-				LastUpgradeCheck = 0510;
+				LastUpgradeCheck = 0610;
 				ORGANIZATIONNAME = oxygine;
 				ORGANIZATIONNAME = oxygine;
 			};
 			};
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "GamePart5_macosx" */;
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "GamePart5_macosx" */;
@@ -462,7 +462,7 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
@@ -496,14 +496,13 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../../..//oxygine/src ../../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
 		049B57601871FBE900EF3C66 /* Debug */ = {
 		049B57601871FBE900EF3C66 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -522,7 +521,6 @@
 		049B57611871FBE900EF3C66 /* Release */ = {
 		049B57611871FBE900EF3C66 /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;

+ 2 - 2
examples/Game/part5/proj.win32/GamePart5_vs2010.vcxproj

@@ -56,7 +56,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -78,7 +78,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 2
examples/Game/part5/proj.win32/GamePart5_vs2013.vcxproj

@@ -58,7 +58,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -80,7 +80,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../../..//oxygine/third_party/win32/libraries;../../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 42 - 32
examples/HelloWorld/proj.ios/HelloWorld_ios.xcodeproj/project.pbxproj

@@ -13,6 +13,7 @@
 		04998EE717F8ADB4003441C3 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE217F8ADB4003441C3 /* QuartzCore.framework */; };
 		04998EE717F8ADB4003441C3 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE217F8ADB4003441C3 /* QuartzCore.framework */; };
 		04998EE817F8ADB4003441C3 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE317F8ADB4003441C3 /* AudioToolbox.framework */; };
 		04998EE817F8ADB4003441C3 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE317F8ADB4003441C3 /* AudioToolbox.framework */; };
 		04998EE917F8ADB4003441C3 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE417F8ADB4003441C3 /* CoreAudio.framework */; };
 		04998EE917F8ADB4003441C3 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE417F8ADB4003441C3 /* CoreAudio.framework */; };
+		04998EE917F8ADB4003441C3 /* CoreAudio.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE417F8ADB4003441C3 /* CoreAudio.framework */; };
 		04998EEA17F8ADB4003441C3 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE517F8ADB4003441C3 /* OpenGLES.framework */; };
 		04998EEA17F8ADB4003441C3 /* OpenGLES.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EE517F8ADB4003441C3 /* OpenGLES.framework */; };
 		04998EEE17F8ADD4003441C3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EEB17F8ADD4003441C3 /* UIKit.framework */; };
 		04998EEE17F8ADD4003441C3 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EEB17F8ADD4003441C3 /* UIKit.framework */; };
 		04998EEF17F8ADD4003441C3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EEC17F8ADD4003441C3 /* Foundation.framework */; };
 		04998EEF17F8ADD4003441C3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EEC17F8ADD4003441C3 /* Foundation.framework */; };
@@ -21,13 +22,14 @@
 		04998EF817F8B6F3003441C3 /* libjpeg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EF617F8B6F3003441C3 /* libjpeg.a */; };
 		04998EF817F8B6F3003441C3 /* libjpeg.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 04998EF617F8B6F3003441C3 /* libjpeg.a */; };
 		049B52B11871EBFA00EF3C66 /* liboxygine_ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 049B52AD1871EBBA00EF3C66 /* liboxygine_ios.a */; };
 		049B52B11871EBFA00EF3C66 /* liboxygine_ios.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 049B52AD1871EBBA00EF3C66 /* liboxygine_ios.a */; };
 		04E9AD3F1876FE84006A7317 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 04E9AD3E1876FE84006A7317 /* Images.xcassets */; };
 		04E9AD3F1876FE84006A7317 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 04E9AD3E1876FE84006A7317 /* Images.xcassets */; };
-		2DC477AC10D6C07B3FE008F6 /* entry_point.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 360377333740D8A2FD15BBE6 /* entry_point.cpp */; };
-		3A631A475DE035FC53ADE5EA /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* fonts */; };
-		C8860D93875589970329DCCD /* data.js in Resources */ = {isa = PBXBuildFile; fileRef = 4DA100C319512824B7570663 /* data.js */; };
-		CD59C69314E9E74CD0A11E03 /* images in Resources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* images */; };
-		DA49ED8903C628BA578C8670 /* example.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BF9628FC8D38F9748F0CDEB /* example.cpp */; };
-		EFF139F8BA484314F7AAF645 /* pack.py in Resources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* pack.py */; };
-		F2CFD518E4E2E05ECEDBB262 /* res.xml in Resources */ = {isa = PBXBuildFile; fileRef = BA41FC88D76540A6905224D6 /* res.xml */; };
+		2DC477AC10D6C07B3FE008F6 /* ../src/entry_point.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 360377333740D8A2FD15BBE6 /* ../src/entry_point.cpp */; };
+		DA49ED8903C628BA578C8670 /* ../src/example.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BF9628FC8D38F9748F0CDEB /* ../src/example.cpp */; };
+		C8860D93875589970329DCCD /* ../data/data.js in Sources */ = {isa = PBXBuildFile; fileRef = 4DA100C319512824B7570663 /* ../data/data.js */; };
+		1E839D002B2BA83FC83A695A /* ../data/fonts in Sources */ = {isa = PBXBuildFile; fileRef = 04FE4D4FB640E0DF92DFB865 /* ../data/fonts */; };
+		3A631A475DE035FC53ADE5EA /* ../data/images in Sources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* ../data/images */; };
+		CD59C69314E9E74CD0A11E03 /* ../data/pack.py in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/pack.py */; };
+		EFF139F8BA484314F7AAF645 /* ../data/res.xml in Sources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* ../data/res.xml */; };
+
 /* End PBXBuildFile section */
 /* End PBXBuildFile section */
 
 
 /* Begin PBXContainerItemProxy section */
 /* Begin PBXContainerItemProxy section */
@@ -62,7 +64,6 @@
 /* End PBXContainerItemProxy section */
 /* End PBXContainerItemProxy section */
 
 
 /* Begin PBXFileReference section */
 /* Begin PBXFileReference section */
-		048AD0AD197D24AB001963EF /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
 		04998CEC17F8A933003441C3 /* HelloWorld_ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld_ios.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		04998CEC17F8A933003441C3 /* HelloWorld_ios.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld_ios.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		04998D2F17F8A96E003441C3 /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = "../../../..//SDL/Xcode-iOS/SDL/SDL.xcodeproj"; sourceTree = "<group>"; };
 		04998D2F17F8A96E003441C3 /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = "../../../..//SDL/Xcode-iOS/SDL/SDL.xcodeproj"; sourceTree = "<group>"; };
 		04998D3917F8A9AA003441C3 /* oxygine_ios.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = oxygine_ios.xcodeproj; path = "../../..//oxygine/SDL/ios/oxygine/oxygine_ios.xcodeproj"; sourceTree = "<group>"; };
 		04998D3917F8A9AA003441C3 /* oxygine_ios.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = oxygine_ios.xcodeproj; path = "../../..//oxygine/SDL/ios/oxygine/oxygine_ios.xcodeproj"; sourceTree = "<group>"; };
@@ -70,21 +71,23 @@
 		04998EE217F8ADB4003441C3 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
 		04998EE217F8ADB4003441C3 /* QuartzCore.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = QuartzCore.framework; path = System/Library/Frameworks/QuartzCore.framework; sourceTree = SDKROOT; };
 		04998EE317F8ADB4003441C3 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
 		04998EE317F8ADB4003441C3 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = System/Library/Frameworks/AudioToolbox.framework; sourceTree = SDKROOT; };
 		04998EE417F8ADB4003441C3 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
 		04998EE417F8ADB4003441C3 /* CoreAudio.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreAudio.framework; path = System/Library/Frameworks/CoreAudio.framework; sourceTree = SDKROOT; };
+		048AD0AD197D24AB001963EF /* CoreMotion.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreMotion.framework; path = System/Library/Frameworks/CoreMotion.framework; sourceTree = SDKROOT; };
 		04998EE517F8ADB4003441C3 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
 		04998EE517F8ADB4003441C3 /* OpenGLES.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGLES.framework; path = System/Library/Frameworks/OpenGLES.framework; sourceTree = SDKROOT; };
 		04998EEB17F8ADD4003441C3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
 		04998EEB17F8ADD4003441C3 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
 		04998EEC17F8ADD4003441C3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
 		04998EEC17F8ADD4003441C3 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
 		04998EED17F8ADD4003441C3 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
 		04998EED17F8ADD4003441C3 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
 		04998EF517F8B6F3003441C3 /* libpng.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpng.a; path = "../../..//oxygine/third_party/ios/libraries/libpng.a"; sourceTree = "<group>"; };
 		04998EF517F8B6F3003441C3 /* libpng.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpng.a; path = "../../..//oxygine/third_party/ios/libraries/libpng.a"; sourceTree = "<group>"; };
 		04998EF617F8B6F3003441C3 /* libjpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjpeg.a; path = "../../..//oxygine/third_party/ios/libraries/libjpeg.a"; sourceTree = "<group>"; };
 		04998EF617F8B6F3003441C3 /* libjpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjpeg.a; path = "../../..//oxygine/third_party/ios/libraries/libjpeg.a"; sourceTree = "<group>"; };
-		04E9AD3E1876FE84006A7317 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = HelloWorld/Images.xcassets; sourceTree = "<group>"; };
-		0BF9628FC8D38F9748F0CDEB /* example.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = example.cpp; path = ../src/example.cpp; sourceTree = "<group>"; };
-		2CE4BD5BB9DEF92439C0AB58 /* example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
-		360377333740D8A2FD15BBE6 /* entry_point.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = entry_point.cpp; path = ../src/entry_point.cpp; sourceTree = "<group>"; };
-		4DA100C319512824B7570663 /* data.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = data.js; path = ../data/data.js; sourceTree = "<group>"; };
-		5DE458993031811A4C7D28C1 /* pack.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = pack.py; path = ../data/pack.py; sourceTree = "<group>"; };
-		7F3B12E3C9D554D9FE28101D /* fonts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = fonts; path = ../data/fonts; sourceTree = "<group>"; };
-		BA41FC88D76540A6905224D6 /* res.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = res.xml; path = ../data/res.xml; sourceTree = "<group>"; };
-		F6123B1E6FE4471A00F49751 /* images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
+		04E9AD3E1876FE84006A7317 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name =Images.xcassets; path = HelloWorld/Images.xcassets; sourceTree = "<group>"; };
+		360377333740D8A2FD15BBE6 /* ../src/entry_point.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = entry_point.cpp; path = ../src/entry_point.cpp; sourceTree = "<group>"; };
+		0BF9628FC8D38F9748F0CDEB /* ../src/example.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = example.cpp; path = ../src/example.cpp; sourceTree = "<group>"; };
+		BA41FC88D76540A6905224D6 /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
+		4DA100C319512824B7570663 /* ../data/data.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = data.js; path = ../data/data.js; sourceTree = "<group>"; };
+		04FE4D4FB640E0DF92DFB865 /* ../data/fonts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = fonts; path = ../data/fonts; sourceTree = "<group>"; };
+		7F3B12E3C9D554D9FE28101D /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
+		F6123B1E6FE4471A00F49751 /* ../data/pack.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = pack.py; path = ../data/pack.py; sourceTree = "<group>"; };
+		5DE458993031811A4C7D28C1 /* ../data/res.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = res.xml; path = ../data/res.xml; sourceTree = "<group>"; };
+
 /* End PBXFileReference section */
 /* End PBXFileReference section */
 
 
 /* Begin PBXFrameworksBuildPhase section */
 /* Begin PBXFrameworksBuildPhase section */
@@ -158,14 +161,16 @@
 			name = Frameworks;
 			name = Frameworks;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+
 		04998CF617F8A933003441C3 /* Supporting Files */ = {
 		04998CF617F8A933003441C3 /* Supporting Files */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
-				4DA100C319512824B7570663 /* data.js */,
-				7F3B12E3C9D554D9FE28101D /* fonts */,
-				F6123B1E6FE4471A00F49751 /* images */,
-				5DE458993031811A4C7D28C1 /* pack.py */,
-				BA41FC88D76540A6905224D6 /* res.xml */,
+				4DA100C319512824B7570663 /* data.js */, 
+				04FE4D4FB640E0DF92DFB865 /* fonts */, 
+				7F3B12E3C9D554D9FE28101D /* images */, 
+				F6123B1E6FE4471A00F49751 /* pack.py */, 
+				5DE458993031811A4C7D28C1 /* res.xml */, 
+
 			);
 			);
 			name = "Supporting Files";
 			name = "Supporting Files";
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -181,9 +186,10 @@
 		04998D4417F8A9ED003441C3 /* src */ = {
 		04998D4417F8A9ED003441C3 /* src */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
-				360377333740D8A2FD15BBE6 /* entry_point.cpp */,
-				0BF9628FC8D38F9748F0CDEB /* example.cpp */,
-				2CE4BD5BB9DEF92439C0AB58 /* example.h */,
+				360377333740D8A2FD15BBE6 /* entry_point.cpp */, 
+				0BF9628FC8D38F9748F0CDEB /* example.cpp */, 
+				BA41FC88D76540A6905224D6 /* example.h */, 
+
 			);
 			);
 			name = src;
 			name = src;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -278,11 +284,12 @@
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
 				04E9AD3F1876FE84006A7317 /* Images.xcassets in Resources */,
 				04E9AD3F1876FE84006A7317 /* Images.xcassets in Resources */,
-				C8860D93875589970329DCCD /* data.js in Resources */,
-				3A631A475DE035FC53ADE5EA /* fonts in Resources */,
-				CD59C69314E9E74CD0A11E03 /* images in Resources */,
-				EFF139F8BA484314F7AAF645 /* pack.py in Resources */,
-				F2CFD518E4E2E05ECEDBB262 /* res.xml in Resources */,
+				C8860D93875589970329DCCD /* data.js */, 
+				1E839D002B2BA83FC83A695A /* fonts */, 
+				3A631A475DE035FC53ADE5EA /* images */, 
+				CD59C69314E9E74CD0A11E03 /* pack.py */, 
+				EFF139F8BA484314F7AAF645 /* res.xml */, 
+
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
@@ -293,8 +300,9 @@
 			isa = PBXSourcesBuildPhase;
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
-				2DC477AC10D6C07B3FE008F6 /* entry_point.cpp in Sources */,
-				DA49ED8903C628BA578C8670 /* example.cpp in Sources */,
+				2DC477AC10D6C07B3FE008F6 /* entry_point.cpp */, 
+				DA49ED8903C628BA578C8670 /* example.cpp */, 
+
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
@@ -331,6 +339,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = NO;
 				COPY_PHASE_STRIP = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
@@ -371,6 +380,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = YES;
 				COPY_PHASE_STRIP = YES;
 				ENABLE_NS_ASSERTIONS = NO;
 				ENABLE_NS_ASSERTIONS = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;

+ 55 - 43
examples/HelloWorld/proj.macosx/HelloWorld_macosx.xcodeproj/project.pbxproj

@@ -15,13 +15,15 @@
 		0405A00118720D2200BA6557 /* libpng.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 04059FF11872031A00BA6557 /* libpng.a */; };
 		0405A00118720D2200BA6557 /* libpng.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 04059FF11872031A00BA6557 /* libpng.a */; };
 		049B57321871FBE900EF3C66 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 049B57311871FBE900EF3C66 /* Cocoa.framework */; };
 		049B57321871FBE900EF3C66 /* Cocoa.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 049B57311871FBE900EF3C66 /* Cocoa.framework */; };
 		049B574A1871FBE900EF3C66 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 049B57491871FBE900EF3C66 /* Images.xcassets */; };
 		049B574A1871FBE900EF3C66 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 049B57491871FBE900EF3C66 /* Images.xcassets */; };
-		2DC477AC10D6C07B3FE008F6 /* entry_point.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 360377333740D8A2FD15BBE6 /* entry_point.cpp */; };
-		3A631A475DE035FC53ADE5EA /* fonts in Resources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* fonts */; };
-		C8860D93875589970329DCCD /* data.js in Resources */ = {isa = PBXBuildFile; fileRef = 4DA100C319512824B7570663 /* data.js */; };
-		CD59C69314E9E74CD0A11E03 /* images in Resources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* images */; };
-		DA49ED8903C628BA578C8670 /* example.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BF9628FC8D38F9748F0CDEB /* example.cpp */; };
-		EFF139F8BA484314F7AAF645 /* pack.py in Resources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* pack.py */; };
-		F2CFD518E4E2E05ECEDBB262 /* res.xml in Resources */ = {isa = PBXBuildFile; fileRef = BA41FC88D76540A6905224D6 /* res.xml */; };
+		2DC477AC10D6C07B3FE008F6 /* ../src/entry_point.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 360377333740D8A2FD15BBE6 /* ../src/entry_point.cpp */; };
+		DA49ED8903C628BA578C8670 /* ../src/example.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 0BF9628FC8D38F9748F0CDEB /* ../src/example.cpp */; };
+		C8860D93875589970329DCCD /* ../data/data.js in Sources */ = {isa = PBXBuildFile; fileRef = 4DA100C319512824B7570663 /* ../data/data.js */; };
+		1E839D002B2BA83FC83A695A /* ../data/fonts in Sources */ = {isa = PBXBuildFile; fileRef = 04FE4D4FB640E0DF92DFB865 /* ../data/fonts */; };
+		3A631A475DE035FC53ADE5EA /* ../data/images in Sources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* ../data/images */; };
+		CD59C69314E9E74CD0A11E03 /* ../data/pack.py in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/pack.py */; };
+		EFF139F8BA484314F7AAF645 /* ../data/res.xml in Sources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* ../data/res.xml */; };
+
+		
 /* End PBXBuildFile section */
 /* End PBXBuildFile section */
 
 
 /* Begin PBXContainerItemProxy section */
 /* Begin PBXContainerItemProxy section */
@@ -79,28 +81,29 @@
 /* Begin PBXFileReference section */
 /* Begin PBXFileReference section */
 		04059FEC187202A200BA6557 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
 		04059FEC187202A200BA6557 /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
 		04059FEE187202AC00BA6557 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
 		04059FEE187202AC00BA6557 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = System/Library/Frameworks/OpenGL.framework; sourceTree = SDKROOT; };
-		04059FF01872031A00BA6557 /* libjpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjpeg.a; path = "../../..//oxygine/third_party/macosx/libraries/libjpeg.a"; sourceTree = "<group>"; };
-		04059FF11872031A00BA6557 /* libpng.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpng.a; path = "../../..//oxygine/third_party/macosx/libraries/libpng.a"; sourceTree = "<group>"; };
-		04059FF4187203A600BA6557 /* libjpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjpeg.a; path = "../../..//oxygine/third_party/ios/libraries/libjpeg.a"; sourceTree = "<group>"; };
-		04059FF5187203A600BA6557 /* libpng.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpng.a; path = "../../..//oxygine/third_party/ios/libraries/libpng.a"; sourceTree = "<group>"; };
-		049B572E1871FBE900EF3C66 /* HelloWorld_macosx.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld_macosx.app; sourceTree = BUILT_PRODUCTS_DIR; };
+		04059FF01872031A00BA6557 /* libjpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjpeg.a; path = ../../..//oxygine/third_party/macosx/libraries/libjpeg.a; sourceTree = "<group>"; };
+		04059FF11872031A00BA6557 /* libpng.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpng.a; path = ../../..//oxygine/third_party/macosx/libraries/libpng.a; sourceTree = "<group>"; };
+		04059FF4187203A600BA6557 /* libjpeg.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libjpeg.a; path = ../../..//oxygine/third_party/ios/libraries/libjpeg.a; sourceTree = "<group>"; };
+		04059FF5187203A600BA6557 /* libpng.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libpng.a; path = ../../..//oxygine/third_party/ios/libraries/libpng.a; sourceTree = "<group>"; };
+		049B572E1871FBE900EF3C66 /* demo_macosx.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = HelloWorld_macosx.app; sourceTree = BUILT_PRODUCTS_DIR; };
 		049B57311871FBE900EF3C66 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
 		049B57311871FBE900EF3C66 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
 		049B57341871FBE900EF3C66 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
 		049B57341871FBE900EF3C66 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
 		049B57351871FBE900EF3C66 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
 		049B57351871FBE900EF3C66 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; };
 		049B57361871FBE900EF3C66 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
 		049B57361871FBE900EF3C66 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
-		049B57391871FBE900EF3C66 /* HelloWorld_macosx-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HelloWorld_macosx-Info.plist"; sourceTree = "<group>"; };
+		049B57391871FBE900EF3C66 /* demo_macosx-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "HelloWorld_macosx-Info.plist"; sourceTree = "<group>"; };
 		049B57491871FBE900EF3C66 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = HelloWorld/Images.xcassets; sourceTree = "<group>"; };
 		049B57491871FBE900EF3C66 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; name = Images.xcassets; path = HelloWorld/Images.xcassets; sourceTree = "<group>"; };
 		049B57501871FBE900EF3C66 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
 		049B57501871FBE900EF3C66 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
-		04A57D761871FFEB0068B1E5 /* oxygine_macosx.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = oxygine_macosx.xcodeproj; path = "../../..//oxygine/SDL/macosx/oxygine_macosx/oxygine_macosx.xcodeproj"; sourceTree = "<group>"; };
-		04A57D7E1872012A0068B1E5 /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = "../../../..//SDL/Xcode/SDL/SDL.xcodeproj"; sourceTree = "<group>"; };
-		0BF9628FC8D38F9748F0CDEB /* example.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = example.cpp; path = ../src/example.cpp; sourceTree = "<group>"; };
-		2CE4BD5BB9DEF92439C0AB58 /* example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
-		360377333740D8A2FD15BBE6 /* entry_point.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = entry_point.cpp; path = ../src/entry_point.cpp; sourceTree = "<group>"; };
-		4DA100C319512824B7570663 /* data.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = data.js; path = ../data/data.js; sourceTree = "<group>"; };
-		5DE458993031811A4C7D28C1 /* pack.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = pack.py; path = ../data/pack.py; sourceTree = "<group>"; };
-		7F3B12E3C9D554D9FE28101D /* fonts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = fonts; path = ../data/fonts; sourceTree = "<group>"; };
-		BA41FC88D76540A6905224D6 /* res.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = res.xml; path = ../data/res.xml; sourceTree = "<group>"; };
-		F6123B1E6FE4471A00F49751 /* images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
+		360377333740D8A2FD15BBE6 /* ../src/entry_point.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = entry_point.cpp; path = ../src/entry_point.cpp; sourceTree = "<group>"; };
+		0BF9628FC8D38F9748F0CDEB /* ../src/example.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = example.cpp; path = ../src/example.cpp; sourceTree = "<group>"; };
+		BA41FC88D76540A6905224D6 /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
+		4DA100C319512824B7570663 /* ../data/data.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = data.js; path = ../data/data.js; sourceTree = "<group>"; };
+		04FE4D4FB640E0DF92DFB865 /* ../data/fonts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = fonts; path = ../data/fonts; sourceTree = "<group>"; };
+		7F3B12E3C9D554D9FE28101D /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
+		F6123B1E6FE4471A00F49751 /* ../data/pack.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = pack.py; path = ../data/pack.py; sourceTree = "<group>"; };
+		5DE458993031811A4C7D28C1 /* ../data/res.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = res.xml; path = ../data/res.xml; sourceTree = "<group>"; };
+
+		04A57D761871FFEB0068B1E5 /* oxygine_macosx.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = oxygine_macosx.xcodeproj; path = ../../..//oxygine/SDL/macosx/oxygine_macosx/oxygine_macosx.xcodeproj; sourceTree = "<group>"; };
+		04A57D7E1872012A0068B1E5 /* SDL.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = SDL.xcodeproj; path = ../../../..//SDL/Xcode/SDL/SDL.xcodeproj; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 /* End PBXFileReference section */
 
 
 /* Begin PBXFrameworksBuildPhase section */
 /* Begin PBXFrameworksBuildPhase section */
@@ -176,14 +179,22 @@
 			name = "Other Frameworks";
 			name = "Other Frameworks";
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		049B57371871FBE900EF3C66 /* demo */ = {
+			isa = PBXGroup;
+			children = (
+			);
+			path = demo;
+			sourceTree = "<group>";
+		};
 		049B57381871FBE900EF3C66 /* Supporting Files */ = {
 		049B57381871FBE900EF3C66 /* Supporting Files */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
-				4DA100C319512824B7570663 /* data.js */,
-				7F3B12E3C9D554D9FE28101D /* fonts */,
-				F6123B1E6FE4471A00F49751 /* images */,
-				5DE458993031811A4C7D28C1 /* pack.py */,
-				BA41FC88D76540A6905224D6 /* res.xml */,
+				4DA100C319512824B7570663 /* data.js */, 
+				04FE4D4FB640E0DF92DFB865 /* fonts */, 
+				7F3B12E3C9D554D9FE28101D /* images */, 
+				F6123B1E6FE4471A00F49751 /* pack.py */, 
+				5DE458993031811A4C7D28C1 /* res.xml */, 
+
 				049B57391871FBE900EF3C66 /* HelloWorld_macosx-Info.plist */,
 				049B57391871FBE900EF3C66 /* HelloWorld_macosx-Info.plist */,
 			);
 			);
 			name = "Supporting Files";
 			name = "Supporting Files";
@@ -192,9 +203,10 @@
 		04A57D391871FF8B0068B1E5 /* src */ = {
 		04A57D391871FF8B0068B1E5 /* src */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
-				360377333740D8A2FD15BBE6 /* entry_point.cpp */,
-				0BF9628FC8D38F9748F0CDEB /* example.cpp */,
-				2CE4BD5BB9DEF92439C0AB58 /* example.h */,
+				360377333740D8A2FD15BBE6 /* entry_point.cpp */, 
+				0BF9628FC8D38F9748F0CDEB /* example.cpp */, 
+				BA41FC88D76540A6905224D6 /* example.h */, 
+
 			);
 			);
 			name = src;
 			name = src;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
@@ -238,7 +250,7 @@
 		049B57261871FBE900EF3C66 /* Project object */ = {
 		049B57261871FBE900EF3C66 /* Project object */ = {
 			isa = PBXProject;
 			isa = PBXProject;
 			attributes = {
 			attributes = {
-				LastUpgradeCheck = 0510;
+				LastUpgradeCheck = 0610;
 				ORGANIZATIONNAME = oxygine;
 				ORGANIZATIONNAME = oxygine;
 			};
 			};
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "HelloWorld_macosx" */;
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "HelloWorld_macosx" */;
@@ -312,11 +324,12 @@
 			isa = PBXResourcesBuildPhase;
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
-				C8860D93875589970329DCCD /* data.js in Resources */,
-				3A631A475DE035FC53ADE5EA /* fonts in Resources */,
-				CD59C69314E9E74CD0A11E03 /* images in Resources */,
-				EFF139F8BA484314F7AAF645 /* pack.py in Resources */,
-				F2CFD518E4E2E05ECEDBB262 /* res.xml in Resources */,
+				C8860D93875589970329DCCD /* data.js */, 
+				1E839D002B2BA83FC83A695A /* fonts */, 
+				3A631A475DE035FC53ADE5EA /* images */, 
+				CD59C69314E9E74CD0A11E03 /* pack.py */, 
+				EFF139F8BA484314F7AAF645 /* res.xml */, 
+
 				049B574A1871FBE900EF3C66 /* Images.xcassets in Resources */,
 				049B574A1871FBE900EF3C66 /* Images.xcassets in Resources */,
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -328,8 +341,9 @@
 			isa = PBXSourcesBuildPhase;
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
-				2DC477AC10D6C07B3FE008F6 /* entry_point.cpp in Sources */,
-				DA49ED8903C628BA578C8670 /* example.cpp in Sources */,
+				2DC477AC10D6C07B3FE008F6 /* entry_point.cpp */, 
+				DA49ED8903C628BA578C8670 /* example.cpp */, 
+
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
@@ -384,7 +398,7 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
@@ -418,14 +432,13 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
 		049B57601871FBE900EF3C66 /* Debug */ = {
 		049B57601871FBE900EF3C66 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -444,7 +457,6 @@
 		049B57611871FBE900EF3C66 /* Release */ = {
 		049B57611871FBE900EF3C66 /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;

+ 2 - 2
examples/HelloWorld/proj.win32/HelloWorld_vs2010.vcxproj

@@ -56,7 +56,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -78,7 +78,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 2
examples/HelloWorld/proj.win32/HelloWorld_vs2013.vcxproj

@@ -58,7 +58,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -80,7 +80,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 0
examples/Match3/proj.ios/Match3_ios.xcodeproj/project.pbxproj

@@ -349,6 +349,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = NO;
 				COPY_PHASE_STRIP = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
@@ -389,6 +390,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = YES;
 				COPY_PHASE_STRIP = YES;
 				ENABLE_NS_ASSERTIONS = NO;
 				ENABLE_NS_ASSERTIONS = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;

+ 3 - 5
examples/Match3/proj.macosx/Match3_macosx.xcodeproj/project.pbxproj

@@ -259,7 +259,7 @@
 		049B57261871FBE900EF3C66 /* Project object */ = {
 		049B57261871FBE900EF3C66 /* Project object */ = {
 			isa = PBXProject;
 			isa = PBXProject;
 			attributes = {
 			attributes = {
-				LastUpgradeCheck = 0510;
+				LastUpgradeCheck = 0610;
 				ORGANIZATIONNAME = oxygine;
 				ORGANIZATIONNAME = oxygine;
 			};
 			};
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "Match3_macosx" */;
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "Match3_macosx" */;
@@ -408,7 +408,7 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
@@ -442,14 +442,13 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
 		049B57601871FBE900EF3C66 /* Debug */ = {
 		049B57601871FBE900EF3C66 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -468,7 +467,6 @@
 		049B57611871FBE900EF3C66 /* Release */ = {
 		049B57611871FBE900EF3C66 /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;

+ 2 - 2
examples/Match3/proj.win32/Match3_vs2010.vcxproj

@@ -56,7 +56,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -78,7 +78,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 2
examples/Match3/proj.win32/Match3_vs2013.vcxproj

@@ -58,7 +58,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -80,7 +80,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 0
examples/TutorialResources/proj.ios/TutorialResources_ios.xcodeproj/project.pbxproj

@@ -335,6 +335,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = NO;
 				COPY_PHASE_STRIP = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_DYNAMIC_NO_PIC = NO;
 				GCC_DYNAMIC_NO_PIC = NO;
@@ -375,6 +376,7 @@
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
 				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
+				COMPRESS_PNG_FILES = NO;
 				COPY_PHASE_STRIP = YES;
 				COPY_PHASE_STRIP = YES;
 				ENABLE_NS_ASSERTIONS = NO;
 				ENABLE_NS_ASSERTIONS = NO;
 				GCC_C_LANGUAGE_STANDARD = gnu99;
 				GCC_C_LANGUAGE_STANDARD = gnu99;

+ 3 - 5
examples/TutorialResources/proj.macosx/TutorialResources_macosx.xcodeproj/project.pbxproj

@@ -247,7 +247,7 @@
 		049B57261871FBE900EF3C66 /* Project object */ = {
 		049B57261871FBE900EF3C66 /* Project object */ = {
 			isa = PBXProject;
 			isa = PBXProject;
 			attributes = {
 			attributes = {
-				LastUpgradeCheck = 0510;
+				LastUpgradeCheck = 0610;
 				ORGANIZATIONNAME = oxygine;
 				ORGANIZATIONNAME = oxygine;
 			};
 			};
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "TutorialResources_macosx" */;
 			buildConfigurationList = 049B57291871FBE900EF3C66 /* Build configuration list for PBXProject "TutorialResources_macosx" */;
@@ -394,7 +394,7 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
@@ -428,14 +428,13 @@
 				ONLY_ACTIVE_ARCH = YES;
 				ONLY_ACTIVE_ARCH = YES;
 				SDKROOT = macosx;
 				SDKROOT = macosx;
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
 				USER_HEADER_SEARCH_PATHS = "../../..//oxygine/src ../../../..//SDL/include";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = "x86_64";
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
 		049B57601871FBE900EF3C66 /* Debug */ = {
 		049B57601871FBE900EF3C66 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
@@ -454,7 +453,6 @@
 		049B57611871FBE900EF3C66 /* Release */ = {
 		049B57611871FBE900EF3C66 /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
 				COMBINE_HIDPI_IMAGES = YES;
 				COMBINE_HIDPI_IMAGES = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;
 				GCC_PRECOMPILE_PREFIX_HEADER = YES;

+ 2 - 2
examples/TutorialResources/proj.win32/TutorialResources_vs2010.vcxproj

@@ -56,7 +56,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -78,7 +78,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 2 - 2
examples/TutorialResources/proj.win32/TutorialResources_vs2013.vcxproj

@@ -58,7 +58,7 @@
     <Link>
     <Link>
       <SubSystem>Windows</SubSystem>
       <SubSystem>Windows</SubSystem>
       <GenerateDebugInformation>true</GenerateDebugInformation>
       <GenerateDebugInformation>true</GenerateDebugInformation>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
@@ -80,7 +80,7 @@
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <EnableCOMDATFolding>true</EnableCOMDATFolding>
       <OptimizeReferences>true</OptimizeReferences>
       <OptimizeReferences>true</OptimizeReferences>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
       <AdditionalLibraryDirectories>../../..//oxygine/third_party/win32/libraries;../../..//libs;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
-      <AdditionalDependencies>libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
+      <AdditionalDependencies>libcurl_imp.lib;ws2_32.lib;libjpeg.lib;libpng.lib;libzlib.lib;opengl32.lib;pthreadVCE2.lib;SDL2.lib;SDL2main.lib;%(AdditionalDependencies)</AdditionalDependencies>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
       <AdditionalOptions>/ignore:4217 /ignore:4049 %(AdditionalOptions)</AdditionalOptions>
     </Link>
     </Link>
   </ItemDefinitionGroup>
   </ItemDefinitionGroup>

+ 46 - 0
oxygine/SDL/ios/oxygine/oxygine_ios.xcodeproj/project.pbxproj

@@ -52,6 +52,13 @@
 		92214D6419F14A2F00A4459A /* Polygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92214D6219F14A2F00A4459A /* Polygon.cpp */; };
 		92214D6419F14A2F00A4459A /* Polygon.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92214D6219F14A2F00A4459A /* Polygon.cpp */; };
 		92214D6519F14A2F00A4459A /* Polygon.h in Headers */ = {isa = PBXBuildFile; fileRef = 92214D6319F14A2F00A4459A /* Polygon.h */; };
 		92214D6519F14A2F00A4459A /* Polygon.h in Headers */ = {isa = PBXBuildFile; fileRef = 92214D6319F14A2F00A4459A /* Polygon.h */; };
 		9223E2DD1A4DF6FC00B2770B /* slp_platformselect.h in Headers */ = {isa = PBXBuildFile; fileRef = 9223E2DC1A4DF6FC00B2770B /* slp_platformselect.h */; };
 		9223E2DD1A4DF6FC00B2770B /* slp_platformselect.h in Headers */ = {isa = PBXBuildFile; fileRef = 9223E2DC1A4DF6FC00B2770B /* slp_platformselect.h */; };
+		9223E30E1A518CC400B2770B /* HttpRequestCocoaTask.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9223E30D1A518CC400B2770B /* HttpRequestCocoaTask.mm */; };
+		9223E3121A5193E000B2770B /* AsyncTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9223E3101A5193E000B2770B /* AsyncTask.cpp */; };
+		9223E3131A5193E000B2770B /* AsyncTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 9223E3111A5193E000B2770B /* AsyncTask.h */; };
+		9223E3181A52D6B800B2770B /* HttpRequestTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 9223E3151A52D6B800B2770B /* HttpRequestTask.h */; };
+		9223E3191A52D6B800B2770B /* WebImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9223E3161A52D6B800B2770B /* WebImage.cpp */; };
+		9223E31A1A52D6B800B2770B /* WebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 9223E3171A52D6B800B2770B /* WebImage.h */; };
+		9223E31C1A530E8A00B2770B /* HttpRequestTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 9223E31B1A530E8A00B2770B /* HttpRequestTask.cpp */; };
 		923663691A4756C500EB65B3 /* KeyEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 923663611A4756C500EB65B3 /* KeyEvent.h */; };
 		923663691A4756C500EB65B3 /* KeyEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 923663611A4756C500EB65B3 /* KeyEvent.h */; };
 		9236636A1A4756C500EB65B3 /* Serializable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 923663621A4756C500EB65B3 /* Serializable.cpp */; };
 		9236636A1A4756C500EB65B3 /* Serializable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 923663621A4756C500EB65B3 /* Serializable.cpp */; };
 		9236636B1A4756C500EB65B3 /* Serializable.h in Headers */ = {isa = PBXBuildFile; fileRef = 923663631A4756C500EB65B3 /* Serializable.h */; };
 		9236636B1A4756C500EB65B3 /* Serializable.h in Headers */ = {isa = PBXBuildFile; fileRef = 923663631A4756C500EB65B3 /* Serializable.h */; };
@@ -64,6 +71,8 @@
 		923A9E981A1FCBB700A6F08E /* MaskedRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 923A9E941A1FCBB700A6F08E /* MaskedRenderer.h */; };
 		923A9E981A1FCBB700A6F08E /* MaskedRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 923A9E941A1FCBB700A6F08E /* MaskedRenderer.h */; };
 		923A9E991A1FCBB700A6F08E /* STDRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 923A9E951A1FCBB700A6F08E /* STDRenderer.cpp */; };
 		923A9E991A1FCBB700A6F08E /* STDRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 923A9E951A1FCBB700A6F08E /* STDRenderer.cpp */; };
 		923A9E9A1A1FCBB700A6F08E /* STDRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 923A9E961A1FCBB700A6F08E /* STDRenderer.h */; };
 		923A9E9A1A1FCBB700A6F08E /* STDRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 923A9E961A1FCBB700A6F08E /* STDRenderer.h */; };
+		92CE26621A589401003901D6 /* ios.h in Headers */ = {isa = PBXBuildFile; fileRef = 92CE26601A589401003901D6 /* ios.h */; };
+		92CE26631A589401003901D6 /* ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = 92CE26611A589401003901D6 /* ios.mm */; };
 		92DC0A251A2F0ED900D2B55C /* greenlet.c in Sources */ = {isa = PBXBuildFile; fileRef = 92DC0A231A2F0ED900D2B55C /* greenlet.c */; };
 		92DC0A251A2F0ED900D2B55C /* greenlet.c in Sources */ = {isa = PBXBuildFile; fileRef = 92DC0A231A2F0ED900D2B55C /* greenlet.c */; };
 		92DC0A261A2F0ED900D2B55C /* greenlet.h in Headers */ = {isa = PBXBuildFile; fileRef = 92DC0A241A2F0ED900D2B55C /* greenlet.h */; };
 		92DC0A261A2F0ED900D2B55C /* greenlet.h in Headers */ = {isa = PBXBuildFile; fileRef = 92DC0A241A2F0ED900D2B55C /* greenlet.h */; };
 		C38704A617C0C71700015CA8 /* VideoDriverGLES20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C38704A417C0C71700015CA8 /* VideoDriverGLES20.cpp */; };
 		C38704A617C0C71700015CA8 /* VideoDriverGLES20.cpp in Sources */ = {isa = PBXBuildFile; fileRef = C38704A417C0C71700015CA8 /* VideoDriverGLES20.cpp */; };
@@ -264,6 +273,14 @@
 		92214D6319F14A2F00A4459A /* Polygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Polygon.h; path = ../../../src/Polygon.h; sourceTree = "<group>"; };
 		92214D6319F14A2F00A4459A /* Polygon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Polygon.h; path = ../../../src/Polygon.h; sourceTree = "<group>"; };
 		9223E2DC1A4DF6FC00B2770B /* slp_platformselect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = slp_platformselect.h; path = ../../../greenlets/src/slp_platformselect.h; sourceTree = "<group>"; };
 		9223E2DC1A4DF6FC00B2770B /* slp_platformselect.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = slp_platformselect.h; path = ../../../greenlets/src/slp_platformselect.h; sourceTree = "<group>"; };
 		9223E2DE1A4DF72500B2770B /* platform */ = {isa = PBXFileReference; lastKnownFileType = folder; name = platform; path = ../../../greenlets/src/platform; sourceTree = "<group>"; };
 		9223E2DE1A4DF72500B2770B /* platform */ = {isa = PBXFileReference; lastKnownFileType = folder; name = platform; path = ../../../greenlets/src/platform; sourceTree = "<group>"; };
+		9223E30C1A518CA100B2770B /* HttpRequestCocoaTask.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = HttpRequestCocoaTask.h; path = ../../../src/core/ios/HttpRequestCocoaTask.h; sourceTree = "<group>"; };
+		9223E30D1A518CC400B2770B /* HttpRequestCocoaTask.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = HttpRequestCocoaTask.mm; path = ../../../src/core/ios/HttpRequestCocoaTask.mm; sourceTree = "<group>"; };
+		9223E3101A5193E000B2770B /* AsyncTask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AsyncTask.cpp; path = ../../../src/AsyncTask.cpp; sourceTree = "<group>"; };
+		9223E3111A5193E000B2770B /* AsyncTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AsyncTask.h; path = ../../../src/AsyncTask.h; sourceTree = "<group>"; };
+		9223E3151A52D6B800B2770B /* HttpRequestTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HttpRequestTask.h; path = ../../../src/HttpRequestTask.h; sourceTree = "<group>"; };
+		9223E3161A52D6B800B2770B /* WebImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebImage.cpp; path = ../../../src/WebImage.cpp; sourceTree = "<group>"; };
+		9223E3171A52D6B800B2770B /* WebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebImage.h; path = ../../../src/WebImage.h; sourceTree = "<group>"; };
+		9223E31B1A530E8A00B2770B /* HttpRequestTask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HttpRequestTask.cpp; path = ../../../src/HttpRequestTask.cpp; sourceTree = "<group>"; };
 		923663611A4756C500EB65B3 /* KeyEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeyEvent.h; path = ../../../src/KeyEvent.h; sourceTree = "<group>"; };
 		923663611A4756C500EB65B3 /* KeyEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeyEvent.h; path = ../../../src/KeyEvent.h; sourceTree = "<group>"; };
 		923663621A4756C500EB65B3 /* Serializable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Serializable.cpp; path = ../../../src/Serializable.cpp; sourceTree = "<group>"; };
 		923663621A4756C500EB65B3 /* Serializable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = Serializable.cpp; path = ../../../src/Serializable.cpp; sourceTree = "<group>"; };
 		923663631A4756C500EB65B3 /* Serializable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Serializable.h; path = ../../../src/Serializable.h; sourceTree = "<group>"; };
 		923663631A4756C500EB65B3 /* Serializable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Serializable.h; path = ../../../src/Serializable.h; sourceTree = "<group>"; };
@@ -276,6 +293,8 @@
 		923A9E941A1FCBB700A6F08E /* MaskedRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MaskedRenderer.h; path = ../../../src/MaskedRenderer.h; sourceTree = "<group>"; };
 		923A9E941A1FCBB700A6F08E /* MaskedRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MaskedRenderer.h; path = ../../../src/MaskedRenderer.h; sourceTree = "<group>"; };
 		923A9E951A1FCBB700A6F08E /* STDRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = STDRenderer.cpp; path = ../../../src/STDRenderer.cpp; sourceTree = "<group>"; };
 		923A9E951A1FCBB700A6F08E /* STDRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = STDRenderer.cpp; path = ../../../src/STDRenderer.cpp; sourceTree = "<group>"; };
 		923A9E961A1FCBB700A6F08E /* STDRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = STDRenderer.h; path = ../../../src/STDRenderer.h; sourceTree = "<group>"; };
 		923A9E961A1FCBB700A6F08E /* STDRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = STDRenderer.h; path = ../../../src/STDRenderer.h; sourceTree = "<group>"; };
+		92CE26601A589401003901D6 /* ios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = ios.h; path = ../../../src/core/ios/ios.h; sourceTree = "<group>"; };
+		92CE26611A589401003901D6 /* ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; name = ios.mm; path = ../../../src/core/ios/ios.mm; sourceTree = "<group>"; };
 		92DC0A231A2F0ED900D2B55C /* greenlet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = greenlet.c; path = ../../../greenlets/src/greenlet.c; sourceTree = "<group>"; };
 		92DC0A231A2F0ED900D2B55C /* greenlet.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; name = greenlet.c; path = ../../../greenlets/src/greenlet.c; sourceTree = "<group>"; };
 		92DC0A241A2F0ED900D2B55C /* greenlet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = greenlet.h; path = ../../../greenlets/src/greenlet.h; sourceTree = "<group>"; };
 		92DC0A241A2F0ED900D2B55C /* greenlet.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = greenlet.h; path = ../../../greenlets/src/greenlet.h; sourceTree = "<group>"; };
 		C38704A417C0C71700015CA8 /* VideoDriverGLES20.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VideoDriverGLES20.cpp; path = gl/VideoDriverGLES20.cpp; sourceTree = "<group>"; };
 		C38704A417C0C71700015CA8 /* VideoDriverGLES20.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = VideoDriverGLES20.cpp; path = gl/VideoDriverGLES20.cpp; sourceTree = "<group>"; };
@@ -462,6 +481,17 @@
 			path = ../../../src/minizip;
 			path = ../../../src/minizip;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		9223E30B1A518BCC00B2770B /* ios */ = {
+			isa = PBXGroup;
+			children = (
+				92CE26601A589401003901D6 /* ios.h */,
+				92CE26611A589401003901D6 /* ios.mm */,
+				9223E30C1A518CA100B2770B /* HttpRequestCocoaTask.h */,
+				9223E30D1A518CC400B2770B /* HttpRequestCocoaTask.mm */,
+			);
+			name = ios;
+			sourceTree = "<group>";
+		};
 		92DC0A221A2F0EB700D2B55C /* greenlet */ = {
 		92DC0A221A2F0EB700D2B55C /* greenlet */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
@@ -515,6 +545,13 @@
 		C3E86F5316EBC8C200052915 /* src */ = {
 		C3E86F5316EBC8C200052915 /* src */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				9223E31B1A530E8A00B2770B /* HttpRequestTask.cpp */,
+				9223E3151A52D6B800B2770B /* HttpRequestTask.h */,
+				9223E3161A52D6B800B2770B /* WebImage.cpp */,
+				9223E3171A52D6B800B2770B /* WebImage.h */,
+				9223E3101A5193E000B2770B /* AsyncTask.cpp */,
+				9223E3111A5193E000B2770B /* AsyncTask.h */,
+				9223E30B1A518BCC00B2770B /* ios */,
 				923663611A4756C500EB65B3 /* KeyEvent.h */,
 				923663611A4756C500EB65B3 /* KeyEvent.h */,
 				923663621A4756C500EB65B3 /* Serializable.cpp */,
 				923663621A4756C500EB65B3 /* Serializable.cpp */,
 				923663631A4756C500EB65B3 /* Serializable.h */,
 				923663631A4756C500EB65B3 /* Serializable.h */,
@@ -851,6 +888,7 @@
 				C3E8703C16EBC8EB00052915 /* EventDispatcher.h in Headers */,
 				C3E8703C16EBC8EB00052915 /* EventDispatcher.h in Headers */,
 				C3E8703E16EBC8EB00052915 /* Font.h in Headers */,
 				C3E8703E16EBC8EB00052915 /* Font.h in Headers */,
 				C3E8703F16EBC8EB00052915 /* InitActor.h in Headers */,
 				C3E8703F16EBC8EB00052915 /* InitActor.h in Headers */,
+				9223E3181A52D6B800B2770B /* HttpRequestTask.h in Headers */,
 				C3E8704116EBC8EB00052915 /* Input.h in Headers */,
 				C3E8704116EBC8EB00052915 /* Input.h in Headers */,
 				C3E8704316EBC8EB00052915 /* AffineTransform.h in Headers */,
 				C3E8704316EBC8EB00052915 /* AffineTransform.h in Headers */,
 				0472E38117F8A2EC0016A832 /* oxygine_include.h in Headers */,
 				0472E38117F8A2EC0016A832 /* oxygine_include.h in Headers */,
@@ -889,6 +927,7 @@
 				0472E36117F8A1A80016A832 /* system_data.h in Headers */,
 				0472E36117F8A1A80016A832 /* system_data.h in Headers */,
 				04D6FB4D1851914000A5403A /* ThreadMessages.h in Headers */,
 				04D6FB4D1851914000A5403A /* ThreadMessages.h in Headers */,
 				C3E8707516EBC8EB00052915 /* Node.h in Headers */,
 				C3E8707516EBC8EB00052915 /* Node.h in Headers */,
+				92CE26621A589401003901D6 /* ios.h in Headers */,
 				C3E8707716EBC8EB00052915 /* TextBuilder.h in Headers */,
 				C3E8707716EBC8EB00052915 /* TextBuilder.h in Headers */,
 				C3E8707916EBC8EB00052915 /* TextActor.h in Headers */,
 				C3E8707916EBC8EB00052915 /* TextActor.h in Headers */,
 				C3E8707A16EBC8EB00052915 /* TextStyle.h in Headers */,
 				C3E8707A16EBC8EB00052915 /* TextStyle.h in Headers */,
@@ -914,7 +953,9 @@
 				C38EC27A1709649300568283 /* TreeInspectorPreview.h in Headers */,
 				C38EC27A1709649300568283 /* TreeInspectorPreview.h in Headers */,
 				0472E35D17F8A1A80016A832 /* ShaderProgram.h in Headers */,
 				0472E35D17F8A1A80016A832 /* ShaderProgram.h in Headers */,
 				C3EE215E17BECD7200715678 /* NativeTextureGLES.h in Headers */,
 				C3EE215E17BECD7200715678 /* NativeTextureGLES.h in Headers */,
+				9223E3131A5193E000B2770B /* AsyncTask.h in Headers */,
 				C3EE216017BECD7200715678 /* oxgl.h in Headers */,
 				C3EE216017BECD7200715678 /* oxgl.h in Headers */,
+				9223E31A1A52D6B800B2770B /* WebImage.h in Headers */,
 				C3EE216217BECD7200715678 /* VertexDeclarationGL.h in Headers */,
 				C3EE216217BECD7200715678 /* VertexDeclarationGL.h in Headers */,
 				0472E36217F8A1A80016A832 /* vertex.h in Headers */,
 				0472E36217F8A1A80016A832 /* vertex.h in Headers */,
 				C3EE216417BECD7200715678 /* VideoDriverGL.h in Headers */,
 				C3EE216417BECD7200715678 /* VideoDriverGL.h in Headers */,
@@ -981,6 +1022,7 @@
 				C3E8700416EBC8EB00052915 /* Box9Sprite.cpp in Sources */,
 				C3E8700416EBC8EB00052915 /* Box9Sprite.cpp in Sources */,
 				C3E8700616EBC8EB00052915 /* Button.cpp in Sources */,
 				C3E8700616EBC8EB00052915 /* Button.cpp in Sources */,
 				0472E37717F8A2D30016A832 /* ioapi_mem.c in Sources */,
 				0472E37717F8A2D30016A832 /* ioapi_mem.c in Sources */,
+				9223E3121A5193E000B2770B /* AsyncTask.cpp in Sources */,
 				C3E8700816EBC8EB00052915 /* ClipRectActor.cpp in Sources */,
 				C3E8700816EBC8EB00052915 /* ClipRectActor.cpp in Sources */,
 				C3E8700A16EBC8EB00052915 /* Clock.cpp in Sources */,
 				C3E8700A16EBC8EB00052915 /* Clock.cpp in Sources */,
 				C3E8700E16EBC8EB00052915 /* ColorRectSprite.cpp in Sources */,
 				C3E8700E16EBC8EB00052915 /* ColorRectSprite.cpp in Sources */,
@@ -1011,12 +1053,14 @@
 				0472E37F17F8A2EC0016A832 /* MaskedSprite.cpp in Sources */,
 				0472E37F17F8A2EC0016A832 /* MaskedSprite.cpp in Sources */,
 				04AEC313182BD98D006413A9 /* UberShaderProgram.cpp in Sources */,
 				04AEC313182BD98D006413A9 /* UberShaderProgram.cpp in Sources */,
 				C3E8705316EBC8EB00052915 /* PointerState.cpp in Sources */,
 				C3E8705316EBC8EB00052915 /* PointerState.cpp in Sources */,
+				9223E31C1A530E8A00B2770B /* HttpRequestTask.cpp in Sources */,
 				0472E35717F8A1A80016A832 /* file.cpp in Sources */,
 				0472E35717F8A1A80016A832 /* file.cpp in Sources */,
 				C3E8705516EBC8EB00052915 /* ProgressBar.cpp in Sources */,
 				C3E8705516EBC8EB00052915 /* ProgressBar.cpp in Sources */,
 				923A9E991A1FCBB700A6F08E /* STDRenderer.cpp in Sources */,
 				923A9E991A1FCBB700A6F08E /* STDRenderer.cpp in Sources */,
 				C3E8705816EBC8EB00052915 /* pugixml.cpp in Sources */,
 				C3E8705816EBC8EB00052915 /* pugixml.cpp in Sources */,
 				C3E8705C16EBC8EB00052915 /* ResAnim.cpp in Sources */,
 				C3E8705C16EBC8EB00052915 /* ResAnim.cpp in Sources */,
 				C3E8705E16EBC8EB00052915 /* ResAtlas.cpp in Sources */,
 				C3E8705E16EBC8EB00052915 /* ResAtlas.cpp in Sources */,
+				9223E3191A52D6B800B2770B /* WebImage.cpp in Sources */,
 				C3E8706016EBC8EB00052915 /* ResBuffer.cpp in Sources */,
 				C3E8706016EBC8EB00052915 /* ResBuffer.cpp in Sources */,
 				923A9E971A1FCBB700A6F08E /* MaskedRenderer.cpp in Sources */,
 				923A9E971A1FCBB700A6F08E /* MaskedRenderer.cpp in Sources */,
 				C3E8706216EBC8EB00052915 /* ResFont.cpp in Sources */,
 				C3E8706216EBC8EB00052915 /* ResFont.cpp in Sources */,
@@ -1036,6 +1080,7 @@
 				04AEC30F182BD912006413A9 /* ShaderProgramGL.cpp in Sources */,
 				04AEC30F182BD912006413A9 /* ShaderProgramGL.cpp in Sources */,
 				C3E8708616EBC8EB00052915 /* AtlasTool.cpp in Sources */,
 				C3E8708616EBC8EB00052915 /* AtlasTool.cpp in Sources */,
 				0472E35E17F8A1A80016A832 /* STDFileSystem.cpp in Sources */,
 				0472E35E17F8A1A80016A832 /* STDFileSystem.cpp in Sources */,
+				92CE26631A589401003901D6 /* ios.mm in Sources */,
 				C3E8708816EBC8EB00052915 /* ImageUtils.cpp in Sources */,
 				C3E8708816EBC8EB00052915 /* ImageUtils.cpp in Sources */,
 				C3E8708B16EBC8EB00052915 /* stringUtils.cpp in Sources */,
 				C3E8708B16EBC8EB00052915 /* stringUtils.cpp in Sources */,
 				0472E37917F8A2D30016A832 /* unzip.c in Sources */,
 				0472E37917F8A2D30016A832 /* unzip.c in Sources */,
@@ -1043,6 +1088,7 @@
 				048AD0CB19B1FD74001963EF /* Stage.cpp in Sources */,
 				048AD0CB19B1FD74001963EF /* Stage.cpp in Sources */,
 				C3E8708F16EBC8EB00052915 /* system_alloc.cpp in Sources */,
 				C3E8708F16EBC8EB00052915 /* system_alloc.cpp in Sources */,
 				0472E35917F8A1A80016A832 /* FileSystem.cpp in Sources */,
 				0472E35917F8A1A80016A832 /* FileSystem.cpp in Sources */,
+				9223E30E1A518CC400B2770B /* HttpRequestCocoaTask.mm in Sources */,
 				C3E8709116EBC8EB00052915 /* winnie_alloc.cpp in Sources */,
 				C3E8709116EBC8EB00052915 /* winnie_alloc.cpp in Sources */,
 				048AD0AA197D2444001963EF /* TextField.cpp in Sources */,
 				048AD0AA197D2444001963EF /* TextField.cpp in Sources */,
 				C38EC26F1709649300568283 /* DeveloperMenu.cpp in Sources */,
 				C38EC26F1709649300568283 /* DeveloperMenu.cpp in Sources */,

+ 67 - 7
oxygine/SDL/macosx/oxygine_macosx/oxygine_macosx.xcodeproj/project.pbxproj

@@ -209,6 +209,19 @@
 		923A9E8C1A1FCA3500A6F08E /* STDRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 923A9E8A1A1FCA3500A6F08E /* STDRenderer.h */; };
 		923A9E8C1A1FCA3500A6F08E /* STDRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 923A9E8A1A1FCA3500A6F08E /* STDRenderer.h */; };
 		923A9E8F1A1FCA6600A6F08E /* MaskedRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 923A9E8D1A1FCA6600A6F08E /* MaskedRenderer.cpp */; };
 		923A9E8F1A1FCA6600A6F08E /* MaskedRenderer.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 923A9E8D1A1FCA6600A6F08E /* MaskedRenderer.cpp */; };
 		923A9E901A1FCA6600A6F08E /* MaskedRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 923A9E8E1A1FCA6600A6F08E /* MaskedRenderer.h */; };
 		923A9E901A1FCA6600A6F08E /* MaskedRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 923A9E8E1A1FCA6600A6F08E /* MaskedRenderer.h */; };
+		92AA951E1A5CB260000B50A0 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 92AA951D1A5CB260000B50A0 /* AppKit.framework */; };
+		92CE266B1A58AADB003901D6 /* HttpRequestCocoaTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 92CE26671A58AADB003901D6 /* HttpRequestCocoaTask.h */; };
+		92CE266C1A58AADB003901D6 /* HttpRequestCocoaTask.mm in Sources */ = {isa = PBXBuildFile; fileRef = 92CE26681A58AADB003901D6 /* HttpRequestCocoaTask.mm */; };
+		92CE266D1A58AADB003901D6 /* ios.h in Headers */ = {isa = PBXBuildFile; fileRef = 92CE26691A58AADB003901D6 /* ios.h */; };
+		92CE266E1A58AADB003901D6 /* ios.mm in Sources */ = {isa = PBXBuildFile; fileRef = 92CE266A1A58AADB003901D6 /* ios.mm */; };
+		92CE26791A58ABDC003901D6 /* AsyncTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92CE26711A58ABDC003901D6 /* AsyncTask.cpp */; };
+		92CE267A1A58ABDC003901D6 /* AsyncTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 92CE26721A58ABDC003901D6 /* AsyncTask.h */; };
+		92CE267B1A58ABDC003901D6 /* HttpRequestTask.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92CE26731A58ABDC003901D6 /* HttpRequestTask.cpp */; };
+		92CE267C1A58ABDC003901D6 /* HttpRequestTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 92CE26741A58ABDC003901D6 /* HttpRequestTask.h */; };
+		92CE267D1A58ABDC003901D6 /* KeyEvent.h in Headers */ = {isa = PBXBuildFile; fileRef = 92CE26751A58ABDC003901D6 /* KeyEvent.h */; };
+		92CE267E1A58ABDC003901D6 /* Property.h in Headers */ = {isa = PBXBuildFile; fileRef = 92CE26761A58ABDC003901D6 /* Property.h */; };
+		92CE267F1A58ABDC003901D6 /* WebImage.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 92CE26771A58ABDC003901D6 /* WebImage.cpp */; };
+		92CE26801A58ABDC003901D6 /* WebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 92CE26781A58ABDC003901D6 /* WebImage.h */; };
 /* End PBXBuildFile section */
 /* End PBXBuildFile section */
 
 
 /* Begin PBXFileReference section */
 /* Begin PBXFileReference section */
@@ -422,6 +435,19 @@
 		923A9E8A1A1FCA3500A6F08E /* STDRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = STDRenderer.h; path = ../../../src/STDRenderer.h; sourceTree = "<group>"; };
 		923A9E8A1A1FCA3500A6F08E /* STDRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = STDRenderer.h; path = ../../../src/STDRenderer.h; sourceTree = "<group>"; };
 		923A9E8D1A1FCA6600A6F08E /* MaskedRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MaskedRenderer.cpp; path = ../../../src/MaskedRenderer.cpp; sourceTree = "<group>"; };
 		923A9E8D1A1FCA6600A6F08E /* MaskedRenderer.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = MaskedRenderer.cpp; path = ../../../src/MaskedRenderer.cpp; sourceTree = "<group>"; };
 		923A9E8E1A1FCA6600A6F08E /* MaskedRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MaskedRenderer.h; path = ../../../src/MaskedRenderer.h; sourceTree = "<group>"; };
 		923A9E8E1A1FCA6600A6F08E /* MaskedRenderer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = MaskedRenderer.h; path = ../../../src/MaskedRenderer.h; sourceTree = "<group>"; };
+		92AA951D1A5CB260000B50A0 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
+		92CE26671A58AADB003901D6 /* HttpRequestCocoaTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HttpRequestCocoaTask.h; sourceTree = "<group>"; };
+		92CE26681A58AADB003901D6 /* HttpRequestCocoaTask.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HttpRequestCocoaTask.mm; sourceTree = "<group>"; };
+		92CE26691A58AADB003901D6 /* ios.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ios.h; sourceTree = "<group>"; };
+		92CE266A1A58AADB003901D6 /* ios.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ios.mm; sourceTree = "<group>"; };
+		92CE26711A58ABDC003901D6 /* AsyncTask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = AsyncTask.cpp; path = ../../../src/AsyncTask.cpp; sourceTree = "<group>"; };
+		92CE26721A58ABDC003901D6 /* AsyncTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = AsyncTask.h; path = ../../../src/AsyncTask.h; sourceTree = "<group>"; };
+		92CE26731A58ABDC003901D6 /* HttpRequestTask.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = HttpRequestTask.cpp; path = ../../../src/HttpRequestTask.cpp; sourceTree = "<group>"; };
+		92CE26741A58ABDC003901D6 /* HttpRequestTask.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = HttpRequestTask.h; path = ../../../src/HttpRequestTask.h; sourceTree = "<group>"; };
+		92CE26751A58ABDC003901D6 /* KeyEvent.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = KeyEvent.h; path = ../../../src/KeyEvent.h; sourceTree = "<group>"; };
+		92CE26761A58ABDC003901D6 /* Property.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = Property.h; path = ../../../src/Property.h; sourceTree = "<group>"; };
+		92CE26771A58ABDC003901D6 /* WebImage.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = WebImage.cpp; path = ../../../src/WebImage.cpp; sourceTree = "<group>"; };
+		92CE26781A58ABDC003901D6 /* WebImage.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = WebImage.h; path = ../../../src/WebImage.h; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 /* End PBXFileReference section */
 
 
 /* Begin PBXFrameworksBuildPhase section */
 /* Begin PBXFrameworksBuildPhase section */
@@ -429,6 +455,7 @@
 			isa = PBXFrameworksBuildPhase;
 			isa = PBXFrameworksBuildPhase;
 			buildActionMask = 2147483647;
 			buildActionMask = 2147483647;
 			files = (
 			files = (
+				92AA951E1A5CB260000B50A0 /* AppKit.framework in Frameworks */,
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
 		};
 		};
@@ -438,6 +465,7 @@
 		049B52B21871EDE900EF3C66 = {
 		049B52B21871EDE900EF3C66 = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				92AA951D1A5CB260000B50A0 /* AppKit.framework */,
 				049B55901871F21000EF3C66 /* src */,
 				049B55901871F21000EF3C66 /* src */,
 				049B52BC1871EDE900EF3C66 /* Products */,
 				049B52BC1871EDE900EF3C66 /* Products */,
 			);
 			);
@@ -454,6 +482,14 @@
 		049B55901871F21000EF3C66 /* src */ = {
 		049B55901871F21000EF3C66 /* src */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				92CE26711A58ABDC003901D6 /* AsyncTask.cpp */,
+				92CE26721A58ABDC003901D6 /* AsyncTask.h */,
+				92CE26731A58ABDC003901D6 /* HttpRequestTask.cpp */,
+				92CE26741A58ABDC003901D6 /* HttpRequestTask.h */,
+				92CE26751A58ABDC003901D6 /* KeyEvent.h */,
+				92CE26761A58ABDC003901D6 /* Property.h */,
+				92CE26771A58ABDC003901D6 /* WebImage.cpp */,
+				92CE26781A58ABDC003901D6 /* WebImage.h */,
 				923663511A47561500EB65B3 /* Serializable.cpp */,
 				923663511A47561500EB65B3 /* Serializable.cpp */,
 				923663521A47561500EB65B3 /* Serializable.h */,
 				923663521A47561500EB65B3 /* Serializable.h */,
 				923663531A47561500EB65B3 /* TouchEvent.h */,
 				923663531A47561500EB65B3 /* TouchEvent.h */,
@@ -554,6 +590,7 @@
 		049B55A41871F21D00EF3C66 /* core */ = {
 		049B55A41871F21D00EF3C66 /* core */ = {
 			isa = PBXGroup;
 			isa = PBXGroup;
 			children = (
 			children = (
+				92CE26661A58AADB003901D6 /* ios */,
 				049B55A61871F21D00EF3C66 /* coroutines.cpp */,
 				049B55A61871F21D00EF3C66 /* coroutines.cpp */,
 				049B55A71871F21D00EF3C66 /* coroutines.h */,
 				049B55A71871F21D00EF3C66 /* coroutines.h */,
 				049B55A81871F21D00EF3C66 /* file.cpp */,
 				049B55A81871F21D00EF3C66 /* file.cpp */,
@@ -765,6 +802,17 @@
 			path = ../../../src/winnie_alloc;
 			path = ../../../src/winnie_alloc;
 			sourceTree = "<group>";
 			sourceTree = "<group>";
 		};
 		};
+		92CE26661A58AADB003901D6 /* ios */ = {
+			isa = PBXGroup;
+			children = (
+				92CE26671A58AADB003901D6 /* HttpRequestCocoaTask.h */,
+				92CE26681A58AADB003901D6 /* HttpRequestCocoaTask.mm */,
+				92CE26691A58AADB003901D6 /* ios.h */,
+				92CE266A1A58AADB003901D6 /* ios.mm */,
+			);
+			path = ios;
+			sourceTree = "<group>";
+		};
 /* End PBXGroup section */
 /* End PBXGroup section */
 
 
 /* Begin PBXHeadersBuildPhase section */
 /* Begin PBXHeadersBuildPhase section */
@@ -815,12 +863,14 @@
 				049B569B1871F21E00EF3C66 /* NativeTexture.h in Headers */,
 				049B569B1871F21E00EF3C66 /* NativeTexture.h in Headers */,
 				049B56F61871F21E00EF3C66 /* ResAnim.h in Headers */,
 				049B56F61871F21E00EF3C66 /* ResAnim.h in Headers */,
 				049B570C1871F21E00EF3C66 /* Aligner.h in Headers */,
 				049B570C1871F21E00EF3C66 /* Aligner.h in Headers */,
+				92CE266D1A58AADB003901D6 /* ios.h in Headers */,
 				049B56F21871F21E00EF3C66 /* RenderState.h in Headers */,
 				049B56F21871F21E00EF3C66 /* RenderState.h in Headers */,
 				049B56EE1871F21E00EF3C66 /* ProgressBar.h in Headers */,
 				049B56EE1871F21E00EF3C66 /* ProgressBar.h in Headers */,
 				049B56CC1871F21E00EF3C66 /* Event.h in Headers */,
 				049B56CC1871F21E00EF3C66 /* Event.h in Headers */,
 				049B570E1871F21E00EF3C66 /* Node.h in Headers */,
 				049B570E1871F21E00EF3C66 /* Node.h in Headers */,
 				049B57161871F21E00EF3C66 /* UpdateState.h in Headers */,
 				049B57161871F21E00EF3C66 /* UpdateState.h in Headers */,
 				049B57041871F21E00EF3C66 /* ResStarlingAtlas.h in Headers */,
 				049B57041871F21E00EF3C66 /* ResStarlingAtlas.h in Headers */,
+				92CE266B1A58AADB003901D6 /* HttpRequestCocoaTask.h in Headers */,
 				923A9E901A1FCA6600A6F08E /* MaskedRenderer.h in Headers */,
 				923A9E901A1FCA6600A6F08E /* MaskedRenderer.h in Headers */,
 				049B56DB1871F21E00EF3C66 /* ScalarMath.h in Headers */,
 				049B56DB1871F21E00EF3C66 /* ScalarMath.h in Headers */,
 				049B56A01871F21E00EF3C66 /* oxygine.h in Headers */,
 				049B56A01871F21E00EF3C66 /* oxygine.h in Headers */,
@@ -828,6 +878,7 @@
 				049B56C51871F21E00EF3C66 /* TreeInspectorLine.h in Headers */,
 				049B56C51871F21E00EF3C66 /* TreeInspectorLine.h in Headers */,
 				049B56E41871F21E00EF3C66 /* ioapi_mem.h in Headers */,
 				049B56E41871F21E00EF3C66 /* ioapi_mem.h in Headers */,
 				049B56D51871F21E00EF3C66 /* MaskedSprite.h in Headers */,
 				049B56D51871F21E00EF3C66 /* MaskedSprite.h in Headers */,
+				92CE267A1A58ABDC003901D6 /* AsyncTask.h in Headers */,
 				049B570A1871F21E00EF3C66 /* Sprite.h in Headers */,
 				049B570A1871F21E00EF3C66 /* Sprite.h in Headers */,
 				049B56E61871F21E00EF3C66 /* unzip.h in Headers */,
 				049B56E61871F21E00EF3C66 /* unzip.h in Headers */,
 				049B56781871F21E00EF3C66 /* coroutines.h in Headers */,
 				049B56781871F21E00EF3C66 /* coroutines.h in Headers */,
@@ -848,8 +899,10 @@
 				049B56871871F21E00EF3C66 /* VideoDriverGL.h in Headers */,
 				049B56871871F21E00EF3C66 /* VideoDriverGL.h in Headers */,
 				049B56D71871F21E00EF3C66 /* AffineTransform.h in Headers */,
 				049B56D71871F21E00EF3C66 /* AffineTransform.h in Headers */,
 				049B56731871F21E00EF3C66 /* closure.h in Headers */,
 				049B56731871F21E00EF3C66 /* closure.h in Headers */,
+				92CE267D1A58ABDC003901D6 /* KeyEvent.h in Headers */,
 				049B569D1871F21E00EF3C66 /* Object.h in Headers */,
 				049B569D1871F21E00EF3C66 /* Object.h in Headers */,
 				049B56DC1871F21E00EF3C66 /* vector2.h in Headers */,
 				049B56DC1871F21E00EF3C66 /* vector2.h in Headers */,
+				92CE267C1A58ABDC003901D6 /* HttpRequestTask.h in Headers */,
 				049B57081871F21E00EF3C66 /* SlidingActor.h in Headers */,
 				049B57081871F21E00EF3C66 /* SlidingActor.h in Headers */,
 				049B57101871F21E00EF3C66 /* TextBuilder.h in Headers */,
 				049B57101871F21E00EF3C66 /* TextBuilder.h in Headers */,
 				049B56C11871F21E00EF3C66 /* TexturesInspector.h in Headers */,
 				049B56C11871F21E00EF3C66 /* TexturesInspector.h in Headers */,
@@ -868,6 +921,7 @@
 				049B568D1871F21E00EF3C66 /* ImageData.h in Headers */,
 				049B568D1871F21E00EF3C66 /* ImageData.h in Headers */,
 				049B57211871F21E00EF3C66 /* system_alloc.h in Headers */,
 				049B57211871F21E00EF3C66 /* system_alloc.h in Headers */,
 				049B566C1871F21E00EF3C66 /* Box9Sprite.h in Headers */,
 				049B566C1871F21E00EF3C66 /* Box9Sprite.h in Headers */,
+				92CE26801A58ABDC003901D6 /* WebImage.h in Headers */,
 				049B56FC1871F21E00EF3C66 /* ResFont.h in Headers */,
 				049B56FC1871F21E00EF3C66 /* ResFont.h in Headers */,
 				049B567F1871F21E00EF3C66 /* NativeTextureGLES.h in Headers */,
 				049B567F1871F21E00EF3C66 /* NativeTextureGLES.h in Headers */,
 				049B56721871F21E00EF3C66 /* Clock.h in Headers */,
 				049B56721871F21E00EF3C66 /* Clock.h in Headers */,
@@ -888,6 +942,7 @@
 				049B571D1871F21E00EF3C66 /* stringUtils.h in Headers */,
 				049B571D1871F21E00EF3C66 /* stringUtils.h in Headers */,
 				049B56AF1871F21E00EF3C66 /* system_data.h in Headers */,
 				049B56AF1871F21E00EF3C66 /* system_data.h in Headers */,
 				04B3A72018A6594D004C67E3 /* InputText.h in Headers */,
 				04B3A72018A6594D004C67E3 /* InputText.h in Headers */,
+				92CE267E1A58ABDC003901D6 /* Property.h in Headers */,
 				049B571B1871F21E00EF3C66 /* intrusive_list.h in Headers */,
 				049B571B1871F21E00EF3C66 /* intrusive_list.h in Headers */,
 			);
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -918,7 +973,7 @@
 		049B52B31871EDE900EF3C66 /* Project object */ = {
 		049B52B31871EDE900EF3C66 /* Project object */ = {
 			isa = PBXProject;
 			isa = PBXProject;
 			attributes = {
 			attributes = {
-				LastUpgradeCheck = 0510;
+				LastUpgradeCheck = 0610;
 				ORGANIZATIONNAME = oxygine;
 				ORGANIZATIONNAME = oxygine;
 			};
 			};
 			buildConfigurationList = 049B52B61871EDE900EF3C66 /* Build configuration list for PBXProject "oxygine_macosx" */;
 			buildConfigurationList = 049B52B61871EDE900EF3C66 /* Build configuration list for PBXProject "oxygine_macosx" */;
@@ -950,6 +1005,7 @@
 				049B56BC1871F21E00EF3C66 /* DebugActor.cpp in Sources */,
 				049B56BC1871F21E00EF3C66 /* DebugActor.cpp in Sources */,
 				049B56E71871F21E00EF3C66 /* Multithreading.cpp in Sources */,
 				049B56E71871F21E00EF3C66 /* Multithreading.cpp in Sources */,
 				049B570B1871F21E00EF3C66 /* Aligner.cpp in Sources */,
 				049B570B1871F21E00EF3C66 /* Aligner.cpp in Sources */,
+				92CE26791A58ABDC003901D6 /* AsyncTask.cpp in Sources */,
 				049B570D1871F21E00EF3C66 /* Node.cpp in Sources */,
 				049B570D1871F21E00EF3C66 /* Node.cpp in Sources */,
 				049B57031871F21E00EF3C66 /* ResStarlingAtlas.cpp in Sources */,
 				049B57031871F21E00EF3C66 /* ResStarlingAtlas.cpp in Sources */,
 				049B568C1871F21E00EF3C66 /* ImageData.cpp in Sources */,
 				049B568C1871F21E00EF3C66 /* ImageData.cpp in Sources */,
@@ -968,6 +1024,7 @@
 				049B56C61871F21E00EF3C66 /* TreeInspectorPage.cpp in Sources */,
 				049B56C61871F21E00EF3C66 /* TreeInspectorPage.cpp in Sources */,
 				923663581A47561500EB65B3 /* Serializable.cpp in Sources */,
 				923663581A47561500EB65B3 /* Serializable.cpp in Sources */,
 				049B56801871F21E00EF3C66 /* oxgl.cpp in Sources */,
 				049B56801871F21E00EF3C66 /* oxgl.cpp in Sources */,
+				92CE267F1A58ABDC003901D6 /* WebImage.cpp in Sources */,
 				049B566F1871F21E00EF3C66 /* ClipRectActor.cpp in Sources */,
 				049B566F1871F21E00EF3C66 /* ClipRectActor.cpp in Sources */,
 				049B57201871F21E00EF3C66 /* system_alloc.cpp in Sources */,
 				049B57201871F21E00EF3C66 /* system_alloc.cpp in Sources */,
 				049B56FD1871F21E00EF3C66 /* ResFontBM.cpp in Sources */,
 				049B56FD1871F21E00EF3C66 /* ResFontBM.cpp in Sources */,
@@ -993,10 +1050,12 @@
 				049B56691871F21E00EF3C66 /* blocking.cpp in Sources */,
 				049B56691871F21E00EF3C66 /* blocking.cpp in Sources */,
 				049B56AC1871F21E00EF3C66 /* STDFileSystem.cpp in Sources */,
 				049B56AC1871F21E00EF3C66 /* STDFileSystem.cpp in Sources */,
 				049B56C21871F21E00EF3C66 /* TreeInspector.cpp in Sources */,
 				049B56C21871F21E00EF3C66 /* TreeInspector.cpp in Sources */,
+				92CE266C1A58AADB003901D6 /* HttpRequestCocoaTask.mm in Sources */,
 				049B56D41871F21E00EF3C66 /* MaskedSprite.cpp in Sources */,
 				049B56D41871F21E00EF3C66 /* MaskedSprite.cpp in Sources */,
 				049B56F31871F21E00EF3C66 /* CreateResourceContext.cpp in Sources */,
 				049B56F31871F21E00EF3C66 /* CreateResourceContext.cpp in Sources */,
 				049B567C1871F21E00EF3C66 /* FileSystem.cpp in Sources */,
 				049B567C1871F21E00EF3C66 /* FileSystem.cpp in Sources */,
 				049B571E1871F21E00EF3C66 /* VisualStyle.cpp in Sources */,
 				049B571E1871F21E00EF3C66 /* VisualStyle.cpp in Sources */,
+				92CE267B1A58ABDC003901D6 /* HttpRequestTask.cpp in Sources */,
 				049B57071871F21E00EF3C66 /* SlidingActor.cpp in Sources */,
 				049B57071871F21E00EF3C66 /* SlidingActor.cpp in Sources */,
 				9236635B1A47561500EB65B3 /* Tween.cpp in Sources */,
 				9236635B1A47561500EB65B3 /* Tween.cpp in Sources */,
 				9236635D1A47561500EB65B3 /* TweenQueue.cpp in Sources */,
 				9236635D1A47561500EB65B3 /* TweenQueue.cpp in Sources */,
@@ -1014,6 +1073,7 @@
 				049B569A1871F21E00EF3C66 /* NativeTexture.cpp in Sources */,
 				049B569A1871F21E00EF3C66 /* NativeTexture.cpp in Sources */,
 				049B56FF1871F21E00EF3C66 /* Resource.cpp in Sources */,
 				049B56FF1871F21E00EF3C66 /* Resource.cpp in Sources */,
 				049B56D61871F21E00EF3C66 /* AffineTransform.cpp in Sources */,
 				049B56D61871F21E00EF3C66 /* AffineTransform.cpp in Sources */,
+				92CE266E1A58AADB003901D6 /* ios.mm in Sources */,
 				92214D5E19F149BC00A4459A /* Polygon.cpp in Sources */,
 				92214D5E19F149BC00A4459A /* Polygon.cpp in Sources */,
 				049B568A1871F21E00EF3C66 /* VideoDriverGLES20.cpp in Sources */,
 				049B568A1871F21E00EF3C66 /* VideoDriverGLES20.cpp in Sources */,
 				04670867192795E700D71824 /* Serialize.cpp in Sources */,
 				04670867192795E700D71824 /* Serialize.cpp in Sources */,
@@ -1075,7 +1135,7 @@
 				SDL = ../../../../../SDL/;
 				SDL = ../../../../../SDL/;
 				THIRD_PARTY = ../../../third_party/macosx/;
 				THIRD_PARTY = ../../../third_party/macosx/;
 				USER_HEADER_SEARCH_PATHS = "../../../greenlets/src $(SDL)/include/ ../../../src $(THIRD_PARTY)/libpng $(THIRD_PARTY)/libjpeg";
 				USER_HEADER_SEARCH_PATHS = "../../../greenlets/src $(SDL)/include/ ../../../src $(THIRD_PARTY)/libpng $(THIRD_PARTY)/libjpeg";
-				VALID_ARCHS = i386;
+				VALID_ARCHS = x86_64;
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
@@ -1117,27 +1177,27 @@
 				SDL = ../../../../../SDL/;
 				SDL = ../../../../../SDL/;
 				THIRD_PARTY = ../../../third_party/macosx/;
 				THIRD_PARTY = ../../../third_party/macosx/;
 				USER_HEADER_SEARCH_PATHS = "../../../greenlets/src $(SDL)/include/ ../../../src $(THIRD_PARTY)/libpng $(THIRD_PARTY)/libjpeg";
 				USER_HEADER_SEARCH_PATHS = "../../../greenlets/src $(SDL)/include/ ../../../src $(THIRD_PARTY)/libpng $(THIRD_PARTY)/libjpeg";
-				VALID_ARCHS = i386;
+				VALID_ARCHS = x86_64;
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};
 		049B52C01871EDE900EF3C66 /* Debug */ = {
 		049B52C01871EDE900EF3C66 /* Debug */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+				COMBINE_HIDPI_IMAGES = YES;
 				EXECUTABLE_PREFIX = lib;
 				EXECUTABLE_PREFIX = lib;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = x86_64;
 			};
 			};
 			name = Debug;
 			name = Debug;
 		};
 		};
 		049B52C11871EDE900EF3C66 /* Release */ = {
 		049B52C11871EDE900EF3C66 /* Release */ = {
 			isa = XCBuildConfiguration;
 			isa = XCBuildConfiguration;
 			buildSettings = {
 			buildSettings = {
-				ARCHS = "$(ARCHS_STANDARD_32_64_BIT)";
+				COMBINE_HIDPI_IMAGES = YES;
 				EXECUTABLE_PREFIX = lib;
 				EXECUTABLE_PREFIX = lib;
 				PRODUCT_NAME = "$(TARGET_NAME)";
 				PRODUCT_NAME = "$(TARGET_NAME)";
-				VALID_ARCHS = "i386 x86_64";
+				VALID_ARCHS = x86_64;
 			};
 			};
 			name = Release;
 			name = Release;
 		};
 		};

+ 181 - 183
oxygine/SDL/qt/oxygine-framework/oxygine-framework.pro

@@ -9,240 +9,238 @@ QT       -= core gui
 TARGET = oxygine-framework
 TARGET = oxygine-framework
 TEMPLATE = lib
 TEMPLATE = lib
 CONFIG += staticlib
 CONFIG += staticlib
+CONFIG += c++11
 
 
 QMAKE_CXXFLAGS_WARN_OFF -= -Wunused-parameter
 QMAKE_CXXFLAGS_WARN_OFF -= -Wunused-parameter
 
 
 ROOT = ../../../../
 ROOT = ../../../../
 SRC = ../../../src
 SRC = ../../../src
 SOURCES += \
 SOURCES += \
-    $$SRC/Actor.cpp \ 
-    $$SRC/AnimationFrame.cpp \ 
-    $$SRC/blocking.cpp \ 
-    $$SRC/Box9Sprite.cpp \ 
-    $$SRC/Button.cpp \ 
-    $$SRC/ClipRectActor.cpp \ 
-    $$SRC/Clock.cpp \ 
-    $$SRC/ColorRectSprite.cpp \ 
-    $$SRC/DebugActor.cpp \ 
-    $$SRC/Draggable.cpp \ 
-    $$SRC/EventDispatcher.cpp \ 
-    $$SRC/Font.cpp \ 
-    $$SRC/Input.cpp \ 
-    $$SRC/InputText.cpp \ 
-    $$SRC/MaskedSprite.cpp \ 
-    $$SRC/MemoryTexture.cpp \ 
-    $$SRC/Multithreading.cpp \ 
-    $$SRC/PointerState.cpp \ 
-    $$SRC/ProgressBar.cpp \ 
-    $$SRC/RootActor.cpp \ 
-    $$SRC/SlidingActor.cpp \ 
-    $$SRC/Sprite.cpp \ 
-    $$SRC/TextActor.cpp \ 
-    $$SRC/Tweener.cpp \ 
-    $$SRC/VisualStyle.cpp \ 
-    $$SRC/Serialize.cpp  
+	$$SRC/Actor.cpp \
+	$$SRC/AnimationFrame.cpp \
+	$$SRC/blocking.cpp \
+	$$SRC/Box9Sprite.cpp \
+	$$SRC/Button.cpp \
+	$$SRC/ClipRectActor.cpp \
+	$$SRC/Clock.cpp \
+	$$SRC/ColorRectSprite.cpp \
+	$$SRC/DebugActor.cpp \
+	$$SRC/Draggable.cpp \
+	$$SRC/EventDispatcher.cpp \
+	$$SRC/Font.cpp \
+	$$SRC/Input.cpp \
+	$$SRC/InputText.cpp \
+	$$SRC/MaskedSprite.cpp \
+	$$SRC/MemoryTexture.cpp \
+	$$SRC/Multithreading.cpp \
+	$$SRC/PointerState.cpp \
+	$$SRC/ProgressBar.cpp \
+	$$SRC/SlidingActor.cpp \
+	$$SRC/Sprite.cpp \
+	$$SRC/VisualStyle.cpp \
+	$$SRC/Serialize.cpp
 
 
 HEADERS +=  \
 HEADERS +=  \
-    $$SRC/Actor.h \ 
-    $$SRC/AnimationFrame.h \ 
-    $$SRC/blocking.h \ 
-    $$SRC/Box9Sprite.h \ 
-    $$SRC/Button.h \ 
-    $$SRC/ClipRectActor.h \ 
-    $$SRC/Clock.h \ 
-    $$SRC/ColorRectSprite.h \ 
-    $$SRC/DebugActor.h \ 
-    $$SRC/Draggable.h \ 
-    $$SRC/Event.h \ 
-    $$SRC/EventDispatcher.h \ 
-    $$SRC/Font.h \ 
-    $$SRC/initActor.h \ 
-    $$SRC/Input.h \ 
-    $$SRC/InputText.h \ 
-    $$SRC/MaskedSprite.h \ 
-    $$SRC/MemoryTexture.h \ 
-    $$SRC/Multithreading.h \ 
-    $$SRC/oxygine-framework.h \ 
-    $$SRC/oxygine_include.h \ 
-    $$SRC/PointerState.h \ 
-    $$SRC/ProgressBar.h \ 
-    $$SRC/RenderState.h \ 
-    $$SRC/RootActor.h \ 
-    $$SRC/SlidingActor.h \ 
-    $$SRC/Sprite.h \ 
-    $$SRC/TextActor.h \ 
-    $$SRC/TextStyle.h \ 
-    $$SRC/Tweener.h \ 
-    $$SRC/UpdateState.h \ 
-    $$SRC/VisualStyle.h \ 
-    $$SRC/Serialize.h
-
+	$$SRC/Actor.h \
+	$$SRC/AnimationFrame.h \
+	$$SRC/blocking.h \
+	$$SRC/Box9Sprite.h \
+	$$SRC/Button.h \
+	$$SRC/ClipRectActor.h \
+	$$SRC/Clock.h \
+	$$SRC/ColorRectSprite.h \
+	$$SRC/DebugActor.h \
+	$$SRC/Draggable.h \
+	$$SRC/Event.h \
+	$$SRC/EventDispatcher.h \
+	$$SRC/Font.h \
+	$$SRC/initActor.h \
+	$$SRC/Input.h \
+	$$SRC/InputText.h \
+	$$SRC/MaskedSprite.h \
+	$$SRC/MemoryTexture.h \
+	$$SRC/Multithreading.h \
+	$$SRC/oxygine-framework.h \
+	$$SRC/oxygine_include.h \
+	$$SRC/PointerState.h \
+	$$SRC/ProgressBar.h \
+	$$SRC/RenderState.h \
+	$$SRC/RootActor.h \
+	$$SRC/SlidingActor.h \
+	$$SRC/Sprite.h \
+	$$SRC/TextActor.h \
+	$$SRC/TextStyle.h \
+	$$SRC/Tweener.h \
+	$$SRC/UpdateState.h \
+	$$SRC/VisualStyle.h \
+	$$SRC/Serialize.h
+
+linux:INCLUDEPATH += /usr/include/SDL2
+INCLUDEPATH += $$SRC/../greenlets/src/
 
 
 SOURCES += \
 SOURCES += \
-    $$SRC/core/coroutines.cpp \ 
-    $$SRC/core/file.cpp \ 
-    $$SRC/core/FileSystem.cpp \ 
-    $$SRC/core/ImageData.cpp \ 
-    $$SRC/core/ImageDataOperations.cpp \ 
-    $$SRC/core/log.cpp \ 
-    $$SRC/core/Mem2Native.cpp \ 
-    $$SRC/core/memory_pool.cpp \ 
-    $$SRC/core/Mutex.cpp \ 
-    $$SRC/core/NativeTexture.cpp \ 
-    $$SRC/core/Object.cpp \ 
-    $$SRC/core/oxygine.cpp \ 
-    $$SRC/core/Renderer.cpp \ 
-    $$SRC/core/Restorable.cpp \ 
-    $$SRC/core/STDFileSystem.cpp \ 
-    $$SRC/core/system_data.cpp \ 
-    $$SRC/core/Texture.cpp \ 
-    $$SRC/core/ThreadMessages.cpp \ 
-    $$SRC/core/UberShaderProgram.cpp \ 
-    $$SRC/core/VideoDriver.cpp \ 
-    $$SRC/core/ZipFileSystem.cpp \ 
-
-
+	$$SRC/../greenlets/src/greenlet.c \
+	$$SRC/core/coroutines.cpp \
+	$$SRC/core/file.cpp \
+	$$SRC/core/FileSystem.cpp \
+	$$SRC/core/ImageData.cpp \
+	$$SRC/core/ImageDataOperations.cpp \
+	$$SRC/core/log.cpp \
+	$$SRC/core/Mem2Native.cpp \
+	$$SRC/core/Mutex.cpp \
+	$$SRC/core/NativeTexture.cpp \
+	$$SRC/core/Object.cpp \
+	$$SRC/core/oxygine.cpp \
+	$$SRC/core/Renderer.cpp \
+	$$SRC/core/Restorable.cpp \
+	$$SRC/core/STDFileSystem.cpp \
+	$$SRC/core/system_data.cpp \
+	$$SRC/core/Texture.cpp \
+	$$SRC/core/ThreadMessages.cpp \
+	$$SRC/core/UberShaderProgram.cpp \
+	$$SRC/core/VideoDriver.cpp \
+	$$SRC/core/ZipFileSystem.cpp \
 
 
 HEADERS += \
 HEADERS += \
-$$SRC/core/coroutines.h \ 
-    $$SRC/core/file.h \ 
-    $$SRC/core/FileSystem.h \ 
-    $$SRC/core/files_io.h \ 
-    $$SRC/core/ImageData.h \ 
-    $$SRC/core/ImageDataOperations.h \ 
-    $$SRC/core/intrusive_ptr.h \ 
-    $$SRC/core/log.h \ 
-    $$SRC/core/logging.h \ 
-    $$SRC/core/Mem2Native.h \ 
-    $$SRC/core/memory_pool.h \ 
-    $$SRC/core/Mutex.h \ 
-    $$SRC/core/NativeTexture.h \ 
-    $$SRC/core/Object.h \ 
-    $$SRC/core/oxygine.h \ 
-    $$SRC/core/ox_debug.h \ 
-    $$SRC/core/pixel.h \ 
-    $$SRC/core/ref_counter.h \ 
-    $$SRC/core/Renderer.h \ 
-    $$SRC/core/Restorable.h \ 
-    $$SRC/core/ShaderProgram.h \ 
-    $$SRC/core/STDFileSystem.h \ 
-    $$SRC/core/system_data.h \ 
-    $$SRC/core/Texture.h \ 
-    $$SRC/core/ThreadMessages.h \ 
-    $$SRC/core/UberShaderProgram.h \ 
-    $$SRC/core/vertex.h \ 
-    $$SRC/core/VertexDeclaration.h \ 
-    $$SRC/core/VideoDriver.h \ 
-    $$SRC/core/ZipFileSystem.h \ 
+$$SRC/core/coroutines.h \
+	$$SRC/core/file.h \
+	$$SRC/core/FileSystem.h \
+	$$SRC/core/files_io.h \
+	$$SRC/core/ImageData.h \
+	$$SRC/core/ImageDataOperations.h \
+	$$SRC/core/intrusive_ptr.h \
+	$$SRC/core/log.h \
+	$$SRC/core/logging.h \
+	$$SRC/core/Mem2Native.h \
+	$$SRC/core/memory_pool.h \
+	$$SRC/core/Mutex.h \
+	$$SRC/core/NativeTexture.h \
+	$$SRC/core/Object.h \
+	$$SRC/core/oxygine.h \
+	$$SRC/core/ox_debug.h \
+	$$SRC/core/pixel.h \
+	$$SRC/core/ref_counter.h \
+	$$SRC/core/Renderer.h \
+	$$SRC/core/Restorable.h \
+	$$SRC/core/ShaderProgram.h \
+	$$SRC/core/STDFileSystem.h \
+	$$SRC/core/system_data.h \
+	$$SRC/core/Texture.h \
+	$$SRC/core/ThreadMessages.h \
+	$$SRC/core/UberShaderProgram.h \
+	$$SRC/core/vertex.h \
+	$$SRC/core/VertexDeclaration.h \
+	$$SRC/core/VideoDriver.h \
+	$$SRC/core/ZipFileSystem.h \
 
 
 
 
 SOURCES += \
 SOURCES += \
-    $$SRC/dev_tools/DeveloperMenu.cpp \ 
-    $$SRC/dev_tools/TexturesInspector.cpp \ 
-    $$SRC/dev_tools/TreeInspector.cpp \ 
-    $$SRC/dev_tools/TreeInspectorLine.cpp \ 
-    $$SRC/dev_tools/TreeInspectorPage.cpp \ 
-    $$SRC/dev_tools/TreeInspectorPreview.cpp \ 
+	$$SRC/dev_tools/DeveloperMenu.cpp \
+	$$SRC/dev_tools/TexturesInspector.cpp \
+	$$SRC/dev_tools/TreeInspector.cpp \
+	$$SRC/dev_tools/TreeInspectorLine.cpp \
+	$$SRC/dev_tools/TreeInspectorPage.cpp \
+	$$SRC/dev_tools/TreeInspectorPreview.cpp \
 
 
 
 
 HEADERS +=  \
 HEADERS +=  \
-    $$SRC/dev_tools/DeveloperMenu.h \ 
-    $$SRC/dev_tools/TexturesInspector.h \ 
-    $$SRC/dev_tools/TreeInspector.h \ 
-    $$SRC/dev_tools/TreeInspectorLine.h \ 
-    $$SRC/dev_tools/TreeInspectorPage.h \ 
-    $$SRC/dev_tools/TreeInspectorPreview.h \ 
+	$$SRC/dev_tools/DeveloperMenu.h \
+	$$SRC/dev_tools/TexturesInspector.h \
+	$$SRC/dev_tools/TreeInspector.h \
+	$$SRC/dev_tools/TreeInspectorLine.h \
+	$$SRC/dev_tools/TreeInspectorPage.h \
+	$$SRC/dev_tools/TreeInspectorPreview.h \
 
 
 
 
 SOURCES += \
 SOURCES += \
-    $$SRC/minizip/ioapi.c \ 
-    $$SRC/minizip/ioapi_mem.c \ 
-    $$SRC/minizip/unzip.c \ 
+	$$SRC/minizip/ioapi.c \
+	$$SRC/minizip/ioapi_mem.c \
+	$$SRC/minizip/unzip.c \
 
 
 HEADERS +=  \
 HEADERS +=  \
-    $$SRC/minizip/ioapi.h \ 
-    $$SRC/minizip/ioapi_mem.h \ 
-    $$SRC/minizip/unzip.h \ 
+	$$SRC/minizip/ioapi.h \
+	$$SRC/minizip/ioapi_mem.h \
+	$$SRC/minizip/unzip.h \
 
 
 SOURCES += \
 SOURCES += \
-    $$SRC/pugixml/pugixml.cpp \ 
+	$$SRC/pugixml/pugixml.cpp \
 
 
 HEADERS +=  \
 HEADERS +=  \
-    $$SRC/pugixml/pugiconfig.hpp \ 
-    $$SRC/pugixml/pugixml.hpp \ 
+	$$SRC/pugixml/pugiconfig.hpp \
+	$$SRC/pugixml/pugixml.hpp \
 
 
 SOURCES += \
 SOURCES += \
-    $$SRC/res/CreateResourceContext.cpp \ 
-    $$SRC/res/ResAnim.cpp \ 
-    $$SRC/res/ResAtlas.cpp \ 
-    $$SRC/res/ResBuffer.cpp \ 
-    $$SRC/res/ResFont.cpp \ 
-    $$SRC/res/ResFontBM.cpp \ 
-    $$SRC/res/Resource.cpp \ 
-    $$SRC/res/Resources.cpp \ 
-    $$SRC/res/ResStarlingAtlas.cpp \ 
+	$$SRC/res/CreateResourceContext.cpp \
+	$$SRC/res/ResAnim.cpp \
+	$$SRC/res/ResAtlas.cpp \
+	$$SRC/res/ResBuffer.cpp \
+	$$SRC/res/ResFont.cpp \
+	$$SRC/res/ResFontBM.cpp \
+	$$SRC/res/Resource.cpp \
+	$$SRC/res/Resources.cpp \
+	$$SRC/res/ResStarlingAtlas.cpp \
 
 
 HEADERS += \
 HEADERS += \
-    $$SRC/res/CreateResourceContext.h \ 
-    $$SRC/res/ResAnim.h \ 
-    $$SRC/res/ResAtlas.h \ 
-    $$SRC/res/ResBuffer.h \ 
-    $$SRC/res/ResFont.h \ 
-    $$SRC/res/ResFontBM.h \ 
-    $$SRC/res/Resource.h \ 
-    $$SRC/res/Resources.h \ 
-    $$SRC/res/ResStarlingAtlas.h \ 
+	$$SRC/res/CreateResourceContext.h \
+	$$SRC/res/ResAnim.h \
+	$$SRC/res/ResAtlas.h \
+	$$SRC/res/ResBuffer.h \
+	$$SRC/res/ResFont.h \
+	$$SRC/res/ResFontBM.h \
+	$$SRC/res/Resource.h \
+	$$SRC/res/Resources.h \
+	$$SRC/res/ResStarlingAtlas.h \
 
 
 SOURCES += \
 SOURCES += \
-    $$SRC/text_utils/Aligner.cpp \ 
-    $$SRC/text_utils/Node.cpp \ 
-    $$SRC/text_utils/TextBuilder.cpp \ 
+	$$SRC/text_utils/Aligner.cpp \
+	$$SRC/text_utils/Node.cpp \
+	$$SRC/text_utils/TextBuilder.cpp \
 
 
 HEADERS += \
 HEADERS += \
-    $$SRC/text_utils/Aligner.h \ 
-    $$SRC/text_utils/Node.h \ 
-    $$SRC/text_utils/TextBuilder.h \ 
+	$$SRC/text_utils/Aligner.h \
+	$$SRC/text_utils/Node.h \
+	$$SRC/text_utils/TextBuilder.h \
 
 
 SOURCES += \
 SOURCES += \
-    $$SRC/utils/AtlasTool.cpp \ 
-    $$SRC/utils/ImageUtils.cpp \ 
-    $$SRC/utils/stringUtils.cpp \ 
+	$$SRC/utils/AtlasTool.cpp \
+	$$SRC/utils/ImageUtils.cpp \
+	$$SRC/utils/stringUtils.cpp \
 
 
 HEADERS += \
 HEADERS += \
-    $$SRC/utils/AtlasTool.h \ 
-    $$SRC/utils/ImageUtils.h \ 
-    $$SRC/utils/intrusive_list.h \ 
-    $$SRC/utils/stringUtils.h \ 
+	$$SRC/utils/AtlasTool.h \
+	$$SRC/utils/ImageUtils.h \
+	$$SRC/utils/intrusive_list.h \
+	$$SRC/utils/stringUtils.h \
 
 
 SOURCES += \
 SOURCES += \
-    $$SRC/winnie_alloc/system_alloc.cpp \ 
-    $$SRC/winnie_alloc/winnie_alloc.cpp \ 
+	$$SRC/winnie_alloc/system_alloc.cpp \
+	$$SRC/winnie_alloc/winnie_alloc.cpp \
 
 
 HEADERS += \
 HEADERS += \
-    $$SRC/winnie_alloc/system_alloc.h \ 
-    $$SRC/winnie_alloc/winnie_alloc.h \ 
-    $$SRC/winnie_alloc/winnie_alloc_config.h \ 
+	$$SRC/winnie_alloc/system_alloc.h \
+	$$SRC/winnie_alloc/winnie_alloc.h \
+	$$SRC/winnie_alloc/winnie_alloc_config.h \
 
 
 SOURCES += \
 SOURCES += \
-    $$SRC/core/gl/NativeTextureGLES.cpp \
-    $$SRC/core/gl/oxgl.cpp \
-    $$SRC/core/gl/VertexDeclarationGL.cpp \
-    $$SRC/core/gl/ShaderProgramGL.cpp \
-    $$SRC/core/gl/VideoDriverGL.cpp \
-    $$SRC/core/gl/VideoDriverGLES20.cpp \
+	$$SRC/core/gl/NativeTextureGLES.cpp \
+	$$SRC/core/gl/oxgl.cpp \
+	$$SRC/core/gl/VertexDeclarationGL.cpp \
+	$$SRC/core/gl/ShaderProgramGL.cpp \
+	$$SRC/core/gl/VideoDriverGL.cpp \
+	$$SRC/core/gl/VideoDriverGLES20.cpp \
 
 
 INCLUDEPATH += \
 INCLUDEPATH += \
-    $$SRC \
-    $$SRC/../../../SDL/include/
+	$$SRC \
+	$$SRC/../../../SDL/include/
 
 
 debug
 debug
 {
 {
-    DEFINES +=_DEBUG
-    DEFINES += OXYGINE_QT
+	DEFINES +=_DEBUG
+	DEFINES += OXYGINE_QT
 }
 }
 release
 release
 {
 {
-    DEFINES += OXYGINE_QT    
+	DEFINES += OXYGINE_QT
 }
 }
 
 
 THIRD_PARTY = $$ROOT/oxygine/third_party/win32_mingw
 THIRD_PARTY = $$ROOT/oxygine/third_party/win32_mingw
@@ -254,6 +252,6 @@ INCLUDEPATH += $$THIRD_PARTY/zlib
 DEFINES += "OX_HAVE_LIBPNG=1"
 DEFINES += "OX_HAVE_LIBPNG=1"
 
 
 unix {
 unix {
-    target.path = /usr/lib
-    INSTALLS += target
+	target.path = /usr/lib
+	INSTALLS += target
 }
 }

+ 10 - 2
oxygine/SDL/win32/oxygine_vs2010.vcxproj

@@ -55,7 +55,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\src\;..\..\third_party\win32\zlib;..\..\third_party\win32\libjpeg;..\..\third_party\win32\libpng;..\..\greenlets\src\;..\..\..\..\SDL\include\;..\..\third_party\win32\OGLES;..\..\third_party\win32\glew;../../third_party/win32/pthreads/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\src\;..\..\third_party\win32\zlib;..\..\third_party\win32\libjpeg;..\..\third_party\win32\curl;..\..\third_party\win32\libpng;..\..\greenlets\src\;..\..\..\..\SDL\include\;..\..\third_party\win32\OGLES;..\..\third_party\win32\glew;../../third_party/win32/pthreads/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;OXYGINE_SDL;_WINDOWS;_CRT_SECURE_NO_WARNINGS;OX_HAVE_LIBPNG;OX_HAVE_LIBJPEG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;OXYGINE_SDL;_WINDOWS;_CRT_SECURE_NO_WARNINGS;OX_HAVE_LIBPNG;OX_HAVE_LIBJPEG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@@ -77,7 +77,7 @@
     <ClCompile>
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\src\;..\..\third_party\win32\zlib;..\..\third_party\win32\libjpeg;..\..\third_party\win32\libpng;..\..\greenlets\src\;..\..\..\..\SDL\include\;..\..\third_party\win32\OGLES;..\..\third_party\win32\glew;../../third_party/win32/pthreads/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\src\;..\..\third_party\win32\zlib;..\..\third_party\win32\libjpeg;..\..\third_party\win32\curl;..\..\third_party\win32\libpng;..\..\greenlets\src\;..\..\..\..\SDL\include\;..\..\third_party\win32\OGLES;..\..\third_party\win32\glew;../../third_party/win32/pthreads/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;OXYGINE_SDL;_WINDOWS;_CRT_SECURE_NO_WARNINGS;OX_HAVE_LIBPNG;OX_HAVE_LIBJPEG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;OXYGINE_SDL;_WINDOWS;_CRT_SECURE_NO_WARNINGS;OX_HAVE_LIBPNG;OX_HAVE_LIBJPEG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
@@ -94,6 +94,7 @@
   <ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\Actor.cpp" />
     <ClCompile Include="..\..\src\Actor.cpp" />
     <ClCompile Include="..\..\src\AnimationFrame.cpp" />
     <ClCompile Include="..\..\src\AnimationFrame.cpp" />
+    <ClCompile Include="..\..\src\AsyncTask.cpp" />
     <ClCompile Include="..\..\src\Blocking.cpp" />
     <ClCompile Include="..\..\src\Blocking.cpp" />
     <ClCompile Include="..\..\src\Box9Sprite.cpp" />
     <ClCompile Include="..\..\src\Box9Sprite.cpp" />
     <ClCompile Include="..\..\src\Button.cpp" />
     <ClCompile Include="..\..\src\Button.cpp" />
@@ -101,6 +102,7 @@
     <ClCompile Include="..\..\src\Clock.cpp" />
     <ClCompile Include="..\..\src\Clock.cpp" />
     <ClCompile Include="..\..\src\ColorRectSprite.cpp" />
     <ClCompile Include="..\..\src\ColorRectSprite.cpp" />
     <ClCompile Include="..\..\src\core\coroutines.cpp" />
     <ClCompile Include="..\..\src\core\coroutines.cpp" />
+    <ClCompile Include="..\..\src\core\curl\HttpRequestCurlTask.cpp" />
     <ClCompile Include="..\..\src\core\file.cpp" />
     <ClCompile Include="..\..\src\core\file.cpp" />
     <ClCompile Include="..\..\src\core\FileSystem.cpp" />
     <ClCompile Include="..\..\src\core\FileSystem.cpp" />
     <ClCompile Include="..\..\src\core\gl\NativeTextureGLES.cpp" />
     <ClCompile Include="..\..\src\core\gl\NativeTextureGLES.cpp" />
@@ -136,6 +138,7 @@
     <ClCompile Include="..\..\src\Draggable.cpp" />
     <ClCompile Include="..\..\src\Draggable.cpp" />
     <ClCompile Include="..\..\src\EventDispatcher.cpp" />
     <ClCompile Include="..\..\src\EventDispatcher.cpp" />
     <ClCompile Include="..\..\src\Font.cpp" />
     <ClCompile Include="..\..\src\Font.cpp" />
+    <ClCompile Include="..\..\src\HttpRequestTask.cpp" />
     <ClCompile Include="..\..\src\Input.cpp" />
     <ClCompile Include="..\..\src\Input.cpp" />
     <ClCompile Include="..\..\src\InputText.cpp" />
     <ClCompile Include="..\..\src\InputText.cpp" />
     <ClCompile Include="..\..\src\MaskedRenderer.cpp" />
     <ClCompile Include="..\..\src\MaskedRenderer.cpp" />
@@ -175,6 +178,7 @@
     <ClCompile Include="..\..\src\utils\AtlasTool.cpp" />
     <ClCompile Include="..\..\src\utils\AtlasTool.cpp" />
     <ClCompile Include="..\..\src\utils\ImageUtils.cpp" />
     <ClCompile Include="..\..\src\utils\ImageUtils.cpp" />
     <ClCompile Include="..\..\src\VisualStyle.cpp" />
     <ClCompile Include="..\..\src\VisualStyle.cpp" />
+    <ClCompile Include="..\..\src\WebImage.cpp" />
     <ClCompile Include="..\..\src\winnie_alloc\system_alloc.cpp" />
     <ClCompile Include="..\..\src\winnie_alloc\system_alloc.cpp" />
     <ClCompile Include="..\..\src\winnie_alloc\winnie_alloc.cpp" />
     <ClCompile Include="..\..\src\winnie_alloc\winnie_alloc.cpp" />
     <ClCompile Include="..\..\greenlets\src\greenlet.c" />
     <ClCompile Include="..\..\greenlets\src\greenlet.c" />
@@ -182,6 +186,7 @@
   <ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\Actor.h" />
     <ClInclude Include="..\..\src\Actor.h" />
     <ClInclude Include="..\..\src\AnimationFrame.h" />
     <ClInclude Include="..\..\src\AnimationFrame.h" />
+    <ClInclude Include="..\..\src\AsyncTask.h" />
     <ClInclude Include="..\..\src\Blocking.h" />
     <ClInclude Include="..\..\src\Blocking.h" />
     <ClInclude Include="..\..\src\Box9Sprite.h" />
     <ClInclude Include="..\..\src\Box9Sprite.h" />
     <ClInclude Include="..\..\src\Button.h" />
     <ClInclude Include="..\..\src\Button.h" />
@@ -189,6 +194,7 @@
     <ClInclude Include="..\..\src\Clock.h" />
     <ClInclude Include="..\..\src\Clock.h" />
     <ClInclude Include="..\..\src\ColorRectSprite.h" />
     <ClInclude Include="..\..\src\ColorRectSprite.h" />
     <ClInclude Include="..\..\src\core\coroutines.h" />
     <ClInclude Include="..\..\src\core\coroutines.h" />
+    <ClInclude Include="..\..\src\core\curl\HttpRequestCurlTask.h" />
     <ClInclude Include="..\..\src\core\file.h" />
     <ClInclude Include="..\..\src\core\file.h" />
     <ClInclude Include="..\..\src\core\FileSystem.h" />
     <ClInclude Include="..\..\src\core\FileSystem.h" />
     <ClInclude Include="..\..\src\core\files_io.h" />
     <ClInclude Include="..\..\src\core\files_io.h" />
@@ -234,6 +240,7 @@
     <ClInclude Include="..\..\src\Event.h" />
     <ClInclude Include="..\..\src\Event.h" />
     <ClInclude Include="..\..\src\EventDispatcher.h" />
     <ClInclude Include="..\..\src\EventDispatcher.h" />
     <ClInclude Include="..\..\src\Font.h" />
     <ClInclude Include="..\..\src\Font.h" />
+    <ClInclude Include="..\..\src\HttpRequestTask.h" />
     <ClInclude Include="..\..\src\InitActor.h" />
     <ClInclude Include="..\..\src\InitActor.h" />
     <ClInclude Include="..\..\src\Input.h" />
     <ClInclude Include="..\..\src\Input.h" />
     <ClInclude Include="..\..\src\InputText.h" />
     <ClInclude Include="..\..\src\InputText.h" />
@@ -296,6 +303,7 @@
     <ClInclude Include="..\..\src\utils\ImageUtils.h" />
     <ClInclude Include="..\..\src\utils\ImageUtils.h" />
     <ClInclude Include="..\..\src\utils\intrusive_list.h" />
     <ClInclude Include="..\..\src\utils\intrusive_list.h" />
     <ClInclude Include="..\..\src\VisualStyle.h" />
     <ClInclude Include="..\..\src\VisualStyle.h" />
+    <ClInclude Include="..\..\src\WebImage.h" />
     <ClInclude Include="..\..\src\winnie_alloc\system_alloc.h" />
     <ClInclude Include="..\..\src\winnie_alloc\system_alloc.h" />
     <ClInclude Include="..\..\src\winnie_alloc\winnie_alloc.h" />
     <ClInclude Include="..\..\src\winnie_alloc\winnie_alloc.h" />
     <ClInclude Include="..\..\src\winnie_alloc\winnie_alloc_config.h" />
     <ClInclude Include="..\..\src\winnie_alloc\winnie_alloc_config.h" />

+ 27 - 0
oxygine/SDL/win32/oxygine_vs2010.vcxproj.filters

@@ -43,6 +43,9 @@
     <Filter Include="src\minizip">
     <Filter Include="src\minizip">
       <UniqueIdentifier>{164d853c-2678-421b-982f-073d6b5ebb1d}</UniqueIdentifier>
       <UniqueIdentifier>{164d853c-2678-421b-982f-073d6b5ebb1d}</UniqueIdentifier>
     </Filter>
     </Filter>
+    <Filter Include="src\curl">
+      <UniqueIdentifier>{54e007da-0017-4cb0-9307-c80350cae8ad}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\math\AffineTransform.cpp">
     <ClCompile Include="..\..\src\math\AffineTransform.cpp">
@@ -303,6 +306,18 @@
     <ClCompile Include="..\..\src\TweenQueue.cpp">
     <ClCompile Include="..\..\src\TweenQueue.cpp">
       <Filter>src</Filter>
       <Filter>src</Filter>
     </ClCompile>
     </ClCompile>
+    <ClCompile Include="..\..\src\HttpRequestTask.cpp">
+      <Filter>src</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\core\curl\HttpRequestCurlTask.cpp">
+      <Filter>src\curl</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\AsyncTask.cpp">
+      <Filter>src</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\WebImage.cpp">
+      <Filter>src</Filter>
+    </ClCompile>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\closure\closure.h">
     <ClInclude Include="..\..\src\closure\closure.h">
@@ -668,6 +683,18 @@
     <ClInclude Include="..\..\src\TweenQueue.h">
     <ClInclude Include="..\..\src\TweenQueue.h">
       <Filter>src</Filter>
       <Filter>src</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\src\HttpRequestTask.h">
+      <Filter>src</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\core\curl\HttpRequestCurlTask.h">
+      <Filter>src\curl</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\AsyncTask.h">
+      <Filter>src</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\WebImage.h">
+      <Filter>src</Filter>
+    </ClInclude>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <None Include="ReadMe.txt" />
     <None Include="ReadMe.txt" />

+ 10 - 2
oxygine/SDL/win32/oxygine_vs2013.vcxproj

@@ -57,7 +57,7 @@
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
   <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
     <ClCompile>
     <ClCompile>
       <Optimization>Disabled</Optimization>
       <Optimization>Disabled</Optimization>
-      <AdditionalIncludeDirectories>..\..\src\;..\..\third_party\win32\zlib;..\..\third_party\win32\libjpeg;..\..\third_party\win32\libpng;..\..\greenlets\src\;..\..\..\..\SDL\include\;..\..\third_party\win32\OGLES;..\..\third_party\win32\glew;../../third_party/win32/pthreads/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\src\;..\..\third_party\win32\zlib;..\..\third_party\win32\libjpeg;..\..\third_party\win32\libpng;..\..\greenlets\src\;..\..\..\..\SDL\include\;..\..\third_party\win32\OGLES;..\..\third_party\win32\glew;../../third_party/win32/pthreads/include;..\..\third_party\win32\curl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;OXYGINE_SDL;_WINDOWS;OX_HAVE_LIBPNG;OX_HAVE_LIBJPEG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <PreprocessorDefinitions>WIN32;_DEBUG;_LIB;OXYGINE_SDL;_WINDOWS;OX_HAVE_LIBPNG;OX_HAVE_LIBJPEG;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <MinimalRebuild>true</MinimalRebuild>
       <MinimalRebuild>true</MinimalRebuild>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
       <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@@ -79,7 +79,7 @@
     <ClCompile>
     <ClCompile>
       <Optimization>MaxSpeed</Optimization>
       <Optimization>MaxSpeed</Optimization>
       <IntrinsicFunctions>true</IntrinsicFunctions>
       <IntrinsicFunctions>true</IntrinsicFunctions>
-      <AdditionalIncludeDirectories>..\..\src\;..\..\third_party\win32\zlib;..\..\third_party\win32\libjpeg;..\..\third_party\win32\libpng;..\..\greenlets\src\;..\..\..\..\SDL\include\;..\..\third_party\win32\OGLES;..\..\third_party\win32\glew;../../third_party/win32/pthreads/include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <AdditionalIncludeDirectories>..\..\src\;..\..\third_party\win32\zlib;..\..\third_party\win32\libjpeg;..\..\third_party\win32\libpng;..\..\greenlets\src\;..\..\..\..\SDL\include\;..\..\third_party\win32\OGLES;..\..\third_party\win32\glew;../../third_party/win32/pthreads/include;..\..\third_party\win32\curl;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
       <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;OXYGINE_SDL;_WINDOWS;_CRT_SECURE_NO_WARNINGS;OX_HAVE_LIBPNG;OX_HAVE_LIBJPEG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <PreprocessorDefinitions>WIN32;NDEBUG;_LIB;OXYGINE_SDL;_WINDOWS;_CRT_SECURE_NO_WARNINGS;OX_HAVE_LIBPNG;OX_HAVE_LIBJPEG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
       <FunctionLevelLinking>true</FunctionLevelLinking>
       <FunctionLevelLinking>true</FunctionLevelLinking>
@@ -96,6 +96,7 @@
   <ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\Actor.cpp" />
     <ClCompile Include="..\..\src\Actor.cpp" />
     <ClCompile Include="..\..\src\AnimationFrame.cpp" />
     <ClCompile Include="..\..\src\AnimationFrame.cpp" />
+    <ClCompile Include="..\..\src\AsyncTask.cpp" />
     <ClCompile Include="..\..\src\Blocking.cpp" />
     <ClCompile Include="..\..\src\Blocking.cpp" />
     <ClCompile Include="..\..\src\Box9Sprite.cpp" />
     <ClCompile Include="..\..\src\Box9Sprite.cpp" />
     <ClCompile Include="..\..\src\Button.cpp" />
     <ClCompile Include="..\..\src\Button.cpp" />
@@ -103,6 +104,7 @@
     <ClCompile Include="..\..\src\Clock.cpp" />
     <ClCompile Include="..\..\src\Clock.cpp" />
     <ClCompile Include="..\..\src\ColorRectSprite.cpp" />
     <ClCompile Include="..\..\src\ColorRectSprite.cpp" />
     <ClCompile Include="..\..\src\core\coroutines.cpp" />
     <ClCompile Include="..\..\src\core\coroutines.cpp" />
+    <ClCompile Include="..\..\src\core\curl\HttpRequestCurlTask.cpp" />
     <ClCompile Include="..\..\src\core\file.cpp" />
     <ClCompile Include="..\..\src\core\file.cpp" />
     <ClCompile Include="..\..\src\core\FileSystem.cpp" />
     <ClCompile Include="..\..\src\core\FileSystem.cpp" />
     <ClCompile Include="..\..\src\core\gl\NativeTextureGLES.cpp" />
     <ClCompile Include="..\..\src\core\gl\NativeTextureGLES.cpp" />
@@ -138,6 +140,7 @@
     <ClCompile Include="..\..\src\Draggable.cpp" />
     <ClCompile Include="..\..\src\Draggable.cpp" />
     <ClCompile Include="..\..\src\EventDispatcher.cpp" />
     <ClCompile Include="..\..\src\EventDispatcher.cpp" />
     <ClCompile Include="..\..\src\Font.cpp" />
     <ClCompile Include="..\..\src\Font.cpp" />
+    <ClCompile Include="..\..\src\HttpRequestTask.cpp" />
     <ClCompile Include="..\..\src\Input.cpp" />
     <ClCompile Include="..\..\src\Input.cpp" />
     <ClCompile Include="..\..\src\InputText.cpp" />
     <ClCompile Include="..\..\src\InputText.cpp" />
     <ClCompile Include="..\..\src\MaskedRenderer.cpp" />
     <ClCompile Include="..\..\src\MaskedRenderer.cpp" />
@@ -177,6 +180,7 @@
     <ClCompile Include="..\..\src\utils\AtlasTool.cpp" />
     <ClCompile Include="..\..\src\utils\AtlasTool.cpp" />
     <ClCompile Include="..\..\src\utils\ImageUtils.cpp" />
     <ClCompile Include="..\..\src\utils\ImageUtils.cpp" />
     <ClCompile Include="..\..\src\VisualStyle.cpp" />
     <ClCompile Include="..\..\src\VisualStyle.cpp" />
+    <ClCompile Include="..\..\src\WebImage.cpp" />
     <ClCompile Include="..\..\src\winnie_alloc\system_alloc.cpp" />
     <ClCompile Include="..\..\src\winnie_alloc\system_alloc.cpp" />
     <ClCompile Include="..\..\src\winnie_alloc\winnie_alloc.cpp" />
     <ClCompile Include="..\..\src\winnie_alloc\winnie_alloc.cpp" />
     <ClCompile Include="..\..\greenlets\src\greenlet.c" />
     <ClCompile Include="..\..\greenlets\src\greenlet.c" />
@@ -184,6 +188,7 @@
   <ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\Actor.h" />
     <ClInclude Include="..\..\src\Actor.h" />
     <ClInclude Include="..\..\src\AnimationFrame.h" />
     <ClInclude Include="..\..\src\AnimationFrame.h" />
+    <ClInclude Include="..\..\src\AsyncTask.h" />
     <ClInclude Include="..\..\src\Blocking.h" />
     <ClInclude Include="..\..\src\Blocking.h" />
     <ClInclude Include="..\..\src\Box9Sprite.h" />
     <ClInclude Include="..\..\src\Box9Sprite.h" />
     <ClInclude Include="..\..\src\Button.h" />
     <ClInclude Include="..\..\src\Button.h" />
@@ -191,6 +196,7 @@
     <ClInclude Include="..\..\src\Clock.h" />
     <ClInclude Include="..\..\src\Clock.h" />
     <ClInclude Include="..\..\src\ColorRectSprite.h" />
     <ClInclude Include="..\..\src\ColorRectSprite.h" />
     <ClInclude Include="..\..\src\core\coroutines.h" />
     <ClInclude Include="..\..\src\core\coroutines.h" />
+    <ClInclude Include="..\..\src\core\curl\HttpRequestCurlTask.h" />
     <ClInclude Include="..\..\src\core\file.h" />
     <ClInclude Include="..\..\src\core\file.h" />
     <ClInclude Include="..\..\src\core\FileSystem.h" />
     <ClInclude Include="..\..\src\core\FileSystem.h" />
     <ClInclude Include="..\..\src\core\files_io.h" />
     <ClInclude Include="..\..\src\core\files_io.h" />
@@ -236,6 +242,7 @@
     <ClInclude Include="..\..\src\Event.h" />
     <ClInclude Include="..\..\src\Event.h" />
     <ClInclude Include="..\..\src\EventDispatcher.h" />
     <ClInclude Include="..\..\src\EventDispatcher.h" />
     <ClInclude Include="..\..\src\Font.h" />
     <ClInclude Include="..\..\src\Font.h" />
+    <ClInclude Include="..\..\src\HttpRequestTask.h" />
     <ClInclude Include="..\..\src\InitActor.h" />
     <ClInclude Include="..\..\src\InitActor.h" />
     <ClInclude Include="..\..\src\Input.h" />
     <ClInclude Include="..\..\src\Input.h" />
     <ClInclude Include="..\..\src\InputText.h" />
     <ClInclude Include="..\..\src\InputText.h" />
@@ -296,6 +303,7 @@
     <ClInclude Include="..\..\src\utils\ImageUtils.h" />
     <ClInclude Include="..\..\src\utils\ImageUtils.h" />
     <ClInclude Include="..\..\src\utils\intrusive_list.h" />
     <ClInclude Include="..\..\src\utils\intrusive_list.h" />
     <ClInclude Include="..\..\src\VisualStyle.h" />
     <ClInclude Include="..\..\src\VisualStyle.h" />
+    <ClInclude Include="..\..\src\WebImage.h" />
     <ClInclude Include="..\..\src\winnie_alloc\system_alloc.h" />
     <ClInclude Include="..\..\src\winnie_alloc\system_alloc.h" />
     <ClInclude Include="..\..\src\winnie_alloc\winnie_alloc.h" />
     <ClInclude Include="..\..\src\winnie_alloc\winnie_alloc.h" />
     <ClInclude Include="..\..\src\winnie_alloc\winnie_alloc_config.h" />
     <ClInclude Include="..\..\src\winnie_alloc\winnie_alloc_config.h" />

+ 27 - 0
oxygine/SDL/win32/oxygine_vs2013.vcxproj.filters

@@ -43,6 +43,9 @@
     <Filter Include="src\minizip">
     <Filter Include="src\minizip">
       <UniqueIdentifier>{164d853c-2678-421b-982f-073d6b5ebb1d}</UniqueIdentifier>
       <UniqueIdentifier>{164d853c-2678-421b-982f-073d6b5ebb1d}</UniqueIdentifier>
     </Filter>
     </Filter>
+    <Filter Include="src\core\curl">
+      <UniqueIdentifier>{14e0f6bd-fc8b-4504-87bb-84301453e184}</UniqueIdentifier>
+    </Filter>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <ClCompile Include="..\..\src\math\AffineTransform.cpp">
     <ClCompile Include="..\..\src\math\AffineTransform.cpp">
@@ -303,6 +306,18 @@
     <ClCompile Include="..\..\src\Serialize.cpp">
     <ClCompile Include="..\..\src\Serialize.cpp">
       <Filter>src</Filter>
       <Filter>src</Filter>
     </ClCompile>
     </ClCompile>
+    <ClCompile Include="..\..\src\AsyncTask.cpp">
+      <Filter>src</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\WebImage.cpp">
+      <Filter>src</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\HttpRequestTask.cpp">
+      <Filter>src</Filter>
+    </ClCompile>
+    <ClCompile Include="..\..\src\core\curl\HttpRequestCurlTask.cpp">
+      <Filter>src\core\curl</Filter>
+    </ClCompile>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <ClInclude Include="..\..\src\closure\closure.h">
     <ClInclude Include="..\..\src\closure\closure.h">
@@ -662,6 +677,18 @@
     <ClInclude Include="..\..\src\Property.h">
     <ClInclude Include="..\..\src\Property.h">
       <Filter>src</Filter>
       <Filter>src</Filter>
     </ClInclude>
     </ClInclude>
+    <ClInclude Include="..\..\src\AsyncTask.h">
+      <Filter>src</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\WebImage.h">
+      <Filter>src</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\HttpRequestTask.h">
+      <Filter>src</Filter>
+    </ClInclude>
+    <ClInclude Include="..\..\src\core\curl\HttpRequestCurlTask.h">
+      <Filter>src\core\curl</Filter>
+    </ClInclude>
   </ItemGroup>
   </ItemGroup>
   <ItemGroup>
   <ItemGroup>
     <None Include="ReadMe.txt" />
     <None Include="ReadMe.txt" />

+ 1 - 0
oxygine/marmalade/oxygine-framework.mkf

@@ -13,6 +13,7 @@ define MARMALADE
 
 
 define OX_HAVE_LIBJPEG
 define OX_HAVE_LIBJPEG
 define OX_HAVE_LIBPNG
 define OX_HAVE_LIBPNG
+define OX_NO_HTTP
 
 
 files
 files
 {
 {

+ 1 - 0
oxygine/marmalade/oxygine.mkf

@@ -22,6 +22,7 @@ debug_define MARMALADE
 define MARMALADE
 define MARMALADE
 define OX_HAVE_LIBJPEG
 define OX_HAVE_LIBJPEG
 define OX_HAVE_LIBPNG
 define OX_HAVE_LIBPNG
+define OX_NO_HTTP
 
 
 files
 files
 {
 {

+ 1 - 0
oxygine/marmalade/oxygine_lib.mkf

@@ -13,6 +13,7 @@ define OXYGINE_MARMALADE
 
 
 define OX_HAVE_LIBJPEG
 define OX_HAVE_LIBJPEG
 define OX_HAVE_LIBPNG
 define OX_HAVE_LIBPNG
+define OX_NO_HTTP
 
 
 files
 files
 {
 {

+ 63 - 14
oxygine/src/Actor.cpp

@@ -40,13 +40,11 @@ namespace oxygine
 			_parent(0),
 			_parent(0),
 			_alpha(255),
 			_alpha(255),
 			_pressed(0),
 			_pressed(0),
-			_overred(0)
+			_overred(0),
+			_stage(0)
 	{
 	{
 		_transform.identity();
 		_transform.identity();
 		_transformInvert.identity();
 		_transformInvert.identity();
-
-		//addEventListener(et_MouseDown, CLOSURE(this, &Actor::_onMouseEvent));
-		//addEventListener(et_MouseMove, CLOSURE(this, &Actor::_onMouseEvent));
 	}
 	}
 
 
 	void Actor::copyFrom(const Actor &src, cloneOptions opt)
 	void Actor::copyFrom(const Actor &src, cloneOptions opt)
@@ -95,12 +93,51 @@ namespace oxygine
 	{
 	{
 		//printf("Actor::~Actor %s\n", getName().c_str());
 		//printf("Actor::~Actor %s\n", getName().c_str());
 		removeTweens();
 		removeTweens();
-		//removeEventHandlers();
 		removeChildren();
 		removeChildren();
-		if (getStage())
-			getStage()->removeEventListeners(this);
+		if (_getStage())
+		{
+            //OX_ASSERT(_getStage()->hasEventListeners(this) == false);
+			//_getStage()->removeEventListeners(this);
+		}
 	}	
 	}	
 
 
+	Stage* Actor::_getStage()
+	{
+		return _stage;
+	}
+
+	void Actor::added2stage(Stage* stage)
+	{
+		OX_ASSERT(_stage == 0);
+		_stage = stage;
+
+		onAdded2Stage();
+
+		spActor actor = _children._first;
+		while (actor)
+		{
+			spActor next = actor->_next;
+			actor->added2stage(stage);
+			actor = next;
+		}
+	}
+
+	void Actor::removedFromStage()
+	{
+		OX_ASSERT(_stage);
+		onRemovedFromStage();
+		_stage->removeEventListeners(this);
+		_stage = 0;		
+
+		spActor actor = _children._first;
+		while (actor)
+		{
+			spActor next = actor->_next;
+			actor->removedFromStage();
+			actor = next;
+		}
+	}
+
 	std::string Actor::dump(const dumpOptions &opt) const
 	std::string Actor::dump(const dumpOptions &opt) const
 	{
 	{
 		std::stringstream stream;
 		std::stringstream stream;
@@ -217,11 +254,11 @@ namespace oxygine
 
 
 		if (v)
 		if (v)
 		{
 		{
-			getStage()->addEventListener( TouchEvent::TOUCH_UP, CLOSURE(this, &Actor::_onMouseEvent));
+			_getStage()->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Actor::_onMouseEvent));
 			//printf("added\n");
 			//printf("added\n");
 		}
 		}
 		else
 		else
-			getStage()->removeEventListener( TouchEvent::TOUCH_UP, CLOSURE(this, &Actor::_onMouseEvent));
+			_getStage()->removeEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Actor::_onMouseEvent));
 
 
 		if (!old)
 		if (!old)
 			updateState();
 			updateState();
@@ -241,11 +278,11 @@ namespace oxygine
 			e.index = v;
 			e.index = v;
 			dispatchEvent(&e);
 			dispatchEvent(&e);
 
 
-			getStage()->addEventListener( TouchEvent::MOVE, CLOSURE(this, &Actor::_onMouseEvent));
+			_getStage()->addEventListener( TouchEvent::MOVE, CLOSURE(this, &Actor::_onMouseEvent));
 		}
 		}
 		else
 		else
 		{
 		{
-			getStage()->removeEventListener( TouchEvent::MOVE, CLOSURE(this, &Actor::_onMouseEvent));
+			_getStage()->removeEventListener( TouchEvent::MOVE, CLOSURE(this, &Actor::_onMouseEvent));
 			//if (!_overed)
 			//if (!_overed)
 			{
 			{
 				TouchEvent e(TouchEvent::OUT);
 				TouchEvent e(TouchEvent::OUT);
@@ -269,7 +306,7 @@ namespace oxygine
 			if (isDescendant(act))
 			if (isDescendant(act))
 			{
 			{
 				if (event->phase == Event::phase_target)
 				if (event->phase == Event::phase_target)
-					getStage()->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Actor::_onMouseEvent));					
+					_getStage()->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Actor::_onMouseEvent));					
 				setPressed(me->index);
 				setPressed(me->index);
 				//_pressed = me->id;
 				//_pressed = me->id;
 				//setPressed(true);
 				//setPressed(true);
@@ -283,7 +320,7 @@ namespace oxygine
 					{
 					{
 						setPressed(0);			
 						setPressed(0);			
 						//it is event from ROOT, convert to local space
 						//it is event from ROOT, convert to local space
-						Vector2 lp = convert_global2local(this, getStage(), me->localPosition);
+						Vector2 lp = convert_global2local(this, _getStage(), me->localPosition);
 						if (isDescendant(act))
 						if (isDescendant(act))
 						{
 						{
 							TouchEvent e(TouchEvent::CLICK, true, lp);
 							TouchEvent e(TouchEvent::CLICK, true, lp);
@@ -307,7 +344,7 @@ namespace oxygine
 						setOverred(me->index);
 						setOverred(me->index);
 
 
 						if (event->phase == Event::phase_target)
 						if (event->phase == Event::phase_target)
-							getStage()->addEventListener(TouchEvent::MOVE, CLOSURE(this, &Actor::_onMouseEvent));
+							_getStage()->addEventListener(TouchEvent::MOVE, CLOSURE(this, &Actor::_onMouseEvent));
 					}
 					}
 				}
 				}
 				else
 				else
@@ -724,6 +761,18 @@ namespace oxygine
 		return 0;
 		return 0;
 	}
 	}
 
 
+	void Actor::setParent(Actor *actor, Actor *parent)
+	{
+		actor->_parent = parent; 
+		if (parent && parent->_getStage())
+			actor->added2stage(parent->_getStage());
+		else
+		{
+			if (actor->_getStage())
+				actor->removedFromStage();
+		}
+	}
+
 	void Actor::insertChildAfter(spActor actor, spActor insertAfter)
 	void Actor::insertChildAfter(spActor actor, spActor insertAfter)
 	{
 	{
 		OX_ASSERT(actor);
 		OX_ASSERT(actor);

+ 28 - 8
oxygine/src/Actor.h

@@ -97,13 +97,14 @@ namespace oxygine
 		float				getY() const {return _pos.y;}		
 		float				getY() const {return _pos.y;}		
 		const Vector2&		getScale() const {return _scale;}
 		const Vector2&		getScale() const {return _scale;}
 		float               getScaleX() const {return _scale.x;}
 		float               getScaleX() const {return _scale.x;}
-		float               getScaleY() const {return _scale.y;}
+		float               getScaleY() const {return _scale.y;}		
 		/**Returns rotation angle in radians*/
 		/**Returns rotation angle in radians*/
 		float				getRotation() const {return _rotation;}		
 		float				getRotation() const {return _rotation;}		
 		float				getRotationDegrees() const {return _rotation / MATH_PI * 180.0f;}
 		float				getRotationDegrees() const {return _rotation / MATH_PI * 180.0f;}
 		int					getPriority() const {return _zOrder;}				
 		int					getPriority() const {return _zOrder;}				
 		bool				getVisible() const {return (_flags & flag_visible) != 0;}
 		bool				getVisible() const {return (_flags & flag_visible) != 0;}
-		Actor*				getParent() const {return _parent;}
+		Actor*				getParent(){return _parent;}
+		const Actor*		getParent() const {return _parent;}
 		Vector2				getSize() const {return _size;}
 		Vector2				getSize() const {return _size;}
 		float				getWidth() const {return getSize().x;}
 		float				getWidth() const {return getSize().x;}
 		float				getHeight() const {return getSize().y;}		
 		float				getHeight() const {return getSize().y;}		
@@ -230,11 +231,12 @@ namespace oxygine
 		Vector2 local2global(const Vector2 &pos) const;
 		Vector2 local2global(const Vector2 &pos) const;
 
 
 				
 				
-		typedef Property2Args<float, Vector2, const Vector2 &, Actor, &Actor::getPosition, &Actor::setPosition>	TweenPosition;
+		typedef Property2Args<float, Vector2, const Vector2 &, Actor, &Actor::getPosition, &Actor::setPosition>	TweenPosition;        
 		typedef Property<float, float, Actor, &Actor::getX, &Actor::setX>										TweenX;
 		typedef Property<float, float, Actor, &Actor::getX, &Actor::setX>										TweenX;
 		typedef Property<float, float, Actor, &Actor::getY, &Actor::setY>										TweenY;
 		typedef Property<float, float, Actor, &Actor::getY, &Actor::setY>										TweenY;
 		typedef Property<float, float, Actor, &Actor::getWidth, &Actor::setWidth>								TweenWidth;
 		typedef Property<float, float, Actor, &Actor::getWidth, &Actor::setWidth>								TweenWidth;
 		typedef Property<float, float, Actor, &Actor::getHeight, &Actor::setHeight>								TweenHeight;
 		typedef Property<float, float, Actor, &Actor::getHeight, &Actor::setHeight>								TweenHeight;
+        typedef Property2Args2<float, Vector2, Vector2, const Vector2&, Actor, &Actor::getSize, &Actor::setSize>TweenSize;
 		typedef Property<float, float, Actor, &Actor::getRotation, &Actor::setRotation>							TweenRotation;
 		typedef Property<float, float, Actor, &Actor::getRotation, &Actor::setRotation>							TweenRotation;
 		typedef Property<float, float, Actor, &Actor::getRotationDegrees, &Actor::setRotationDegrees>			TweenRotationDegrees;
 		typedef Property<float, float, Actor, &Actor::getRotationDegrees, &Actor::setRotationDegrees>			TweenRotationDegrees;
 		typedef Property2Args1Arg<float, Vector2, const Vector2 &, Actor, &Actor::getScale, &Actor::setScale>	TweenScale;
 		typedef Property2Args1Arg<float, Vector2, const Vector2 &, Actor, &Actor::getScale, &Actor::setScale>	TweenScale;
@@ -243,17 +245,25 @@ namespace oxygine
 		typedef Property<unsigned char, unsigned char, Actor, &Actor::getAlpha, &Actor::setAlpha>				TweenAlpha;
 		typedef Property<unsigned char, unsigned char, Actor, &Actor::getAlpha, &Actor::setAlpha>				TweenAlpha;
 		
 		
 
 
-		void serialize(serializedata* data);
-		void deserialize(const deserializedata* data);
+		void serialize(serializedata*);
+		void deserialize(const deserializedata*);
 
 
 		/**Returns detailed actor information. Used for debug purposes. */
 		/**Returns detailed actor information. Used for debug purposes. */
 		virtual std::string dump(const dumpOptions &opt) const;
 		virtual std::string dump(const dumpOptions &opt) const;
 
 
-		
+		/**Returns Stage where Actor attached to. Use if for multi stage (window) mode*/
+		Stage*				_getStage();
 
 
 	protected:
 	protected:
+		Stage* _stage;
+		void added2stage(Stage*);
+		void removedFromStage();
+		virtual void onAdded2Stage(){};
+		virtual void onRemovedFromStage(){};
+		
+
 		typedef intrusive_list<spActor> children;
 		typedef intrusive_list<spActor> children;
-		static void setParent(Actor *actor, Actor *parent){ actor->_parent = parent; }
+		static void setParent(Actor *actor, Actor *parent);
 		static void setPressed(Actor *actor, pointer_index v){ actor->setPressed(v); }
 		static void setPressed(Actor *actor, pointer_index v){ actor->setPressed(v); }
 		static children &getChildren(spActor &actor){ return actor->_children; }
 		static children &getChildren(spActor &actor){ return actor->_children; }
 
 
@@ -330,7 +340,7 @@ namespace oxygine
 	/**Deprecated*/
 	/**Deprecated*/
 	inline Vector2 convert_local2root(spActor child, const Vector2 &pos, spActor root = 0){ return convert_local2stage(child, pos, root); }
 	inline Vector2 convert_local2root(spActor child, const Vector2 &pos, spActor root = 0){ return convert_local2stage(child, pos, root); }
 	/**Deprecated*/
 	/**Deprecated*/
-	inline Vector2 convert_root2local(spActor child, const Vector2 &pos, spActor root = 0){ return convert_root2local(child, pos, root); }
+    inline Vector2 convert_root2local(spActor child, const Vector2 &pos, spActor root = 0){ return convert_stage2local(child, pos, root); }
 
 
 
 
 
 
@@ -351,3 +361,13 @@ namespace oxygine
 		void update(Actor &, float p, const UpdateState &us){}
 		void update(Actor &, float p, const UpdateState &us){}
 	};
 	};
 }
 }
+
+
+#ifdef OX_EDITOR
+#include "EditorActor.h"
+#else
+namespace oxygine
+{
+	typedef Actor _Actor;
+}
+#endif

+ 12 - 1
oxygine/src/AnimationFrame.cpp

@@ -11,6 +11,17 @@ namespace oxygine
 		_frameSize = frame_size.cast<PointS>();
 		_frameSize = frame_size.cast<PointS>();
 	}
 	}
 
 
+    void AnimationFrame::init2(ResAnim *rs, short col, short row, const Diffuse &df, const RectF &srcRect, const RectF &destRect, const Vector2 &frame_size)
+    {
+        _column = col;
+        _row = row;
+        _resAnim = rs;
+        _diffuse = df;
+        _srcRect = srcRect;
+        _destRect = destRect;
+        _frameSize = frame_size.cast<PointS>();
+    }
+
 	AnimationFrame AnimationFrame::getClipped(const RectF &rect) const
 	AnimationFrame AnimationFrame::getClipped(const RectF &rect) const
 	{
 	{
 		AnimationFrame f = *this;
 		AnimationFrame f = *this;
@@ -53,4 +64,4 @@ namespace oxygine
 
 
 		return f;
 		return f;
 	}
 	}
-}
+}

+ 7 - 1
oxygine/src/AnimationFrame.h

@@ -22,10 +22,12 @@ namespace oxygine
 	class AnimationFrame
 	class AnimationFrame
 	{
 	{
 	public:
 	public:
-		AnimationFrame():/* _flags(0), */_srcRect(0, 0, 1, 1), _destRect(0, 0, 1, 1), _frameSize(0, 0), _resAnim(0){}
+        AnimationFrame():_srcRect(0, 0, 1, 1), _destRect(0, 0, 1, 1), _frameSize(0, 0), _resAnim(0), _row(0), _column(0){}
 
 
 		void init(ResAnim *rs, const Diffuse &df, 
 		void init(ResAnim *rs, const Diffuse &df, 
 			const RectF &srcRect, const RectF &destRect, const Vector2 &frame_size);
 			const RectF &srcRect, const RectF &destRect, const Vector2 &frame_size);
+        void init2(ResAnim *rs, short column, short row, const Diffuse &df,
+                   const RectF &srcRect, const RectF &destRect, const Vector2 &frame_size);
 		/**ResAnim should be valid!*/
 		/**ResAnim should be valid!*/
 		AnimationFrame getClipped(const RectF &rect) const;
 		AnimationFrame getClipped(const RectF &rect) const;
 		AnimationFrame getFlipped(bool vertical, bool horizontal) const;
 		AnimationFrame getFlipped(bool vertical, bool horizontal) const;
@@ -38,6 +40,8 @@ namespace oxygine
 		const Vector2&	getFrameSize() const {return _frameSize;}
 		const Vector2&	getFrameSize() const {return _frameSize;}
 
 
 		ResAnim*		getResAnim() const {return _resAnim;} 
 		ResAnim*		getResAnim() const {return _resAnim;} 
+        short			getColumn() const {return _column;}
+        short			getRow() const {return _row;}
 		const RectF&	getSrcRect() const {return _srcRect;}
 		const RectF&	getSrcRect() const {return _srcRect;}
 		const RectF&	getDestRect() const {return _destRect;}
 		const RectF&	getDestRect() const {return _destRect;}
 		const Diffuse&	getDiffuse() const {return _diffuse;}
 		const Diffuse&	getDiffuse() const {return _diffuse;}
@@ -60,6 +64,8 @@ namespace oxygine
 		RectF			_destRect;
 		RectF			_destRect;
 		Vector2			_frameSize;//real size without clipping
 		Vector2			_frameSize;//real size without clipping
 		ResAnim*		_resAnim;
 		ResAnim*		_resAnim;
+        short           _row;
+        short           _column;
 		//unsigned short	_flags;
 		//unsigned short	_flags;
 	};
 	};
 }
 }

+ 4 - 4
oxygine/src/Box9Sprite.cpp

@@ -10,7 +10,7 @@ namespace oxygine
 {
 {
 	void Box9Sprite::copyFrom(const Box9Sprite &src, cloneOptions opt)
 	void Box9Sprite::copyFrom(const Box9Sprite &src, cloneOptions opt)
 	{
 	{
-		Sprite::copyFrom(src, opt);
+		_Sprite::copyFrom(src, opt);
 
 
 		_prepared = src._prepared;
 		_prepared = src._prepared;
 
 
@@ -260,7 +260,7 @@ namespace oxygine
 		stream << "\n";
 		stream << "\n";
 
 
 
 
-		stream << Sprite::dump(options);
+		stream << _Sprite::dump(options);
 		return stream.str();
 		return stream.str();
 	}
 	}
 
 
@@ -321,13 +321,13 @@ namespace oxygine
 
 
 	void Box9Sprite::serialize(serializedata* data)
 	void Box9Sprite::serialize(serializedata* data)
 	{
 	{
-		Sprite::serialize(data);
+		_Sprite::serialize(data);
 		setAttrV2(data->node, "size", getSize(), Vector2(0, 0));
 		setAttrV2(data->node, "size", getSize(), Vector2(0, 0));
 		data->node.set_name("Box9Sprite");
 		data->node.set_name("Box9Sprite");
 	}
 	}
 
 
 	void Box9Sprite::deserialize(const deserializedata* data)
 	void Box9Sprite::deserialize(const deserializedata* data)
 	{
 	{
-		Sprite::deserialize(data);		
+		_Sprite::deserialize(data);		
 	}
 	}
 }
 }

+ 8 - 2
oxygine/src/Box9Sprite.h

@@ -5,7 +5,7 @@ namespace oxygine
 {
 {
 	DECLARE_SMART(Box9Sprite, spBox9Sprite);
 	DECLARE_SMART(Box9Sprite, spBox9Sprite);
 
 
-	class Box9Sprite: public Sprite
+    class Box9Sprite: public _Sprite
 	{
 	{
 	public:
 	public:
 		DECLARE_COPYCLONE_NEW(Box9Sprite);
 		DECLARE_COPYCLONE_NEW(Box9Sprite);
@@ -59,5 +59,11 @@ namespace oxygine
 
 
 		virtual void doRender(const RenderState &rs);
 		virtual void doRender(const RenderState &rs);
 	};
 	};
-
 }
 }
+
+#ifdef OX_EDITOR
+#include "EditorBox9Sprite.h"
+#else
+typedef oxygine::Box9Sprite BaseBox9Sprite;
+#endif
+

+ 7 - 5
oxygine/src/Button.cpp

@@ -5,7 +5,7 @@ namespace oxygine
 {
 {
 	void Button::copyFrom(const Button &src, cloneOptions opt)
 	void Button::copyFrom(const Button &src, cloneOptions opt)
 	{
 	{
-		Sprite::copyFrom(src, opt);
+		_Sprite::copyFrom(src, opt);
 
 
 		_state = src._state;
 		_state = src._state;
 		_resAnim = src._resAnim;
 		_resAnim = src._resAnim;
@@ -90,7 +90,8 @@ namespace oxygine
 					{
 					{
 						_btnPressed = me->index;
 						_btnPressed = me->index;
 						setState(statePressed);
 						setState(statePressed);
-						getStage()->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Button::_mouseEvent));
+
+						_getStage()->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Button::_mouseEvent));
 					}					
 					}					
 				}				
 				}				
 			}
 			}
@@ -100,7 +101,8 @@ namespace oxygine
 				if (_btnPressed == me->index)
 				if (_btnPressed == me->index)
 				{				
 				{				
 					setState(stateNormal);
 					setState(stateNormal);
-					getStage()->removeEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Button::_mouseEvent));
+					if (_getStage())
+						_getStage()->removeEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Button::_mouseEvent));
 					_btnPressed = 0;
 					_btnPressed = 0;
 				}
 				}
 
 
@@ -156,9 +158,9 @@ namespace oxygine
 			return;
 			return;
 		
 		
 		if (_resAnim->getColumns() > s)
 		if (_resAnim->getColumns() > s)
-			Sprite::setAnimFrame(_resAnim->getFrame(s, _row));
+			_Sprite::setAnimFrame(_resAnim->getFrame(s, _row));
 		else
 		else
-			Sprite::setAnimFrame(_resAnim->getFrame(0, _row));
+			_Sprite::setAnimFrame(_resAnim->getFrame(0, _row));
 		
 		
 	}
 	}
 }
 }

+ 11 - 2
oxygine/src/Button.h

@@ -7,7 +7,7 @@ namespace oxygine
 
 
 	class ResAnim;
 	class ResAnim;
 
 
-	class Button: public Sprite
+	class Button: public _Sprite
 	{
 	{
 	public:
 	public:
 		DECLARE_COPYCLONE_NEW(Button);
 		DECLARE_COPYCLONE_NEW(Button);
@@ -44,4 +44,13 @@ namespace oxygine
 
 
 		void setState(state s);	
 		void setState(state s);	
 	};
 	};
-}
+}
+
+#ifdef OX_EDITOR
+#include "EditorButton.h"
+#else
+namespace oxygine
+{
+	typedef Button _Button;
+}
+#endif

+ 6 - 6
oxygine/src/ClipRectActor.cpp

@@ -9,7 +9,7 @@ namespace oxygine
 {
 {
 	void ClipRectActor::copyFrom(const ClipRectActor &src, cloneOptions opt)
 	void ClipRectActor::copyFrom(const ClipRectActor &src, cloneOptions opt)
 	{
 	{
-		Actor::copyFrom(src, opt);
+		_Actor::copyFrom(src, opt);
 		_culling = src._culling;
 		_culling = src._culling;
 		_clipping = src._clipping;
 		_clipping = src._clipping;
 	}
 	}
@@ -33,7 +33,7 @@ namespace oxygine
 			if (!isOn(localPosition))
 			if (!isOn(localPosition))
 				return false;
 				return false;
 		}
 		}
-		return Actor::handleEvent(es);
+		return _Actor::handleEvent(es);
 	}
 	}
 	*/
 	*/
 
 
@@ -47,7 +47,7 @@ namespace oxygine
 				return;
 				return;
 		}
 		}
 		
 		
-		Actor::handleEvent(event);
+		_Actor::handleEvent(event);
 	}
 	}
 
 
 	void ClipRectActor::render(const RenderState &parentRS)
 	void ClipRectActor::render(const RenderState &parentRS)
@@ -91,7 +91,7 @@ namespace oxygine
 		}
 		}
 
 
 		if (vis)
 		if (vis)
-			Actor::render(rs);
+			_Actor::render(rs);
 
 
 		
 		
 		if (_clipping)
 		if (_clipping)
@@ -104,13 +104,13 @@ namespace oxygine
 
 
 	void ClipRectActor::serialize(serializedata* data)
 	void ClipRectActor::serialize(serializedata* data)
 	{
 	{
-		Actor::serialize(data);
+		_Actor::serialize(data);
 		pugi::xml_node node = data->node;
 		pugi::xml_node node = data->node;
 		node.set_name("Sprite");
 		node.set_name("Sprite");
 	}
 	}
 
 
 	void ClipRectActor::deserialize(const deserializedata* data)
 	void ClipRectActor::deserialize(const deserializedata* data)
 	{
 	{
-		Actor::deserialize(data);
+		_Actor::deserialize(data);
 	}
 	}
 }
 }

+ 8 - 2
oxygine/src/ClipRectActor.h

@@ -8,7 +8,7 @@ namespace oxygine
 	/**
 	/**
 	ClipRectActor clips all out of bound children. Rotation is not supported
 	ClipRectActor clips all out of bound children. Rotation is not supported
 	*/
 	*/
-	class ClipRectActor : public Actor
+	class ClipRectActor : public _Actor
 	{
 	{
 	public:
 	public:
 		DECLARE_COPYCLONE_NEW(ClipRectActor);
 		DECLARE_COPYCLONE_NEW(ClipRectActor);
@@ -34,4 +34,10 @@ namespace oxygine
 		bool _culling;
 		bool _culling;
 		bool _clipping;
 		bool _clipping;
 	};
 	};
-}
+}
+
+#ifdef OX_EDITOR
+#include "EditorClipRectActor.h"
+#else
+typedef oxygine::ClipRectActor BaseClipRectActor;
+#endif

+ 83 - 1
oxygine/src/Clock.cpp

@@ -2,7 +2,20 @@
 #include <sstream>
 #include <sstream>
 
 
 #ifdef __S3E__
 #ifdef __S3E__
-#include "s3eTimer.h"
+#   include "s3eTimer.h"
+#elif WIN32
+#   include <windows.h>
+#elif __ANDROID__
+#   include "core/android/jniUtils.h"
+#elif EMSCRIPTEN
+#include <sys/time.h>
+#elif __APPLE__
+#   include <CoreFoundation/CFDate.h>
+#   include <sys/time.h>
+#endif
+
+#if OXYGINE_SDL
+#include "SDL.h"
 #endif
 #endif
 
 
 namespace oxygine
 namespace oxygine
@@ -128,4 +141,73 @@ namespace oxygine
 		stream << "}";
 		stream << "}";
 		return stream.str();
 		return stream.str();
 	}
 	}
+
+
+	timeMS getTimeMS()
+	{
+#if __S3E__
+		return (timeMS)s3eTimerGetUST();
+#elif OXYGINE_SDL
+		return SDL_GetTicks();
+#elif EMSCRIPTEN
+		static bool init = false;
+		static struct timespec start_ts;
+		if (!init)
+		{
+			init = true;
+			clock_gettime(CLOCK_MONOTONIC, &start_ts);
+		}
+
+		struct timespec now;
+		clock_gettime(CLOCK_MONOTONIC, &now);
+		timeMS ticks = (now.tv_sec - start_ts.tv_sec) * 1000 + (now.tv_nsec -
+			start_ts.tv_nsec) / 1000000;
+
+		return ticks;
+#else
+#pragma error "getTimeMS not implemented"
+#endif		
+		return 0;
+	}
+
+	int64	getTimeUTCMS()
+	{
+#if __S3E__
+		return s3eTimerGetUTC();
+#elif WIN32
+		FILETIME tm;
+		GetSystemTimeAsFileTime(&tm);
+		int64 t = tm.dwLowDateTime + (int64(tm.dwHighDateTime) << 32);
+		int64 utc = (t - 116444736000000000LL) / 10000;
+		return utc;
+#elif __ANDROID__
+		return jniGetTimeUTCMS();
+#elif EMSCRIPTEN
+		struct timeval tv;
+		gettimeofday(&tv, NULL);
+		int64 tm =
+			(unsigned long long)(tv.tv_sec) * 1000 +
+			(unsigned long long)(tv.tv_usec) / 1000;
+		return tm;
+#elif __APPLE__
+        struct timeval tv;
+        gettimeofday(&tv, NULL);
+        int64 tm =
+        (unsigned long long)(tv.tv_sec) * 1000 +
+        (unsigned long long)(tv.tv_usec) / 1000;
+        return tm;
+
+        /*
+        CFAbsoluteTime tm = CFAbsoluteTimeGetCurrent();
+        int64 v = int64(tm * 1000.0);
+        return v;
+         */
+#endif
+		return getTimeMS();
+	}
+
+	int		getTimeUTC()
+	{
+		return (int)(getTimeUTCMS() / 1000);
+	}
 }
 }

+ 11 - 5
oxygine/src/ColorRectSprite.cpp

@@ -3,12 +3,12 @@
 #include "RenderState.h"
 #include "RenderState.h"
 #include "STDRenderer.h"
 #include "STDRenderer.h"
 #include "Serialize.h"
 #include "Serialize.h"
-
+#include "utils/stringUtils.h"
 namespace oxygine
 namespace oxygine
 {
 {
 	void ColorRectSprite::copyFrom(const ColorRectSprite &src, cloneOptions opt)
 	void ColorRectSprite::copyFrom(const ColorRectSprite &src, cloneOptions opt)
 	{
 	{
-		Sprite::copyFrom(src, opt);
+		_Sprite::copyFrom(src, opt);
 	}
 	}
 
 
 	ColorRectSprite::ColorRectSprite()
 	ColorRectSprite::ColorRectSprite()
@@ -31,9 +31,15 @@ namespace oxygine
 
 
 	void ColorRectSprite::serialize(serializedata* data)
 	void ColorRectSprite::serialize(serializedata* data)
 	{
 	{
-		Actor::serialize(data);
+        VStyleActor::serialize(data);
 		pugi::xml_node node = data->node;
 		pugi::xml_node node = data->node;
 		//node.append_attribute("")
 		//node.append_attribute("")
-		data->node.set_name("ColorRectSprite");
+        node.set_name("ColorRectSprite");
+        //node.append_attribute("color").set_value(color2hex(_color));
 	}
 	}
-}
+
+    void ColorRectSprite::deserialize(const deserializedata *data)
+    {
+        VStyleActor::deserialize(data);
+    }
+}

+ 12 - 2
oxygine/src/ColorRectSprite.h

@@ -6,7 +6,7 @@ namespace oxygine
 {
 {
 	DECLARE_SMART(ColorRectSprite, spColorRectSprite);
 	DECLARE_SMART(ColorRectSprite, spColorRectSprite);
 
 
-	class ColorRectSprite: public Sprite
+    class ColorRectSprite: public _Sprite
 	{
 	{
 	public:
 	public:
 		DECLARE_COPYCLONE_NEW(ColorRectSprite);
 		DECLARE_COPYCLONE_NEW(ColorRectSprite);
@@ -14,9 +14,19 @@ namespace oxygine
 		~ColorRectSprite();
 		~ColorRectSprite();
 
 
 		void serialize(serializedata* data);
 		void serialize(serializedata* data);
+        void deserialize(const deserializedata *data);
 
 
 		void doRender(const RenderState &rs);
 		void doRender(const RenderState &rs);
 
 
 	private:
 	private:
 	};
 	};
-}
+}
+
+#ifdef OX_EDITOR
+#include "EditorColorRectSprite.h"
+#else
+namespace oxygine
+{
+    typedef ColorRectSprite _ColorRectSprite;
+}
+#endif

+ 18 - 17
oxygine/src/DebugActor.cpp

@@ -102,12 +102,6 @@ namespace oxygine
 		_startTime = getTimeMS();
 		_startTime = getTimeMS();
 		setPriority(1000);
 		setPriority(1000);
 
 
-		float scale = 1.0f;
-		if (getStage())
-			scale = 1.0f/getStage()->getScaleX();
-
-		setScale(scale);
-
 		setTouchEnabled(false);
 		setTouchEnabled(false);
 		
 		
 		TextStyle st;
 		TextStyle st;
@@ -155,11 +149,20 @@ namespace oxygine
 		_text->setWidth(getWidth());
 		_text->setWidth(getWidth());
 		_text->setText("debug text");
 		_text->setText("debug text");
 
 
-		getStage()->addEventListener(TouchEvent::MOVE, CLOSURE(this, &DebugActor::onDAEvent));
 
 
 		instance = this;
 		instance = this;
 	}
 	}
 
 
+	void DebugActor::onAdded2Stage()
+	{
+		_stage->addEventListener(TouchEvent::MOVE, CLOSURE(this, &DebugActor::onDAEvent));
+	}
+
+	void DebugActor::onRemovedFromStage()
+	{
+		_stage->removeEventListeners(this);
+	}
+
 	/*
 	/*
 	void DebugActor::addDebugString(const string &str)
 	void DebugActor::addDebugString(const string &str)
 	{
 	{
@@ -194,14 +197,14 @@ namespace oxygine
 			return;
 			return;
 		}
 		}
 
 
-		spActor inspector = getStage()->getChild(DeveloperMenu::getDefaultName(), ep_ignore_error);
+		spActor inspector = _getStage()->getChild(DeveloperMenu::getDefaultName(), ep_ignore_error);
 		if (inspector)
 		if (inspector)
 			inspector->detach();
 			inspector->detach();
 		else
 		else
 		{		
 		{		
 			spDeveloperMenu dm = new DeveloperMenu();
 			spDeveloperMenu dm = new DeveloperMenu();
 			dm->setPriority(getPriority()  + 1); 
 			dm->setPriority(getPriority()  + 1); 
-			float scale = getStage()->getScaleX();
+			float scale = _getStage()->getScaleX();
 			Vector2 size = core::getDisplaySize();
 			Vector2 size = core::getDisplaySize();
 
 
 			Vector2 s = size;// * scale;
 			Vector2 s = size;// * scale;
@@ -210,7 +213,7 @@ namespace oxygine
 			if (name == "tree")
 			if (name == "tree")
 			{
 			{
 				spTreeInspector tree = new TreeInspector;
 				spTreeInspector tree = new TreeInspector;
-				tree->init(s, getStage());
+				tree->init(s, _getStage());
 
 
 				dm->init(s, "Tree Inspector", tree, Color(230, 230, 230, 255));
 				dm->init(s, "Tree Inspector", tree, Color(230, 230, 230, 255));
 			}
 			}
@@ -222,16 +225,14 @@ namespace oxygine
 			}
 			}
 
 
 			dm->setScale(1.0f / scale);
 			dm->setScale(1.0f / scale);
-			Vector2 p = -getStage()->getPosition() / scale;
+			Vector2 p = -_getStage()->getPosition() / scale;
 			dm->setPosition(p);
 			dm->setPosition(p);
-			getStage()->addChild(dm);
+			_getStage()->addChild(dm);
 		}
 		}
 	}
 	}
 
 
 	DebugActor::~DebugActor()
 	DebugActor::~DebugActor()
 	{
 	{
-		if (getStage())
-			getStage()->removeEventListeners(this);
 	}
 	}
 
 
 	extern IVideoDriver::Stats _videoStats;
 	extern IVideoDriver::Stats _videoStats;
@@ -344,10 +345,10 @@ namespace oxygine
 	
 	
 	void DebugActor::showTouchedActor(bool show)
 	void DebugActor::showTouchedActor(bool show)
 	{
 	{
-		getStage()->removeEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &DebugActor::onEvent));
+		_getStage()->removeEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &DebugActor::onEvent));
 		_showTouchedActor = show;
 		_showTouchedActor = show;
 		if (show)
 		if (show)
-			getStage()->addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &DebugActor::onEvent));
+			_getStage()->addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &DebugActor::onEvent));
 
 
 		spActor btn = getChild("finger");
 		spActor btn = getChild("finger");
 		btn->removeTweens(true);
 		btn->removeTweens(true);
@@ -358,7 +359,7 @@ namespace oxygine
 	void DebugActor::onDAEvent(Event *ev)
 	void DebugActor::onDAEvent(Event *ev)
 	{
 	{
 		TouchEvent *t = safeCast<TouchEvent*>(ev);
 		TouchEvent *t = safeCast<TouchEvent*>(ev);
-		Vector2 loc = convert_global2local(this, getStage(), t->localPosition);
+		Vector2 loc = convert_global2local(this, _getStage(), t->localPosition);
 		setAlpha(isOn(loc) ? 64 : 255);
 		setAlpha(isOn(loc) ? 64 : 255);
 	}
 	}
 
 

+ 2 - 0
oxygine/src/DebugActor.h

@@ -38,6 +38,8 @@ namespace oxygine
 		void showTexel2PixelErrors(bool show);
 		void showTexel2PixelErrors(bool show);
 
 
 	protected:
 	protected:
+		void onAdded2Stage();
+		void onRemovedFromStage();
 		void showDevMenu(spActor data);
 		void showDevMenu(spActor data);
 		void _btnClicked(Event *ev);
 		void _btnClicked(Event *ev);
 		
 		

+ 5 - 5
oxygine/src/Draggable.cpp

@@ -73,8 +73,8 @@ namespace oxygine
 	{
 	{
 		if (_actor && !_singleDrag)
 		if (_actor && !_singleDrag)
 		{
 		{
-			if (getStage())
-				getStage()->removeEventListeners(this);
+			if (_actor->_getStage())
+				_actor->_getStage()->removeEventListeners(this);
 			_actor->removeEventListeners(this);
 			_actor->removeEventListeners(this);
 			_actor = 0;
 			_actor = 0;
 		}
 		}
@@ -100,7 +100,7 @@ namespace oxygine
 		_actor = actor;
 		_actor = actor;
 		_dragClient = actor;
 		_dragClient = actor;
 
 
-		getStage()->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Draggable::onEvent));
+		_actor->_getStage()->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Draggable::onEvent));
 		
 		
 		Vector2 src = pointer->getPosition().cast<Vector2>();
 		Vector2 src = pointer->getPosition().cast<Vector2>();
 		Vector2 pos = convert_stage2local(actor->getParent(), src);
 		Vector2 pos = convert_stage2local(actor->getParent(), src);
@@ -118,7 +118,7 @@ namespace oxygine
 		//why I did add it?
 		//why I did add it?
 		//event->stopPropagation();
 		//event->stopPropagation();
 
 
-		getStage()->addEventListener(TouchEvent::MOVE, CLOSURE(this, &Draggable::onEvent));
+		_actor->_getStage()->addEventListener(TouchEvent::MOVE, CLOSURE(this, &Draggable::onEvent));
 	}
 	}
 
 
 	void Draggable::onMove(const Vector2 &position)
 	void Draggable::onMove(const Vector2 &position)
@@ -165,7 +165,7 @@ namespace oxygine
 		case TouchEvent::TOUCH_UP:
 		case TouchEvent::TOUCH_UP:
 			{
 			{
 				_pressed = false;
 				_pressed = false;
-				getStage()->removeEventListeners(this);
+				_actor->_getStage()->removeEventListeners(this);
 			}
 			}
 			break;
 			break;
 
 

+ 20 - 0
oxygine/src/EventDispatcher.cpp

@@ -85,6 +85,26 @@ namespace oxygine
 		}
 		}
 	}
 	}
 
 
+	bool EventDispatcher::hasEventListeners(void *CallbackThis)
+	{
+		__doCheck();
+		//OX_ASSERT(_listeners);
+		if (!_listeners)
+			return false;
+
+		for (listeners::iterator i = _listeners->begin(); i != _listeners->end();)
+		{
+			listener ls = *i;
+			if (ls.cb.p_this == CallbackThis)
+			{
+				return true;
+			}
+			else
+				++i;
+		}
+		return false;
+	}
+
 	void EventDispatcher::removeEventListeners(void *CallbackThis)
 	void EventDispatcher::removeEventListeners(void *CallbackThis)
 	{
 	{
 		__doCheck();
 		__doCheck();

+ 1 - 0
oxygine/src/EventDispatcher.h

@@ -31,6 +31,7 @@ namespace oxygine
 		int addEventListener(eventType, EventCallback);
 		int addEventListener(eventType, EventCallback);
 		void removeEventListener(eventType, EventCallback);
 		void removeEventListener(eventType, EventCallback);
 		void removeEventListener(int id);
 		void removeEventListener(int id);
+		bool hasEventListeners(void *CallbackThis);
 		void removeEventListeners(void *CallbackThis);
 		void removeEventListeners(void *CallbackThis);
 		void removeAllEventListeners();
 		void removeAllEventListeners();
 
 

+ 6 - 6
oxygine/src/Input.cpp

@@ -15,7 +15,7 @@ namespace oxygine
 		return Input::instance.getTouchByIndex(index);
 		return Input::instance.getTouchByIndex(index);
 	}
 	}
 
 
-	void Input::sendPointerButtonEvent(MouseButton button, float x, float y, float pressure, int type, PointerState *ps)
+	void Input::sendPointerButtonEvent(spStage stage, MouseButton button, float x, float y, float pressure, int type, PointerState *ps)
 	{
 	{
 		Vector2 p(x, y);
 		Vector2 p(x, y);
 
 
@@ -34,7 +34,7 @@ namespace oxygine
 
 
 		LOGD("sendPointerButtonEvent %d - (%.2f, %.2f), %d", me.index, p.x, p.y, type);
 		LOGD("sendPointerButtonEvent %d - (%.2f, %.2f), %d", me.index, p.x, p.y, type);
 
 
-		getStage()->handleEvent(&me);
+		stage->handleEvent(&me);
         
         
         if (type == TouchEvent::TOUCH_UP)
         if (type == TouchEvent::TOUCH_UP)
         {
         {
@@ -42,7 +42,7 @@ namespace oxygine
         }
         }
 	}
 	}
 
 
-	void Input::sendPointerMotionEvent(float x, float y, float pressure, PointerState *ps)
+	void Input::sendPointerMotionEvent(spStage stage, float x, float y, float pressure, PointerState *ps)
 	{
 	{
 		TouchEvent me(TouchEvent::MOVE, true, Vector2(x, y));
 		TouchEvent me(TouchEvent::MOVE, true, Vector2(x, y));
 		me.index = ps->getIndex();
 		me.index = ps->getIndex();
@@ -50,17 +50,17 @@ namespace oxygine
 		ps->_position = Vector2(x, y);
 		ps->_position = Vector2(x, y);
 
 
 		LOGD("sendPointerMotionEvent %d - (%.2f, %.2f)", me.index, x, y);
 		LOGD("sendPointerMotionEvent %d - (%.2f, %.2f)", me.index, x, y);
-		getStage()->handleEvent(&me);
+		stage->handleEvent(&me);
 	}
 	}
 
 
-	void Input::sendPointerWheelEvent(int scroll, PointerState *ps)
+	void Input::sendPointerWheelEvent(spStage stage, int scroll, PointerState *ps)
 	{
 	{
 		TouchEvent me(scroll > 0 ? TouchEvent::WHEEL_UP : TouchEvent::WHEEL_DOWN, true);
 		TouchEvent me(scroll > 0 ? TouchEvent::WHEEL_UP : TouchEvent::WHEEL_DOWN, true);
 		me.index = ps->getIndex();
 		me.index = ps->getIndex();
 
 
 		ps->_position = Vector2(0, 0);
 		ps->_position = Vector2(0, 0);
 
 
-		getStage()->handleEvent(&me);
+		stage->handleEvent(&me);
 	}
 	}
 
 
 
 

+ 4 - 3
oxygine/src/Input.h

@@ -6,6 +6,7 @@
 
 
 namespace oxygine
 namespace oxygine
 {
 {
+	DECLARE_SMART(Stage, spStage);
 	class Actor;
 	class Actor;
 	class EventState;
 	class EventState;
 	
 	
@@ -42,8 +43,8 @@ namespace oxygine
 		int _ids[MAX_TOUCHES + 1];
 		int _ids[MAX_TOUCHES + 1];
 
 
 
 
-		void sendPointerButtonEvent(MouseButton button, float x, float y, float pressure, int type, PointerState *);
-		void sendPointerMotionEvent(float x, float y, float pressure, PointerState *);
-		void sendPointerWheelEvent(int scroll, PointerState *);
+		void sendPointerButtonEvent(spStage, MouseButton button, float x, float y, float pressure, int type, PointerState *);
+		void sendPointerMotionEvent(spStage, float x, float y, float pressure, PointerState *);
+		void sendPointerWheelEvent(spStage, int scroll, PointerState *);
 	};
 	};
 }
 }

+ 4 - 0
oxygine/src/KeyEvent.h

@@ -1,6 +1,10 @@
 #pragma once
 #pragma once
 #include "Event.h"
 #include "Event.h"
 
 
+#ifdef KEY_EVENT
+#undef KEY_EVENT
+#endif
+
 namespace oxygine
 namespace oxygine
 {
 {
 	/**supported only on SDL*/
 	/**supported only on SDL*/

+ 26 - 4
oxygine/src/MaskedSprite.cpp

@@ -1,6 +1,7 @@
 #include "MaskedSprite.h"
 #include "MaskedSprite.h"
 #include "RenderState.h"
 #include "RenderState.h"
 #include "MaskedRenderer.h"
 #include "MaskedRenderer.h"
+#include "Serialize.h"
 
 
 namespace oxygine
 namespace oxygine
 {
 {
@@ -16,7 +17,7 @@ namespace oxygine
 
 
 	void MaskedSprite::render(const RenderState &parentRS)
 	void MaskedSprite::render(const RenderState &parentRS)
 	{
 	{
-		if (_mask)
+        if (_mask && _mask->getAnimFrame().getDiffuse().base)
 		{
 		{
 			Renderer::transform t = getGlobalTransform(_mask);
 			Renderer::transform t = getGlobalTransform(_mask);
 			RectF maskDest = _mask->getDestRect();
 			RectF maskDest = _mask->getDestRect();
@@ -30,12 +31,33 @@ namespace oxygine
 			RenderState rs = parentRS;
 			RenderState rs = parentRS;
 			rs.renderer = &mr;
 			rs.renderer = &mr;
 			mr.begin(parentRS.renderer);
 			mr.begin(parentRS.renderer);
-			Sprite::render(rs);
+			_Sprite::render(rs);
 			mr.end();
 			mr.end();
 		}
 		}
 		else
 		else
 		{
 		{
-			Sprite::render(parentRS);
+			_Sprite::render(parentRS);
 		}
 		}
 	}
 	}
-}
+
+    void MaskedSprite::serialize(serializedata* data)
+    {
+        _Sprite::serialize(data);
+        data->node.set_name("MaskedSprite");
+    }
+
+    void MaskedSprite::deserialize(const deserializedata* data)
+    {
+        _Sprite::deserialize(data);
+    }
+
+	void MaskedSprite::deserializeLink(const deserializeLinkData* data)
+	{
+        const char *id = data->node.attribute("mask").as_string(0);
+        if (!id)
+            return;
+
+        spSprite mask = data->root->getDescendantT<Sprite>(id, ep_ignore_error);
+		setMask(mask);
+	}
+}

+ 15 - 2
oxygine/src/MaskedSprite.h

@@ -1,15 +1,19 @@
 #pragma once
 #pragma once
 #include "oxygine_include.h"
 #include "oxygine_include.h"
 #include "Sprite.h"
 #include "Sprite.h"
+
 namespace oxygine
 namespace oxygine
 {
 {
 	DECLARE_SMART(MaskedSprite, spMaskedSprite);
 	DECLARE_SMART(MaskedSprite, spMaskedSprite);
-	class MaskedSprite: public Sprite
+    class MaskedSprite: public _Sprite
 	{
 	{
 	public:
 	public:
 		spSprite getMask() const;
 		spSprite getMask() const;
 		void setMask(spSprite);	
 		void setMask(spSprite);	
 
 
+        void serialize(serializedata* data);
+        void deserialize(const deserializedata* data);
+		void deserializeLink(const deserializeLinkData*);
 
 
 	protected:
 	protected:
 		void render(const RenderState &parentRS);
 		void render(const RenderState &parentRS);
@@ -17,4 +21,13 @@ namespace oxygine
 	private:
 	private:
 		spSprite _mask;
 		spSprite _mask;
 	};
 	};
-}
+}
+
+#ifdef OX_EDITOR
+#include "EditorMaskedSprite.h"
+#else
+namespace oxygine
+{
+    typedef MaskedSprite _MaskedSprite;
+}
+#endif

+ 68 - 42
oxygine/src/MemoryTexture.cpp

@@ -3,9 +3,13 @@
 #include "core/ImageDataOperations.h"
 #include "core/ImageDataOperations.h"
 #include "core/file.h"
 #include "core/file.h"
 #include "core/log.h"
 #include "core/log.h"
-
 #include "utils/ImageUtils.h"
 #include "utils/ImageUtils.h"
 
 
+#ifdef __APPLE__
+#include "core/ios/ios.h"
+#endif
+
+
 extern "C"
 extern "C"
 {
 {
 #ifdef OX_HAVE_LIBPNG
 #ifdef OX_HAVE_LIBPNG
@@ -32,6 +36,13 @@ namespace oxygine
 		IT_JPEG
 		IT_JPEG
 	};
 	};
 
 
+	typedef bool (*cbLoadImageFromBuffer)(MemoryTexture &mt, void * data, int nSize, bool premultiplied, TextureFormat format);
+
+	bool loadImageNotSupported(MemoryTexture &mt, void * data, int nSize, bool premultiplied, TextureFormat format)
+	{
+		return false;
+	}
+
 #ifdef OX_HAVE_LIBJPEG
 #ifdef OX_HAVE_LIBJPEG
 	class CCImageHelper
 	class CCImageHelper
 	{
 	{
@@ -230,16 +241,16 @@ namespace oxygine
 
 
 
 
 #ifdef OX_HAVE_LIBPNG
 #ifdef OX_HAVE_LIBPNG
-	typedef struct
+	struct imageSource
 	{
 	{
 		unsigned char* data;
 		unsigned char* data;
 		int size;
 		int size;
 		int offset;
 		int offset;
-	}tImageSource;
+	};
 
 
 	static void pngReadCallback(png_structp png_ptr, png_bytep data, png_size_t length)
 	static void pngReadCallback(png_structp png_ptr, png_bytep data, png_size_t length)
 	{
 	{
-		tImageSource* isource = (tImageSource*)png_get_io_ptr(png_ptr);
+		imageSource* isource = (imageSource*)png_get_io_ptr(png_ptr);
 
 
 		LOGD("png read l: %d, %d", length, isource->offset);
 		LOGD("png read l: %d, %d", length, isource->offset);
 
 
@@ -261,37 +272,32 @@ namespace oxygine
 	{
 	{
 		LOGD("reading png...");
 		LOGD("reading png...");
 		bool bRet = false;
 		bool bRet = false;
-		png_byte        header[8]   = {0};
 		png_structp     png_ptr     =   0;
 		png_structp     png_ptr     =   0;
 		png_infop       info_ptr    = 0;
 		png_infop       info_ptr    = 0;
 
 
 		do
 		do
 		{
 		{
-			// png header len is 8 bytes
-			//CC_BREAK_IF(nDatalen < 8);
-
-			// check the data is png or not
-			memcpy(header, pData, 8);
-			//CC_BREAK_IF(png_sig_cmp(header, 0, 8));
 
 
 			// init png_struct
 			// init png_struct
 			png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
 			png_ptr = png_create_read_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
-			//CC_BREAK_IF(! png_ptr);
 			LOGD("reading png...1");
 			LOGD("reading png...1");
+
 			// init png_info
 			// init png_info
 			info_ptr = png_create_info_struct(png_ptr);
 			info_ptr = png_create_info_struct(png_ptr);
-			//CC_BREAK_IF(!info_ptr);
+			
+
 //#if (CC_TARGET_PLATFORM != CC_PLATFORM_BADA)
 //#if (CC_TARGET_PLATFORM != CC_PLATFORM_BADA)
-			//CC_BREAK_IF(setjmp(png_jmpbuf(png_ptr)));
 			setjmp(png_jmpbuf(png_ptr));
 			setjmp(png_jmpbuf(png_ptr));
 //#endif
 //#endif
 			// set the read call back function
 			// set the read call back function
-			tImageSource imageSource;
+			imageSource imageSource;
 			imageSource.data    = (unsigned char*)pData;
 			imageSource.data    = (unsigned char*)pData;
 			imageSource.size    = nDatalen;
 			imageSource.size    = nDatalen;
 			imageSource.offset  = 0;
 			imageSource.offset  = 0;
+
 			png_set_read_fn(png_ptr, &imageSource, pngReadCallback);
 			png_set_read_fn(png_ptr, &imageSource, pngReadCallback);
 			LOGD("reading png...2");
 			LOGD("reading png...2");
+
 			// read png
 			// read png
 			// PNG_TRANSFORM_EXPAND: perform set_expand()
 			// PNG_TRANSFORM_EXPAND: perform set_expand()
 			// PNG_TRANSFORM_PACKING: expand 1, 2 and 4-bit samples to bytes
 			// PNG_TRANSFORM_PACKING: expand 1, 2 and 4-bit samples to bytes
@@ -301,6 +307,7 @@ namespace oxygine
 				| PNG_TRANSFORM_STRIP_16 /*| PNG_TRANSFORM_GRAY_TO_RGB*/, 0);
 				| PNG_TRANSFORM_STRIP_16 /*| PNG_TRANSFORM_GRAY_TO_RGB*/, 0);
 
 
 			LOGD("reading png...2a");
 			LOGD("reading png...2a");
+
 			int         color_type  = 0;
 			int         color_type  = 0;
 			png_uint_32 nWidth = 0;
 			png_uint_32 nWidth = 0;
 			png_uint_32 nHeight = 0;
 			png_uint_32 nHeight = 0;
@@ -327,31 +334,22 @@ namespace oxygine
 			if (destFormat == TF_UNDEFINED)
 			if (destFormat == TF_UNDEFINED)
 				destFormat = srcFormat;
 				destFormat = srcFormat;
 
 
-			if (destFormat == TF_L8 || destFormat == TF_A8L8 || destFormat == TF_R8G8B8)//don't support it
-			{
+			if (destFormat == TF_L8 || destFormat == TF_A8L8 || destFormat == TF_R8G8B8)//don't support it			
 				destFormat = TF_R8G8B8A8;
 				destFormat = TF_R8G8B8A8;
-			}
 
 
 			LOGD("reading png...4, %d %d", nWidth, nHeight);
 			LOGD("reading png...4, %d %d", nWidth, nHeight);
 			mt.init(nWidth, nHeight, destFormat);
 			mt.init(nWidth, nHeight, destFormat);
 
 
 			ImageData dest = mt.lock();
 			ImageData dest = mt.lock();
 
 
-
 			png_bytep * rowPointers = png_get_rows(png_ptr, info_ptr);
 			png_bytep * rowPointers = png_get_rows(png_ptr, info_ptr);
 
 
 			LOGD("reading png...5");
 			LOGD("reading png...5");
-			ImageData src(nWidth, 1, (int)png_get_rowbytes(png_ptr, info_ptr), srcFormat,  0);
-			if (color_type == 4)
-			{
-				//src.data += 1;
-				//src.bytespp = 2;
-			}
-
+			int pitch = (int)png_get_rowbytes(png_ptr, info_ptr);
+			ImageData src(nWidth, 1, pitch, srcFormat,  0);
 
 
 			dest.h = 1;
 			dest.h = 1;
 
 
-
 			if (premultiplied)
 			if (premultiplied)
 			{
 			{
 				operations::op_premultipliedAlpha op;
 				operations::op_premultipliedAlpha op;
@@ -380,11 +378,11 @@ namespace oxygine
 			bRet        = true;
 			bRet        = true;
 		} while (0);
 		} while (0);
 
 
-		//CC_SAFE_DELETE_ARRAY(pImateData);
 
 
 		if (png_ptr)
 		if (png_ptr)
 		{
 		{
 			png_destroy_read_struct(&png_ptr, (info_ptr) ? &info_ptr : 0, 0);
 			png_destroy_read_struct(&png_ptr, (info_ptr) ? &info_ptr : 0, 0);
+
 		}
 		}
 		LOGD("reading png...7");
 		LOGD("reading png...7");
 		return bRet;
 		return bRet;
@@ -392,6 +390,38 @@ namespace oxygine
 
 
 #endif
 #endif
 
 
+#if __APPLE__
+#define USE_NSIMAGE  0
+#endif
+
+#if USE_NSIMAGE
+    cbLoadImageFromBuffer _loadPngImage = nsImageLoad;
+#elif OX_HAVE_LIBPNG
+	cbLoadImageFromBuffer _loadPngImage = _initWithPngData;
+#else
+	cbLoadImageFromBuffer _loadPngImage = loadImageNotSupported;	
+#endif
+
+#if USE_NSIMAGE
+	cbLoadImageFromBuffer _loadJpegImage = nsImageLoad;
+#elif OX_HAVE_LIBJPEG
+	cbLoadImageFromBuffer _loadJpegImage = _initWithJpgData;
+#else
+	cbLoadImageFromBuffer _loadJpegImage = loadImageNotSupported;
+#endif
+
+
+	bool loadPngImage(MemoryTexture &mt, void * pData, int nDatalen, bool premultiplied, TextureFormat format)
+	{
+		bool s = _loadPngImage(mt, pData, nDatalen, premultiplied, format);
+		return s;
+	}
+
+	bool loadJpegImage(MemoryTexture &mt, void * pData, int nDatalen, bool premultiplied, TextureFormat format)
+	{
+		bool s = _loadJpegImage(mt, pData, nDatalen, premultiplied, format);
+		return s;
+	}
 
 
 
 
 	MemoryTexture::MemoryTexture():_offset(0)
 	MemoryTexture::MemoryTexture():_offset(0)
@@ -430,22 +460,19 @@ namespace oxygine
 	{
 	{
 		cleanup();
 		cleanup();
 
 
-
 		if (buffer.getSize())
 		if (buffer.getSize())
 		{
 		{
 			ImageType type = getImageType(buffer.getData(), buffer.getSize());
 			ImageType type = getImageType(buffer.getData(), buffer.getSize());
 			switch(type)
 			switch(type)
 			{
 			{
-#ifdef OX_HAVE_LIBPNG
 			case IT_PNG:
 			case IT_PNG:
-				_initWithPngData(*this, (void*)buffer.getData(), buffer.getSize(), premultiplied, format);
-				return true;
-#endif
-#ifdef OX_HAVE_LIBJPEG
+				if (loadPngImage(*this, (void*)buffer.getData(), buffer.getSize(), premultiplied, format))
+					return true;
+				break;
 			case IT_JPEG:
 			case IT_JPEG:
-				_initWithJpgData(*this, (void*)buffer.getData(), buffer.getSize(), premultiplied, format);
-				return true;
-#endif
+				if (loadJpegImage(*this, (void*)buffer.getData(), buffer.getSize(), premultiplied, format))
+					return true;
+				break;
 			case IT_PKM:
 			case IT_PKM:
 				{
 				{
 					const pkm_header *header = (const pkm_header *)buffer.getData();
 					const pkm_header *header = (const pkm_header *)buffer.getData();
@@ -529,9 +556,7 @@ namespace oxygine
 						else
 						else
 						{
 						{
 							updateRegion(0, 0, src);
 							updateRegion(0, 0, src);
-						}
-
-						
+						}						
 
 
 						return true;
 						return true;
 //						saveImage(lock(), "test.png", "png");
 //						saveImage(lock(), "test.png", "png");
@@ -543,12 +568,13 @@ namespace oxygine
 					break;
 					break;
 				}
 				}
 				break;
 				break;
-			default:
-				log::warning("MemoryTexture. can't unpack data unknown file format");
+			default:				
 				break;
 				break;
 			}
 			}
 		}
 		}
 
 
+		log::warning("MemoryTexture. can't unpack data unknown file format");
+
 		init(16, 16, TF_R8G8B8A8);
 		init(16, 16, TF_R8G8B8A8);
 		fill_zero();
 		fill_zero();
 
 

+ 4 - 4
oxygine/src/Polygon.cpp

@@ -19,12 +19,12 @@ namespace oxygine
 
 
 	void Polygon::copyFrom(const Polygon &src, cloneOptions opt)
 	void Polygon::copyFrom(const Polygon &src, cloneOptions opt)
 	{
 	{
-		Sprite::copyFrom(src, opt);
+		_Sprite::copyFrom(src, opt);
 	}
 	}
 
 
 	void Polygon::serialize(serializedata* data)	
 	void Polygon::serialize(serializedata* data)	
 	{
 	{
-		Sprite::serialize(data);
+		_Sprite::serialize(data);
 
 
 		pugi::xml_node node = data->node;
 		pugi::xml_node node = data->node;
 		node.set_name("Polygon");
 		node.set_name("Polygon");
@@ -32,7 +32,7 @@ namespace oxygine
 
 
 	void Polygon::deserialize(const deserializedata* data)
 	void Polygon::deserialize(const deserializedata* data)
 	{
 	{
-		Sprite::deserialize(data);
+		_Sprite::deserialize(data);
 	}
 	}
 
 
 	std::string Polygon::dump(const dumpOptions &options) const
 	std::string Polygon::dump(const dumpOptions &options) const
@@ -45,7 +45,7 @@ namespace oxygine
 			stream << "vertices=" << _verticesSize/_vdecl->size << " ";
 			stream << "vertices=" << _verticesSize/_vdecl->size << " ";
 		}
 		}
 
 
-		stream << Sprite::dump(options);
+		stream << _Sprite::dump(options);
 		return stream.str();
 		return stream.str();
 	}
 	}
 	
 	

+ 11 - 2
oxygine/src/Polygon.h

@@ -7,7 +7,7 @@ namespace oxygine
 	class ResAnim;
 	class ResAnim;
 
 
 	DECLARE_SMART(Polygon, spPolygon);
 	DECLARE_SMART(Polygon, spPolygon);
-	class Polygon : public Sprite
+    class Polygon : public _Sprite
 	{
 	{
 	public:		
 	public:		
 		DECLARE_COPYCLONE_NEW(Polygon);
 		DECLARE_COPYCLONE_NEW(Polygon);
@@ -30,4 +30,13 @@ namespace oxygine
 		const unsigned char *_verticesData;
 		const unsigned char *_verticesData;
 		int _verticesSize;
 		int _verticesSize;
 	};
 	};
-}
+}
+
+#ifdef OX_EDITOR
+#include "EditorPolygon.h"
+#else
+namespace oxygine
+{
+    typedef Polygon _Polygon;
+}
+#endif

+ 15 - 6
oxygine/src/ProgressBar.cpp

@@ -51,7 +51,7 @@ namespace oxygine
 	
 	
 	void ProgressBar::copyFrom(const ProgressBar &src, cloneOptions opt)
 	void ProgressBar::copyFrom(const ProgressBar &src, cloneOptions opt)
 	{
 	{
-		Sprite::copyFrom(src, opt);
+		_Sprite::copyFrom(src, opt);
 		_progress = src._progress;
 		_progress = src._progress;
 		_direction = src._direction;
 		_direction = src._direction;
 		_originalFrame = src._originalFrame;
 		_originalFrame = src._originalFrame;
@@ -103,7 +103,7 @@ namespace oxygine
 			return;
 			return;
 		if (((_direction != __dir_radial_ccw) && (_direction != dir_radial_cw)) || (_progress == 1.0f))
 		if (((_direction != __dir_radial_ccw) && (_direction != dir_radial_cw)) || (_progress == 1.0f))
 		{
 		{
-			Sprite::doRender(rs);
+			_Sprite::doRender(rs);
 			return;
 			return;
 		}
 		}
 
 
@@ -115,7 +115,7 @@ namespace oxygine
 		{
 		{
 			renderer->setTexture(df.base, df.alpha, df.premultiplied);			
 			renderer->setTexture(df.base, df.alpha, df.premultiplied);			
 
 
-			RectF destRect = Sprite::getDestRect();
+			RectF destRect = _Sprite::getDestRect();
 
 
 			RectF srcRect = _frame.getSrcRect();
 			RectF srcRect = _frame.getSrcRect();
 			float u = srcRect.pos.x;
 			float u = srcRect.pos.x;
@@ -331,7 +331,7 @@ namespace oxygine
 		}
 		}
 		stream << " direction=" << dir << ""; 
 		stream << " direction=" << dir << ""; 
 
 
-		stream << "\n" << Sprite::dump(options);
+		stream << "\n" << _Sprite::dump(options);
 
 
 		return stream.str();
 		return stream.str();
 	}
 	}
@@ -372,8 +372,17 @@ namespace oxygine
 
 
 	void ProgressBar::serialize(serializedata* data)
 	void ProgressBar::serialize(serializedata* data)
 	{
 	{
-		Sprite::serialize(data);
+		_Sprite::serialize(data);
 		pugi::xml_node node = data->node;
 		pugi::xml_node node = data->node;
 		data->node.set_name("ProgressBar");
 		data->node.set_name("ProgressBar");
+        data->node.append_attribute("progress").set_value(_progress);
+        data->node.append_attribute("direction").set_value((int)_direction);
 	}
 	}
-}
+
+    void ProgressBar::deserialize(const deserializedata *data)
+    {
+        _Sprite::deserialize(data);
+        _direction = (direction)data->node.attribute("direction").as_int();
+        _progress = data->node.attribute("progress").as_float(1.0f);
+    }
+}

+ 11 - 3
oxygine/src/ProgressBar.h

@@ -6,7 +6,7 @@ namespace oxygine
 {
 {
 	DECLARE_SMART(ProgressBar, spProgressBar);
 	DECLARE_SMART(ProgressBar, spProgressBar);
 
 
-	class ProgressBar:public Sprite
+    class ProgressBar:public _Sprite
 	{
 	{
 	public:
 	public:
 		enum direction
 		enum direction
@@ -34,9 +34,11 @@ namespace oxygine
 		void setDirection(direction dir);
 		void setDirection(direction dir);
 
 
 		std::string dump(const dumpOptions &) const;
 		std::string dump(const dumpOptions &) const;
+
 		void serialize(serializedata* data);
 		void serialize(serializedata* data);
+        void deserialize(const deserializedata *data);
 		
 		
-		typedef Property<float, float, ProgressBar, &ProgressBar::getProgress, &ProgressBar::setProgress> TweenProgress;		
+        typedef Property<float, float, ProgressBar, &ProgressBar::getProgress, &ProgressBar::setProgress> TweenProgress;
 
 
 	private:
 	private:
 		void doRender(const RenderState &rs);
 		void doRender(const RenderState &rs);
@@ -50,4 +52,10 @@ namespace oxygine
 		direction _direction;
 		direction _direction;
 		AnimationFrame _originalFrame;
 		AnimationFrame _originalFrame;
 	};
 	};
-}
+}
+
+#ifdef OX_EDITOR
+#include "EditorProgressBar.h"
+#else
+typedef oxygine::ProgressBar BaseProgressBar;
+#endif

+ 76 - 61
oxygine/src/Property.h

@@ -1,70 +1,85 @@
 #pragma once
 #pragma once
 namespace oxygine
 namespace oxygine
 {
 {
+        template<typename Value, typename getValueRef, typename setValueRef, typename C, getValueRef(C::*GetF) () const, void (C::*SetF)(setValueRef)>
+        class Property0
+        {
+        public:
+                typedef C type;
+                typedef Value value;
+
+                Property0(getValueRef dest) :_dest(dest), _initialized(false){}
+
+                void init(type &t)
+                {
+                        _initialized = true;
+                        _src = get(t);
+                }
+
+                void init(getValueRef src)
+                {
+                        _initialized = true;
+                        _src = src;
+                }
+
+                void setSrc(type &t)
+                {
+                        set(t, _src);
+                }
+
+                void setDest(type &t)
+                {
+                        set(t, _dest);
+                }
+
+                void update(type &t, float p, const UpdateState &us)
+                {
+                        OX_ASSERT(_initialized);
+                        value v = interpolate(_src, _dest, p);
+                        set(t, v);
+                }
+
+                static getValueRef get(C &c)
+                {
+                        return (c.*GetF)();
+                }
+
+        private:
+                value _dest;
+                value _src;
+                bool _initialized;
+
+                static void set(C &c, setValueRef v)
+                {
+                        return (c.*SetF)(v);
+                }
+        };
+
 	template<typename Value, typename valueRef, typename C, valueRef(C::*GetF) () const, void (C::*SetF)(valueRef)>
 	template<typename Value, typename valueRef, typename C, valueRef(C::*GetF) () const, void (C::*SetF)(valueRef)>
-	class Property
+        class Property: public Property0<Value, valueRef, valueRef, C, GetF, SetF>
 	{
 	{
-	public:
-		typedef C type;
-		typedef Value value;
-
-		Property(valueRef dest) :_dest(dest), _initialized(false){}
-
-		void init(type &t)
-		{
-			_initialized = true;
-			_src = get(t);
-		}
-
-		void init(valueRef src)
-		{
-			_initialized = true;
-			_src = src;
-		}
-
-		void setSrc(type &t)
-		{
-			set(t, _src);
-		}
-
-		void setDest(type &t)
-		{
-			set(t, _dest);
-		}
-
-		void update(type &t, float p, const UpdateState &us)
-		{
-			OX_ASSERT(_initialized);
-			value v = interpolate(_src, _dest, p);
-			set(t, v);
-		}
-
-		static valueRef get(C &c)
-		{
-			return (c.*GetF)();
-		}
-
-	private:
-		value _dest;
-		value _src;
-		bool _initialized;
-
-
-
-		static void set(C &c, valueRef v)
-		{
-			return (c.*SetF)(v);
-		}
+        public:
+            Property(valueRef v):Property0<Value, valueRef, valueRef, C, GetF, SetF>(v){}
 	};
 	};
 
 
-	template<typename value0, typename value, typename valueRef, typename C, valueRef(C::*GetF) () const, void (C::*SetF)(valueRef)>
-	class Property2Args : public Property < value, valueRef, C, GetF, SetF >
-	{
-		typedef Property<value, valueRef, C, GetF, SetF> GS;
-	public:
-		Property2Args(value0 v1, value0 v2) :GS(value(v1, v2)){}
-		Property2Args(valueRef v) :GS(v){}
-	};
+        template<typename value0, typename value, typename valueRef, typename C, valueRef(C::*GetF) () const, void (C::*SetF)(valueRef)>
+        class Property2Args : public Property < value, valueRef, C, GetF, SetF >
+        {
+                typedef Property<value, valueRef, C, GetF, SetF> GS;
+        public:
+                Property2Args(value0 v1, value0 v2) :GS(value(v1, v2)){}
+                Property2Args(valueRef v) :GS(v){}
+        };
+
+
+        template<typename value0, typename value, typename getValueRef, typename setValueRef, typename C, getValueRef(C::*GetF) () const, void (C::*SetF)(setValueRef)>
+        class Property2Args2 : public Property0 < value, getValueRef, setValueRef, C, GetF, SetF >
+        {
+                typedef Property0<value, getValueRef, setValueRef, C, GetF, SetF> GS;
+        public:
+                Property2Args2(value0 v1, value0 v2) :GS(value(v1, v2)){}
+                Property2Args2(getValueRef v) :GS(v){}
+        };
 
 
 	template<typename value0, typename value, typename valueRef, typename C, valueRef(C::*GetF) () const, void (C::*SetF)(valueRef)>
 	template<typename value0, typename value, typename valueRef, typename C, valueRef(C::*GetF) () const, void (C::*SetF)(valueRef)>
 	class Property2Args1Arg : public Property < value, valueRef, C, GetF, SetF >
 	class Property2Args1Arg : public Property < value, valueRef, C, GetF, SetF >
@@ -81,4 +96,4 @@ namespace oxygine
 #define GetSet2Args		Property2Args
 #define GetSet2Args		Property2Args
 #define GetSet2Args1Arg Property2Args1Arg
 #define GetSet2Args1Arg Property2Args1Arg
 
 
-}
+}

+ 3 - 0
oxygine/src/Serializable.h

@@ -5,11 +5,14 @@ namespace oxygine
 {
 {
 	struct serializedata;
 	struct serializedata;
 	struct deserializedata;
 	struct deserializedata;
+	struct deserializeLinkData;
 
 
 	class Serializable
 	class Serializable
 	{
 	{
 	public:
 	public:
 		virtual void serialize(serializedata*){}
 		virtual void serialize(serializedata*){}
 		virtual void deserialize(const deserializedata*){}
 		virtual void deserialize(const deserializedata*){}
+		/**link phase, called when all actors already created*/
+		virtual void deserializeLink(const deserializeLinkData*){}
 	};
 	};
 }
 }

+ 23 - 0
oxygine/src/Serialize.cpp

@@ -24,6 +24,28 @@ namespace oxygine
 		return 0;
 		return 0;
 	}
 	}
 
 
+    static void link(pugi::xml_node node, spActor actor, spActor root)
+    {
+        deserializeLinkData data;
+        data.node = node;
+        data.root = root;
+        actor->deserializeLink(&data);
+
+        spActor child = actor->getFirstChild();
+        node = node.first_child();
+        while (child)
+        {
+            link(node, child, root);
+            node = node.next_sibling();
+            child = child->getNextSibling();
+        }
+    }
+
+    void deserializeLinkData::link(pugi::xml_node node, spActor actor)
+	{
+        oxygine::link(node, actor, actor);
+	}
+
 	spActor deserializedata::deser(pugi::xml_node node, const creator* factory)
 	spActor deserializedata::deser(pugi::xml_node node, const creator* factory)
 	{
 	{
 		deserializedata d;
 		deserializedata d;
@@ -32,6 +54,7 @@ namespace oxygine
 		const char *name = node.name();
 		const char *name = node.name();
 		spActor actor = factory->create(name);
 		spActor actor = factory->create(name);
 		actor->deserialize(&d);
 		actor->deserialize(&d);
+
 		return actor;
 		return actor;
 	}
 	}
 }
 }

+ 11 - 2
oxygine/src/Serialize.h

@@ -34,8 +34,17 @@ namespace oxygine
 	{
 	{
 		pugi::xml_node node;
 		pugi::xml_node node;
 		const creator *factory;
 		const creator *factory;
+
 		static spActor deser(pugi::xml_node node, const creator* factory);
 		static spActor deser(pugi::xml_node node, const creator* factory);
 	};
 	};
+
+	struct deserializeLinkData
+	{
+		pugi::xml_node node;
+		spActor root;
+
+        static void link(pugi::xml_node node, spActor root);
+	};
 	
 	
 
 
 	inline void setAttrV2(pugi::xml_node node, const char *name, const Vector2 &v, const Vector2 &def)
 	inline void setAttrV2(pugi::xml_node node, const char *name, const Vector2 &v, const Vector2 &def)
@@ -43,7 +52,7 @@ namespace oxygine
 		if (v == def)
 		if (v == def)
 			return;
 			return;
 		char str[255];
 		char str[255];
-		safe_sprintf(str, "%g,%g", v.x, v.y);
+        safe_sprintf(str, "%g,%g", v.x, v.y);
 		node.append_attribute(name).set_value(str);
 		node.append_attribute(name).set_value(str);
 	}
 	}
 
 
@@ -55,4 +64,4 @@ namespace oxygine
 			return;
 			return;
 		node.append_attribute(name).set_value(v);
 		node.append_attribute(name).set_value(v);
 	}
 	}
-}
+}

+ 5 - 5
oxygine/src/SlidingActor.cpp

@@ -184,7 +184,7 @@ namespace oxygine
 
 
 	void SlidingActor::handleEvent(Event *event)
 	void SlidingActor::handleEvent(Event *event)
 	{		
 	{		
-		Actor::handleEvent(event);
+		_Actor::handleEvent(event);
 	}
 	}
 
 
 	void SlidingActor::_newEvent(Event *event)
 	void SlidingActor::_newEvent(Event *event)
@@ -300,13 +300,13 @@ namespace oxygine
 					spActor act = safeSpCast<Actor>(_holded);
 					spActor act = safeSpCast<Actor>(_holded);
 					while(act && act.get() != _content.get())
 					while(act && act.get() != _content.get())
 					{
 					{
-						Actor::setPressed(act.get(), 0);
+						_Actor::setPressed(act.get(), 0);
 						//act->setPressed(0);
 						//act->setPressed(0);
 						//act->setOvered(0);
 						//act->setOvered(0);
 						act = act->getParent();
 						act = act->getParent();
 					}
 					}
 
 
-					Actor::setPressed(_content.get(), te->index);
+					_Actor::setPressed(_content.get(), te->index);
 					_holded = 0;
 					_holded = 0;
 				}
 				}
 			}			
 			}			
@@ -316,13 +316,13 @@ namespace oxygine
 
 
 	void SlidingActor::serialize(serializedata* data)
 	void SlidingActor::serialize(serializedata* data)
 	{
 	{
-		Actor::serialize(data);
+		_Actor::serialize(data);
 
 
 		data->node.set_name("SlidingActor");
 		data->node.set_name("SlidingActor");
 	}
 	}
 
 
 	void SlidingActor::deserialize(const deserializedata* data)
 	void SlidingActor::deserialize(const deserializedata* data)
 	{
 	{
-		Actor::deserialize(data);
+		_Actor::deserialize(data);
 	}
 	}
 }
 }

+ 7 - 2
oxygine/src/SlidingActor.h

@@ -10,7 +10,7 @@ namespace oxygine
 	DECLARE_SMART(SlidingActor, spSlidingActor);
 	DECLARE_SMART(SlidingActor, spSlidingActor);
 	DECLARE_SMART(DragHandler, spDragHandler);
 	DECLARE_SMART(DragHandler, spDragHandler);
 
 
-	class SlidingActor: public Actor
+	class SlidingActor: public _Actor
 	{
 	{
 	public:
 	public:
 		static void setDefaultTouchThreshold(float val);
 		static void setDefaultTouchThreshold(float val);
@@ -90,5 +90,10 @@ namespace oxygine
 
 
 		timeMS _lastIterTime;
 		timeMS _lastIterTime;
 	};
 	};
+}
 
 
-}
+#ifdef OX_EDITOR
+#include "EditorSlidingActor.h"
+#else
+typedef oxygine::SlidingActor BaseSlidingActor;
+#endif

+ 30 - 5
oxygine/src/Sprite.cpp

@@ -26,10 +26,12 @@ namespace oxygine
 
 
 	void Sprite::copyFrom(const Sprite &src, cloneOptions opt)
 	void Sprite::copyFrom(const Sprite &src, cloneOptions opt)
 	{
 	{
-		VStyleActor::copyFrom(src, opt);
+		_VStyleActor::copyFrom(src, opt);
 
 
-		_frame = src._frame;
-		_vstyle= src._vstyle;
+        _frame = src._frame;
+        animFrameChanged(_frame);
+
+        _vstyle= src._vstyle;
 		if (getManageResAnim())
 		if (getManageResAnim())
 		{
 		{
 			ResAnim *rs = _frame.getResAnim();
 			ResAnim *rs = _frame.getResAnim();
@@ -66,6 +68,23 @@ namespace oxygine
 		changeAnimFrame(f);
 		changeAnimFrame(f);
 	}
 	}
 
 
+	void Sprite::setRow(int row, int column)
+	{
+		const ResAnim *rs = getResAnim();
+		if (column == -1)
+			column = getColumn();
+		setAnimFrame(rs, column, row);
+
+	}
+
+	void Sprite::setColumn(int column, int row)
+	{
+		const ResAnim *rs = getResAnim();
+		if (row == -1)
+			row = getRow();
+		setAnimFrame(rs, column, row);
+	}
+
 	void Sprite::setResAnim(const ResAnim *resanim)
 	void Sprite::setResAnim(const ResAnim *resanim)
 	{
 	{
 		if (resanim)
 		if (resanim)
@@ -166,7 +185,7 @@ namespace oxygine
 
 
 	void Sprite::serialize(serializedata* data)
 	void Sprite::serialize(serializedata* data)
 	{
 	{
-		VStyleActor::serialize(data);		
+		_VStyleActor::serialize(data);
 
 
 		pugi::xml_node node = data->node;		
 		pugi::xml_node node = data->node;		
 		node.remove_attribute("size");
 		node.remove_attribute("size");
@@ -193,6 +212,11 @@ namespace oxygine
 			{
 			{
 				node.append_attribute("resanim").set_value(rs->getName().c_str());
 				node.append_attribute("resanim").set_value(rs->getName().c_str());
 			}
 			}
+
+			if (_frame.getColumn() != 0)
+				node.append_attribute("column").set_value(_frame.getColumn());
+			if (_frame.getRow() != 0)
+				node.append_attribute("row").set_value(_frame.getRow());
 		}
 		}
 
 
 		node.set_name("Sprite");
 		node.set_name("Sprite");
@@ -200,13 +224,14 @@ namespace oxygine
 
 
 	void Sprite::deserialize(const deserializedata* data)
 	void Sprite::deserialize(const deserializedata* data)
 	{
 	{
-        VStyleActor::deserialize(data);
+		_VStyleActor::deserialize(data);
 
 
 		pugi::xml_node node = data->node;
 		pugi::xml_node node = data->node;
 		const char *res = node.attribute("resanim").as_string(0);
 		const char *res = node.attribute("resanim").as_string(0);
 		if (res)
 		if (res)
 		{
 		{
 			ResAnim *rs = safeCast<ResAnim*>(data->factory->getResAnim(res));
 			ResAnim *rs = safeCast<ResAnim*>(data->factory->getResAnim(res));
+
 			setResAnim(rs);
 			setResAnim(rs);
 		}
 		}
 	}
 	}

+ 17 - 5
oxygine/src/Sprite.h

@@ -12,7 +12,7 @@ namespace oxygine
 	class ResAnim;			
 	class ResAnim;			
 
 
 	DECLARE_SMART(Sprite, spSprite);
 	DECLARE_SMART(Sprite, spSprite);
-	class Sprite : public VStyleActor
+    class Sprite : public _VStyleActor
 	{
 	{
 	public:
 	public:
 		DECLARE_COPYCLONE_NEW(Sprite);
 		DECLARE_COPYCLONE_NEW(Sprite);
@@ -26,14 +26,18 @@ namespace oxygine
 		bool					getManageResAnim() const {return (_flags & flag_manageResAnim) != 0;}
 		bool					getManageResAnim() const {return (_flags & flag_manageResAnim) != 0;}
 		const RectF&			getSrcRect() const {return _frame.getSrcRect();}
 		const RectF&			getSrcRect() const {return _frame.getSrcRect();}
 		const ResAnim*			getResAnim() const{return _frame.getResAnim();}
 		const ResAnim*			getResAnim() const{return _frame.getResAnim();}
+		int						getColumn() const {return _frame.getColumn();}
+		int						getRow() const {return _frame.getRow();}
 
 
 		/**load/unload atlas automatically or not*/
 		/**load/unload atlas automatically or not*/
 		void					setManageResAnim(bool manage);
 		void					setManageResAnim(bool manage);
 		/**Changes sprite image*/
 		/**Changes sprite image*/
 		void					setAnimFrame(const AnimationFrame &f);
 		void					setAnimFrame(const AnimationFrame &f);
-		/**Takes AnimationFrame from ResAnim and changes it. Shows assert is resanim is null. Using this method is more safe than 'setAnimFrame(const AnimationFrame &f)'*/
-		void					setAnimFrame(const ResAnim *resanim, int col = 0, int row = 0);		
+		/**Takes AnimationFrame from ResAnim and set it as current to Sprite. Shows assert is resanim is null. Using this method is more safe than 'setAnimFrame(const AnimationFrame &f)'*/
+		void					setAnimFrame(const ResAnim *resanim, int col = 0, int row = 0);
 		virtual void			setResAnim(const ResAnim *resanim);
 		virtual void			setResAnim(const ResAnim *resanim);
+		void					setRow(int row, int column = -1);
+		void					setColumn(int column, int row = -1);
 		
 		
 		void serialize(serializedata* data);
 		void serialize(serializedata* data);
 		void deserialize(const deserializedata* data);
 		void deserialize(const deserializedata* data);
@@ -52,7 +56,6 @@ namespace oxygine
 	};
 	};
 
 
 
 
-
 	/** A TweenAnim class
 	/** A TweenAnim class
 	*   use for playing per frame animation
 	*   use for playing per frame animation
 	\code
 	\code
@@ -87,4 +90,13 @@ namespace oxygine
 		int _colStart;
 		int _colStart;
 		int _colEnd;
 		int _colEnd;
 	};
 	};
-}
+}
+
+#ifdef OX_EDITOR
+#include "EditorSprite.h"
+#else
+namespace oxygine
+{
+	typedef Sprite _Sprite;
+}
+#endif

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