Browse Source

long lines are not breaking in multiline mode anymore, added option to TextStyle to break it
updated marmalade and mac
added filesystem doc and improved api

Denis Muratshin 11 years ago
parent
commit
fea1a4677e
40 changed files with 447 additions and 207 deletions
  1. 2 2
      .hg_archival.txt
  2. 1 0
      .hgignore
  3. 8 0
      doc/Home.md
  4. 111 0
      doc/filesystem.md
  5. BIN
      doc/img/DebugActor.png
  6. BIN
      doc/img/actor.gif
  7. BIN
      doc/img/actor.png
  8. 0 10
      examples/Demo/data/app.config.txt
  9. 10 1
      examples/Demo/data/app.icf
  10. BIN
      examples/Demo/data/demo/logo2.png
  11. 12 12
      examples/Demo/proj.ios/demo_ios.xcodeproj/project.pbxproj
  12. 12 12
      examples/Demo/proj.macosx/demo_macosx.xcodeproj/project.pbxproj
  13. 19 4
      examples/Demo/proj.win32/Demo_vs2013.sln
  14. 0 10
      examples/DemoBox2D/data/app.config.txt
  15. 10 1
      examples/DemoBox2D/data/app.icf
  16. 9 0
      examples/Game/part1/data/app.icf
  17. 9 0
      examples/Game/part2/data/app.icf
  18. 9 0
      examples/Game/part3/data/app.icf
  19. 9 0
      examples/Game/part4/data/app.icf
  20. 0 10
      examples/HelloWorld/data/app.config.txt
  21. 10 1
      examples/HelloWorld/data/app.icf
  22. 22 26
      examples/HelloWorld/proj.ios/HelloWorld_ios.xcodeproj/project.pbxproj
  23. 22 26
      examples/HelloWorld/proj.macosx/HelloWorld_macosx.xcodeproj/project.pbxproj
  24. 0 10
      examples/Match3/data/app.config.txt
  25. 10 1
      examples/Match3/data/app.icf
  26. 20 24
      examples/Match3/proj.ios/Match3_ios.xcodeproj/project.pbxproj
  27. 20 24
      examples/Match3/proj.macosx/Match3_macosx.xcodeproj/project.pbxproj
  28. 10 1
      examples/TutorialResources/data/app.icf
  29. 1 1
      oxygine/src/TextActor.h
  30. 15 0
      oxygine/src/TextField.cpp
  31. 3 0
      oxygine/src/TextField.h
  32. 3 1
      oxygine/src/TextStyle.h
  33. 5 3
      oxygine/src/Tweener.h
  34. 4 4
      oxygine/src/core/ZipFileSystem.cpp
  35. 15 10
      oxygine/src/core/file.cpp
  36. 47 8
      oxygine/src/core/file.h
  37. 4 0
      oxygine/src/core/log.cpp
  38. 1 1
      oxygine/src/core/oxygine.h
  39. 7 1
      oxygine/src/text_utils/Aligner.cpp
  40. 7 3
      tools/others/update_examples_entry.py

+ 2 - 2
.hg_archival.txt

@@ -1,5 +1,5 @@
 repo: b6d71054df5712e643a0685bc3ba54b123db5729
-node: f2da8be5c148d1baa35efdec6f60c0dceb453b81
+node: 87a8c46f051d17efdf9b55585fee8dc5b99adb52
 branch: default
 latesttag: oldrender
-latesttagdistance: 330
+latesttagdistance: 339

+ 1 - 0
.hgignore

@@ -130,5 +130,6 @@ examples/TutorialResources/data/*.dll
 examples/Demo/proj.win32/Win32/
 data.js
 examples/HelloWorld/proj.win32/Win32/
+ident.free
 syntax: regexp
 ^build/

+ 8 - 0
doc/Home.md

@@ -0,0 +1,8 @@
+#Oxygine Wiki
+Work in progress...
+
+1. [**Actors and SceneGraph**](actors)
+2. [Working with files](filesystem)
+3. [Debugging, Profiling and Logging](debug) 
+4. [Fonts](fonts)
+5. [Shaders](shaders)

+ 111 - 0
doc/filesystem.md

@@ -0,0 +1,111 @@
+#File System
+
+##Typical usage example 
+Read file, modify it and save back:
+	
+	#include "file.h" 
+
+	void test()
+	{
+		oxygine::file data;
+	
+		//read entire file into buffer with stdio flags "rb"
+		oxygine::file::read("user", data);
+	
+		//modify buffer
+		data[0] += 1
+		data[1] += 2
+		data.push_back(3);
+	
+		//write file back from buffer with stdio flags "wb"
+		oxygine::file::write("user", data);
+	}
+	
+
+**oxygine::file** is intermediate buffer for storing data when working with files. It uses std::vector with unsigned chars internally.
+
+ 
+##Low level
+Namespace **oxygine::file** has also low level functions to working with files.
+	
+
+	oxygine::file::handle h = oxygine::file::open("user", "w");
+	oxygine::file::save(h, "Hello World", strlen("Hello World"));	
+	oxygine::file::close(h);
+
+
+##Working with missing files
+
+Imagine you want to read file and work with loaded data. But you not sure that file is exits:
+
+	file::read("user", data);
+	//user function
+	load_user(data);
+
+If file "user" is missing you would see error:
+
+	>> error: can't open file: user
+	>> error: Assert! 941 d:\oxygine-framework\oxygine\src\core\oxygine.cpp
+	>> Assertion failed!
+
+To avoid error you should pass additional argument:
+
+	file::read("user", data, ep_ignore_error);
+	if (!data.empty())
+		load_user(data);
+
+This code will show warning if file is missing:
+
+	file::read("user", data, ep_show_warning);
+	if (!data.empty())
+		load_user(data);
+
+	>> warning: can't open file: user
+	
+
+In examples above third argument is **error_policy** enum. It has 3 values:
+
+* ep_show_error. It is default and most strict value. Shows assert and prints error to log.
+* ep_show_warning. Prints warning to log.
+* ep_ignore_error. Does nothing.
+
+
+
+Or you could check it with **oxygine::file::exists** function. It is slower than solutions above:
+
+	if (oxygine::file::exists("user"))
+	{
+		file::read("user", data);
+		//user function
+		load_user(data);
+	}
+
+
+
+##Mounting and zipped archieves to filesytem
+
+First step is mount ZipFileSystem. More than one archieve could be mounted at once:
+
+	#include "core/ZipFileSystem.h"
+
+	oxygine::ZipFileSystem zp;
+
+	void mount()
+	{		
+		zp.add("pack1.zip")
+		zp.add("pack2.zip")
+		zp.add("pack3.zip")
+	
+		oxygine::file::mount(&zp);		
+	}
+
+Read any data from file as usual:
+
+	void read_packs()
+	{
+		oxygine::file::buffer data;
+		oxygine::file::read("filename", data);
+	}
+
+
+> ZipFileSystem is read only.

BIN
doc/img/DebugActor.png


BIN
doc/img/actor.gif


BIN
doc/img/actor.png


+ 0 - 10
examples/Demo/data/app.config.txt

@@ -1,10 +0,0 @@
-# This .config.txt file documents configuration settings for your
-# application
-# The syntax is similar to that in .icf files:
-#
-# [GroupName]
-# Setting     Documentation for setting
-#
-# e.g.
-# [MyApplicationGroup]
-# MySetting   Description of what MySetting is for, its default values, etc

+ 10 - 1
examples/Demo/data/app.icf

@@ -1,8 +1,9 @@
 [S3E]
 MemSize = 64777216
-DispFixRot=2
+DispFixRot=Landscape
 SysGlesVersion=2
 SysStackSize=131072
+MemMgrMaxAllocWarning=0
 
 [Trace]
 ALL=0
@@ -17,3 +18,11 @@ FILE=0
 SURFACE=0
 MEMORY=0
 ERROR=0
+IW_GL=0
+SURFACE=0
+SOCKET=0
+JPEG=0
+VIDEO=0
+LOADER=0
+FILE=0
+IWCRT=0

BIN
examples/Demo/data/demo/logo2.png


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

@@ -25,9 +25,9 @@
 		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/app.config.txt in Sources */ = {isa = PBXBuildFile; fileRef = 04FE4D4FB640E0DF92DFB865 /* ../data/app.config.txt */; };
-		3A631A475DE035FC53ADE5EA /* ../data/demo in Sources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* ../data/demo */; };
-		CD59C69314E9E74CD0A11E03 /* ../data/ext in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/ext */; };
+		1E839D002B2BA83FC83A695A /* ../data/demo in Sources */ = {isa = PBXBuildFile; fileRef = 04FE4D4FB640E0DF92DFB865 /* ../data/demo */; };
+		3A631A475DE035FC53ADE5EA /* ../data/ext in Sources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* ../data/ext */; };
+		CD59C69314E9E74CD0A11E03 /* ../data/ident.free in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/ident.free */; };
 		EFF139F8BA484314F7AAF645 /* ../data/images in Sources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* ../data/images */; };
 		F2CFD518E4E2E05ECEDBB262 /* ../data/xmls in Sources */ = {isa = PBXBuildFile; fileRef = BA41FC88D76540A6905224D6 /* ../data/xmls */; };
 
@@ -100,9 +100,9 @@
 		CAD9D6A98986EA8082368448 /* ../src/TestUserShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestUserShader.h; path = ../src/TestUserShader.h; sourceTree = "<group>"; };
 		67194AC90FEA68E7C96E6907 /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
 		5AFC0664D7BA80AE2A75BF0E /* ../src/test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = test.h; path = ../src/test.h; sourceTree = "<group>"; };
-		04FE4D4FB640E0DF92DFB865 /* ../data/app.config.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = app.config.txt; path = ../data/app.config.txt; sourceTree = "<group>"; };
-		7F3B12E3C9D554D9FE28101D /* ../data/demo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = demo; path = ../data/demo; sourceTree = "<group>"; };
-		F6123B1E6FE4471A00F49751 /* ../data/ext */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = ext; path = ../data/ext; 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/ident.free */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = ident.free; path = ../data/ident.free; sourceTree = "<group>"; };
 		5DE458993031811A4C7D28C1 /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
 		BA41FC88D76540A6905224D6 /* ../data/xmls */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = xmls; path = ../data/xmls; sourceTree = "<group>"; };
 
@@ -183,9 +183,9 @@
 		04998CF617F8A933003441C3 /* Supporting Files */ = {
 			isa = PBXGroup;
 			children = (
-				04FE4D4FB640E0DF92DFB865 /* app.config.txt */, 
-				7F3B12E3C9D554D9FE28101D /* demo */, 
-				F6123B1E6FE4471A00F49751 /* ext */, 
+				04FE4D4FB640E0DF92DFB865 /* demo */, 
+				7F3B12E3C9D554D9FE28101D /* ext */, 
+				F6123B1E6FE4471A00F49751 /* ident.free */, 
 				5DE458993031811A4C7D28C1 /* images */, 
 				BA41FC88D76540A6905224D6 /* xmls */, 
 
@@ -319,9 +319,9 @@
 			buildActionMask = 2147483647;
 			files = (
 				04E9AD3F1876FE84006A7317 /* Images.xcassets in Resources */,
-				1E839D002B2BA83FC83A695A /* app.config.txt */, 
-				3A631A475DE035FC53ADE5EA /* demo */, 
-				CD59C69314E9E74CD0A11E03 /* ext */, 
+				1E839D002B2BA83FC83A695A /* demo */, 
+				3A631A475DE035FC53ADE5EA /* ext */, 
+				CD59C69314E9E74CD0A11E03 /* ident.free */, 
 				EFF139F8BA484314F7AAF645 /* images */, 
 				F2CFD518E4E2E05ECEDBB262 /* xmls */, 
 

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

@@ -18,9 +18,9 @@
 		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/app.config.txt in Sources */ = {isa = PBXBuildFile; fileRef = 04FE4D4FB640E0DF92DFB865 /* ../data/app.config.txt */; };
-		3A631A475DE035FC53ADE5EA /* ../data/demo in Sources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* ../data/demo */; };
-		CD59C69314E9E74CD0A11E03 /* ../data/ext in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/ext */; };
+		1E839D002B2BA83FC83A695A /* ../data/demo in Sources */ = {isa = PBXBuildFile; fileRef = 04FE4D4FB640E0DF92DFB865 /* ../data/demo */; };
+		3A631A475DE035FC53ADE5EA /* ../data/ext in Sources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* ../data/ext */; };
+		CD59C69314E9E74CD0A11E03 /* ../data/ident.free in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/ident.free */; };
 		EFF139F8BA484314F7AAF645 /* ../data/images in Sources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* ../data/images */; };
 		F2CFD518E4E2E05ECEDBB262 /* ../data/xmls in Sources */ = {isa = PBXBuildFile; fileRef = BA41FC88D76540A6905224D6 /* ../data/xmls */; };
 
@@ -114,9 +114,9 @@
 		CAD9D6A98986EA8082368448 /* ../src/TestUserShader.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = TestUserShader.h; path = ../src/TestUserShader.h; sourceTree = "<group>"; };
 		67194AC90FEA68E7C96E6907 /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
 		5AFC0664D7BA80AE2A75BF0E /* ../src/test.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = test.h; path = ../src/test.h; sourceTree = "<group>"; };
-		04FE4D4FB640E0DF92DFB865 /* ../data/app.config.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = app.config.txt; path = ../data/app.config.txt; sourceTree = "<group>"; };
-		7F3B12E3C9D554D9FE28101D /* ../data/demo */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = demo; path = ../data/demo; sourceTree = "<group>"; };
-		F6123B1E6FE4471A00F49751 /* ../data/ext */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = ext; path = ../data/ext; 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/ident.free */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = ident.free; path = ../data/ident.free; sourceTree = "<group>"; };
 		5DE458993031811A4C7D28C1 /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
 		BA41FC88D76540A6905224D6 /* ../data/xmls */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = xmls; path = ../data/xmls; sourceTree = "<group>"; };
 
@@ -207,9 +207,9 @@
 		049B57381871FBE900EF3C66 /* Supporting Files */ = {
 			isa = PBXGroup;
 			children = (
-				04FE4D4FB640E0DF92DFB865 /* app.config.txt */, 
-				7F3B12E3C9D554D9FE28101D /* demo */, 
-				F6123B1E6FE4471A00F49751 /* ext */, 
+				04FE4D4FB640E0DF92DFB865 /* demo */, 
+				7F3B12E3C9D554D9FE28101D /* ext */, 
+				F6123B1E6FE4471A00F49751 /* ident.free */, 
 				5DE458993031811A4C7D28C1 /* images */, 
 				BA41FC88D76540A6905224D6 /* xmls */, 
 
@@ -359,9 +359,9 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				1E839D002B2BA83FC83A695A /* app.config.txt */, 
-				3A631A475DE035FC53ADE5EA /* demo */, 
-				CD59C69314E9E74CD0A11E03 /* ext */, 
+				1E839D002B2BA83FC83A695A /* demo */, 
+				3A631A475DE035FC53ADE5EA /* ext */, 
+				CD59C69314E9E74CD0A11E03 /* ident.free */, 
 				EFF139F8BA484314F7AAF645 /* images */, 
 				F2CFD518E4E2E05ECEDBB262 /* xmls */, 
 

+ 19 - 4
examples/Demo/proj.win32/Demo_vs2013.sln

@@ -1,11 +1,10 @@
 
 Microsoft Visual Studio Solution File, Format Version 12.00
 # Visual Studio 2013
-VisualStudioVersion = 12.0.30501.0
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo", "Demo_vs2013.vcxproj", "{2B4D7491-A4F8-4606-B0E3-2A1FCE3C46C4}"
+VisualStudioVersion = 12.0.21005.1
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Demo_vs2013", "Demo_vs2013.vcxproj", "{2B4D7491-A4F8-4606-B0E3-2A1FCE3C46C4}"
 EndProject
-Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "oxygine_vs2013", "..\..\..\oxygine\SDL\win32\oxygine_vs2013.vcxproj", "{52411305-CFE1-4FA8-9885-5729BFC816CF}"
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "{project}", "../../../\oxygine\SDL\win32\oxygine_vs2013.vcxproj", "{52411305-CFE1-4FA8-9885-5729BFC816CF}"
 EndProject
 Global
 	GlobalSection(SolutionConfigurationPlatforms) = preSolution
@@ -21,6 +20,22 @@ Global
 		{2B4D7491-A4F8-4606-B0E3-2A1FCE3C46C4}.Release|Win32.ActiveCfg = Release|Win32
 		{2B4D7491-A4F8-4606-B0E3-2A1FCE3C46C4}.Release|Win32.Build.0 = Release|Win32
 		{2B4D7491-A4F8-4606-B0E3-2A1FCE3C46C4}.Release|x64.ActiveCfg = Release|Win32
+		{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Win32.ActiveCfg = Debug|Win32
+		{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|Win32.Build.0 = Debug|Win32
+		{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|x64.ActiveCfg = Debug|x64
+		{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Debug|x64.Build.0 = Debug|x64
+		{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Win32.ActiveCfg = Release|Win32
+		{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|Win32.Build.0 = Release|Win32
+		{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|x64.ActiveCfg = Release|x64
+		{81CE8DAF-EBB2-4761-8E45-B71ABCCA8C68}.Release|x64.Build.0 = Release|x64
+		{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Debug|Win32.ActiveCfg = Debug|Win32
+		{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Debug|Win32.Build.0 = Debug|Win32
+		{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Debug|x64.ActiveCfg = Debug|x64
+		{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Debug|x64.Build.0 = Debug|x64
+		{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Release|Win32.ActiveCfg = Release|Win32
+		{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Release|Win32.Build.0 = Release|Win32
+		{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Release|x64.ActiveCfg = Release|x64
+		{DA956FD3-E142-46F2-9DD5-C78BEBB56B7A}.Release|x64.Build.0 = Release|x64
 		{52411305-CFE1-4FA8-9885-5729BFC816CF}.Debug|Win32.ActiveCfg = Debug|Win32
 		{52411305-CFE1-4FA8-9885-5729BFC816CF}.Debug|Win32.Build.0 = Debug|Win32
 		{52411305-CFE1-4FA8-9885-5729BFC816CF}.Debug|x64.ActiveCfg = Debug|Win32

+ 0 - 10
examples/DemoBox2D/data/app.config.txt

@@ -1,10 +0,0 @@
-# This .config.txt file documents configuration settings for your
-# application
-# The syntax is similar to that in .icf files:
-#
-# [GroupName]
-# Setting     Documentation for setting
-#
-# e.g.
-# [MyApplicationGroup]
-# MySetting   Description of what MySetting is for, its default values, etc

+ 10 - 1
examples/DemoBox2D/data/app.icf

@@ -1,8 +1,9 @@
 [S3E]
 MemSize = 64777216
-DispFixRot=2
+DispFixRot=Landscape
 SysGlesVersion=2
 SysStackSize=131072
+MemMgrMaxAllocWarning=0
 
 [Trace]
 ALL=0
@@ -17,3 +18,11 @@ FILE=0
 SURFACE=0
 MEMORY=0
 ERROR=0
+IW_GL=0
+SURFACE=0
+SOCKET=0
+JPEG=0
+VIDEO=0
+LOADER=0
+FILE=0
+IWCRT=0

+ 9 - 0
examples/Game/part1/data/app.icf

@@ -3,6 +3,7 @@ MemSize = 64777216
 DispFixRot=Landscape
 SysGlesVersion=2
 SysStackSize=131072
+MemMgrMaxAllocWarning=0
 
 [Trace]
 ALL=0
@@ -17,3 +18,11 @@ FILE=0
 SURFACE=0
 MEMORY=0
 ERROR=0
+IW_GL=0
+SURFACE=0
+SOCKET=0
+JPEG=0
+VIDEO=0
+LOADER=0
+FILE=0
+IWCRT=0

+ 9 - 0
examples/Game/part2/data/app.icf

@@ -3,6 +3,7 @@ MemSize = 64777216
 DispFixRot=Landscape
 SysGlesVersion=2
 SysStackSize=131072
+MemMgrMaxAllocWarning=0
 
 [Trace]
 ALL=0
@@ -17,3 +18,11 @@ FILE=0
 SURFACE=0
 MEMORY=0
 ERROR=0
+IW_GL=0
+SURFACE=0
+SOCKET=0
+JPEG=0
+VIDEO=0
+LOADER=0
+FILE=0
+IWCRT=0

+ 9 - 0
examples/Game/part3/data/app.icf

@@ -3,6 +3,7 @@ MemSize = 64777216
 DispFixRot=Landscape
 SysGlesVersion=2
 SysStackSize=131072
+MemMgrMaxAllocWarning=0
 
 [Trace]
 ALL=0
@@ -17,3 +18,11 @@ FILE=0
 SURFACE=0
 MEMORY=0
 ERROR=0
+IW_GL=0
+SURFACE=0
+SOCKET=0
+JPEG=0
+VIDEO=0
+LOADER=0
+FILE=0
+IWCRT=0

+ 9 - 0
examples/Game/part4/data/app.icf

@@ -3,6 +3,7 @@ MemSize = 64777216
 DispFixRot=Landscape
 SysGlesVersion=2
 SysStackSize=131072
+MemMgrMaxAllocWarning=0
 
 [Trace]
 ALL=0
@@ -17,3 +18,11 @@ FILE=0
 SURFACE=0
 MEMORY=0
 ERROR=0
+IW_GL=0
+SURFACE=0
+SOCKET=0
+JPEG=0
+VIDEO=0
+LOADER=0
+FILE=0
+IWCRT=0

+ 0 - 10
examples/HelloWorld/data/app.config.txt

@@ -1,10 +0,0 @@
-# This .config.txt file documents configuration settings for your
-# application
-# The syntax is similar to that in .icf files:
-#
-# [GroupName]
-# Setting     Documentation for setting
-#
-# e.g.
-# [MyApplicationGroup]
-# MySetting   Description of what MySetting is for, its default values, etc

+ 10 - 1
examples/HelloWorld/data/app.icf

@@ -1,8 +1,9 @@
 [S3E]
 MemSize = 64777216
-DispFixRot=2
+DispFixRot=Landscape
 SysGlesVersion=2
 SysStackSize=131072
+MemMgrMaxAllocWarning=0
 
 [Trace]
 ALL=0
@@ -17,3 +18,11 @@ FILE=0
 SURFACE=0
 MEMORY=0
 ERROR=0
+IW_GL=0
+SURFACE=0
+SOCKET=0
+JPEG=0
+VIDEO=0
+LOADER=0
+FILE=0
+IWCRT=0

+ 22 - 26
examples/HelloWorld/proj.ios/HelloWorld_ios.xcodeproj/project.pbxproj

@@ -24,12 +24,11 @@
 		04E9AD3F1876FE84006A7317 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 04E9AD3E1876FE84006A7317 /* Images.xcassets */; };
 		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/app.config.txt in Sources */ = {isa = PBXBuildFile; fileRef = 4DA100C319512824B7570663 /* ../data/app.config.txt */; };
-		1E839D002B2BA83FC83A695A /* ../data/data.js in Sources */ = {isa = PBXBuildFile; fileRef = 04FE4D4FB640E0DF92DFB865 /* ../data/data.js */; };
-		3A631A475DE035FC53ADE5EA /* ../data/fonts in Sources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* ../data/fonts */; };
-		CD59C69314E9E74CD0A11E03 /* ../data/images in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/images */; };
-		EFF139F8BA484314F7AAF645 /* ../data/pack.py in Sources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* ../data/pack.py */; };
-		F2CFD518E4E2E05ECEDBB262 /* ../data/res.xml in Sources */ = {isa = PBXBuildFile; fileRef = BA41FC88D76540A6905224D6 /* ../data/res.xml */; };
+		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 */
 
@@ -82,13 +81,12 @@
 		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>"; };
-		2CE4BD5BB9DEF92439C0AB58 /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
-		4DA100C319512824B7570663 /* ../data/app.config.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = app.config.txt; path = ../data/app.config.txt; sourceTree = "<group>"; };
-		04FE4D4FB640E0DF92DFB865 /* ../data/data.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = data.js; path = ../data/data.js; sourceTree = "<group>"; };
-		7F3B12E3C9D554D9FE28101D /* ../data/fonts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = fonts; path = ../data/fonts; sourceTree = "<group>"; };
-		F6123B1E6FE4471A00F49751 /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
-		5DE458993031811A4C7D28C1 /* ../data/pack.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = pack.py; path = ../data/pack.py; sourceTree = "<group>"; };
-		BA41FC88D76540A6905224D6 /* ../data/res.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = res.xml; path = ../data/res.xml; 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 */
 
@@ -167,12 +165,11 @@
 		04998CF617F8A933003441C3 /* Supporting Files */ = {
 			isa = PBXGroup;
 			children = (
-				4DA100C319512824B7570663 /* app.config.txt */, 
-				04FE4D4FB640E0DF92DFB865 /* 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";
@@ -191,7 +188,7 @@
 			children = (
 				360377333740D8A2FD15BBE6 /* entry_point.cpp */, 
 				0BF9628FC8D38F9748F0CDEB /* example.cpp */, 
-				2CE4BD5BB9DEF92439C0AB58 /* example.h */, 
+				BA41FC88D76540A6905224D6 /* example.h */, 
 
 			);
 			name = src;
@@ -287,12 +284,11 @@
 			buildActionMask = 2147483647;
 			files = (
 				04E9AD3F1876FE84006A7317 /* Images.xcassets in Resources */,
-				C8860D93875589970329DCCD /* app.config.txt */, 
-				1E839D002B2BA83FC83A695A /* data.js */, 
-				3A631A475DE035FC53ADE5EA /* fonts */, 
-				CD59C69314E9E74CD0A11E03 /* images */, 
-				EFF139F8BA484314F7AAF645 /* pack.py */, 
-				F2CFD518E4E2E05ECEDBB262 /* res.xml */, 
+				C8860D93875589970329DCCD /* data.js */, 
+				1E839D002B2BA83FC83A695A /* fonts */, 
+				3A631A475DE035FC53ADE5EA /* images */, 
+				CD59C69314E9E74CD0A11E03 /* pack.py */, 
+				EFF139F8BA484314F7AAF645 /* res.xml */, 
 
 			);
 			runOnlyForDeploymentPostprocessing = 0;

+ 22 - 26
examples/HelloWorld/proj.macosx/HelloWorld_macosx.xcodeproj/project.pbxproj

@@ -17,12 +17,11 @@
 		049B574A1871FBE900EF3C66 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 049B57491871FBE900EF3C66 /* Images.xcassets */; };
 		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/app.config.txt in Sources */ = {isa = PBXBuildFile; fileRef = 4DA100C319512824B7570663 /* ../data/app.config.txt */; };
-		1E839D002B2BA83FC83A695A /* ../data/data.js in Sources */ = {isa = PBXBuildFile; fileRef = 04FE4D4FB640E0DF92DFB865 /* ../data/data.js */; };
-		3A631A475DE035FC53ADE5EA /* ../data/fonts in Sources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* ../data/fonts */; };
-		CD59C69314E9E74CD0A11E03 /* ../data/images in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/images */; };
-		EFF139F8BA484314F7AAF645 /* ../data/pack.py in Sources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* ../data/pack.py */; };
-		F2CFD518E4E2E05ECEDBB262 /* ../data/res.xml in Sources */ = {isa = PBXBuildFile; fileRef = BA41FC88D76540A6905224D6 /* ../data/res.xml */; };
+		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 */
@@ -96,13 +95,12 @@
 		049B57501871FBE900EF3C66 /* XCTest.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = XCTest.framework; path = Library/Frameworks/XCTest.framework; sourceTree = DEVELOPER_DIR; };
 		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>"; };
-		2CE4BD5BB9DEF92439C0AB58 /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
-		4DA100C319512824B7570663 /* ../data/app.config.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = app.config.txt; path = ../data/app.config.txt; sourceTree = "<group>"; };
-		04FE4D4FB640E0DF92DFB865 /* ../data/data.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = data.js; path = ../data/data.js; sourceTree = "<group>"; };
-		7F3B12E3C9D554D9FE28101D /* ../data/fonts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = fonts; path = ../data/fonts; sourceTree = "<group>"; };
-		F6123B1E6FE4471A00F49751 /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
-		5DE458993031811A4C7D28C1 /* ../data/pack.py */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = pack.py; path = ../data/pack.py; sourceTree = "<group>"; };
-		BA41FC88D76540A6905224D6 /* ../data/res.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = res.xml; path = ../data/res.xml; 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>"; };
@@ -191,12 +189,11 @@
 		049B57381871FBE900EF3C66 /* Supporting Files */ = {
 			isa = PBXGroup;
 			children = (
-				4DA100C319512824B7570663 /* app.config.txt */, 
-				04FE4D4FB640E0DF92DFB865 /* 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 */,
 			);
@@ -208,7 +205,7 @@
 			children = (
 				360377333740D8A2FD15BBE6 /* entry_point.cpp */, 
 				0BF9628FC8D38F9748F0CDEB /* example.cpp */, 
-				2CE4BD5BB9DEF92439C0AB58 /* example.h */, 
+				BA41FC88D76540A6905224D6 /* example.h */, 
 
 			);
 			name = src;
@@ -327,12 +324,11 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				C8860D93875589970329DCCD /* app.config.txt */, 
-				1E839D002B2BA83FC83A695A /* data.js */, 
-				3A631A475DE035FC53ADE5EA /* fonts */, 
-				CD59C69314E9E74CD0A11E03 /* images */, 
-				EFF139F8BA484314F7AAF645 /* pack.py */, 
-				F2CFD518E4E2E05ECEDBB262 /* res.xml */, 
+				C8860D93875589970329DCCD /* data.js */, 
+				1E839D002B2BA83FC83A695A /* fonts */, 
+				3A631A475DE035FC53ADE5EA /* images */, 
+				CD59C69314E9E74CD0A11E03 /* pack.py */, 
+				EFF139F8BA484314F7AAF645 /* res.xml */, 
 
 				049B574A1871FBE900EF3C66 /* Images.xcassets in Resources */,
 			);

+ 0 - 10
examples/Match3/data/app.config.txt

@@ -1,10 +0,0 @@
-# This .config.txt file documents configuration settings for your
-# application
-# The syntax is similar to that in .icf files:
-#
-# [GroupName]
-# Setting     Documentation for setting
-#
-# e.g.
-# [MyApplicationGroup]
-# MySetting   Description of what MySetting is for, its default values, etc

+ 10 - 1
examples/Match3/data/app.icf

@@ -1,8 +1,9 @@
 [S3E]
 MemSize = 64777216
-DispFixRot=2
+DispFixRot=Landscape
 SysGlesVersion=2
 SysStackSize=131072
+MemMgrMaxAllocWarning=0
 
 [Trace]
 ALL=0
@@ -17,3 +18,11 @@ FILE=0
 SURFACE=0
 MEMORY=0
 ERROR=0
+IW_GL=0
+SURFACE=0
+SOCKET=0
+JPEG=0
+VIDEO=0
+LOADER=0
+FILE=0
+IWCRT=0

+ 20 - 24
examples/Match3/proj.ios/Match3_ios.xcodeproj/project.pbxproj

@@ -27,10 +27,9 @@
 		C8860D93875589970329DCCD /* ../src/gameframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DA100C319512824B7570663 /* ../src/gameframe.cpp */; };
 		1E839D002B2BA83FC83A695A /* ../src/jewels.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04FE4D4FB640E0DF92DFB865 /* ../src/jewels.cpp */; };
 		3A631A475DE035FC53ADE5EA /* ../src/shared.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* ../src/shared.cpp */; };
-		CD59C69314E9E74CD0A11E03 /* ../data/app.config.txt in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/app.config.txt */; };
-		EFF139F8BA484314F7AAF645 /* ../data/fonts in Sources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* ../data/fonts */; };
-		F2CFD518E4E2E05ECEDBB262 /* ../data/images in Sources */ = {isa = PBXBuildFile; fileRef = BA41FC88D76540A6905224D6 /* ../data/images */; };
-		693088A7AB377368EE4A018E /* ../data/resources.xml in Sources */ = {isa = PBXBuildFile; fileRef = 2CE4BD5BB9DEF92439C0AB58 /* ../data/resources.xml */; };
+		CD59C69314E9E74CD0A11E03 /* ../data/fonts in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/fonts */; };
+		EFF139F8BA484314F7AAF645 /* ../data/images in Sources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* ../data/images */; };
+		F2CFD518E4E2E05ECEDBB262 /* ../data/resources.xml in Sources */ = {isa = PBXBuildFile; fileRef = BA41FC88D76540A6905224D6 /* ../data/resources.xml */; };
 
 /* End PBXBuildFile section */
 
@@ -86,14 +85,13 @@
 		4DA100C319512824B7570663 /* ../src/gameframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gameframe.cpp; path = ../src/gameframe.cpp; sourceTree = "<group>"; };
 		04FE4D4FB640E0DF92DFB865 /* ../src/jewels.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = jewels.cpp; path = ../src/jewels.cpp; sourceTree = "<group>"; };
 		7F3B12E3C9D554D9FE28101D /* ../src/shared.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = shared.cpp; path = ../src/shared.cpp; sourceTree = "<group>"; };
-		F196143B0370A9D348494ACC /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
-		7746CA7A63049ED8F7D6BF42 /* ../src/gameframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gameframe.h; path = ../src/gameframe.h; sourceTree = "<group>"; };
-		D954BD82D7708B65A08FB6B9 /* ../src/jewels.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jewels.h; path = ../src/jewels.h; sourceTree = "<group>"; };
-		BD0E956CC3A2F7EB94822B5C /* ../src/shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = shared.h; path = ../src/shared.h; sourceTree = "<group>"; };
-		F6123B1E6FE4471A00F49751 /* ../data/app.config.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = app.config.txt; path = ../data/app.config.txt; sourceTree = "<group>"; };
-		5DE458993031811A4C7D28C1 /* ../data/fonts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = fonts; path = ../data/fonts; sourceTree = "<group>"; };
-		BA41FC88D76540A6905224D6 /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
-		2CE4BD5BB9DEF92439C0AB58 /* ../data/resources.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = resources.xml; path = ../data/resources.xml; sourceTree = "<group>"; };
+		2CE4BD5BB9DEF92439C0AB58 /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
+		F196143B0370A9D348494ACC /* ../src/gameframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gameframe.h; path = ../src/gameframe.h; sourceTree = "<group>"; };
+		7746CA7A63049ED8F7D6BF42 /* ../src/jewels.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jewels.h; path = ../src/jewels.h; sourceTree = "<group>"; };
+		D954BD82D7708B65A08FB6B9 /* ../src/shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = shared.h; path = ../src/shared.h; sourceTree = "<group>"; };
+		F6123B1E6FE4471A00F49751 /* ../data/fonts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = fonts; path = ../data/fonts; sourceTree = "<group>"; };
+		5DE458993031811A4C7D28C1 /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
+		BA41FC88D76540A6905224D6 /* ../data/resources.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = resources.xml; path = ../data/resources.xml; sourceTree = "<group>"; };
 
 /* End PBXFileReference section */
 
@@ -172,10 +170,9 @@
 		04998CF617F8A933003441C3 /* Supporting Files */ = {
 			isa = PBXGroup;
 			children = (
-				F6123B1E6FE4471A00F49751 /* app.config.txt */, 
-				5DE458993031811A4C7D28C1 /* fonts */, 
-				BA41FC88D76540A6905224D6 /* images */, 
-				2CE4BD5BB9DEF92439C0AB58 /* resources.xml */, 
+				F6123B1E6FE4471A00F49751 /* fonts */, 
+				5DE458993031811A4C7D28C1 /* images */, 
+				BA41FC88D76540A6905224D6 /* resources.xml */, 
 
 			);
 			name = "Supporting Files";
@@ -197,10 +194,10 @@
 				4DA100C319512824B7570663 /* gameframe.cpp */, 
 				04FE4D4FB640E0DF92DFB865 /* jewels.cpp */, 
 				7F3B12E3C9D554D9FE28101D /* shared.cpp */, 
-				F196143B0370A9D348494ACC /* example.h */, 
-				7746CA7A63049ED8F7D6BF42 /* gameframe.h */, 
-				D954BD82D7708B65A08FB6B9 /* jewels.h */, 
-				BD0E956CC3A2F7EB94822B5C /* shared.h */, 
+				2CE4BD5BB9DEF92439C0AB58 /* example.h */, 
+				F196143B0370A9D348494ACC /* gameframe.h */, 
+				7746CA7A63049ED8F7D6BF42 /* jewels.h */, 
+				D954BD82D7708B65A08FB6B9 /* shared.h */, 
 
 			);
 			name = src;
@@ -296,10 +293,9 @@
 			buildActionMask = 2147483647;
 			files = (
 				04E9AD3F1876FE84006A7317 /* Images.xcassets in Resources */,
-				CD59C69314E9E74CD0A11E03 /* app.config.txt */, 
-				EFF139F8BA484314F7AAF645 /* fonts */, 
-				F2CFD518E4E2E05ECEDBB262 /* images */, 
-				693088A7AB377368EE4A018E /* resources.xml */, 
+				CD59C69314E9E74CD0A11E03 /* fonts */, 
+				EFF139F8BA484314F7AAF645 /* images */, 
+				F2CFD518E4E2E05ECEDBB262 /* resources.xml */, 
 
 			);
 			runOnlyForDeploymentPostprocessing = 0;

+ 20 - 24
examples/Match3/proj.macosx/Match3_macosx.xcodeproj/project.pbxproj

@@ -20,10 +20,9 @@
 		C8860D93875589970329DCCD /* ../src/gameframe.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4DA100C319512824B7570663 /* ../src/gameframe.cpp */; };
 		1E839D002B2BA83FC83A695A /* ../src/jewels.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 04FE4D4FB640E0DF92DFB865 /* ../src/jewels.cpp */; };
 		3A631A475DE035FC53ADE5EA /* ../src/shared.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 7F3B12E3C9D554D9FE28101D /* ../src/shared.cpp */; };
-		CD59C69314E9E74CD0A11E03 /* ../data/app.config.txt in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/app.config.txt */; };
-		EFF139F8BA484314F7AAF645 /* ../data/fonts in Sources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* ../data/fonts */; };
-		F2CFD518E4E2E05ECEDBB262 /* ../data/images in Sources */ = {isa = PBXBuildFile; fileRef = BA41FC88D76540A6905224D6 /* ../data/images */; };
-		693088A7AB377368EE4A018E /* ../data/resources.xml in Sources */ = {isa = PBXBuildFile; fileRef = 2CE4BD5BB9DEF92439C0AB58 /* ../data/resources.xml */; };
+		CD59C69314E9E74CD0A11E03 /* ../data/fonts in Sources */ = {isa = PBXBuildFile; fileRef = F6123B1E6FE4471A00F49751 /* ../data/fonts */; };
+		EFF139F8BA484314F7AAF645 /* ../data/images in Sources */ = {isa = PBXBuildFile; fileRef = 5DE458993031811A4C7D28C1 /* ../data/images */; };
+		F2CFD518E4E2E05ECEDBB262 /* ../data/resources.xml in Sources */ = {isa = PBXBuildFile; fileRef = BA41FC88D76540A6905224D6 /* ../data/resources.xml */; };
 
 		
 /* End PBXBuildFile section */
@@ -100,14 +99,13 @@
 		4DA100C319512824B7570663 /* ../src/gameframe.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = gameframe.cpp; path = ../src/gameframe.cpp; sourceTree = "<group>"; };
 		04FE4D4FB640E0DF92DFB865 /* ../src/jewels.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = jewels.cpp; path = ../src/jewels.cpp; sourceTree = "<group>"; };
 		7F3B12E3C9D554D9FE28101D /* ../src/shared.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = shared.cpp; path = ../src/shared.cpp; sourceTree = "<group>"; };
-		F196143B0370A9D348494ACC /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
-		7746CA7A63049ED8F7D6BF42 /* ../src/gameframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gameframe.h; path = ../src/gameframe.h; sourceTree = "<group>"; };
-		D954BD82D7708B65A08FB6B9 /* ../src/jewels.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jewels.h; path = ../src/jewels.h; sourceTree = "<group>"; };
-		BD0E956CC3A2F7EB94822B5C /* ../src/shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = shared.h; path = ../src/shared.h; sourceTree = "<group>"; };
-		F6123B1E6FE4471A00F49751 /* ../data/app.config.txt */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = app.config.txt; path = ../data/app.config.txt; sourceTree = "<group>"; };
-		5DE458993031811A4C7D28C1 /* ../data/fonts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = fonts; path = ../data/fonts; sourceTree = "<group>"; };
-		BA41FC88D76540A6905224D6 /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
-		2CE4BD5BB9DEF92439C0AB58 /* ../data/resources.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = resources.xml; path = ../data/resources.xml; sourceTree = "<group>"; };
+		2CE4BD5BB9DEF92439C0AB58 /* ../src/example.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = example.h; path = ../src/example.h; sourceTree = "<group>"; };
+		F196143B0370A9D348494ACC /* ../src/gameframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = gameframe.h; path = ../src/gameframe.h; sourceTree = "<group>"; };
+		7746CA7A63049ED8F7D6BF42 /* ../src/jewels.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = jewels.h; path = ../src/jewels.h; sourceTree = "<group>"; };
+		D954BD82D7708B65A08FB6B9 /* ../src/shared.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = shared.h; path = ../src/shared.h; sourceTree = "<group>"; };
+		F6123B1E6FE4471A00F49751 /* ../data/fonts */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = fonts; path = ../data/fonts; sourceTree = "<group>"; };
+		5DE458993031811A4C7D28C1 /* ../data/images */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; name = images; path = ../data/images; sourceTree = "<group>"; };
+		BA41FC88D76540A6905224D6 /* ../data/resources.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = wtf; name = resources.xml; path = ../data/resources.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>"; };
@@ -196,10 +194,9 @@
 		049B57381871FBE900EF3C66 /* Supporting Files */ = {
 			isa = PBXGroup;
 			children = (
-				F6123B1E6FE4471A00F49751 /* app.config.txt */, 
-				5DE458993031811A4C7D28C1 /* fonts */, 
-				BA41FC88D76540A6905224D6 /* images */, 
-				2CE4BD5BB9DEF92439C0AB58 /* resources.xml */, 
+				F6123B1E6FE4471A00F49751 /* fonts */, 
+				5DE458993031811A4C7D28C1 /* images */, 
+				BA41FC88D76540A6905224D6 /* resources.xml */, 
 
 				049B57391871FBE900EF3C66 /* Match3_macosx-Info.plist */,
 			);
@@ -214,10 +211,10 @@
 				4DA100C319512824B7570663 /* gameframe.cpp */, 
 				04FE4D4FB640E0DF92DFB865 /* jewels.cpp */, 
 				7F3B12E3C9D554D9FE28101D /* shared.cpp */, 
-				F196143B0370A9D348494ACC /* example.h */, 
-				7746CA7A63049ED8F7D6BF42 /* gameframe.h */, 
-				D954BD82D7708B65A08FB6B9 /* jewels.h */, 
-				BD0E956CC3A2F7EB94822B5C /* shared.h */, 
+				2CE4BD5BB9DEF92439C0AB58 /* example.h */, 
+				F196143B0370A9D348494ACC /* gameframe.h */, 
+				7746CA7A63049ED8F7D6BF42 /* jewels.h */, 
+				D954BD82D7708B65A08FB6B9 /* shared.h */, 
 
 			);
 			name = src;
@@ -336,10 +333,9 @@
 			isa = PBXResourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
-				CD59C69314E9E74CD0A11E03 /* app.config.txt */, 
-				EFF139F8BA484314F7AAF645 /* fonts */, 
-				F2CFD518E4E2E05ECEDBB262 /* images */, 
-				693088A7AB377368EE4A018E /* resources.xml */, 
+				CD59C69314E9E74CD0A11E03 /* fonts */, 
+				EFF139F8BA484314F7AAF645 /* images */, 
+				F2CFD518E4E2E05ECEDBB262 /* resources.xml */, 
 
 				049B574A1871FBE900EF3C66 /* Images.xcassets in Resources */,
 			);

+ 10 - 1
examples/TutorialResources/data/app.icf

@@ -1,8 +1,9 @@
 [S3E]
 MemSize = 64777216
-DispFixRot=2
+DispFixRot=Landscape
 SysGlesVersion=2
 SysStackSize=131072
+MemMgrMaxAllocWarning=0
 
 [Trace]
 ALL=0
@@ -17,3 +18,11 @@ FILE=0
 SURFACE=0
 MEMORY=0
 ERROR=0
+IW_GL=0
+SURFACE=0
+SOCKET=0
+JPEG=0
+VIDEO=0
+LOADER=0
+FILE=0
+IWCRT=0

+ 1 - 1
oxygine/src/TextActor.h

@@ -13,7 +13,7 @@ namespace oxygine
 	{
 	public:
 		DECLARE_COPYCLONE_NEW(TextActor);
-		OXYGINE_DEPRECATED
+//		OXYGINE_DEPRECATED
 		TextActor(){}
 	};
 

+ 15 - 0
oxygine/src/TextField.cpp

@@ -68,6 +68,12 @@ namespace oxygine
 		needRebuild();
 	}
 
+	void TextField::setBreakLongWords(bool val)
+	{
+		_style.breakLongWords = val;
+		needRebuild();
+	}
+
 	void TextField::setLinesOffset(int offset)
 	{
 		_style.linesOffset = offset;
@@ -161,6 +167,11 @@ namespace oxygine
 		return _style.multiline;
 	}
 
+	bool TextField::getBreakLongWords() const
+	{
+		return _style.breakLongWords;
+	}
+
 	const Rect &TextField::getTextRect()
 	{
 		getRootNode();
@@ -246,6 +257,8 @@ namespace oxygine
 			stream << " vAlign=" << get_valign(s.vAlign);
 		if (!onlydiff || def.multiline != s.multiline)
 			stream << " " << (s.multiline ? "multiline" : "singleline");
+		if (!onlydiff || def.breakLongWords != s.breakLongWords)
+			stream << " " << (s.breakLongWords ? "breakLongWords=1" : "breakLongWords=0");
 		if (!onlydiff || def.kerning != s.kerning)
 			stream << " kerning=" << s.kerning;
 		if (!onlydiff || def.linesOffset != s.linesOffset)
@@ -332,6 +345,7 @@ namespace oxygine
 		setAttr(node, "valign", _style.vAlign, def.vAlign);
 		setAttr(node, "halign", _style.hAlign, def.hAlign);
 		setAttr(node, "multiline", _style.multiline, def.multiline);
+		setAttr(node, "breakLongWords", _style.breakLongWords, def.breakLongWords);
 		node.set_name("TextField");
 	}
 
@@ -345,6 +359,7 @@ namespace oxygine
 		_style.vAlign = (TextStyle::VerticalAlign)node.attribute("valign").as_int(def.vAlign);
 		_style.hAlign = (TextStyle::HorizontalAlign)node.attribute("halign").as_int(def.hAlign);
 		_style.multiline = node.attribute("multiline").as_bool(def.multiline);
+		_style.breakLongWords = node.attribute("breakLongWords").as_bool(def.breakLongWords);
 		_style.fontSize2Scale = node.attribute("fontsize2scale").as_int(def.fontSize2Scale);
 		needRebuild();
 		setText(node.attribute("text").as_string());

+ 3 - 0
oxygine/src/TextField.h

@@ -34,6 +34,7 @@ namespace oxygine
 		TextStyle::VerticalAlign	getVAlign() const;
 		TextStyle::HorizontalAlign	getHAlign() const;
 		bool						getMultiline() const;
+		bool						getBreakLongWords () const;
 
 		/**Overwrites TextStyle Vertical align*/
 		void setVAlign(TextStyle::VerticalAlign align);
@@ -41,6 +42,8 @@ namespace oxygine
 		void setHAlign(TextStyle::HorizontalAlign align);
 		/**Overwrites TextStyle multiline*/
 		void setMultiline(bool multiline);
+		/**Overwrites TextStyle breakLongWords*/
+		void setBreakLongWords(bool val);
 		/**Overwrites TextStyle linesOffset*/
 		void setLinesOffset(int offset);
 		/**Overwrites TextStyle scale2Size.*/

+ 3 - 1
oxygine/src/TextStyle.h

@@ -34,7 +34,8 @@ namespace oxygine
 			linesOffset(0), 
 			kerning(0),
             multiline(false),
-			fontSize2Scale(0){}
+			fontSize2Scale(0),
+			breakLongWords(false){}
 
 		Font *font;
 
@@ -44,6 +45,7 @@ namespace oxygine
 		int linesOffset;//distance offset between lines 
 		int kerning;
 		bool multiline;
+		bool breakLongWords;//works with multiline flag. breakLongWords = false doesn't allow to break too long words
 		Color color;
 		int fontSize2Scale;
 	};

+ 5 - 3
oxygine/src/Tweener.h

@@ -155,7 +155,9 @@ namespace oxygine
 
 		/**set custom user data object to Tween. Could be used for store some useful data*/
 		void setDataObject(spObject data) {_data = data;}
-		/**callback would be called when tween done. Could be added more than one*/
+		/**add callback would be called when tween done.  Could be added more than one. 
+		setDoneCallback is faster because it doesn't allocate memory for list internally
+		*/
 		void addDoneCallback(EventCallback cb);
 		/**set Easing function*/
 		void setEase(EASE ease){_ease = ease;}
@@ -177,8 +179,8 @@ namespace oxygine
 
 		static float calcEase(EASE ease, float v);
 
-		OXYGINE_DEPRECATED
-		void setDoneCallback(EventCallback cb);//deprecated. use tween->addDoneCallback or tween->addEventListener(TweenEvent::DONE, ...)
+		/**set callback when tween done. Doesn't allocate memory. faster than addDoneCallback*/
+		void setDoneCallback(EventCallback cb);
 
 	protected:
 		void done(Actor &, const UpdateState &us);

+ 4 - 4
oxygine/src/core/ZipFileSystem.cpp

@@ -123,7 +123,7 @@ namespace file
 
 	uLong ZCALLBACK ox_fread(voidpf opaque, voidpf stream, void* buf, uLong size)
 	{
-		return file::read(stream, buf, size);
+		return file::read((handle)stream, buf, size);
 	}
 
 	/*
@@ -135,18 +135,18 @@ namespace file
 
 	long ZCALLBACK ox_ftell(voidpf opaque, voidpf stream)
 	{
-		return file::tell(stream);
+		return file::tell((handle)stream);
 	}
 
 	long ZCALLBACK ox_fseek(voidpf opaque, voidpf stream, uLong offset, int origin)
 	{
-		file::seek(stream, offset, origin);
+		file::seek((handle)stream, offset, origin);
 		return 0;
 	}
 
 	int ZCALLBACK ox_fclose(voidpf opaque, voidpf stream)
 	{
-		file::close(stream);;
+		file::close((handle)stream);
 		return 0;
 	}
 

+ 15 - 10
oxygine/src/core/file.cpp

@@ -87,7 +87,7 @@ namespace oxygine
 				handleErrorPolicy(ep, "can't open file: %s", file);
 			}
 
-			return fh;
+			return (handle)fh;
 		}
 
 		void close(handle h)
@@ -171,6 +171,19 @@ namespace oxygine
 			fh->write(data, size);
 		}
 
+		void write(const char *file, const buffer &data, error_policy ep)
+		{
+			write(file, data.getData(), data.getSize(), ep);
+		}
+
+		void write(const char *file, const void *data, unsigned int size, error_policy ep)
+		{
+			autoClose ac(open(file, "w", ep));
+			if (!ac.getHandle())
+				return;
+			write(ac.getHandle(), data, size);
+		}
+
 		
 
 		bool exists(const char *file)
@@ -194,15 +207,7 @@ namespace oxygine
 			rmdir(path);
 #endif
 #endif
-		}
-
-		void write(const char *file, const buffer &data, error_policy ep)
-		{
-			autoClose ac(open(file, "w", ep));
-			if (!ac.getHandle())
-				return;
-			write(ac.getHandle(), data.getData(), data.getSize());
-		}
+		}		
 
 		file::STDFileSystem &fs()
 		{

+ 47 - 8
oxygine/src/core/file.h

@@ -11,18 +11,42 @@ namespace oxygine
 	{
 		class STDFileSystem;
 
+		struct _handle_{};
+		typedef _handle_* handle;
+
+		/**memory buffer for files IO operations, emulates std::vector */
 		class buffer
 		{
-		public:		
+		public:
+            typedef unsigned char uchar;
+            
+			uchar& front() { return data.front(); }
+			const uchar& front() const { return data.front(); }
+
+			uchar& back() { return data.back(); }
+			const uchar& back() const { return data.back(); }
+
+			uchar& operator[](size_t i) { return data[i]; }
+			const uchar& operator[](size_t i) const { return data[i]; }
+
+			uchar& at(size_t i) { return data.at(i); }
+			const uchar& at(size_t i) const { return data.at(i); }
+
+			void push_back(uchar v){ return data.push_back(v); }
+			uchar pop_back(){ uchar v = data.back();  data.pop_back(); return v; }
+			void reserve(size_t v){ data.reserve(v); }
+			void resize(size_t v){ data.resize(v); }
+
+			size_t size() const { return data.size(); }
+			bool empty() const { return data.empty(); }
+
 			const void *getData() const {if (data.empty()) return 0; return &data[0];}
 			unsigned int getSize() const {return (unsigned int)data.size();}
 
-			typedef std::vector<unsigned char> buff;
+			typedef std::vector<uchar> buff;
 			buff data;
 		};
 
-		typedef void* handle;
-
 		/**Opens file for reading (mode = "r") or writing (mode = "w"). If file is missing returns zero.*/
 		handle open(const char *file, const char *mode, error_policy ep = ep_show_error);
 
@@ -35,10 +59,10 @@ namespace oxygine
 		/**Reads bytes into user memory*/
 		unsigned int read(handle, void *dest, unsigned int size);
 
-		/**Reads bytes into destination buffer. Clears existing buffer*/
+		/**Reads bytes into destination buffer with stdio flags = "rb". Clears existing buffer*/
 		void read(const char *file, buffer &dest, error_policy ep = ep_show_error);
 
-		/**Reads bytes into destination buffer*/
+		/**Reads bytes into destination buffer with stdio flags = "wb"*/
 		unsigned int read(handle, buffer &dest);
 
 		/**Writes bytes to file*/
@@ -46,20 +70,35 @@ namespace oxygine
 
 		/**Writes bytes to file*/
 		void write(const char *file, const buffer &data, error_policy ep = ep_show_error);
+		void write(const char *file, const void *data, unsigned int size, error_policy ep = ep_show_error);
 
 		/**Is file exists?*/
 		bool exists(const char *file);
 
+		/**Deletes file*/
 		bool deleteFile(const char *path, error_policy ep = ep_show_warning);
+
+		/**Renames file*/
 		bool rename(const char *src, const char *dest, error_policy ep = ep_show_warning);
+
+		/**Makes directory. Not recursive*/
 		bool makeDirectory(const char *path);
+
+		/**Deletes empty directory*/
 		void deleteDirectory(const char *path);
 		
-		//returns main fs
+		/**Returns primary read only FileSystem*/
 		file::STDFileSystem &fs();
-		//returns writable fs
+
+		/**Returns writable FileSystem*/
 		file::STDFileSystem &wfs();
 
+		/**Mounts additional FileSystem*/
+		void mount(FileSystem *fs);
+
+		/**Unmounts additional FileSystem*/
+		void unmount(FileSystem *fs);
+
 		class autoClose
 		{
 		public:

+ 4 - 0
oxygine/src/core/log.cpp

@@ -31,8 +31,12 @@ namespace oxygine
 	
 #ifdef __S3E__
 	const int SIZE = 512;
+#else
+#ifdef OX_DEBUG
+	const int SIZE = 16384;
 #else
 	const int SIZE = 4096;
+#endif
 #endif
 
 	namespace log

+ 1 - 1
oxygine/src/core/oxygine.h

@@ -122,7 +122,7 @@ namespace oxygine
 	{
 		ep_show_error,//shows assert and prints error to log
 		ep_show_warning,//prints warning to log
-		ep_ignore_error//do nothing, returns null
+		ep_ignore_error//doesn't show any errors
 	};
 
 

+ 7 - 1
oxygine/src/text_utils/Aligner.cpp

@@ -187,8 +187,14 @@ namespace oxygine
 					if (_line[lastWordPos]->code == ' ' && _line[lastWordPos - 1]->code != ' ')
 						break;
 				}
+				
 				if (!lastWordPos)
-					lastWordPos = _line.size() - 1;
+				{
+					if (style.breakLongWords)
+						lastWordPos = _line.size() - 1;
+					else
+						return 0;
+				}
 			
 
 				int delta = _line.size() - lastWordPos;

+ 7 - 3
tools/others/update_examples_entry.py

@@ -1,6 +1,6 @@
 examples = "../../examples/"
 
-src = examples + "Demo/src/entry_point.cpp"
+demo = examples + "Demo/"
 parent = "../../../"
 
 items = (
@@ -19,7 +19,11 @@ items = (
      parent + "oxygine-sound/examples/example1/",
      )
 
-for item in items:
+def copy(item, name):
     import shutil
-    shutil.copyfile(src, item + "/src/entry_point.cpp")
+    shutil.copyfile(demo + name, item + "/" + name)
+
+for item in items:
+    copy(item, "src/entry_point.cpp")
+    copy(item, "data/app.icf")