Browse Source

- TweenQueue supports Loops now
- significantly improved Starling atlas format support
- added PVR version 2 support
- fixed wrong xml resources default path
- reformatted all source code
- fixed MINGW build
- updated pugixml
- added option to gen_templates for generation full copy of HelloWorld
- improved TweenAnim
- minor fixes

dmuratshin 10 years ago
parent
commit
2aacc856ca
100 changed files with 4124 additions and 4045 deletions
  1. 3 3
      .hg_archival.txt
  2. 3 0
      .hgignore
  3. 109 0
      examples/Demo/data/demo/font.fnt
  4. BIN
      examples/Demo/data/demo/font.png
  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. 1 0
      examples/Demo/data/xmls/res.xml
  8. 49 47
      examples/Demo/src/TestBox9Sprite.h
  9. 49 49
      examples/Demo/src/TestClipRect.h
  10. 136 136
      examples/Demo/src/TestDrag.h
  11. 104 104
      examples/Demo/src/TestHttp.h
  12. 79 78
      examples/Demo/src/TestInputText.h
  13. 80 80
      examples/Demo/src/TestManageRes.h
  14. 124 124
      examples/Demo/src/TestMask.h
  15. 102 105
      examples/Demo/src/TestPerf.h
  16. 93 93
      examples/Demo/src/TestPolygon.h
  17. 47 47
      examples/Demo/src/TestProgressBar.h
  18. 70 70
      examples/Demo/src/TestRender2Texture.h
  19. 114 114
      examples/Demo/src/TestSliding.h
  20. 12 12
      examples/Demo/src/TestTexel2Pixel.h
  21. 165 165
      examples/Demo/src/TestText.h
  22. 35 35
      examples/Demo/src/TestTextureFormat.h
  23. 157 157
      examples/Demo/src/TestTweens.h
  24. 106 104
      examples/Demo/src/TestUserShader.h
  25. 144 144
      examples/Demo/src/TestUserShader2.h
  26. 80 80
      examples/Demo/src/entry_point.cpp
  27. 186 186
      examples/Demo/src/example.cpp
  28. 135 135
      examples/Demo/src/test.cpp
  29. 41 41
      examples/Demo/src/test.h
  30. 84 84
      examples/DemoBox2D/src/Box2DDebugDraw.cpp
  31. 27 27
      examples/DemoBox2D/src/Box2DDebugDraw.h
  32. 81 90
      examples/DemoBox2D/src/entry_point.cpp
  33. 159 159
      examples/DemoBox2D/src/example.cpp
  34. 22 22
      examples/Game/part1/src/Game.cpp
  35. 6 6
      examples/Game/part1/src/Game.h
  36. 44 44
      examples/Game/part1/src/Joystick.cpp
  37. 7 7
      examples/Game/part1/src/Joystick.h
  38. 29 29
      examples/Game/part1/src/Player.cpp
  39. 5 5
      examples/Game/part1/src/Player.h
  40. 11 11
      examples/Game/part1/src/Unit.cpp
  41. 7 7
      examples/Game/part1/src/Unit.h
  42. 81 90
      examples/Game/part1/src/entry_point.cpp
  43. 9 9
      examples/Game/part1/src/example.cpp
  44. 11 11
      examples/Game/part1/src/res.cpp
  45. 3 3
      examples/Game/part1/src/res.h
  46. 25 25
      examples/Game/part2/src/Enemy.cpp
  47. 4 4
      examples/Game/part2/src/Enemy.h
  48. 48 48
      examples/Game/part2/src/Game.cpp
  49. 13 13
      examples/Game/part2/src/Game.h
  50. 44 44
      examples/Game/part2/src/Joystick.cpp
  51. 7 7
      examples/Game/part2/src/Joystick.h
  52. 42 42
      examples/Game/part2/src/Player.cpp
  53. 7 7
      examples/Game/part2/src/Player.h
  54. 56 56
      examples/Game/part2/src/Rocket.cpp
  55. 6 6
      examples/Game/part2/src/Rocket.h
  56. 15 15
      examples/Game/part2/src/Unit.cpp
  57. 10 10
      examples/Game/part2/src/Unit.h
  58. 81 90
      examples/Game/part2/src/entry_point.cpp
  59. 7 7
      examples/Game/part2/src/example.cpp
  60. 9 9
      examples/Game/part2/src/res.cpp
  61. 3 3
      examples/Game/part2/src/res.h
  62. 25 25
      examples/Game/part3/src/Enemy.cpp
  63. 4 4
      examples/Game/part3/src/Enemy.h
  64. 48 48
      examples/Game/part3/src/Game.cpp
  65. 13 13
      examples/Game/part3/src/Game.h
  66. 17 17
      examples/Game/part3/src/GameScene.cpp
  67. 4 4
      examples/Game/part3/src/GameScene.h
  68. 44 44
      examples/Game/part3/src/Joystick.cpp
  69. 7 7
      examples/Game/part3/src/Joystick.h
  70. 64 64
      examples/Game/part3/src/MainMenuScene.cpp
  71. 3 3
      examples/Game/part3/src/MainMenuScene.h
  72. 16 16
      examples/Game/part3/src/MyButton.cpp
  73. 2 2
      examples/Game/part3/src/MyButton.h
  74. 42 42
      examples/Game/part3/src/Player.cpp
  75. 7 7
      examples/Game/part3/src/Player.h
  76. 56 56
      examples/Game/part3/src/Rocket.cpp
  77. 6 6
      examples/Game/part3/src/Rocket.h
  78. 10 10
      examples/Game/part3/src/Scene.cpp
  79. 4 4
      examples/Game/part3/src/Scene.h
  80. 15 15
      examples/Game/part3/src/Unit.cpp
  81. 10 10
      examples/Game/part3/src/Unit.h
  82. 81 90
      examples/Game/part3/src/entry_point.cpp
  83. 8 8
      examples/Game/part3/src/example.cpp
  84. 9 9
      examples/Game/part3/src/res.cpp
  85. 3 3
      examples/Game/part3/src/res.h
  86. 25 25
      examples/Game/part4/src/Enemy.cpp
  87. 4 4
      examples/Game/part4/src/Enemy.h
  88. 56 56
      examples/Game/part4/src/Game.cpp
  89. 13 13
      examples/Game/part4/src/Game.h
  90. 92 92
      examples/Game/part4/src/GameMenu.cpp
  91. 9 9
      examples/Game/part4/src/GameMenu.h
  92. 49 49
      examples/Game/part4/src/GameScene.cpp
  93. 4 4
      examples/Game/part4/src/GameScene.h
  94. 44 44
      examples/Game/part4/src/Joystick.cpp
  95. 7 7
      examples/Game/part4/src/Joystick.h
  96. 55 55
      examples/Game/part4/src/MainMenuScene.cpp
  97. 3 3
      examples/Game/part4/src/MainMenuScene.h
  98. 32 32
      examples/Game/part4/src/MyButton.cpp
  99. 4 4
      examples/Game/part4/src/MyButton.h
  100. 42 42
      examples/Game/part4/src/Player.cpp

+ 3 - 3
.hg_archival.txt

@@ -1,5 +1,5 @@
 repo: b6d71054df5712e643a0685bc3ba54b123db5729
-node: 1de536b5bd8e9e5b5c83a58ed2c0d60c89f64ebf
-branch: dev
+node: 3ce2e34af01f3b61d2e1e1473ea82728506d761c
+branch: default
 latesttag: oldrender
-latesttagdistance: 689
+latesttagdistance: 715

+ 3 - 0
.hgignore

@@ -46,3 +46,6 @@ examples/Game/*/proj.android/bin/
 examples/Game/*/proj.android/libs/
 examples/Game/*/proj.android/gen/
 examples/Match3/build_match3_*
+libs/SDL2main.lib
+libs/SDL2.lib
+libs/SDL2.dll

+ 109 - 0
examples/Demo/data/demo/font.fnt

@@ -0,0 +1,109 @@
+<?xml version="1.0" ?><font>
+  <info aa="1" bold="1" charset="" face="Arial" italic="0" outline="0" padding="0,0,0,0" size="-26" smooth="1" spacing="1,1" stretchH="100" unicode="1"/>
+  <common alphaChnl="0" base="24" blueChnl="4" greenChnl="4" lineHeight="30" packed="0" pages="1" redChnl="4" scaleH="128" scaleW="512"/>
+  <pages>
+    <page file="font.png" id="0"/>
+  </pages>
+  <chars count="100">
+    <char chnl="15" height="1" id="32" page="0" width="3" x="98" xadvance="7" xoffset="-1" y="23" yoffset="29"/>
+    <char chnl="15" height="19" id="33" page="0" width="6" x="30" xadvance="8" xoffset="1" y="46" yoffset="5"/>
+    <char chnl="15" height="7" id="34" page="0" width="11" x="376" xadvance="12" xoffset="0" y="40" yoffset="5"/>
+    <char chnl="15" height="19" id="35" page="0" width="16" x="108" xadvance="14" xoffset="-1" y="23" yoffset="5"/>
+    <char chnl="15" height="22" id="36" page="0" width="14" x="98" xadvance="14" xoffset="0" y="0" yoffset="4"/>
+    <char chnl="15" height="20" id="37" page="0" width="23" x="134" xadvance="24" xoffset="0" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="38" page="0" width="19" x="323" xadvance="19" xoffset="0" y="0" yoffset="5"/>
+    <char chnl="15" height="7" id="39" page="0" width="6" x="388" xadvance="6" xoffset="0" y="40" yoffset="5"/>
+    <char chnl="15" height="24" id="40" page="0" width="7" x="76" xadvance="9" xoffset="1" y="0" yoffset="5"/>
+    <char chnl="15" height="24" id="41" page="0" width="7" x="84" xadvance="9" xoffset="1" y="0" yoffset="5"/>
+    <char chnl="15" height="9" id="42" page="0" width="10" x="348" xadvance="10" xoffset="0" y="40" yoffset="5"/>
+    <char chnl="15" height="14" id="43" page="0" width="15" x="119" xadvance="15" xoffset="0" y="43" yoffset="7"/>
+    <char chnl="15" height="8" id="44" page="0" width="5" x="370" xadvance="7" xoffset="1" y="40" yoffset="20"/>
+    <char chnl="15" height="4" id="45" page="0" width="8" x="411" xadvance="9" xoffset="1" y="40" yoffset="15"/>
+    <char chnl="15" height="4" id="46" page="0" width="5" x="436" xadvance="7" xoffset="1" y="40" yoffset="20"/>
+    <char chnl="15" height="19" id="47" page="0" width="9" x="0" xadvance="7" xoffset="-1" y="46" yoffset="5"/>
+    <char chnl="15" height="19" id="48" page="0" width="14" x="424" xadvance="14" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="49" page="0" width="10" x="493" xadvance="14" xoffset="1" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="50" page="0" width="14" x="409" xadvance="14" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="51" page="0" width="14" x="379" xadvance="14" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="52" page="0" width="14" x="364" xadvance="14" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="53" page="0" width="14" x="319" xadvance="14" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="54" page="0" width="14" x="349" xadvance="14" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="55" page="0" width="14" x="334" xadvance="14" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="56" page="0" width="14" x="394" xadvance="14" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="57" page="0" width="14" x="304" xadvance="14" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="14" id="58" page="0" width="6" x="311" xadvance="10" xoffset="2" y="40" yoffset="10"/>
+    <char chnl="15" height="18" id="59" page="0" width="6" x="49" xadvance="10" xoffset="2" y="45" yoffset="10"/>
+    <char chnl="15" height="14" id="60" page="0" width="14" x="271" xadvance="15" xoffset="0" y="40" yoffset="8"/>
+    <char chnl="15" height="10" id="61" page="0" width="15" x="318" xadvance="15" xoffset="0" y="40" yoffset="10"/>
+    <char chnl="15" height="14" id="62" page="0" width="14" x="211" xadvance="15" xoffset="0" y="40" yoffset="8"/>
+    <char chnl="15" height="19" id="63" page="0" width="15" x="240" xadvance="16" xoffset="1" y="20" yoffset="5"/>
+    <char chnl="15" height="25" id="64" page="0" width="25" x="0" xadvance="25" xoffset="0" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="65" page="0" width="20" x="281" xadvance="19" xoffset="-1" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="66" page="0" width="18" x="402" xadvance="19" xoffset="1" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="67" page="0" width="18" x="383" xadvance="19" xoffset="0" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="68" page="0" width="18" x="421" xadvance="19" xoffset="1" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="69" page="0" width="15" x="224" xadvance="17" xoffset="1" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="70" page="0" width="14" x="497" xadvance="16" xoffset="1" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="71" page="0" width="19" x="343" xadvance="20" xoffset="0" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="72" page="0" width="17" x="18" xadvance="19" xoffset="1" y="26" yoffset="5"/>
+    <char chnl="15" height="19" id="73" page="0" width="6" x="504" xadvance="8" xoffset="1" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="74" page="0" width="13" x="454" xadvance="14" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="75" page="0" width="18" x="459" xadvance="19" xoffset="1" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="76" page="0" width="15" x="256" xadvance="16" xoffset="1" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="77" page="0" width="21" x="259" xadvance="23" xoffset="1" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="78" page="0" width="17" x="72" xadvance="19" xoffset="1" y="25" yoffset="5"/>
+    <char chnl="15" height="19" id="79" page="0" width="20" x="302" xadvance="20" xoffset="0" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="80" page="0" width="17" x="90" xadvance="18" xoffset="1" y="25" yoffset="5"/>
+    <char chnl="15" height="21" id="81" page="0" width="20" x="113" xadvance="20" xoffset="0" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="82" page="0" width="18" x="440" xadvance="19" xoffset="1" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="83" page="0" width="17" x="36" xadvance="17" xoffset="0" y="25" yoffset="5"/>
+    <char chnl="15" height="19" id="84" page="0" width="16" x="125" xadvance="16" xoffset="1" y="22" yoffset="5"/>
+    <char chnl="15" height="19" id="85" page="0" width="17" x="0" xadvance="19" xoffset="1" y="26" yoffset="5"/>
+    <char chnl="15" height="19" id="86" page="0" width="19" x="363" xadvance="17" xoffset="-1" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="87" page="0" width="27" x="187" xadvance="25" xoffset="-1" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="88" page="0" width="17" x="54" xadvance="17" xoffset="0" y="25" yoffset="5"/>
+    <char chnl="15" height="19" id="89" page="0" width="18" x="478" xadvance="18" xoffset="0" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="90" page="0" width="16" x="159" xadvance="16" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="24" id="91" page="0" width="8" x="67" xadvance="9" xoffset="1" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="92" page="0" width="9" x="10" xadvance="7" xoffset="-1" y="46" yoffset="5"/>
+    <char chnl="15" height="24" id="93" page="0" width="8" x="58" xadvance="9" xoffset="0" y="0" yoffset="5"/>
+    <char chnl="15" height="10" id="94" page="0" width="13" x="334" xadvance="15" xoffset="1" y="40" yoffset="5"/>
+    <char chnl="15" height="3" id="95" page="0" width="16" x="442" xadvance="14" xoffset="-1" y="40" yoffset="26"/>
+    <char chnl="15" height="4" id="96" page="0" width="7" x="420" xadvance="9" xoffset="0" y="40" yoffset="5"/>
+    <char chnl="15" height="14" id="97" page="0" width="14" x="151" xadvance="14" xoffset="0" y="41" yoffset="10"/>
+    <char chnl="15" height="19" id="98" page="0" width="15" x="208" xadvance="16" xoffset="1" y="20" yoffset="5"/>
+    <char chnl="15" height="14" id="99" page="0" width="14" x="166" xadvance="14" xoffset="0" y="40" yoffset="10"/>
+    <char chnl="15" height="19" id="100" page="0" width="15" x="192" xadvance="16" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="14" id="101" page="0" width="14" x="181" xadvance="14" xoffset="0" y="40" yoffset="10"/>
+    <char chnl="15" height="19" id="102" page="0" width="10" x="482" xadvance="9" xoffset="0" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="103" page="0" width="15" x="176" xadvance="16" xoffset="0" y="20" yoffset="10"/>
+    <char chnl="15" height="19" id="104" page="0" width="14" x="439" xadvance="16" xoffset="1" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="105" page="0" width="5" x="37" xadvance="8" xoffset="2" y="45" yoffset="5"/>
+    <char chnl="15" height="24" id="106" page="0" width="9" x="48" xadvance="8" xoffset="-2" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="107" page="0" width="13" x="468" xadvance="14" xoffset="1" y="20" yoffset="5"/>
+    <char chnl="15" height="19" id="108" page="0" width="5" x="43" xadvance="8" xoffset="2" y="45" yoffset="5"/>
+    <char chnl="15" height="14" id="109" page="0" width="22" x="79" xadvance="24" xoffset="1" y="45" yoffset="10"/>
+    <char chnl="15" height="14" id="110" page="0" width="14" x="196" xadvance="16" xoffset="1" y="40" yoffset="10"/>
+    <char chnl="15" height="14" id="111" page="0" width="16" x="102" xadvance="16" xoffset="0" y="45" yoffset="10"/>
+    <char chnl="15" height="19" id="112" page="0" width="15" x="288" xadvance="16" xoffset="1" y="20" yoffset="10"/>
+    <char chnl="15" height="19" id="113" page="0" width="15" x="272" xadvance="16" xoffset="0" y="20" yoffset="10"/>
+    <char chnl="15" height="14" id="114" page="0" width="10" x="300" xadvance="10" xoffset="1" y="40" yoffset="10"/>
+    <char chnl="15" height="14" id="115" page="0" width="14" x="226" xadvance="14" xoffset="0" y="40" yoffset="10"/>
+    <char chnl="15" height="19" id="116" page="0" width="9" x="20" xadvance="9" xoffset="0" y="46" yoffset="5"/>
+    <char chnl="15" height="14" id="117" page="0" width="14" x="241" xadvance="16" xoffset="1" y="40" yoffset="10"/>
+    <char chnl="15" height="14" id="118" page="0" width="15" x="135" xadvance="15" xoffset="0" y="42" yoffset="10"/>
+    <char chnl="15" height="14" id="119" page="0" width="22" x="56" xadvance="21" xoffset="0" y="45" yoffset="10"/>
+    <char chnl="15" height="14" id="120" page="0" width="14" x="256" xadvance="14" xoffset="0" y="40" yoffset="10"/>
+    <char chnl="15" height="19" id="121" page="0" width="16" x="142" xadvance="15" xoffset="-1" y="21" yoffset="10"/>
+    <char chnl="15" height="14" id="122" page="0" width="13" x="286" xadvance="13" xoffset="0" y="40" yoffset="10"/>
+    <char chnl="15" height="24" id="123" page="0" width="10" x="37" xadvance="10" xoffset="0" y="0" yoffset="5"/>
+    <char chnl="15" height="24" id="124" page="0" width="5" x="92" xadvance="7" xoffset="1" y="0" yoffset="5"/>
+    <char chnl="15" height="24" id="125" page="0" width="10" x="26" xadvance="10" xoffset="0" y="0" yoffset="5"/>
+    <char chnl="15" height="6" id="126" page="0" width="15" x="395" xadvance="15" xoffset="0" y="40" yoffset="11"/>
+    <char chnl="15" height="19" id="169" page="0" width="21" x="237" xadvance="19" xoffset="-1" y="0" yoffset="5"/>
+    <char chnl="15" height="19" id="174" page="0" width="21" x="215" xadvance="19" xoffset="-1" y="0" yoffset="5"/>
+    <char chnl="15" height="8" id="176" page="0" width="10" x="359" xadvance="10" xoffset="0" y="40" yoffset="5"/>
+    <char chnl="15" height="4" id="180" page="0" width="7" x="428" xadvance="9" xoffset="2" y="40" yoffset="5"/>
+    <char chnl="15" height="19" id="8470" page="0" width="28" x="158" xadvance="29" xoffset="1" y="0" yoffset="5"/>
+  </chars>
+</font>

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


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


+ 1 - 0
examples/Demo/data/xmls/res.xml

@@ -1,5 +1,6 @@
 <?xml version="1.0"?>
 <resources>
+	<font file="demo/font.fnt" />
 	<set path = "./../images" />
 	<atlas id = "primary" format="8888">
 		<image file="gray.png"/>

+ 49 - 47
examples/Demo/src/TestBox9Sprite.h

@@ -4,51 +4,53 @@
 class TestBox9Sprite: public Test
 {
 public:
-	spBox9Sprite _sprite;
-	TestBox9Sprite()
-	{
-		ResAnim *rs = resources.getResAnim("box9a");
-		spSprite original = new Sprite;
-		original->setPosition(10, 70);
-		original->setResAnim(rs);
-		addChild(original);
-
-
-
-		spBox9Sprite sprite;
-
-		sprite = new Box9Sprite;			
-		sprite->setPosition(270, 50);
-		sprite->setResAnim(rs);
-		sprite->setSize(300, 250);
-		sprite->setVerticalMode(Box9Sprite::STRETCHING);
-		sprite->setHorizontalMode(Box9Sprite::STRETCHING);
-
-
-		sprite->addTween(Actor::TweenWidth(getWidth() - sprite->getX() - 190), 5000, -1, true);
-		sprite->addTween(Actor::TweenHeight(getHeight() - sprite->getY() - 10), 5000, -1, true, 2500);
-		
-
-		//you could also define guides from xml  
-		//<image file="box9.png" guideX1="50" guideX2="210" guideY1="50" guideY2="125" />
-		sprite->setGuides(40, 160, 40, 160);
-		addChild(sprite);
-
-		_sprite = sprite;
-
-		Test::toggle tg[] = { 			
-			Test::toggle("switch to TILING_FULL", Box9Sprite::TILING_FULL),
-			Test::toggle("switch to TILING", Box9Sprite::TILING),
-			Test::toggle("switch to STRETCHING", Box9Sprite::STRETCHING), };
-		addToggle("ver. mode", tg, 3);
-		addToggle("hor. mode", tg, 3);
-	}
-
-	void toggleClicked(string id, const toggle *t)
-	{
-		if (id == "ver. mode")
-			_sprite->setVerticalMode(Box9Sprite::StretchMode(t->value));
-		if (id == "hor. mode")
-			_sprite->setHorizontalMode(Box9Sprite::StretchMode(t->value));
-	}
+    spBox9Sprite _sprite;
+    TestBox9Sprite()
+    {
+        ResAnim* rs = resources.getResAnim("box9a");
+        spSprite original = new Sprite;
+        original->setPosition(10, 70);
+        original->setResAnim(rs);
+        addChild(original);
+
+
+
+        spBox9Sprite sprite;
+
+        sprite = new Box9Sprite;
+        sprite->setPosition(270, 50);
+        sprite->setResAnim(rs);
+        sprite->setSize(300, 250);
+        sprite->setVerticalMode(Box9Sprite::STRETCHING);
+        sprite->setHorizontalMode(Box9Sprite::STRETCHING);
+
+
+        sprite->addTween(Actor::TweenWidth(getWidth() - sprite->getX() - 190), 5000, -1, true);
+        sprite->addTween(Actor::TweenHeight(getHeight() - sprite->getY() - 10), 5000, -1, true, 2500);
+
+
+        //you could also define guides from xml
+        //<image file="box9.png" guideX1="50" guideX2="210" guideY1="50" guideY2="125" />
+        sprite->setGuides(40, 160, 40, 160);
+        addChild(sprite);
+
+        _sprite = sprite;
+
+        Test::toggle tg[] =
+        {
+            Test::toggle("switch to TILING_FULL", Box9Sprite::TILING_FULL),
+            Test::toggle("switch to TILING", Box9Sprite::TILING),
+            Test::toggle("switch to STRETCHING", Box9Sprite::STRETCHING),
+        };
+        addToggle("ver. mode", tg, 3);
+        addToggle("hor. mode", tg, 3);
+    }
+
+    void toggleClicked(string id, const toggle* t)
+    {
+        if (id == "ver. mode")
+            _sprite->setVerticalMode(Box9Sprite::StretchMode(t->value));
+        if (id == "hor. mode")
+            _sprite->setHorizontalMode(Box9Sprite::StretchMode(t->value));
+    }
 };

+ 49 - 49
examples/Demo/src/TestClipRect.h

@@ -4,53 +4,53 @@
 class TestClipRect: public Test
 {
 public:
-	TestClipRect()
-	{
-		spClipRectActor clp = createClipRect(250, 250, 4.0f);
-		clp->attachTo(content);
-		clp->setPosition(content->getSize()/2 - clp->getSize()/2);
-
-		spClipRectActor childClp = createClipRect(100, 100, 2.0f);
-		childClp->setPosition(-40.0f, -40.0f);
-		childClp->attachTo(clp);
-
-		spSprite spr = new Sprite;
-		spr->setResAnim(resources.getResAnim("batterfly"));
-		spr->setX(200.0f);
-		spr->attachTo(clp);
-	}
-	
-	spClipRectActor createClipRect(int w, int h, float sc)
-	{
-		spClipRectActor clp = new ClipRectActor;
-		clp->setSize((float)w, (float)h);
-		
-
-		spSprite spr = new Sprite;
-		spr->setPosition(w/2.0f, h/2.0f);
-		spr->setResAnim(resources.getResAnim("batterfly"));
-		spr->attachTo(clp);
-		spr->setAnchor(0.5f, 0.5f);
-		spr->setScale(sc);
-		spr->addTween(Actor::TweenRotation(MATH_PI * 2), 5000, -1);
-
-		return clp;
-	}
-
-	void onMouseDown(Event *event)
-	{
-		spActor actor = safeSpCast<Actor>(event->currentTarget);
-
-		int new_priority = actor->getParent()->getLastChild()->getPriority() + 1;
-		actor->setPriority(new_priority);
-
-		actor->addTween(Sprite::TweenColor(Color(Color::Red, 255)), 300, -1, true);
-	}
-
-	void onMouseUp(Event *event)
-	{
-		spSprite actor = safeSpCast<Sprite>(event->currentTarget);
-		actor->removeTweens();		
-		actor->setColor(Color::White);
-	}
+    TestClipRect()
+    {
+        spClipRectActor clp = createClipRect(250, 250, 4.0f);
+        clp->attachTo(content);
+        clp->setPosition(content->getSize() / 2 - clp->getSize() / 2);
+
+        spClipRectActor childClp = createClipRect(100, 100, 2.0f);
+        childClp->setPosition(-40.0f, -40.0f);
+        childClp->attachTo(clp);
+
+        spSprite spr = new Sprite;
+        spr->setResAnim(resources.getResAnim("batterfly"));
+        spr->setX(200.0f);
+        spr->attachTo(clp);
+    }
+
+    spClipRectActor createClipRect(int w, int h, float sc)
+    {
+        spClipRectActor clp = new ClipRectActor;
+        clp->setSize((float)w, (float)h);
+
+
+        spSprite spr = new Sprite;
+        spr->setPosition(w / 2.0f, h / 2.0f);
+        spr->setResAnim(resources.getResAnim("batterfly"));
+        spr->attachTo(clp);
+        spr->setAnchor(0.5f, 0.5f);
+        spr->setScale(sc);
+        spr->addTween(Actor::TweenRotation(MATH_PI * 2), 5000, -1);
+
+        return clp;
+    }
+
+    void onMouseDown(Event* event)
+    {
+        spActor actor = safeSpCast<Actor>(event->currentTarget);
+
+        int new_priority = actor->getParent()->getLastChild()->getPriority() + 1;
+        actor->setPriority(new_priority);
+
+        actor->addTween(Sprite::TweenColor(Color(Color::Red, 255)), 300, -1, true);
+    }
+
+    void onMouseUp(Event* event)
+    {
+        spSprite actor = safeSpCast<Sprite>(event->currentTarget);
+        actor->removeTweens();
+        actor->setColor(Color::White);
+    }
 };

+ 136 - 136
examples/Demo/src/TestDrag.h

@@ -4,153 +4,153 @@
 class DraggableSprite: public Sprite
 {
 public:
-	DraggableSprite()
-	{
-		drag.init(this);
-	}
+    DraggableSprite()
+    {
+        drag.init(this);
+    }
 
-	Draggable drag;
+    Draggable drag;
 };
 
 class DragTest: public Test
 {
 public:
-	DragTest()
-	{
-		for (int i = 0; i < 3; ++i)
-		{
-			spSprite sprite = new DraggableSprite;			
-			Vector2 pos(100.0f * (i + 1), 150.0f);
-			sprite->setPosition(pos);
-			sprite->setResAnim(resources.getResAnim("batterfly"));
-			sprite->attachTo(content);
-
-			sprite->setRotation(scalar::randFloat(0, (float)MATH_PI * 2));
-			sprite->setScale(scalar::randFloat(1.0f, 2.0f));
-		}
-	}
-
-	void onMouseDown(Event *event)
-	{
-		spActor actor = safeSpCast<Actor>(event->currentTarget);
-
-		int new_priority = actor->getParent()->getLastChild()->getPriority() + 1;
-		actor->setPriority(new_priority);
-
-		actor->addTween(Sprite::TweenColor(Color(255,0,0,255)), 300, -1, true);
-	}
-
-	void onMouseUp(Event *event)
-	{
-		spSprite actor = safeSpCast<Sprite>(event->currentTarget);
-		actor->removeTweens();		
-		actor->setColor(Color::White);
-	}
+    DragTest()
+    {
+        for (int i = 0; i < 3; ++i)
+        {
+            spSprite sprite = new DraggableSprite;
+            Vector2 pos(100.0f * (i + 1), 150.0f);
+            sprite->setPosition(pos);
+            sprite->setResAnim(resources.getResAnim("batterfly"));
+            sprite->attachTo(content);
+
+            sprite->setRotation(scalar::randFloat(0, (float)MATH_PI * 2));
+            sprite->setScale(scalar::randFloat(1.0f, 2.0f));
+        }
+    }
+
+    void onMouseDown(Event* event)
+    {
+        spActor actor = safeSpCast<Actor>(event->currentTarget);
+
+        int new_priority = actor->getParent()->getLastChild()->getPriority() + 1;
+        actor->setPriority(new_priority);
+
+        actor->addTween(Sprite::TweenColor(Color(255, 0, 0, 255)), 300, -1, true);
+    }
+
+    void onMouseUp(Event* event)
+    {
+        spSprite actor = safeSpCast<Sprite>(event->currentTarget);
+        actor->removeTweens();
+        actor->setColor(Color::White);
+    }
 };
 
 
 class Drag2Test: public Test
 {
 public:
-	spSprite basket;
-	spSprite ball;
-	spSprite dragging;
-	spTextActor txt;
-
-	timeMS timeLeft;
-	const PointerState *touchedBy;
-	Draggable drag;
-	
-	Drag2Test():touchedBy(0), timeLeft(0)
-	{
-		basket = initActor(new Sprite,			
-			arg_name = "basket",
-			arg_resAnim = resources.getResAnim("batterfly"),
-			arg_attachTo= content,
-			arg_anchor = Vector2(0.5f, 0.5f),
-			arg_x = content->getWidth() * 3 / 4,
-			arg_y = content->getHeight() / 2);
-
-		ball = initActor(new Sprite,
-			arg_name = "ball",
-			arg_resAnim = resources.getResAnim("batterfly"),
-			arg_attachTo= content,
-			arg_anchor = Vector2(0.5f, 0.5f),
-			arg_x = content->getWidth() * 1 / 4,
-			arg_y = content->getHeight() / 2);
-
-		ball->addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this,  &Drag2Test::ballTouchDown));
-		ball->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this,  &Drag2Test::ballTouchUp));
-		content->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Drag2Test::touchUp));
-
-		txt = new TextActor;
-		txt->attachTo(content);
-		txt->setVAlign(TextStyle::VALIGN_MIDDLE);
-		txt->setHAlign(TextStyle::HALIGN_MIDDLE);
-		txt->setPosition(getSize() / 2);
-	}
-
-	
-	void ballTouchUp(Event *event)
-	{
-		touchedBy = 0;
-	}
-
-	void touchUp(Event *event)
-	{
-		if (!dragging)
-			return;
-		if (event->currentTarget.get() != content)
-			return;
-
-		dragging->setColor(Color::White);
-		spTween t;
-		if (event->target == basket)
-			t = dragging->addTween(Actor::TweenPosition(basket->getPosition() - basket->getSize()/2), 500);
-		else
-			t = dragging->addTween(Actor::TweenPosition(ball->getPosition() - ball->getSize() / 2), 500);
-		t->setDetachActor(true);
-		dragging = 0;
-	}
-
-
-	void ballTouchDown(Event* ev)
-	{
-		TouchEvent *te = safeCast<TouchEvent*>(ev);
-		touchedBy = te->getPointer();
-		timeLeft = 500;		
-	}
-
-	void doUpdate(const UpdateState &us)
-	{
-		if (!touchedBy)
-		{
-			txt->setText("Drag left object and drop on right object");
-			if (!ball->getTween("scale", ep_ignore_error))
-				ball->addTween(Actor::TweenScale(1.1f), 500, -1, true)->setName("scale");
-			basket->removeTweens();
-			return;
-		}
-
-		if (!timeLeft)
-			return;
-
-		timeLeft -= us.dt;
-		if (timeLeft <= 0)
-		{
-			ball->removeTweens();
-			basket->addTween(Actor::TweenScale(1.1f), 500, -1, true);
-			txt->setText("Now drop it on right object");
-
-			timeLeft = 0;
-			dragging = initActor(ball->clone(),
-				arg_name = "dragging",
-				arg_attachTo = ball->getParent(),
-				arg_color = Color(0xff0000ff),
-				arg_anchor = Vector2(0, 0),
-				arg_input = false);
-			drag.start(touchedBy, dragging.get(), dragging->getSize() / 2);
-		}
-	}
+    spSprite basket;
+    spSprite ball;
+    spSprite dragging;
+    spTextActor txt;
+
+    timeMS timeLeft;
+    const PointerState* touchedBy;
+    Draggable drag;
+
+    Drag2Test(): touchedBy(0), timeLeft(0)
+    {
+        basket = initActor(new Sprite,
+                           arg_name = "basket",
+                           arg_resAnim = resources.getResAnim("batterfly"),
+                           arg_attachTo = content,
+                           arg_anchor = Vector2(0.5f, 0.5f),
+                           arg_x = content->getWidth() * 3 / 4,
+                           arg_y = content->getHeight() / 2);
+
+        ball = initActor(new Sprite,
+                         arg_name = "ball",
+                         arg_resAnim = resources.getResAnim("batterfly"),
+                         arg_attachTo = content,
+                         arg_anchor = Vector2(0.5f, 0.5f),
+                         arg_x = content->getWidth() * 1 / 4,
+                         arg_y = content->getHeight() / 2);
+
+        ball->addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this,  &Drag2Test::ballTouchDown));
+        ball->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this,  &Drag2Test::ballTouchUp));
+        content->addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Drag2Test::touchUp));
+
+        txt = new TextActor;
+        txt->attachTo(content);
+        txt->setVAlign(TextStyle::VALIGN_MIDDLE);
+        txt->setHAlign(TextStyle::HALIGN_MIDDLE);
+        txt->setPosition(getSize() / 2);
+    }
+
+
+    void ballTouchUp(Event* event)
+    {
+        touchedBy = 0;
+    }
+
+    void touchUp(Event* event)
+    {
+        if (!dragging)
+            return;
+        if (event->currentTarget.get() != content)
+            return;
+
+        dragging->setColor(Color::White);
+        spTween t;
+        if (event->target == basket)
+            t = dragging->addTween(Actor::TweenPosition(basket->getPosition() - basket->getSize() / 2), 500);
+        else
+            t = dragging->addTween(Actor::TweenPosition(ball->getPosition() - ball->getSize() / 2), 500);
+        t->setDetachActor(true);
+        dragging = 0;
+    }
+
+
+    void ballTouchDown(Event* ev)
+    {
+        TouchEvent* te = safeCast<TouchEvent*>(ev);
+        touchedBy = te->getPointer();
+        timeLeft = 500;
+    }
+
+    void doUpdate(const UpdateState& us)
+    {
+        if (!touchedBy)
+        {
+            txt->setText("Drag left object and drop on right object");
+            if (!ball->getTween("scale", ep_ignore_error))
+                ball->addTween(Actor::TweenScale(1.1f), 500, -1, true)->setName("scale");
+            basket->removeTweens();
+            return;
+        }
+
+        if (!timeLeft)
+            return;
+
+        timeLeft -= us.dt;
+        if (timeLeft <= 0)
+        {
+            ball->removeTweens();
+            basket->addTween(Actor::TweenScale(1.1f), 500, -1, true);
+            txt->setText("Now drop it on right object");
+
+            timeLeft = 0;
+            dragging = initActor(ball->clone(),
+                                 arg_name = "dragging",
+                                 arg_attachTo = ball->getParent(),
+                                 arg_color = Color(0xff0000ff),
+                                 arg_anchor = Vector2(0, 0),
+                                 arg_input = false);
+            drag.start(touchedBy, dragging.get(), dragging->getSize() / 2);
+        }
+    }
 private:
 };

+ 104 - 104
examples/Demo/src/TestHttp.h

@@ -8,112 +8,112 @@
 class TestHttp: public Test
 {
 public:
-	spProgressBar _bar;
-
-	TestHttp()
-	{	
-		//testing http request with redirect
-		spWebImage image1 = new WebImage;
-		image1->load("http://graph.facebook.com/1373973107/picture?type=normal&return_ssl_resources=0");		
-		image1->setSize(100, 100);		
-		image1->setPosition(getStage()->getSize() / 2);
-		image1->attachTo(content);
- 
-		//testing https
-		spWebImage image2 = new WebImage;
-		image2->load("http://oxygine.org/img/madewith.png");		
-		image2->setSize(100, 100);
-		image2->setPosition(image1->getPosition() + Vector2(image1->getWidth() + 10, 0));
-		image2->attachTo(content);
-        
-
-		//testing load to file
-		spHttpRequestTask task = HttpRequestTask::create();
-		task->setUrl("http://nist.time.gov/actualtime.cgi");
-		task->addEventListener(HttpRequestTask::COMPLETE, CLOSURE(this, &TestHttp::dateTimeLoaded));
-		task->run();
-
-		task = HttpRequestTask::create();
-		task->setUrl("http://oxygine.org/emscripten/MPHello.js.gz");
-		task->setFileName("somefile.abc");
-		task->addEventListener(HttpRequestTask::COMPLETE, CLOSURE(this, &TestHttp::loaded));
-		task->addEventListener(HttpRequestTask::PROGRESS, CLOSURE(this, &TestHttp::progress));
-		task->run();
-		
-		//OX_ASSERT(!file::exists("somefile.abc"));
-		file::deleteFile("somefile.abc", ep_ignore_error);
-
-		_bar = new ProgressBar;
-		_bar->setResAnim(resources.getResAnim("slide"));
-		_bar->setProgress(0);
-		_bar->setY(getStage()->getHeight() - _bar->getHeight());
-		_bar->attachTo(content);
-
-
-		task = HttpRequestTask::create();
-		task->setUrl("http://oxygine.org/test/reply.php");
-		vector<unsigned char> postBody;
-		for (size_t i = 0; i < 256; ++i)
-			postBody.push_back(i);
-		task->setPostData(postBody);
-		task->addEventListener(HttpRequestTask::COMPLETE, CLOSURE(this, &TestHttp::onPostLoaded));
-		task->run();
+    spProgressBar _bar;
+
+    TestHttp()
+    {
+        //testing http request with redirect
+        spWebImage image1 = new WebImage;
+        image1->load("http://graph.facebook.com/1373973107/picture?type=normal&return_ssl_resources=0");
+        image1->setSize(100, 100);
+        image1->setPosition(getStage()->getSize() / 2);
+        image1->attachTo(content);
+
+        //testing https
+        spWebImage image2 = new WebImage;
+        image2->load("http://oxygine.org/img/madewith.png");
+        image2->setSize(100, 100);
+        image2->setPosition(image1->getPosition() + Vector2(image1->getWidth() + 10, 0));
+        image2->attachTo(content);
+
+
+        //testing load to file
+        spHttpRequestTask task = HttpRequestTask::create();
+        task->setUrl("http://nist.time.gov/actualtime.cgi");
+        task->addEventListener(HttpRequestTask::COMPLETE, CLOSURE(this, &TestHttp::dateTimeLoaded));
+        task->run();
+
+        task = HttpRequestTask::create();
+        task->setUrl("http://oxygine.org/emscripten/MPHello.js.gz");
+        task->setFileName("somefile.abc");
+        task->addEventListener(HttpRequestTask::COMPLETE, CLOSURE(this, &TestHttp::loaded));
+        task->addEventListener(HttpRequestTask::PROGRESS, CLOSURE(this, &TestHttp::progress));
+        task->run();
+
+        //OX_ASSERT(!file::exists("somefile.abc"));
+        file::deleteFile("somefile.abc", ep_ignore_error);
+
+        _bar = new ProgressBar;
+        _bar->setResAnim(resources.getResAnim("slide"));
+        _bar->setProgress(0);
+        _bar->setY(getStage()->getHeight() - _bar->getHeight());
+        _bar->attachTo(content);
+
+
+        task = HttpRequestTask::create();
+        task->setUrl("http://oxygine.org/test/reply.php");
+        vector<unsigned char> postBody;
+        for (size_t i = 0; i < 256; ++i)
+            postBody.push_back(i);
+        task->setPostData(postBody);
+        task->addEventListener(HttpRequestTask::COMPLETE, CLOSURE(this, &TestHttp::onPostLoaded));
+        task->run();
 
 //fix conflict with windows.h
 #undef ERROR
 
-		task = HttpRequestTask::create();
-		task->setUrl("http://oxygine.org/test/missing.php");
-		task->addEventListener(HttpRequestTask::ERROR, CLOSURE(this, &TestHttp::onError));
-		task->run();
-	}
-
-	void progress(Event* event)
-	{
-		HttpRequestTask::ProgressEvent *ev = safeCast<HttpRequestTask::ProgressEvent *>(event);
-
-		float p = ev->loaded / (float)ev->total;
-		_bar->setProgress(p);
-	}
-
-	void onError(Event* event)
-	{
-		HttpRequestTask* task = safeCast<HttpRequestTask*>(event->currentTarget.get());
-		OX_ASSERT(task->_ref_counter == 2);
-	}
-
-	void onPostLoaded(Event* event)
-	{
-		notify("onPostLoaded");
-
-		spHttpRequestTask task = safeCast<HttpRequestTask*>(event->currentTarget.get());
-		std::vector<unsigned char> res = task->getResponse();
-		OX_ASSERT(res.size() == 256);
-		for (size_t i = 0; i < 256; ++i)
-		{
-			OX_ASSERT(res[i] == i);
-		}
-	}
-
-	void dateTimeLoaded(Event* event)
-	{
-		HttpRequestTask* task = safeCast<HttpRequestTask*>(event->currentTarget.get());
-		const std::vector<unsigned char> &response = task->getResponse();
-
-		pugi::xml_document doc;
-		doc.load_buffer(&response.front(), response.size());
-		string time = doc.root().first_child().attribute("time").as_string();
-		notify("internet time:\n" + time, 2000);
-
-	}
-
-	void loaded(Event* event)
-	{
-		//OX_ASSERT(file::exists("somefile.abc"));
- 
-		if (file::exists("somefile.abc"))
-		{
-			notify("file loaded");
-		}
-	}
+        task = HttpRequestTask::create();
+        task->setUrl("http://oxygine.org/test/missing.php");
+        task->addEventListener(HttpRequestTask::ERROR, CLOSURE(this, &TestHttp::onError));
+        task->run();
+    }
+
+    void progress(Event* event)
+    {
+        HttpRequestTask::ProgressEvent* ev = safeCast<HttpRequestTask::ProgressEvent*>(event);
+
+        float p = ev->loaded / (float)ev->total;
+        _bar->setProgress(p);
+    }
+
+    void onError(Event* event)
+    {
+        HttpRequestTask* task = safeCast<HttpRequestTask*>(event->currentTarget.get());
+        OX_ASSERT(task->_ref_counter == 2);
+    }
+
+    void onPostLoaded(Event* event)
+    {
+        notify("onPostLoaded");
+
+        spHttpRequestTask task = safeCast<HttpRequestTask*>(event->currentTarget.get());
+        std::vector<unsigned char> res = task->getResponse();
+        OX_ASSERT(res.size() == 256);
+        for (size_t i = 0; i < 256; ++i)
+        {
+            OX_ASSERT(res[i] == i);
+        }
+    }
+
+    void dateTimeLoaded(Event* event)
+    {
+        HttpRequestTask* task = safeCast<HttpRequestTask*>(event->currentTarget.get());
+        const std::vector<unsigned char>& response = task->getResponse();
+
+        pugi::xml_document doc;
+        doc.load_buffer(&response.front(), response.size());
+        string time = doc.root().first_child().attribute("time").as_string();
+        notify("internet time:\n" + time, 2000);
+
+    }
+
+    void loaded(Event* event)
+    {
+        //OX_ASSERT(file::exists("somefile.abc"));
+
+        if (file::exists("somefile.abc"))
+        {
+            notify("file loaded");
+        }
+    }
 };

+ 79 - 78
examples/Demo/src/TestInputText.h

@@ -9,87 +9,88 @@ DECLARE_SMART(TextWithBackground, spTextWithBackground);
 class TextWithBackground: public ColorRectSprite
 {
 public:
-	TextWithBackground(const string &defText)
-	{
-		text = new TextField;
-		//text won't handle any touch event
-		text->setInputEnabled(false);
-
-		TextStyle style;
-		style.color = Color::Black;
-		style.hAlign = TextStyle::HALIGN_CENTER;
-		style.vAlign = TextStyle::VALIGN_MIDDLE;
-		style.multiline = true;
-		style.font = resourcesUI.getResFont("big")->getFont();
-		text->setStyle(style);
-		text->setText(defText);
-
-		addChild(text);		
-	}
-
-	spTextField text;
-
-	void sizeChanged(const Vector2 &size)
-	{
-		text->setSize(size);
-	}
+    TextWithBackground(const string& defText)
+    {
+        text = new TextField;
+        //text won't handle any touch event
+        text->setInputEnabled(false);
+
+        TextStyle style;
+        style.color = Color::Black;
+        style.hAlign = TextStyle::HALIGN_CENTER;
+        style.vAlign = TextStyle::VALIGN_MIDDLE;
+        style.multiline = true;
+        style.font = resourcesUI.getResFont("big")->getFont();
+        text->setStyle(style);
+        text->setText(defText);
+
+        addChild(text);
+    }
+
+    spTextField text;
+
+    void sizeChanged(const Vector2& size)
+    {
+        text->setSize(size);
+    }
 };
 
 class TestInputText: public Test
 {
 public:
-	spInputText _input;
-	spTextWithBackground _current;
-
-	TestInputText()	
-	{
-		_input = new InputText;
-		//_input->setAllowedSymbols("1234567890");
-		//_input->setDisallowedSymbols("0");
-		_input->addEventListener(Event::COMPLETE, CLOSURE(this, &TestInputText::onComplete));
-
-		spTextWithBackground t = new TextWithBackground("click and edit me 1");
-		t->setSize(200, 60);
-		t->setPosition(content->getWidth()/2 - t->getWidth()/2, 100);
-		t->attachTo(this);
-		t->addEventListener(TouchEvent::CLICK, CLOSURE(this, &TestInputText::onClick));
-
-		t = new TextWithBackground("click and edit me 2");		
-		t->setSize(200, 60);
-		t->setPosition(content->getWidth()/2 - t->getWidth()/2, 170);
-		t->attachTo(this);
-		t->addEventListener(TouchEvent::CLICK, CLOSURE(this, &TestInputText::onClick));
-	}
-
-	void onClick(Event *ev)
-	{
-		if (_current)
-		{
-			_current->setColor(Color::White);
-		}
-
-		_current = safeSpCast<TextWithBackground>(ev->currentTarget);
-		_input->start(_current->text);
-		_current->setColor(Color::Red);
-	}
-
-	void onComplete(Event *ev)
-	{
-		if (_current)
-		{
-			_current->setColor(Color::White);
-		}
-		_current = 0;
-		InputText::stopAnyInput();
-	}
-
-	~TestInputText()
-	{
-		InputText::stopAnyInput();
-	}
-
-	void clicked(string id)
-	{		
-		
-	}
+    spInputText _input;
+    spTextWithBackground _current;
+
+    TestInputText()
+    {
+        _input = new InputText;
+        //_input->setAllowedSymbols("1234567890");
+        //_input->setDisallowedSymbols("0");
+        _input->addEventListener(Event::COMPLETE, CLOSURE(this, &TestInputText::onComplete));
+
+        spTextWithBackground t = new TextWithBackground("click and edit me 1");
+        t->setSize(200, 60);
+        t->setPosition(content->getWidth() / 2 - t->getWidth() / 2, 100);
+        t->attachTo(this);
+        t->addEventListener(TouchEvent::CLICK, CLOSURE(this, &TestInputText::onClick));
+
+        t = new TextWithBackground("click and edit me 2");
+        t->setSize(200, 60);
+        t->setPosition(content->getWidth() / 2 - t->getWidth() / 2, 170);
+        t->attachTo(this);
+        t->addEventListener(TouchEvent::CLICK, CLOSURE(this, &TestInputText::onClick));
+    }
+
+    void onClick(Event* ev)
+    {
+        if (_current)
+        {
+            _current->setColor(Color::White);
+        }
+
+        _current = safeSpCast<TextWithBackground>(ev->currentTarget);
+        _input->start(_current->text);
+        _current->setColor(Color::Red);
+    }
+
+    void onComplete(Event* ev)
+    {
+        if (_current)
+        {
+            _current->setColor(Color::White);
+            notify(_current->text->getText());
+        }
+        _current = 0;
+        InputText::stopAnyInput();
+    }
+
+    ~TestInputText()
+    {
+        InputText::stopAnyInput();
+    }
+
+    void clicked(string id)
+    {
+
+    }
 };

+ 80 - 80
examples/Demo/src/TestManageRes.h

@@ -8,100 +8,100 @@
 class ManageResTest: public Test
 {
 public:
-	ManageResTest()
-	{
-		toggle sw[] = {toggle("unload resources", 1), toggle("load resources", 0)};
-		addToggle("switch", sw, 2);
+    ManageResTest()
+    {
+        toggle sw[] = {toggle("unload resources", 1), toggle("load resources", 0)};
+        addToggle("switch", sw, 2);
 #ifdef EMSCRIPTEN
 #else
-		addButton("mt", "Multithreading loading");
-		addButton("mt_slow", "MT loading (slow demo)");
+        addButton("mt", "Multithreading loading");
+        addButton("mt_slow", "MT loading (slow demo)");
 #endif
 
 
-		for (int i = 0; i < resources.getCount(); ++i)
-		{
-			ResAnim *ra = dynamic_cast<ResAnim *>(resources.get(i));
-			if (!ra)
-				continue;
-			if (ra->getName().find("_") != string::npos)
-				continue;
-			spSprite sprite = new Sprite;
-			sprite->setResAnim(ra);
-			sprite->addTween(TweenAnim(ra), 500, -1);
-			sprite->setPosition(scalar::randFloat(50.0f, getWidth() - 100.0f), scalar::randFloat(50.0f, getHeight() - 100.0f));
-			sprite->attachTo(content);	
+        for (int i = 0; i < resources.getCount(); ++i)
+        {
+            ResAnim* ra = dynamic_cast<ResAnim*>(resources.get(i));
+            if (!ra)
+                continue;
+            if (ra->getName().find("_") != string::npos)
+                continue;
+            spSprite sprite = new Sprite;
+            sprite->setResAnim(ra);
+            sprite->addTween(TweenAnim(ra), 500, -1);
+            sprite->setPosition(scalar::randFloat(50.0f, getWidth() - 100.0f), scalar::randFloat(50.0f, getHeight() - 100.0f));
+            sprite->attachTo(content);
 
-			if (ra->isName("bg"))
-			{
-				sprite->setPosition(0,0);
-				sprite->setPriority(-1);
-			}
-			else
-			{
-				//sprite->addEventHandler(new DragHandler);
-			}
-		}
+            if (ra->isName("bg"))
+            {
+                sprite->setPosition(0, 0);
+                sprite->setPriority(-1);
+            }
+            else
+            {
+                //sprite->addEventHandler(new DragHandler);
+            }
+        }
 
-		spTextField text = new TextField;
-		text->attachTo(content);
+        spTextField text = new TextField;
+        text->attachTo(content);
 
-		text->setSize(300, 200);
-		text->setPosition(140.0f, (float)getHeight() - text->getHeight());
+        text->setSize(300, 200);
+        text->setPosition(140.0f, (float)getHeight() - text->getHeight());
 
-		TextStyle st;
-		st.font = resourcesUI.getResFont("big")->getFont();
-		st.vAlign = TextStyle::VALIGN_TOP;
-		st.color = Color(0xffffffff);
-		st.multiline = true;
-		text->setStyle(st);
-		text->setText("The quick brown fox jumps over the lazy dog. 1234567890");
-		//text->addEventHandler(new DragHandler);
-	}
+        TextStyle st;
+        st.font = resources.getResFont("font")->getFont();
+        st.vAlign = TextStyle::VALIGN_TOP;
+        st.color = Color::CornflowerBlue;
+        st.multiline = true;
+        text->setStyle(st);
+        text->setText("The quick brown fox jumps over the lazy dog. 1234567890");
+        //text->addEventHandler(new DragHandler);
+    }
 
-	void _loaded(Event *event)
-	{
-		notify("Loaded!");
-		ui->getChild("loading")->addTween(Sprite::TweenAlpha(0), 400)->setDetachActor(true);
+    void _loaded(Event* event)
+    {
+        notify("Loaded!");
+        ui->getChild("loading")->addTween(Sprite::TweenAlpha(0), 400)->setDetachActor(true);
 
-		releaseRef();//added ref earlier from void clicked(id)
-	}
+        releaseRef();//added ref earlier from void clicked(id)
+    }
 
-	void toggleClicked(string id, const toggle *data)
-	{
-		if (id == "switch")
-		{
-			if (data->value)
-				resources.unload();
-			else
-				resources.load();
-		}
-	}
+    void toggleClicked(string id, const toggle* data)
+    {
+        if (id == "switch")
+        {
+            if (data->value)
+                resources.unload();
+            else
+                resources.load();
+        }
+    }
 
-	void clicked(string id)
-	{
-		if (id == "mt" || id == "mt_slow")
-		{
-			resources.unload();
+    void clicked(string id)
+    {
+        if (id == "mt" || id == "mt_slow")
+        {
+            resources.unload();
 
-			spSprite sp = new Sprite;
-			sp->setName("loading");
-			sp->setResAnim(resourcesUI.getResAnim("loading"));
-			sp->attachTo(ui);
-			sp->setAnchor(Vector2(0.5f, 0.5f));
-			sp->setPosition(getSize() - sp->getSize()/4);
-			sp->setScale(0.5f);
-			sp->addTween(Actor::TweenRotation(-(float)MATH_PI * 2), 1500, -1);
+            spSprite sp = new Sprite;
+            sp->setName("loading");
+            sp->setResAnim(resourcesUI.getResAnim("loading"));
+            sp->attachTo(ui);
+            sp->setAnchor(Vector2(0.5f, 0.5f));
+            sp->setPosition(getSize() - sp->getSize() / 4);
+            sp->setScale(0.5f);
+            sp->addTween(Actor::TweenRotation(-(float)MATH_PI * 2), 1500, -1);
 
-			spThreadLoading l = new ThreadLoading;
-			l->addEventListener(ThreadLoading::COMPLETE, CLOSURE(this, &ManageResTest::_loaded));
-			
-			addRef();//protect Test instance from automatic delete if you close it to fast
+            spThreadLoading l = new ThreadLoading;
+            l->addEventListener(ThreadLoading::COMPLETE, CLOSURE(this, &ManageResTest::_loaded));
 
-			l->add(&resources);
-			if (id == "mt_slow")
-				l->setUpdateSize(128);
-			l->start(getStage());
-		}
-	}
+            addRef();//protect Test instance from automatic delete if you close it to fast
+
+            l->add(&resources);
+            if (id == "mt_slow")
+                l->setUpdateSize(128);
+            l->start(getStage());
+        }
+    }
 };

+ 124 - 124
examples/Demo/src/TestMask.h

@@ -7,128 +7,128 @@
 class TestMask: public Test
 {
 public:
-	timeMS _lastSnow;
-
-	spMaskedSprite _masked;
-	spSprite _mask;
-
-	TestMask():_lastSnow(0)
-	{		
-		_mask = initActor(new Sprite, 
-			arg_scale = 2.5f,
-			arg_priority = 1,
-			arg_alpha = 100,
-			arg_x = 100,
-			arg_y = 50,
-			arg_anchor = Vector2(0.5f, 0.5f),
-			arg_resAnim = resources.getResAnim("logo2"),
-			arg_attachTo = content);
-
-		_mask->addTween(Actor::TweenRotation(MATH_PI * 2), 15000, -1, true);
-		_mask->addTween(Actor::TweenX(content->getWidth() - 100), 10000, -1, true);
-		_mask->addTween(Actor::TweenY(content->getHeight() - 50), 12000, -1, true);
-
-		_masked = initActor(new MaskedSprite,
-			arg_attachTo = content);
-
-		_masked->setMask(_mask);
-
-
-		spPolygon poly = new oxygine::Polygon;
-
-		vertexPCT2 *data = TestPolygon::createVertices(10);
-		poly->setVertices(data, sizeof(vertexPCT2) * 10 * 4, vertexPCT2::FORMAT, true);
-		poly->setPosition(getSize() / 2);
-		poly->setScale(1.3f);
-		_masked->addChild(poly);
-
-		spSprite sp = new Sprite;
-		sp->attachTo(_masked);
-		sp->setResAnim(resources.getResAnim("bg"));
-
-
-		TextStyle style;
-		style.font = resourcesUI.getResFont("big")->getFont();
-		style.color = Color::BlanchedAlmond,
-		style.vAlign = TextStyle::VALIGN_MIDDLE;
-		style.hAlign = TextStyle::HALIGN_CENTER;
-		style.multiline = true;
-
-		spTextField text = initActor(new TextField(), 
-			arg_attachTo = _masked,
-			arg_pos = content->getSize()/2,
-			arg_scale = 1.5f,
-			arg_text = "Oxygine. Masked text",
-			arg_style = style);
-
-
-		const Test::toggle sm[] = {Test::toggle("hide mask", 0), Test::toggle("show mask", 1), };
-		addToggle("show_mask", sm, 2);
-
-		const Test::toggle cm[] = {Test::toggle("change mask1", 0), Test::toggle("change mask2", 1), };
-		addToggle("change_mask", cm, 2);
-
-		const Test::toggle dm[] = {Test::toggle("disable mask", 0), Test::toggle("enable mask", 1), };
-		addToggle("disable_mask", dm, 2);
-
-		const Test::toggle pause[] = {Test::toggle("pause", 0), Test::toggle("resume", 1), };
-		addToggle("pause", pause, 2);
-	}
-
-	void toggleClicked(string id, const toggle *t)
-	{
-		if (id == "show_mask")
-			_mask->setVisible(t->value != 0);
-
-		if (id == "disable_mask") 
-		{
-			if (t->value == 0)
-				_masked->setMask(0);
-			else
-				_masked->setMask(_mask);
-		}
-
-		if (id == "pause")
-		{
-			spClock clock = getStage()->getClock();
-			if (t->value == 0)
-				clock->pause();
-			else
-				clock->resume();
-		}
-
-		if (id == "change_mask") 
-		{			
-			_mask->removeTweensByName("tweenanim");
-			switch(t->value)
-			{
-			case 1:
-				_mask->setResAnim(resources.getResAnim("logo2"));
-				break;
-			case 0:
-				_mask->addTween(TweenAnim(resources.getResAnim("anim")), 600, -1, false)->setName("tweenanim");
-				break;
-			}			
-		}
-	}
-
-
-	void doUpdate(const UpdateState &us)
-	{
-		if (_lastSnow  + 40 < us.time)
-		{
-			_lastSnow = us.time;
-			spSprite snow = initActor(new Sprite,
-				arg_anchor = Vector2(0.5f, 0.5f),
-				arg_resAnim = resources.getResAnim("snow"),
-				arg_attachTo = _masked,
-				arg_rotation = scalar::randFloat(0, MATH_PI * 2),
-				arg_y = -50,
-				arg_scale = scalar::randFloat(0.4f, 1.0f),
-				arg_x = scalar::randFloat(0, content->getWidth()));
-
-			snow->addTween(Actor::TweenY(content->getHeight() + 50), 6000)->setDetachActor(true);
-			snow->addTween(Actor::TweenRotation(scalar::randFloat(0, MATH_PI * 2)), 10000);
-		}
-	}
+    timeMS _lastSnow;
+
+    spMaskedSprite _masked;
+    spSprite _mask;
+
+    TestMask(): _lastSnow(0)
+    {
+        _mask = initActor(new Sprite,
+                          arg_scale = 2.5f,
+                          arg_priority = 1,
+                          arg_alpha = 100,
+                          arg_x = 100,
+                          arg_y = 50,
+                          arg_anchor = Vector2(0.5f, 0.5f),
+                          arg_resAnim = resources.getResAnim("logo2"),
+                          arg_attachTo = content);
+
+        _mask->addTween(Actor::TweenRotation(MATH_PI * 2), 15000, -1, true);
+        _mask->addTween(Actor::TweenX(content->getWidth() - 100), 10000, -1, true);
+        _mask->addTween(Actor::TweenY(content->getHeight() - 50), 12000, -1, true);
+
+        _masked = initActor(new MaskedSprite,
+                            arg_attachTo = content);
+
+        _masked->setMask(_mask);
+
+
+        spPolygon poly = new oxygine::Polygon;
+
+        vertexPCT2* data = TestPolygon::createVertices(10);
+        poly->setVertices(data, sizeof(vertexPCT2) * 10 * 4, vertexPCT2::FORMAT, true);
+        poly->setPosition(getSize() / 2);
+        poly->setScale(1.3f);
+        _masked->addChild(poly);
+
+        spSprite sp = new Sprite;
+        sp->attachTo(_masked);
+        sp->setResAnim(resources.getResAnim("bg"));
+
+
+        TextStyle style;
+        style.font = resourcesUI.getResFont("big")->getFont();
+        style.color = Color::BlanchedAlmond,
+              style.vAlign = TextStyle::VALIGN_MIDDLE;
+        style.hAlign = TextStyle::HALIGN_CENTER;
+        style.multiline = true;
+
+        spTextField text = initActor(new TextField(),
+                                     arg_attachTo = _masked,
+                                     arg_pos = content->getSize() / 2,
+                                     arg_scale = 1.5f,
+                                     arg_text = "Oxygine. Masked text",
+                                     arg_style = style);
+
+
+        const Test::toggle sm[] = {Test::toggle("hide mask", 0), Test::toggle("show mask", 1), };
+        addToggle("show_mask", sm, 2);
+
+        const Test::toggle cm[] = {Test::toggle("change mask1", 0), Test::toggle("change mask2", 1), };
+        addToggle("change_mask", cm, 2);
+
+        const Test::toggle dm[] = {Test::toggle("disable mask", 0), Test::toggle("enable mask", 1), };
+        addToggle("disable_mask", dm, 2);
+
+        const Test::toggle pause[] = {Test::toggle("pause", 0), Test::toggle("resume", 1), };
+        addToggle("pause", pause, 2);
+    }
+
+    void toggleClicked(string id, const toggle* t)
+    {
+        if (id == "show_mask")
+            _mask->setVisible(t->value != 0);
+
+        if (id == "disable_mask")
+        {
+            if (t->value == 0)
+                _masked->setMask(0);
+            else
+                _masked->setMask(_mask);
+        }
+
+        if (id == "pause")
+        {
+            spClock clock = getStage()->getClock();
+            if (t->value == 0)
+                clock->pause();
+            else
+                clock->resume();
+        }
+
+        if (id == "change_mask")
+        {
+            _mask->removeTweensByName("tweenanim");
+            switch (t->value)
+            {
+                case 1:
+                    _mask->setResAnim(resources.getResAnim("logo2"));
+                    break;
+                case 0:
+                    _mask->addTween(TweenAnim(resources.getResAnim("anim")), 600, -1, false)->setName("tweenanim");
+                    break;
+            }
+        }
+    }
+
+
+    void doUpdate(const UpdateState& us)
+    {
+        if (_lastSnow  + 40 < us.time)
+        {
+            _lastSnow = us.time;
+            spSprite snow = initActor(new Sprite,
+                                      arg_anchor = Vector2(0.5f, 0.5f),
+                                      arg_resAnim = resources.getResAnim("snow"),
+                                      arg_attachTo = _masked,
+                                      arg_rotation = scalar::randFloat(0, MATH_PI * 2),
+                                      arg_y = -50,
+                                      arg_scale = scalar::randFloat(0.4f, 1.0f),
+                                      arg_x = scalar::randFloat(0, content->getWidth()));
+
+            snow->addTween(Actor::TweenY(content->getHeight() + 50), 6000)->setDetachActor(true);
+            snow->addTween(Actor::TweenRotation(scalar::randFloat(0, MATH_PI * 2)), 10000);
+        }
+    }
 };

+ 102 - 105
examples/Demo/src/TestPerf.h

@@ -4,121 +4,118 @@
 class PerfTest: public Test
 {
 public:
-	spButton button;
-	int count;
-	bool _tweenAnim;
-	bool _tweenRot;
-	bool _tweenScale;
+    spButton button;
+    int count;
+    bool _tweenAnim;
+    bool _tweenRot;
+    bool _tweenScale;
 
-	PerfTest()
-	{
-		_tweenAnim = false;
-		_tweenRot = false;
-		_tweenScale = false;
-		count = 0;
-		addButton("add", "add 500");
-		addButton("animate", "animate");
-		addButton("scale0.01", "scale=0.01");
-		addButton("scale0.2", "scale=0.2");
-		addButton("scale0.5", "scale=0.5");
+    PerfTest()
+    {
+        _tweenAnim = false;
+        _tweenRot = false;
+        _tweenScale = false;
+        count = 0;
+        addButton("add", "add 500");
+        addButton("animate", "animate");
+        addButton("scale0.01", "scale=0.01");
+        addButton("scale0.2", "scale=0.2");
+        addButton("scale0.5", "scale=0.5");
 
-		toggle dr[]={toggle("driver=null", 0, new VideoDriverNull), toggle("driver=default", 0, 0)};
-		addToggle("driver", dr, 2);
+        toggle dr[] = {toggle("driver=null", 0, new VideoDriverNull), toggle("driver=default", 0, 0)};
+        addToggle("driver", dr, 2);
 
-		content->setInputEnabled(false);
-		content->setInputChildrenEnabled(false);
-	}
+        content->setInputEnabled(false);
+        content->setInputChildrenEnabled(false);
+    }
 
-	void toggleClicked(string id, const toggle *data)
-	{
-		if (id == "driver")
-			content->driver = (IVideoDriver*)(data->data);
-	}
+    void toggleClicked(string id, const toggle* data)
+    {
+        if (id == "driver")
+            content->driver = (IVideoDriver*)(data->data);
+    }
 
-	void clicked(string id)
-	{
-		if (id == "add")
-		{
-			int a = 500;
-			count += a;
-			for (int i = 0; i < a; ++i)
-			{
-				spSprite sprite = new Sprite;
-				sprite->setResAnim(resources.getResAnim("anim"));
-				sprite->setAnchor(Vector2(0.5f, 0.5f));
-				sprite->setScale(0.05f);
-				sprite->setPosition(scalar::randFloat(0, (float)getWidth()), scalar::randFloat(0, (float)getHeight()));
-				content->addChild(sprite);
-			}
+    void clicked(string id)
+    {
+        if (id == "add")
+        {
+            int a = 500;
+            count += a;
+            for (int i = 0; i < a; ++i)
+            {
+                spSprite sprite = new Sprite;
+                sprite->setResAnim(resources.getResAnim("anim"));
+                sprite->setAnchor(Vector2(0.5f, 0.5f));
+                sprite->setScale(0.05f);
+                sprite->setPosition(scalar::randFloat(0, (float)getWidth()), scalar::randFloat(0, (float)getHeight()));
+                content->addChild(sprite);
+            }
 
-			char str[255];
-			safe_sprintf(str, "add 500 (%d)", count);			
-			updateText(id, str);
-		}
-		if (id == "scale0.01")
-		{
-			spActor child = content->getFirstChild();
-			while(child)
-			{
-				child->setScale(Vector2(1,1) * 0.01f);
-				child = child->getNextSibling();
-			}
-		}
-		if (id == "scale0.2")
-		{
-			spActor child = content->getFirstChild();
-			while(child)
-			{
-				child->setScale(Vector2(1,1) * 0.2f);
-				child = child->getNextSibling();
-			}
-		}
+            char str[255];
+            safe_sprintf(str, "add 500 (%d)", count);
+            updateText(id, str);
+        }
+        if (id == "scale0.01")
+        {
+            spActor child = content->getFirstChild();
+            while (child)
+            {
+                child->setScale(Vector2(1, 1) * 0.01f);
+                child = child->getNextSibling();
+            }
+        }
+        if (id == "scale0.2")
+        {
+            spActor child = content->getFirstChild();
+            while (child)
+            {
+                child->setScale(Vector2(1, 1) * 0.2f);
+                child = child->getNextSibling();
+            }
+        }
 
-		if (id == "scale0.5")
-		{
-			spActor child = content->getFirstChild();
-			while(child)
-			{
-				child->setScale(Vector2(1,1) * 0.5f);
-				child = child->getNextSibling();
-			}
-		}
+        if (id == "scale0.5")
+        {
+            spActor child = content->getFirstChild();
+            while (child)
+            {
+                child->setScale(Vector2(1, 1) * 0.5f);
+                child = child->getNextSibling();
+            }
+        }
 
-		if (id == "animate")
-		{
-			spActor child = content->getFirstChild();
-			while(child)
-			{
-				spTween t = 0;
-				if (!_tweenAnim)
-					t = createTween(TweenAnim(resources.getResAnim("anim")), 500, -1);
-				else
-				if (!_tweenRot)
-					t = createTween(Actor::TweenRotation((float)MATH_PI * 2.0f), 3000, -1);
-				else
-				if (!_tweenScale)
-					t = createTween(Actor::TweenScale(Vector2(0.2f, 0.2f)), 3000, -1, true);
+        if (id == "animate")
+        {
+            spActor child = content->getFirstChild();
+            while (child)
+            {
+                spTween t = 0;
+                if (!_tweenAnim)
+                    t = createTween(TweenAnim(resources.getResAnim("anim")), 500, -1);
+                else if (!_tweenRot)
+                    t = createTween(Actor::TweenRotation((float)MATH_PI * 2.0f), 3000, -1);
+                else if (!_tweenScale)
+                    t = createTween(Actor::TweenScale(Vector2(0.2f, 0.2f)), 3000, -1, true);
 
 
-				if (t)
-					child->addTween(t);
-				child = child->getNextSibling();
-			}
+                if (t)
+                    child->addTween(t);
+                child = child->getNextSibling();
+            }
 
-			if (!_tweenAnim)
-				_tweenAnim = true;
-			else
-			{
-				if (!_tweenRot)
-					_tweenRot = true;
-				else
-					if (!_tweenScale)
-					{
-						updateText(id, "");
-						_tweenScale = true;
-					}
-			}
-		}
-	}
+            if (!_tweenAnim)
+                _tweenAnim = true;
+            else
+            {
+                if (!_tweenRot)
+                    _tweenRot = true;
+                else if (!_tweenScale)
+                {
+                    updateText(id, "");
+                    _tweenScale = true;
+                }
+            }
+        }
+    }
 
 };

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

@@ -8,97 +8,97 @@
 class TestPolygon: public Test
 {
 public:
-	spPolygon poly;
-	int _num;
-
-	TestPolygon() :_num(3)
-	{	
-		poly = new oxygine::Polygon;
-		poly->addTween(Actor::TweenRotation(MATH_PI * 2), 16000, -1);
-		poly->setPosition(content->getSize() / 2);
-
-		ResAnim *rs = resources.getResAnim("tiled");
-
-		//access to texture
-		//ResAnim "tiled" has only single frame and uses own separate atlas texture
-		AnimationFrame frame = rs->getFrame(0);
-		spNativeTexture texture = frame.getDiffuse().base;
-
-		//by default all textures has mode "clamp to edge"
-		//disable it and allow tiling
-		texture->setClamp2Edge(false);
-
-		poly->setResAnim(rs);
-
-		update(_num);
-
-		content->addChild(poly);
-
-		addButton("+1", "+1");
-	}
-
-	static vertexPCT2 initVertex(const Vector2 &pos, unsigned int color)
-	{
-		vertexPCT2 v;
-		v.color = color;
-		v.x = pos.x;
-		v.y = pos.y;
-		v.z = 0;
-		v.u = v.x / 100;
-		v.v = v.y / 100;
-
-		return v;
-	}
-
-	static vertexPCT2 getVertex(int i, int num)
-	{
-		float theta = 2.0f * MATH_PI / num * i;
-
-		Vector2 dir = Vector2(scalar::cos(theta), scalar::sin(theta));
-		float rad = getRoot()->getHeight() * 0.4f * (1 + scalar::sin(theta * 10)/10);
-		Vector2 p = dir * rad;
-		
-		Color c = interpolate(Color(Color::Lime), Color(Color::Red), scalar::abs(scalar::sin(theta * 3)));
-		return initVertex(p, c.rgba());
-	}
-
-	static vertexPCT2 *createVertices(int num)
-	{
-		int verticesCount = num * 4;
-
-		vertexPCT2 * vertices = new vertexPCT2[verticesCount];
-
-		vertexPCT2 *p = vertices;
-		for (int n = 0; n < num; ++n)
-		{
-			//add centered vertex
-			*p = initVertex(Vector2(0, 0), Color::White);
-			++p;
-
-			*p = getVertex(n, num);
-			++p;
-
-			*p = getVertex(n + 1, num);
-			++p;
-
-			//Oxygine uses "triangles strip" rendering mode 
-			//dublicate last vertex (degenerate triangles)
-			*p = getVertex(n + 1, num);
-			++p;
-		}
-
-		return vertices;
-	}
-
-	void update(int num)
-	{
-		vertexPCT2 *vertices = createVertices(num);
-		poly->setVertices(vertices, sizeof(vertexPCT2) * num * 4, vertexPCT2::FORMAT, true);
-	}
-
-	void clicked(string id)
-	{
-		_num++;
-		update(_num);
-	}
+    spPolygon poly;
+    int _num;
+
+    TestPolygon() : _num(3)
+    {
+        poly = new oxygine::Polygon;
+        poly->addTween(Actor::TweenRotation(MATH_PI * 2), 16000, -1);
+        poly->setPosition(content->getSize() / 2);
+
+        ResAnim* rs = resources.getResAnim("tiled");
+
+        //access to texture
+        //ResAnim "tiled" has only single frame and uses own separate atlas texture
+        AnimationFrame frame = rs->getFrame(0);
+        spNativeTexture texture = frame.getDiffuse().base;
+
+        //by default all textures has mode "clamp to edge"
+        //disable it and allow tiling
+        texture->setClamp2Edge(false);
+
+        poly->setResAnim(rs);
+
+        update(_num);
+
+        content->addChild(poly);
+
+        addButton("+1", "+1");
+    }
+
+    static vertexPCT2 initVertex(const Vector2& pos, unsigned int color)
+    {
+        vertexPCT2 v;
+        v.color = color;
+        v.x = pos.x;
+        v.y = pos.y;
+        v.z = 0;
+        v.u = v.x / 100;
+        v.v = v.y / 100;
+
+        return v;
+    }
+
+    static vertexPCT2 getVertex(int i, int num)
+    {
+        float theta = 2.0f * MATH_PI / num * i;
+
+        Vector2 dir = Vector2(scalar::cos(theta), scalar::sin(theta));
+        float rad = getRoot()->getHeight() * 0.4f * (1 + scalar::sin(theta * 10) / 10);
+        Vector2 p = dir * rad;
+
+        Color c = interpolate(Color(Color::Lime), Color(Color::Red), scalar::abs(scalar::sin(theta * 3)));
+        return initVertex(p, c.rgba());
+    }
+
+    static vertexPCT2* createVertices(int num)
+    {
+        int verticesCount = num * 4;
+
+        vertexPCT2* vertices = new vertexPCT2[verticesCount];
+
+        vertexPCT2* p = vertices;
+        for (int n = 0; n < num; ++n)
+        {
+            //add centered vertex
+            *p = initVertex(Vector2(0, 0), Color::White);
+            ++p;
+
+            *p = getVertex(n, num);
+            ++p;
+
+            *p = getVertex(n + 1, num);
+            ++p;
+
+            //Oxygine uses "triangles strip" rendering mode
+            //dublicate last vertex (degenerate triangles)
+            *p = getVertex(n + 1, num);
+            ++p;
+        }
+
+        return vertices;
+    }
+
+    void update(int num)
+    {
+        vertexPCT2* vertices = createVertices(num);
+        poly->setVertices(vertices, sizeof(vertexPCT2) * num * 4, vertexPCT2::FORMAT, true);
+    }
+
+    void clicked(string id)
+    {
+        _num++;
+        update(_num);
+    }
 };

+ 47 - 47
examples/Demo/src/TestProgressBar.h

@@ -5,54 +5,54 @@
 class TestProgressBar: public Test
 {
 public:
-	spProgressBar bar;
-	TestProgressBar()
-	{
-		addButton("0", "dir: 0");
-		addButton("90", "dir: 90");
-		addButton("180", "dir: 180");
-		addButton("270", "dir: 270");
-		addButton("radial_cw", "dir: radial_cw");
-		//addButton("radial_ccw", "dir: radial_ccw");
+    spProgressBar bar;
+    TestProgressBar()
+    {
+        addButton("0", "dir: 0");
+        addButton("90", "dir: 90");
+        addButton("180", "dir: 180");
+        addButton("270", "dir: 270");
+        addButton("radial_cw", "dir: radial_cw");
+        //addButton("radial_ccw", "dir: radial_ccw");
 
-		bar = new ProgressBar(); 
-		bar->setResAnim(resources.getResAnim("bg"));
-		bar->setAnchor(Vector2(0.5f, 0.5f));
-		bar->setPosition(getSize()/2);
-		bar->setScale(0.5f);
-		content->addChild(bar);
-	}
+        bar = new ProgressBar();
+        bar->setResAnim(resources.getResAnim("bg"));
+        bar->setAnchor(Vector2(0.5f, 0.5f));
+        bar->setPosition(getSize() / 2);
+        bar->setScale(0.5f);
+        content->addChild(bar);
+    }
 
-	void clicked(string id)
-	{		
-		bar->setProgress(0);
-		if (id == "0")
-		{			
-			bar->setDirection(ProgressBar::dir_0);			
-		}
-		if (id == "90")
-		{			
-			bar->setDirection(ProgressBar::dir_90);
-		}
-		if (id == "180")
-		{			
-			bar->setDirection(ProgressBar::dir_180);
-		}
-		if (id == "270")
-		{			
-			bar->setDirection(ProgressBar::dir_270);
-		}
-		/*
-		if (id == "radial_ccw")
-		{			
-			bar->setDirection(ProgressBar::dir_radial_ccw);
-		}
-		*/
-		if (id == "radial_cw")
-		{			
-			bar->setDirection(ProgressBar::dir_radial_cw);
-		}
+    void clicked(string id)
+    {
+        bar->setProgress(0);
+        if (id == "0")
+        {
+            bar->setDirection(ProgressBar::dir_0);
+        }
+        if (id == "90")
+        {
+            bar->setDirection(ProgressBar::dir_90);
+        }
+        if (id == "180")
+        {
+            bar->setDirection(ProgressBar::dir_180);
+        }
+        if (id == "270")
+        {
+            bar->setDirection(ProgressBar::dir_270);
+        }
+        /*
+        if (id == "radial_ccw")
+        {
+            bar->setDirection(ProgressBar::dir_radial_ccw);
+        }
+        */
+        if (id == "radial_cw")
+        {
+            bar->setDirection(ProgressBar::dir_radial_cw);
+        }
 
-		bar->addTween(ProgressBar::TweenProgress(1.0f), 1000);
-	}
+        bar->addTween(ProgressBar::TweenProgress(1.0f), 1000);
+    }
 };

+ 70 - 70
examples/Demo/src/TestRender2Texture.h

@@ -4,74 +4,74 @@
 class TestRender2Texture: public Test
 {
 public:
-	spNativeTexture texture;
-	Color color;
-	spSprite preview;
-
-	TestRender2Texture()
-	{
-		notify("touch to draw", 100000);
-
-		color = Color(255,255,255,32);
-
-		Vector2 size = content->getSize();
-
-		texture = IVideoDriver::instance->createTexture();
-		texture->init((int)size.x, (int)size.y, TF_R8G8B8A8, true);
-
-		preview = new Sprite;
-		preview->attachTo(content);
-		
-
-		AnimationFrame frame;
-		Diffuse df;
-		df.base = texture;
-		frame.init(0, df,
-			RectF(0, 0, size.x/texture->getWidth(), size.y/texture->getHeight()), 
-			RectF(Vector2(0,0), size), size);
-		preview->setAnimFrame(frame);		
-		preview->setBlendMode(blend_disabled);
-
-		content->addEventListener(TouchEvent::MOVE, CLOSURE(this, &TestRender2Texture::onMove));
-		content->addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &TestRender2Texture::onDown));
-	}
-
-	void onDown(Event *ev)
-	{
-		color = Color(rand() % 255, rand() % 255, rand() % 255, 32);
-		onMove(ev);
-	}
-
-	void onMove(Event *ev)
-	{
-		TouchEvent *te = (TouchEvent *)ev;
-		if (!te->getPointer()->isPressed())
-			return;
-
-		STDRenderer renderer(0);
-		RenderState rs;
-		rs.renderer = &renderer;
-	
-
-		Rect viewport(Point(0, 0), content->getSize().cast<Point>());
-		renderer.initCoordinateSystem(viewport.getWidth(), viewport.getHeight(), true);
-
-		IVideoDriver::instance->setRenderTarget(texture);
-		IVideoDriver::instance->setViewport(viewport);
-
-		//begin rendering
-		renderer.begin(0);
-
-		ResAnim *brush = resources.getResAnim("brush");
-		AnimationFrame frame = brush->getFrame(0,0);
-		const Diffuse &df = frame.getDiffuse();
-		renderer.setTexture(df.base, 0);
-		renderer.setBlendMode(blend_alpha);
-		RectF destRect(te->localPosition - Vector2(16, 16), Vector2(32, 32));
-		renderer.draw(&rs, color, frame.getSrcRect(), destRect);		
-		renderer.end();
-
-		//restore to default render target
-		IVideoDriver::instance->setRenderTarget(0);
-	}
+    spNativeTexture texture;
+    Color color;
+    spSprite preview;
+
+    TestRender2Texture()
+    {
+        notify("touch to draw", 100000);
+
+        color = Color(255, 255, 255, 32);
+
+        Vector2 size = content->getSize();
+
+        texture = IVideoDriver::instance->createTexture();
+        texture->init((int)size.x, (int)size.y, TF_R8G8B8A8, true);
+
+        preview = new Sprite;
+        preview->attachTo(content);
+
+
+        AnimationFrame frame;
+        Diffuse df;
+        df.base = texture;
+        frame.init(0, df,
+                   RectF(0, 0, size.x / texture->getWidth(), size.y / texture->getHeight()),
+                   RectF(Vector2(0, 0), size), size);
+        preview->setAnimFrame(frame);
+        preview->setBlendMode(blend_disabled);
+
+        content->addEventListener(TouchEvent::MOVE, CLOSURE(this, &TestRender2Texture::onMove));
+        content->addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &TestRender2Texture::onDown));
+    }
+
+    void onDown(Event* ev)
+    {
+        color = Color(rand() % 255, rand() % 255, rand() % 255, 32);
+        onMove(ev);
+    }
+
+    void onMove(Event* ev)
+    {
+        TouchEvent* te = (TouchEvent*)ev;
+        if (!te->getPointer()->isPressed())
+            return;
+
+        STDRenderer renderer(0);
+        RenderState rs;
+        rs.renderer = &renderer;
+
+
+        Rect viewport(Point(0, 0), content->getSize().cast<Point>());
+        renderer.initCoordinateSystem(viewport.getWidth(), viewport.getHeight(), true);
+
+        IVideoDriver::instance->setRenderTarget(texture);
+        IVideoDriver::instance->setViewport(viewport);
+
+        //begin rendering
+        renderer.begin(0);
+
+        ResAnim* brush = resources.getResAnim("brush");
+        AnimationFrame frame = brush->getFrame(0, 0);
+        const Diffuse& df = frame.getDiffuse();
+        renderer.setTexture(df.base, 0);
+        renderer.setBlendMode(blend_alpha);
+        RectF destRect(te->localPosition - Vector2(16, 16), Vector2(32, 32));
+        renderer.draw(&rs, color, frame.getSrcRect(), destRect);
+        renderer.end();
+
+        //restore to default render target
+        IVideoDriver::instance->setRenderTarget(0);
+    }
 };

+ 114 - 114
examples/Demo/src/TestSliding.h

@@ -7,118 +7,118 @@
 class TestSliding: public Test
 {
 public:
-	spSlidingActor _sliding;
-	bool _snapEnabled;
-	TestSliding()
-	{	
-		_snapEnabled = false;
-
-		spSlidingActor sliding = new SlidingActor();
-		sliding->addEventListener(SlidingActor::SlidingEvent::BEGIN, CLOSURE(this,  &TestSliding::slideBegin));
-		sliding->addEventListener(SlidingActor::SlidingEvent::SLIDING, CLOSURE(this,  &TestSliding::sliding));
-		sliding->addEventListener(SlidingActor::SlidingEvent::END, CLOSURE(this,  &TestSliding::slideEnd));
-		
-
-		sliding->setSize(getWidth()/3 * 2, getHeight()/3 * 2);
-
-
-		spColorRectSprite content = new ColorRectSprite();
-		content->setSize(sliding->getWidth(), 2000);
-		content->setColor(Color(200,200,200,255));
-		for (int i = 0; i < 20; i+=2)
-		{
-			spColorRectSprite c = initActor(new ColorRectSprite,
-				arg_size = Vector2(content->getWidth(), 100),
-				arg_color = Color(164,164,164,255),
-				arg_y = i * 100.0f,
-				arg_attachTo = content);
-
-			c->setCull(true);//cull invisible parts
-
-			spButton button = initActor(new Button, 
-				arg_resAnim = resourcesUI.getResAnim("button"),
-				arg_attachTo = c);
-			button->addEventListener(TouchEvent::CLICK, CLOSURE(this, &TestSliding::testClick));
-		}
-
-		spTextField title = initActor(new TextField, 
-			arg_text = "Sliding demo", 
-			arg_w = content->getWidth(),
-			arg_vAlign = TextStyle::VALIGN_TOP,
-			arg_hAlign = TextStyle::HALIGN_CENTER,
-			arg_font = resourcesUI.getResFont("big")->getFont(),
-			arg_color = Color(0xFF0000ff),
-			arg_attachTo = content);
-		
-		sliding->setContent(content);
-		sliding->setPosition(getSize()/2 - sliding->getSize()/2);
-		sliding->attachTo(this->content);
-
-		_sliding = sliding;
-
-		toggle tl[] = {toggle("lock", 0), toggle("unlock", 1)};
-		addToggle("lock", tl, 2);
-
-		toggle ts[] = {toggle("enable snap", 0), toggle("disable snap", 1)};
-		addToggle("snap", ts, 2);
-
-		addButton("stop", "stop");
-	}
-
-	void clicked(string id)
-	{
-		if (id == "stop")
-		{
-			_sliding->stop();
-		}
-	}
-
-	void toggleClicked(string id, const toggle *data)
-	{
-		if (id == "lock")
-			_sliding->setLocked(data->value == 0);
-		if (id == "snap")
-		{
-			_snapEnabled = data->value == 0;
-		}
-	}
-
-	void slideBegin(Event *event)
-	{
-		notify("slideBegin");
-		SlidingActor::SlidingEvent *sd = safeCast<SlidingActor::SlidingEvent *>(event);
-	}
-
-	void slideEnd(Event *event)
-	{
-		notify("slideEnd");
-
-		if (!_snapEnabled)
-			return;
-
-		//snap to  grid
-		SlidingActor::SlidingEvent *sd = safeCast<SlidingActor::SlidingEvent *>(event);
-		spActor content = _sliding->getContent();
-		float y = content->getY();
-		y = int(y / 100) * 100.0f;
-		Vector2 dest(content->getX(), y);
-		content->addTween(Actor::TweenPosition(dest), 100);
-	}
-
-	void sliding(Event *event)
-	{
-		/*
-		//snap
-		SlidingActor::SlidingEvent* sd = safeCast<SlidingActor::SlidingEvent *>(event);
-		if (sd->speed.sqlength() < 2500)
-		{
-			sd->speed = Vector2(0,0);
-		}
-		*/
-	}
-
-	void testClick(Event *event)
-	{
-		notify("clicked");
-	}
+    spSlidingActor _sliding;
+    bool _snapEnabled;
+    TestSliding()
+    {
+        _snapEnabled = false;
+
+        spSlidingActor sliding = new SlidingActor();
+        sliding->addEventListener(SlidingActor::SlidingEvent::BEGIN, CLOSURE(this,  &TestSliding::slideBegin));
+        sliding->addEventListener(SlidingActor::SlidingEvent::SLIDING, CLOSURE(this,  &TestSliding::sliding));
+        sliding->addEventListener(SlidingActor::SlidingEvent::END, CLOSURE(this,  &TestSliding::slideEnd));
+
+
+        sliding->setSize(getWidth() / 3 * 2, getHeight() / 3 * 2);
+
+
+        spColorRectSprite content = new ColorRectSprite();
+        content->setSize(sliding->getWidth(), 2000);
+        content->setColor(Color(200, 200, 200, 255));
+        for (int i = 0; i < 20; i += 2)
+        {
+            spColorRectSprite c = initActor(new ColorRectSprite,
+                                            arg_size = Vector2(content->getWidth(), 100),
+                                            arg_color = Color(164, 164, 164, 255),
+                                            arg_y = i * 100.0f,
+                                            arg_attachTo = content);
+
+            c->setCull(true);//cull invisible parts
+
+            spButton button = initActor(new Button,
+                                        arg_resAnim = resourcesUI.getResAnim("button"),
+                                        arg_attachTo = c);
+            button->addEventListener(TouchEvent::CLICK, CLOSURE(this, &TestSliding::testClick));
+        }
+
+        spTextField title = initActor(new TextField,
+                                      arg_text = "Sliding demo",
+                                      arg_w = content->getWidth(),
+                                      arg_vAlign = TextStyle::VALIGN_TOP,
+                                      arg_hAlign = TextStyle::HALIGN_CENTER,
+                                      arg_font = resourcesUI.getResFont("big")->getFont(),
+                                      arg_color = Color(0xFF0000ff),
+                                      arg_attachTo = content);
+
+        sliding->setContent(content);
+        sliding->setPosition(getSize() / 2 - sliding->getSize() / 2);
+        sliding->attachTo(this->content);
+
+        _sliding = sliding;
+
+        toggle tl[] = {toggle("lock", 0), toggle("unlock", 1)};
+        addToggle("lock", tl, 2);
+
+        toggle ts[] = {toggle("enable snap", 0), toggle("disable snap", 1)};
+        addToggle("snap", ts, 2);
+
+        addButton("stop", "stop");
+    }
+
+    void clicked(string id)
+    {
+        if (id == "stop")
+        {
+            _sliding->stop();
+        }
+    }
+
+    void toggleClicked(string id, const toggle* data)
+    {
+        if (id == "lock")
+            _sliding->setLocked(data->value == 0);
+        if (id == "snap")
+        {
+            _snapEnabled = data->value == 0;
+        }
+    }
+
+    void slideBegin(Event* event)
+    {
+        notify("slideBegin");
+        SlidingActor::SlidingEvent* sd = safeCast<SlidingActor::SlidingEvent*>(event);
+    }
+
+    void slideEnd(Event* event)
+    {
+        notify("slideEnd");
+
+        if (!_snapEnabled)
+            return;
+
+        //snap to  grid
+        SlidingActor::SlidingEvent* sd = safeCast<SlidingActor::SlidingEvent*>(event);
+        spActor content = _sliding->getContent();
+        float y = content->getY();
+        y = int(y / 100) * 100.0f;
+        Vector2 dest(content->getX(), y);
+        content->addTween(Actor::TweenPosition(dest), 100);
+    }
+
+    void sliding(Event* event)
+    {
+        /*
+        //snap
+        SlidingActor::SlidingEvent* sd = safeCast<SlidingActor::SlidingEvent *>(event);
+        if (sd->speed.sqlength() < 2500)
+        {
+            sd->speed = Vector2(0,0);
+        }
+        */
+    }
+
+    void testClick(Event* event)
+    {
+        notify("clicked");
+    }
 };

+ 12 - 12
examples/Demo/src/TestTexel2Pixel.h

@@ -3,16 +3,16 @@
 class TestTexel2Pixel: public Test
 {
 public:
-	TestTexel2Pixel()
-	{
-		spSprite sprite = new Sprite;			
-		Vector2 pos(0, 0);
-		sprite->setPosition(pos);
-		sprite->setResAnim(resources.getResAnim("t2p"));
-		sprite->attachTo(content);
-		float scale = 1.0f/getStage()->getScaleX();
-		sprite->setScale(scale);
-		Vector2 displaySpriteSize = sprite->getSize() * scale;
-		sprite->setPosition((content->getSize() - displaySpriteSize)/2.0f);
-	}
+    TestTexel2Pixel()
+    {
+        spSprite sprite = new Sprite;
+        Vector2 pos(0, 0);
+        sprite->setPosition(pos);
+        sprite->setResAnim(resources.getResAnim("t2p"));
+        sprite->attachTo(content);
+        float scale = 1.0f / getStage()->getScaleX();
+        sprite->setScale(scale);
+        Vector2 displaySpriteSize = sprite->getSize() * scale;
+        sprite->setPosition((content->getSize() - displaySpriteSize) / 2.0f);
+    }
 };

+ 165 - 165
examples/Demo/src/TestText.h

@@ -5,21 +5,21 @@
 
 struct text_test
 {
-	text_test(
-		string str, 
-		TextStyle::HorizontalAlign Align, 
-		TextStyle::VerticalAlign VAlign, 
-		Vector2 Size,
-		bool Multiline = true, int Scale2size = 0, bool Html = true):text(str), hAlign(Align), vAlign(VAlign), multiline(Multiline), size(Size), scale2size(Scale2size), html(Html)
-	{}
-
-	string text;
-	TextStyle::HorizontalAlign hAlign;
-	TextStyle::VerticalAlign vAlign;
-	bool multiline;
-	Vector2 size;
-	int scale2size;
-	bool html;
+    text_test(
+        string str,
+        TextStyle::HorizontalAlign Align,
+        TextStyle::VerticalAlign VAlign,
+        Vector2 Size,
+        bool Multiline = true, int Scale2size = 0, bool Html = true): text(str), hAlign(Align), vAlign(VAlign), multiline(Multiline), size(Size), scale2size(Scale2size), html(Html)
+    {}
+
+    string text;
+    TextStyle::HorizontalAlign hAlign;
+    TextStyle::VerticalAlign vAlign;
+    bool multiline;
+    Vector2 size;
+    int scale2size;
+    bool html;
 };
 
 
@@ -27,154 +27,154 @@ struct text_test
 class TestText: public Test
 {
 public:
-	vector<text_test> tests;
-	int current;
-
-	spColorRectSprite bg;
-	spColorRectSprite spriteTextRect;
-	spTextField text;
-
-	spTextField textDetails;
-
-	TestText()
-	{
-		current = 0;		
-
-		addButton("next", "Next Test");
-		addButton("prev", "Prev Test");		
-
-		textDetails = new TextField;
-		textDetails->attachTo(ui);
-		textDetails->setSize(Vector2(300, 0));
-		textDetails->setPosition(200.0f, getStage()->getHeight() - 10);
-		
-		TextStyle st;
-		st.font = resourcesUI.getResFont("main")->getFont();
-		st.vAlign = TextStyle::VALIGN_BOTTOM;
-		st.color = Color(0xffffffff);
-		st.multiline = true;
-		textDetails->setStyle(st);
-
-		bg = new ColorRectSprite();
-		bg->attachTo(content);
-		bg->setColor(Color(64, 64, 64, 255));
-
-		/*
-		spDragHandler dh = new DragHandler;
-		bg->addEventHandler(dh);
-		*/
-
-		spriteTextRect = new ColorRectSprite();
-		spriteTextRect->attachTo(bg);
-		spriteTextRect->setColor(Color(Color::Red, 80));
-
-		text = new TextField;
-		text->attachTo(bg);
-
-		Vector2 size(420, 300);
-
-
-		tests.push_back(text_test( "It is html style tagged text. <div c='ffff00'>It could be colored.  It <div c='0000ff'>supports</div> <div c='00ff00AA'> nested tags</div> and  <br/> broken lines.</div><br/>It supports CDATA and xml escape sequences:\n<![CDATA[<div c='00ffff'>it is CDATA</div>]]>", 
-			TextStyle::HALIGN_CENTER, TextStyle::VALIGN_MIDDLE, size, true));
-
-		for (int h = TextStyle::HALIGN_LEFT; h <= TextStyle::HALIGN_RIGHT; ++h)
-		{
-			tests.push_back(text_test( "<div c='00ff00'>Scaled Font test<br/></div> The quick brown fox jumps over the lazy dog. 1234567890. The quick brown fox jumps over the lazy dog. 1234567890. The quick brown fox jumps over the lazy dog. 1234567890. The quick brown fox jumps over the lazy dog. 1234567890. ", TextStyle::HALIGN_CENTER, TextStyle::VALIGN_MIDDLE, size, true, 5 * h  + 20));
-		}
-
-
-		tests.push_back(text_test( "<div c='00ff00'>Using '\\n' new line test</div>\nnew line\nnew line\nnew line", TextStyle::HALIGN_CENTER, TextStyle::VALIGN_TOP, size));
-		
-		for (int h = TextStyle::HALIGN_LEFT; h <= TextStyle::HALIGN_RIGHT; ++h)
-		{
-			tests.push_back(text_test( "<div c='00ff00'>Singleline Test</div> The quick brown fox.", TextStyle::HorizontalAlign(h), TextStyle::VALIGN_TOP, size, false));
-		}
-
-		for (int h = TextStyle::HALIGN_LEFT; h <= TextStyle::HALIGN_RIGHT; ++h)
-		{
-			tests.push_back(text_test( "<div c='00ff00'>Multiline Test with spaces inside</div> The   quick    brown    fox   jumps    over   the    lazy dog.", TextStyle::HorizontalAlign(h), TextStyle::VALIGN_TOP, size));
-		}
-
-		
-
-		for (int v = TextStyle::VALIGN_BASELINE; v <= TextStyle::VALIGN_BOTTOM; ++v)
-		{
-			for (int h = TextStyle::HALIGN_LEFT; h <= TextStyle::HALIGN_RIGHT; ++h)
-			{
-				tests.push_back(text_test( "It is html style tagged text. <div c='ffff00'>It could be colored.  It <div c='0000ff'>supports</div> <div c='00ff00AA'>nested tags</div> and  <br/> broken lines.</div><br/>It supports CDATA and xml escape sequences:\n<![CDATA[<div c='00ffff'>it is CDATA</div>]]>", 
-					TextStyle::HorizontalAlign(h), TextStyle::VerticalAlign(v), size, true));
-				//tests.push_back(text_test( "<div c='00ff00'>Aligment Test</div> The quick brown fox jumps over the lazy dog. 1234567890. The quick brown fox jumps over the lazy dog. 1234567890. ", TextStyle::HorizontalAlign(h), TextStyle::VerticalAlign(v), size));
-			}
-		}
-
-		size = Vector2(200, 100);
-		for (int v = TextStyle::VALIGN_BASELINE; v <= TextStyle::VALIGN_BOTTOM; ++v)
-		{
-			for (int h = TextStyle::HALIGN_LEFT; h <= TextStyle::HALIGN_RIGHT; ++h)
-			{
-				tests.push_back(text_test( "<div c='00ff00'>Aligment Test with limited size</div> The quick brown fox jumps over the lazy dog. 1234567890.", TextStyle::HorizontalAlign(h), TextStyle::VerticalAlign(v), size));
-			}
-		}
-
-		size = Vector2(380, 300);
-		for (int h = TextStyle::HALIGN_LEFT; h <= TextStyle::HALIGN_RIGHT; ++h)
-		{
-			tests.push_back(text_test( "<div c='00ff00'>Long string and aligment test</div> The_quick_brownfox_jumps_over_the lazy dog. 1234567890.", TextStyle::HorizontalAlign(h), TextStyle::VALIGN_TOP, size));
-		}	
-
-		updateTest(current);
-	}
-
-	void updateTest(int i)
-	{
-		const text_test &test = tests[i];
-		TextStyle style;
-		style.multiline = test.multiline;
-		style.vAlign = test.vAlign;
-		style.hAlign = test.hAlign;
-		style.font = resourcesUI.getResFont("big")->getFont();
-		style.color = Color(0xffffffff);
-		style.fontSize2Scale = test.scale2size;
-		text->setStyle(style);
-
-		text->setSize(test.size);
-		if (test.html)
-			text->setHtmlText(test.text);
-		else
-			text->setText(test.text);
-
-		//text->setText("<a>a</a>");
-
-		const Rect &rect = text->getTextRect();
-		spriteTextRect->setPosition(rect.pos);
-		spriteTextRect->setSize(rect.size);
-
-		bg->setSize(test.size);
-		bg->setPosition(getSize()/2 - bg->getSize()/2);
-
-
-		style.font = 0;
-		stringstream stream;
-		stream << i << ") ";
-		stream << dumpStyle(style, false);
-		stream << " size=(" << test.size.x << "," << test.size.y << ")";
-		textDetails->setText(stream.str());
-	}
-
-	void clicked(string id)
-	{
-		if(id == "next")
-		{
-			current += 1;
-		}
-		if(id == "prev")
-		{
-			current -= 1;
-		}
-
-		current += tests.size();
-		current %= tests.size();
-		updateTest(current);
-	}
-	
+    vector<text_test> tests;
+    int current;
+
+    spColorRectSprite bg;
+    spColorRectSprite spriteTextRect;
+    spTextField text;
+
+    spTextField textDetails;
+
+    TestText()
+    {
+        current = 0;
+
+        addButton("next", "Next Test");
+        addButton("prev", "Prev Test");
+
+        textDetails = new TextField;
+        textDetails->attachTo(ui);
+        textDetails->setSize(Vector2(300, 0));
+        textDetails->setPosition(200.0f, getStage()->getHeight() - 10);
+
+        TextStyle st;
+        st.font = resourcesUI.getResFont("main")->getFont();
+        st.vAlign = TextStyle::VALIGN_BOTTOM;
+        st.color = Color(0xffffffff);
+        st.multiline = true;
+        textDetails->setStyle(st);
+
+        bg = new ColorRectSprite();
+        bg->attachTo(content);
+        bg->setColor(Color(64, 64, 64, 255));
+
+        /*
+        spDragHandler dh = new DragHandler;
+        bg->addEventHandler(dh);
+        */
+
+        spriteTextRect = new ColorRectSprite();
+        spriteTextRect->attachTo(bg);
+        spriteTextRect->setColor(Color(Color::Red, 80));
+
+        text = new TextField;
+        text->attachTo(bg);
+
+        Vector2 size(420, 300);
+
+
+        tests.push_back(text_test("It is html style tagged text. <div c='ffff00'>It could be colored.  It <div c='0000ff'>supports</div> <div c='00ff00AA'> nested tags</div> and  <br/> broken lines.</div><br/>It supports CDATA and xml escape sequences:\n<![CDATA[<div c='00ffff'>it is CDATA</div>]]>",
+                                  TextStyle::HALIGN_CENTER, TextStyle::VALIGN_MIDDLE, size, true));
+
+        for (int h = TextStyle::HALIGN_LEFT; h <= TextStyle::HALIGN_RIGHT; ++h)
+        {
+            tests.push_back(text_test("<div c='00ff00'>Scaled Font test<br/></div> The quick brown fox jumps over the lazy dog. 1234567890. The quick brown fox jumps over the lazy dog. 1234567890. The quick brown fox jumps over the lazy dog. 1234567890. The quick brown fox jumps over the lazy dog. 1234567890. ", TextStyle::HALIGN_CENTER, TextStyle::VALIGN_MIDDLE, size, true, 5 * h  + 20));
+        }
+
+
+        tests.push_back(text_test("<div c='00ff00'>Using '\\n' new line test</div>\nnew line\nnew line\nnew line", TextStyle::HALIGN_CENTER, TextStyle::VALIGN_TOP, size));
+
+        for (int h = TextStyle::HALIGN_LEFT; h <= TextStyle::HALIGN_RIGHT; ++h)
+        {
+            tests.push_back(text_test("<div c='00ff00'>Singleline Test</div> The quick brown fox.", TextStyle::HorizontalAlign(h), TextStyle::VALIGN_TOP, size, false));
+        }
+
+        for (int h = TextStyle::HALIGN_LEFT; h <= TextStyle::HALIGN_RIGHT; ++h)
+        {
+            tests.push_back(text_test("<div c='00ff00'>Multiline Test with spaces inside</div> The   quick    brown    fox   jumps    over   the    lazy dog.", TextStyle::HorizontalAlign(h), TextStyle::VALIGN_TOP, size));
+        }
+
+
+
+        for (int v = TextStyle::VALIGN_BASELINE; v <= TextStyle::VALIGN_BOTTOM; ++v)
+        {
+            for (int h = TextStyle::HALIGN_LEFT; h <= TextStyle::HALIGN_RIGHT; ++h)
+            {
+                tests.push_back(text_test("It is html style tagged text. <div c='ffff00'>It could be colored.  It <div c='0000ff'>supports</div> <div c='00ff00AA'>nested tags</div> and  <br/> broken lines.</div><br/>It supports CDATA and xml escape sequences:\n<![CDATA[<div c='00ffff'>it is CDATA</div>]]>",
+                                          TextStyle::HorizontalAlign(h), TextStyle::VerticalAlign(v), size, true));
+                //tests.push_back(text_test( "<div c='00ff00'>Aligment Test</div> The quick brown fox jumps over the lazy dog. 1234567890. The quick brown fox jumps over the lazy dog. 1234567890. ", TextStyle::HorizontalAlign(h), TextStyle::VerticalAlign(v), size));
+            }
+        }
+
+        size = Vector2(200, 100);
+        for (int v = TextStyle::VALIGN_BASELINE; v <= TextStyle::VALIGN_BOTTOM; ++v)
+        {
+            for (int h = TextStyle::HALIGN_LEFT; h <= TextStyle::HALIGN_RIGHT; ++h)
+            {
+                tests.push_back(text_test("<div c='00ff00'>Aligment Test with limited size</div> The quick brown fox jumps over the lazy dog. 1234567890.", TextStyle::HorizontalAlign(h), TextStyle::VerticalAlign(v), size));
+            }
+        }
+
+        size = Vector2(380, 300);
+        for (int h = TextStyle::HALIGN_LEFT; h <= TextStyle::HALIGN_RIGHT; ++h)
+        {
+            tests.push_back(text_test("<div c='00ff00'>Long string and aligment test</div> The_quick_brownfox_jumps_over_the lazy dog. 1234567890.", TextStyle::HorizontalAlign(h), TextStyle::VALIGN_TOP, size));
+        }
+
+        updateTest(current);
+    }
+
+    void updateTest(int i)
+    {
+        const text_test& test = tests[i];
+        TextStyle style;
+        style.multiline = test.multiline;
+        style.vAlign = test.vAlign;
+        style.hAlign = test.hAlign;
+        style.font = resourcesUI.getResFont("big")->getFont();
+        style.color = Color(0xffffffff);
+        style.fontSize2Scale = test.scale2size;
+        text->setStyle(style);
+
+        text->setSize(test.size);
+        if (test.html)
+            text->setHtmlText(test.text);
+        else
+            text->setText(test.text);
+
+        //text->setText("<a>a</a>");
+
+        const Rect& rect = text->getTextRect();
+        spriteTextRect->setPosition(rect.pos);
+        spriteTextRect->setSize(rect.size);
+
+        bg->setSize(test.size);
+        bg->setPosition(getSize() / 2 - bg->getSize() / 2);
+
+
+        style.font = 0;
+        stringstream stream;
+        stream << i << ") ";
+        stream << dumpStyle(style, false);
+        stream << " size=(" << test.size.x << "," << test.size.y << ")";
+        textDetails->setText(stream.str());
+    }
+
+    void clicked(string id)
+    {
+        if (id == "next")
+        {
+            current += 1;
+        }
+        if (id == "prev")
+        {
+            current -= 1;
+        }
+
+        current += tests.size();
+        current %= tests.size();
+        updateTest(current);
+    }
+
 };

+ 35 - 35
examples/Demo/src/TestTextureFormat.h

@@ -4,40 +4,40 @@
 class TestTextureFormat: public Test
 {
 public:
-	bool loaded;
-
-	TestTextureFormat()
-	{
-		loaded = true;
-		addButton("", "R8G8B8A8");
-		addButton("_565", "R5G6B5");
-		addButton("_4444", "R4G4B4A4");
-		addButton("_5551", "R5G5B5A1");
-
-		updateTest("");
-	}
-
-	void updateTest(string prefix)
-	{
-		content->removeChildren();
-
-		ResAnim *res = resources.getResAnim("bg" + prefix);
-
-		//I unloaded some resources by default to safe some memory
-		//see res.xml
-		//line: <set load = "false" /> <!--do not load next atlasses by default-->
-		Resource *atlas = res->getAtlas();//or use resources.get("your atlas id")
-		//lets load it now
-		atlas->load();
-
-		spSprite sp = new Sprite;
-		sp->attachTo(content);
-		sp->setResAnim(res);
-	}
-
-	void clicked(string id)
-	{
-		updateTest(id);
-	}
+    bool loaded;
+
+    TestTextureFormat()
+    {
+        loaded = true;
+        addButton("", "R8G8B8A8");
+        addButton("_565", "R5G6B5");
+        addButton("_4444", "R4G4B4A4");
+        addButton("_5551", "R5G5B5A1");
+
+        updateTest("");
+    }
+
+    void updateTest(string prefix)
+    {
+        content->removeChildren();
+
+        ResAnim* res = resources.getResAnim("bg" + prefix);
+
+        //I unloaded some resources by default to safe some memory
+        //see res.xml
+        //line: <set load = "false" /> <!--do not load next atlasses by default-->
+        Resource* atlas = res->getAtlas();//or use resources.get("your atlas id")
+        //lets load it now
+        atlas->load();
+
+        spSprite sp = new Sprite;
+        sp->attachTo(content);
+        sp->setResAnim(res);
+    }
+
+    void clicked(string id)
+    {
+        updateTest(id);
+    }
 
 };

+ 157 - 157
examples/Demo/src/TestTweens.h

@@ -6,161 +6,161 @@
 class TweensTest: public Test
 {
 public:
-	spSprite _sprite;
-	Tween::EASE _ease;
-	spActor _easeGraph;
-
-	TweensTest()
-	{
-		_ease = Tween::ease_linear;
-		//_ease = Tween::ease_inOutBack;
-		addButton("ease", "ease: Linear");
-		addButton("TweenAnim", "Add TweenAnim");
-		addButton("TweenRotation", "Add TweenRotation");
-		addButton("TweenScale", "Add TweenScale");
-		addButton("TweenPosition", "Add TweenPosition");
-		addButton("TweenColor", "Add TweenColor");
-		addButton("TweenAlpha", "Add TweenAlpha");
-		addButton("TweenDummy", "Add TweenDummy");
-		addButton("TweenQueue", "Add Queue of Tweens");
-		addButton("TweenDelay", "Add Tween with Delay");
-		addButton("complete", "Complete Tween");
-
-
-		_sprite = new Sprite();
-		_sprite->attachTo(content);
-		_sprite->setAnchor(0.5f, 0.5f);
-		_sprite->setResAnim(resources.getResAnim("anim"));
-		_sprite->setPosition(getWidth()/2.0f, getHeight()/2);		
-
-		updateEase();
-	}
-	
-	spActor createEaseTest(Tween::EASE ease)
-	{
-		spColorRectSprite bg = new ColorRectSprite();
-		bg->setSize(330, 230);
-		bg->setColor(Color::Gray);
-
-		spColorRectSprite parent = new ColorRectSprite();
-		parent->setSize(300, 200);
-		parent->setColor(Color(230, 230, 230, 255));
-
-		float f = 0;
-		while (f <= 1.001f)
-		{
-			spColorRectSprite cr = new ColorRectSprite();
-			cr->setSize(2, 2);
-			cr->setColor(Color::Red);
-			parent->addChild(cr);
-
-			float x = f * parent->getWidth();
-			float y = (1.0f - Tween::calcEase(ease, f)) * parent->getHeight();
-
-			cr->setPosition(x - 1, y - 1);
-
-			f += 0.0025f;
-		}
-
-		parent->setPosition(10, 15);
-		bg->addChild(parent);
-
-		return bg;
-	}
-
-	void updateEase()
-	{
-		if (_easeGraph)
-			_easeGraph->detach();		
-
-		_easeGraph = createEaseTest(_ease);
-		_easeGraph->setPriority(-1);
-		_easeGraph->setY(getHeight()/2 - _easeGraph->getHeight()/2);
-		content->addChild(_easeGraph);
-
-		updateText("ease", "ease: " + ease2String(_ease));
-	}
-
-	void tweenDone(Event *event)
-	{
-		notify("TweenDone");
-	}
-
-	void _addTween(spTween tween)
-	{
-		tween->setEase(_ease); 
-		_sprite->addTween(tween);
-		tween->addEventListener(TweenEvent::DONE, CLOSURE(this, &TweensTest::tweenDone));
-	}
-	
-	void clicked(string id)
-	{
-		if (id == "ease")
-		{
-			_ease = (Tween::EASE)(_ease + 1);
-			_ease = (Tween::EASE)(_ease % Tween::ease_count);
-			if (_ease == Tween::ease_unknown)
-				_ease = Tween::ease_linear;								
-			updateEase();
-		}
-
-		int dur = 2000;
-		if (id == "TweenAnim")
-		{
-			_addTween( createTween(TweenAnim(resources.getResAnim("anim")), dur/4, 10));
-		}
-		if (id == "TweenRotation")
-		{
-			_addTween( createTween(Actor::TweenRotation(_sprite->getRotation() + (float)MATH_PI * 2), dur, 1));
-		}
-		if (id == "TweenPosition")
-		{
-			_addTween( createTween(Actor::TweenPosition(_sprite->getPosition() + Vector2(0, -200)), dur, 1, true));
-		}
-		if (id == "TweenScale")
-		{
-			_addTween( createTween(Actor::TweenScale(2, 2), dur, 1, true));
-		}
-		if (id == "TweenColor")
-		{
-			_addTween( createTween(Sprite::TweenColor(Color(255,0,0,255)), dur, 1, true));
-		}
-		if (id == "TweenAlpha")
-		{
-			_addTween( createTween(Actor::TweenAlpha(0), dur, 1, true));
-		}
-		if (id == "TweenDummy")
-		{
-			_addTween( createTween(TweenDummy(), dur, 1, true));
-		}
-
-		if (id == "TweenDelay")
-		{
-			_addTween( createTween(Actor::TweenRotation(_sprite->getRotation() + (float)MATH_PI * 2), dur, 2, false, 1000));
-		}
-
-		if (id == "TweenQueue")
-		{
-			spTweenQueue queue = new TweenQueue();			
-			queue->add(TweenAnim(resources.getResAnim("anim")), 500, 1);
-			queue->add(Actor::TweenRotation(_sprite->getRotation() + (float)MATH_PI * 2.0f), 500, 1, false, 1000);
-			queue->add(Actor::TweenScale(2), 500, 1, true);
-			_addTween(queue);
-		}
-
-		if (id == "complete")
-		{
-			_sprite->removeTweens(true);
-			/*
-			spTween t = _sprite->getFirstTween();
-			while(t)
-			{
-				spTween next = t->getNextSibling();
-				t->complete();//removes self from actor
-				t = next;
-			}
-			*/
-		}
-
-	}
+    spSprite _sprite;
+    Tween::EASE _ease;
+    spActor _easeGraph;
+
+    TweensTest()
+    {
+        _ease = Tween::ease_linear;
+        //_ease = Tween::ease_inOutBack;
+        addButton("ease", "ease: Linear");
+        addButton("TweenAnim", "Add TweenAnim");
+        addButton("TweenRotation", "Add TweenRotation");
+        addButton("TweenScale", "Add TweenScale");
+        addButton("TweenPosition", "Add TweenPosition");
+        addButton("TweenColor", "Add TweenColor");
+        addButton("TweenAlpha", "Add TweenAlpha");
+        addButton("TweenDummy", "Add TweenDummy");
+        addButton("TweenQueue", "Add Queue of Tweens");
+        addButton("TweenDelay", "Add Tween with Delay");
+        addButton("complete", "Complete Tween");
+
+
+        _sprite = new Sprite();
+        _sprite->attachTo(content);
+        _sprite->setAnchor(0.5f, 0.5f);
+        _sprite->setResAnim(resources.getResAnim("anim"));
+        _sprite->setPosition(getWidth() / 2.0f, getHeight() / 2);
+
+        updateEase();
+    }
+
+    spActor createEaseTest(Tween::EASE ease)
+    {
+        spColorRectSprite bg = new ColorRectSprite();
+        bg->setSize(330, 230);
+        bg->setColor(Color::Gray);
+
+        spColorRectSprite parent = new ColorRectSprite();
+        parent->setSize(300, 200);
+        parent->setColor(Color(230, 230, 230, 255));
+
+        float f = 0;
+        while (f <= 1.001f)
+        {
+            spColorRectSprite cr = new ColorRectSprite();
+            cr->setSize(2, 2);
+            cr->setColor(Color::Red);
+            parent->addChild(cr);
+
+            float x = f * parent->getWidth();
+            float y = (1.0f - Tween::calcEase(ease, f)) * parent->getHeight();
+
+            cr->setPosition(x - 1, y - 1);
+
+            f += 0.0025f;
+        }
+
+        parent->setPosition(10, 15);
+        bg->addChild(parent);
+
+        return bg;
+    }
+
+    void updateEase()
+    {
+        if (_easeGraph)
+            _easeGraph->detach();
+
+        _easeGraph = createEaseTest(_ease);
+        _easeGraph->setPriority(-1);
+        _easeGraph->setY(getHeight() / 2 - _easeGraph->getHeight() / 2);
+        content->addChild(_easeGraph);
+
+        updateText("ease", "ease: " + ease2String(_ease));
+    }
+
+    void tweenDone(Event* event)
+    {
+        notify("TweenDone");
+    }
+
+    void _addTween(spTween tween)
+    {
+        tween->setEase(_ease);
+        _sprite->addTween(tween);
+        tween->addEventListener(TweenEvent::DONE, CLOSURE(this, &TweensTest::tweenDone));
+    }
+
+    void clicked(string id)
+    {
+        if (id == "ease")
+        {
+            _ease = (Tween::EASE)(_ease + 1);
+            _ease = (Tween::EASE)(_ease % Tween::ease_count);
+            if (_ease == Tween::ease_unknown)
+                _ease = Tween::ease_linear;
+            updateEase();
+        }
+
+        int dur = 2000;
+        if (id == "TweenAnim")
+        {
+            _addTween(createTween(TweenAnim(resources.getResAnim("anim")), dur / 4, 10));
+        }
+        if (id == "TweenRotation")
+        {
+            _addTween(createTween(Actor::TweenRotation(_sprite->getRotation() + (float)MATH_PI * 2), dur, 1));
+        }
+        if (id == "TweenPosition")
+        {
+            _addTween(createTween(Actor::TweenPosition(_sprite->getPosition() + Vector2(0, -200)), dur, 1, true));
+        }
+        if (id == "TweenScale")
+        {
+            _addTween(createTween(Actor::TweenScale(2, 2), dur, 1, true));
+        }
+        if (id == "TweenColor")
+        {
+            _addTween(createTween(Sprite::TweenColor(Color(255, 0, 0, 255)), dur, 1, true));
+        }
+        if (id == "TweenAlpha")
+        {
+            _addTween(createTween(Actor::TweenAlpha(0), dur, 1, true));
+        }
+        if (id == "TweenDummy")
+        {
+            _addTween(createTween(TweenDummy(), dur, 1, true));
+        }
+
+        if (id == "TweenDelay")
+        {
+            _addTween(createTween(Actor::TweenRotation(_sprite->getRotation() + (float)MATH_PI * 2), dur, 2, false, 1000));
+        }
+
+        if (id == "TweenQueue")
+        {
+            spTweenQueue queue = new TweenQueue();
+            queue->add(TweenAnim(resources.getResAnim("anim")), 500, 1);
+            queue->add(Actor::TweenRotation(_sprite->getRotation() + (float)MATH_PI * 2.0f), 500, 1, false, 1000);
+            queue->add(Actor::TweenScale(2), 500, 1, true);
+            _addTween(queue);
+        }
+
+        if (id == "complete")
+        {
+            _sprite->removeTweens(true);
+            /*
+            spTween t = _sprite->getFirstTween();
+            while(t)
+            {
+                spTween next = t->getNextSibling();
+                t->complete();//removes self from actor
+                t = next;
+            }
+            */
+        }
+
+    }
 };

+ 106 - 104
examples/Demo/src/TestUserShader.h

@@ -9,119 +9,121 @@ DECLARE_SMART(ShaderSprite, spShaderSprite);
 class ShaderSprite: public Sprite
 {
 public:
-	ShaderSprite():_program(0), _val(0,0,0,0)
-	{
+    ShaderSprite(): _program(0), _val(0, 0, 0, 0)
+    {
 
-	}
-	
-	void setShaderProgram(UberShaderProgram* p)
-	{
-		_program = p;
-	}
+    }
 
-	const Vector4& getVal() const 
-	{
-		return _val;
-	}
+    void setShaderProgram(UberShaderProgram* p)
+    {
+        _program = p;
+    }
 
-	void setVal(const Vector4& v)
-	{
-		_val = v;
-	}
+    const Vector4& getVal() const
+    {
+        return _val;
+    }
 
-	typedef Property<Vector4, const Vector4&, ShaderSprite, &ShaderSprite::getVal, &ShaderSprite::setVal>	TweenVal;
+    void setVal(const Vector4& v)
+    {
+        _val = v;
+    }
+
+    typedef Property<Vector4, const Vector4&, ShaderSprite, &ShaderSprite::getVal, &ShaderSprite::setVal>   TweenVal;
 
 private:
-	Vector4 _val;
-	UberShaderProgram* _program;
-	void setUniforms(IVideoDriver *driver, ShaderProgram *prog)
-	{
-		driver->setUniform("userValue", &_val, 1);
-	}
-
-	void doRender(const RenderState &rs)
-	{
-		_program->setShaderUniformsCallback(CLOSURE(this, &ShaderSprite::setUniforms));
-		STDRenderer *renderer = safeCast<STDRenderer*>(rs.renderer);
-		renderer->setUberShaderProgram(_program);
-		Sprite::doRender(rs);
-		renderer->setUberShaderProgram(&Renderer::uberShader);
-
-		_program->setShaderUniformsCallback(UberShaderProgram::ShaderUniformsCallback());
-	}
+    Vector4 _val;
+    UberShaderProgram* _program;
+    void setUniforms(IVideoDriver* driver, ShaderProgram* prog)
+    {
+        driver->setUniform("userValue", &_val, 1);
+    }
+
+    void doRender(const RenderState& rs)
+    {
+        _program->setShaderUniformsCallback(CLOSURE(this, &ShaderSprite::setUniforms));
+        STDRenderer* renderer = safeCast<STDRenderer*>(rs.renderer);
+        renderer->setUberShaderProgram(_program);
+        Sprite::doRender(rs);
+        renderer->setUberShaderProgram(&Renderer::uberShader);
+
+        _program->setShaderUniformsCallback(UberShaderProgram::ShaderUniformsCallback());
+    }
 };
 
 class TestUserShader: public Test
 {
 public:
-	UberShaderProgram *_shaderMono;
-	UberShaderProgram *_shaderAddColor;
-	UberShaderProgram *_shaderInvert;
-
-	spShaderSprite _sprite;
-
-	TestUserShader():_shaderMono(0), _shaderAddColor(0)
-	{
-		_shaderMono = new UberShaderProgram();
-		_shaderMono->init(Renderer::uberShaderBody, 
-			"#define MODIFY_BASE\n"
-			"uniform lowp vec4 userValue;"
-			"lowp vec4 modify_base(lowp vec4 base)\n"
-			"{\n"
-			"lowp float c = (base.r + base.g + base.b)/3.0;\n"
-			"return mix(vec4(c, c, c, base.a), base, userValue.r);\n"
-			"}\n");
-
-		_shaderAddColor = new UberShaderProgram();
-		_shaderAddColor->init(Renderer::uberShaderBody, 
-			"#define MODIFY_BASE\n"
-			"uniform lowp vec4 userValue;"
-			"lowp vec4 modify_base(lowp vec4 base)\n"
-			"{\n"
-			"return base + userValue;\n"
-			"}\n");
-
-		_shaderInvert = new UberShaderProgram();
-		_shaderInvert->init(Renderer::uberShaderBody, 
-			"#define MODIFY_BASE\n"
-			"uniform lowp vec4 userValue;"
-			"lowp vec4 modify_base(lowp vec4 base)\n"
-			"{\n"
-			"\n"
-			"return vec4(mix(vec4(1.0, 1.0, 1.0, 1.0) - base, base, userValue.r).rgb, base.a);\n"
-			"}\n");
-
-
-		_sprite = initActor(new ShaderSprite, 
-			arg_resAnim = resources.getResAnim("bg"),
-			arg_attachTo = content
-			//arg_pos = content->getSize()/2,
-			//arg_anchor = Vector2(0.5f, 0.5f)
-			);
-
-		_sprite->addTween(ShaderSprite::TweenVal(Vector4(1,1,1,0)), 5000, -1, true);
-		_sprite->setShaderProgram(_shaderInvert);
-		
-		toggle t[] = {
-			toggle("->shader:add color", 0, _shaderAddColor),
-			toggle("->shader:mono", 0, _shaderMono), 
-			toggle("->shader:invert", 0, _shaderInvert)};
-		addToggle("shader", t, 3);		
-	}
-
-	~TestUserShader()
-	{
-		delete _shaderInvert;
-		delete _shaderMono;
-		delete _shaderAddColor;
-	}
-
-	void toggleClicked(string id, const toggle *data)
-	{
-		if (id == "shader")
-		{
-			UberShaderProgram *shader = (UberShaderProgram *)data->data;
-			_sprite->setShaderProgram(shader);
-		}
-	}
+    UberShaderProgram* _shaderMono;
+    UberShaderProgram* _shaderAddColor;
+    UberShaderProgram* _shaderInvert;
+
+    spShaderSprite _sprite;
+
+    TestUserShader(): _shaderMono(0), _shaderAddColor(0)
+    {
+        _shaderMono = new UberShaderProgram();
+        _shaderMono->init(Renderer::uberShaderBody,
+                          "#define MODIFY_BASE\n"
+                          "uniform lowp vec4 userValue;"
+                          "lowp vec4 modify_base(lowp vec4 base)\n"
+                          "{\n"
+                          "lowp float c = (base.r + base.g + base.b)/3.0;\n"
+                          "return mix(vec4(c, c, c, base.a), base, userValue.r);\n"
+                          "}\n");
+
+        _shaderAddColor = new UberShaderProgram();
+        _shaderAddColor->init(Renderer::uberShaderBody,
+                              "#define MODIFY_BASE\n"
+                              "uniform lowp vec4 userValue;"
+                              "lowp vec4 modify_base(lowp vec4 base)\n"
+                              "{\n"
+                              "return base + userValue;\n"
+                              "}\n");
+
+        _shaderInvert = new UberShaderProgram();
+        _shaderInvert->init(Renderer::uberShaderBody,
+                            "#define MODIFY_BASE\n"
+                            "uniform lowp vec4 userValue;"
+                            "lowp vec4 modify_base(lowp vec4 base)\n"
+                            "{\n"
+                            "\n"
+                            "return vec4(mix(vec4(1.0, 1.0, 1.0, 1.0) - base, base, userValue.r).rgb, base.a);\n"
+                            "}\n");
+
+
+        _sprite = initActor(new ShaderSprite,
+                            arg_resAnim = resources.getResAnim("bg"),
+                            arg_attachTo = content
+                                           //arg_pos = content->getSize()/2,
+                                           //arg_anchor = Vector2(0.5f, 0.5f)
+                           );
+
+        _sprite->addTween(ShaderSprite::TweenVal(Vector4(1, 1, 1, 0)), 5000, -1, true);
+        _sprite->setShaderProgram(_shaderInvert);
+
+        toggle t[] =
+        {
+            toggle("->shader:add color", 0, _shaderAddColor),
+            toggle("->shader:mono", 0, _shaderMono),
+            toggle("->shader:invert", 0, _shaderInvert)
+        };
+        addToggle("shader", t, 3);
+    }
+
+    ~TestUserShader()
+    {
+        delete _shaderInvert;
+        delete _shaderMono;
+        delete _shaderAddColor;
+    }
+
+    void toggleClicked(string id, const toggle* data)
+    {
+        if (id == "shader")
+        {
+            UberShaderProgram* shader = (UberShaderProgram*)data->data;
+            _sprite->setShaderProgram(shader);
+        }
+    }
 };

+ 144 - 144
examples/Demo/src/TestUserShader2.h

@@ -10,167 +10,167 @@
 class LightningRenderer : public Renderer
 {
 public:
-	spNativeTexture _base;
-	spNativeTexture _normal;
-
-	spNativeTexture _base2;
-
-	AnimationFrame _defaultNormal;
-
-	ShaderProgramGL *_lightShader;
-	Vector2 _light;
-	LightningRenderer() :_light(0, 0)
-	{
-		//vertex declaration with 2 pairs of UV
-		_vdecl = getDriver()->getVertexDeclaration(vertexPCT2T2::FORMAT);
-
-		//load vertex shader
-		file::buffer vsdata;
-		file::read("light_vs.glsl", vsdata);
-		vsdata.push_back(0);///null terminating string
-		unsigned int vs = ShaderProgramGL::createShader(GL_VERTEX_SHADER, (const char*)&vsdata.front(), "", "");
-
-		//load fragment shader
-		file::buffer fsdata;
-		file::read("light_fs.glsl", fsdata);
-		fsdata.push_back(0);///null terminating string
-		unsigned int ps = ShaderProgramGL::createShader(GL_FRAGMENT_SHADER, (const char*)&fsdata.front(), "", "");
-
-		//link into 1 shader program
-		unsigned int pr = ShaderProgramGL::createProgram(vs, ps, static_cast<const VertexDeclarationGL*>(IVideoDriver::instance->getVertexDeclaration(vertexPCT2T2::FORMAT)));
-		_lightShader = new ShaderProgramGL();
-		_lightShader->init(pr);
-
-		//set shader and apply samplers uniforms
-		getDriver()->setShaderProgram(_lightShader);
-		getDriver()->setUniformInt("base_texture", 0);
-		getDriver()->setUniformInt("normal_texture", 1);
-
-		//texture for sprites without normals
-		_defaultNormal = resources.getResAnim("defnormal")->getFrame(0);
-	}
-
-	void setLightPosition(const Vector2 &pos)
-	{
-		_light = pos;
-	}
-	
-	void _begin()
-	{
-		setShader(_lightShader);
-		_base = 0;
-		_normal = 0;
-
-		_driver->setUniform("light", &_light, 1);
-
-		_driver->setState(IVideoDriver::STATE_BLEND, 1);
-		_driver->setBlendFunc(IVideoDriver::BT_ONE, IVideoDriver::BT_ONE_MINUS_SRC_ALPHA);
-		_driver->setBlendFunc(IVideoDriver::BT_SRC_ALPHA, IVideoDriver::BT_ONE_MINUS_SRC_ALPHA);
-	}
-
-	void setBlendMode(blend_mode blend)
-	{
-	}
-
-	void setTexture(spNativeTexture base, spNativeTexture alpha, bool basePremultiplied /* = true */)
-	{
-		_base2 = base;
-		
-	}
-
-	void preDrawBatch()
-	{
-	}
-
-	void draw(const RState *rs, const Color &color, const RectF &srcRect, const RectF &destRect)
-	{
-		draw(rs, color, srcRect, destRect, 
-			_base2, _defaultNormal.getDiffuse().base, _defaultNormal.getSrcRect());
-	}
-
-	void draw(const RState *rs, const Color &color, const RectF &srcRect, const RectF &destRect, spNativeTexture base, spNativeTexture normal, const RectF &normalSrc)
-	{	
-		if (_base != base)
-		{
-			drawBatch();
-			_base = base;
-			_driver->setTexture(0, _base);
-		}
-
-		if (_normal != normal)
-		{
-			drawBatch();
-			_normal = normal;
-			_driver->setTexture(1, _normal);
-		}
-
-		vertexPCT2T2 v[4];		
-		fillQuadT2(v, srcRect, normalSrc, destRect, rs->transform, color.rgba());
-		_vertices.insert(_vertices.end(), (unsigned char*)v, (unsigned char*)v + sizeof(v));
-		_checkDrawBatch();
-	}
+    spNativeTexture _base;
+    spNativeTexture _normal;
+
+    spNativeTexture _base2;
+
+    AnimationFrame _defaultNormal;
+
+    ShaderProgramGL* _lightShader;
+    Vector2 _light;
+    LightningRenderer() : _light(0, 0)
+    {
+        //vertex declaration with 2 pairs of UV
+        _vdecl = getDriver()->getVertexDeclaration(vertexPCT2T2::FORMAT);
+
+        //load vertex shader
+        file::buffer vsdata;
+        file::read("light_vs.glsl", vsdata);
+        vsdata.push_back(0);///null terminating string
+        unsigned int vs = ShaderProgramGL::createShader(GL_VERTEX_SHADER, (const char*)&vsdata.front(), "", "");
+
+        //load fragment shader
+        file::buffer fsdata;
+        file::read("light_fs.glsl", fsdata);
+        fsdata.push_back(0);///null terminating string
+        unsigned int ps = ShaderProgramGL::createShader(GL_FRAGMENT_SHADER, (const char*)&fsdata.front(), "", "");
+
+        //link into 1 shader program
+        unsigned int pr = ShaderProgramGL::createProgram(vs, ps, static_cast<const VertexDeclarationGL*>(IVideoDriver::instance->getVertexDeclaration(vertexPCT2T2::FORMAT)));
+        _lightShader = new ShaderProgramGL();
+        _lightShader->init(pr);
+
+        //set shader and apply samplers uniforms
+        getDriver()->setShaderProgram(_lightShader);
+        getDriver()->setUniformInt("base_texture", 0);
+        getDriver()->setUniformInt("normal_texture", 1);
+
+        //texture for sprites without normals
+        _defaultNormal = resources.getResAnim("defnormal")->getFrame(0);
+    }
+
+    void setLightPosition(const Vector2& pos)
+    {
+        _light = pos;
+    }
+
+    void _begin()
+    {
+        setShader(_lightShader);
+        _base = 0;
+        _normal = 0;
+
+        _driver->setUniform("light", &_light, 1);
+
+        _driver->setState(IVideoDriver::STATE_BLEND, 1);
+        _driver->setBlendFunc(IVideoDriver::BT_ONE, IVideoDriver::BT_ONE_MINUS_SRC_ALPHA);
+        _driver->setBlendFunc(IVideoDriver::BT_SRC_ALPHA, IVideoDriver::BT_ONE_MINUS_SRC_ALPHA);
+    }
+
+    void setBlendMode(blend_mode blend)
+    {
+    }
+
+    void setTexture(spNativeTexture base, spNativeTexture alpha, bool basePremultiplied /* = true */)
+    {
+        _base2 = base;
+
+    }
+
+    void preDrawBatch()
+    {
+    }
+
+    void draw(const RState* rs, const Color& color, const RectF& srcRect, const RectF& destRect)
+    {
+        draw(rs, color, srcRect, destRect,
+             _base2, _defaultNormal.getDiffuse().base, _defaultNormal.getSrcRect());
+    }
+
+    void draw(const RState* rs, const Color& color, const RectF& srcRect, const RectF& destRect, spNativeTexture base, spNativeTexture normal, const RectF& normalSrc)
+    {
+        if (_base != base)
+        {
+            drawBatch();
+            _base = base;
+            _driver->setTexture(0, _base);
+        }
+
+        if (_normal != normal)
+        {
+            drawBatch();
+            _normal = normal;
+            _driver->setTexture(1, _normal);
+        }
+
+        vertexPCT2T2 v[4];
+        fillQuadT2(v, srcRect, normalSrc, destRect, rs->transform, color.rgba());
+        _vertices.insert(_vertices.end(), (unsigned char*)v, (unsigned char*)v + sizeof(v));
+        _checkDrawBatch();
+    }
 };
 
 class Sprite2 : public Sprite
 {
 public:
-	Sprite2(const AnimationFrame &n) :normal(n){}
+    Sprite2(const AnimationFrame& n) : normal(n) {}
 
-	void doRender(const RenderState &rs)
-	{
-		LightningRenderer *renderer = safeCast<LightningRenderer *>(rs.renderer);
+    void doRender(const RenderState& rs)
+    {
+        LightningRenderer* renderer = safeCast<LightningRenderer*>(rs.renderer);
 
-		const Diffuse &df = _frame.getDiffuse();
-		renderer->draw(&rs, getColor(), _frame.getSrcRect(), getDestRect(), df.base, normal.getDiffuse().base, normal.getSrcRect());
-	}
+        const Diffuse& df = _frame.getDiffuse();
+        renderer->draw(&rs, getColor(), _frame.getSrcRect(), getDestRect(), df.base, normal.getDiffuse().base, normal.getSrcRect());
+    }
 
-	AnimationFrame normal;
+    AnimationFrame normal;
 };
 
 
 class LightningActor : public Actor
 {
 public:
-	LightningRenderer _renderer;
-	void render(const RenderState &parent)
-	{
-		_renderer.setLightPosition(_getStage()->getDescendant("light")->getPosition());
-
-		RenderState rs = parent;
-		rs.renderer = &_renderer;
-		_renderer.begin(parent.renderer);
-		Actor::render(rs);
-		_renderer.end();
-	}
+    LightningRenderer _renderer;
+    void render(const RenderState& parent)
+    {
+        _renderer.setLightPosition(_getStage()->getDescendant("light")->getPosition());
+
+        RenderState rs = parent;
+        rs.renderer = &_renderer;
+        _renderer.begin(parent.renderer);
+        Actor::render(rs);
+        _renderer.end();
+    }
 };
 class TestUserShader2 : public Test
 {
 public:
-	UberShaderProgram *_shader;
-
-	Draggable drag;
-
-	TestUserShader2() :_shader(0)
-	{		
-		spActor lightning = new LightningActor;
-		this->content->addChild(lightning);
-		lightning->setSize(this->content->getSize());
-
-		AnimationFrame frame = resources.getResAnim("normal")->getFrame(0);
-		spSprite spr = new Sprite2(frame);
-		spr->setResAnim(resources.getResAnim("tiled"));
-		spr->setPosition(content->getSize() / 2 - spr->getSize() / 2);
-		spr->attachTo(lightning);
-		
-
-		spSprite light = new Sprite;
-		light->setName("light");
-		light->setResAnim(resources.getResAnim("light"));
-		light->setAnchor(0.5f, 0.5f);
-		drag.init(light.get());
-		light->setPosition(getSize() / 2);
-
-		lightning->addChild(light);
-	}
+    UberShaderProgram* _shader;
+
+    Draggable drag;
+
+    TestUserShader2() : _shader(0)
+    {
+        spActor lightning = new LightningActor;
+        this->content->addChild(lightning);
+        lightning->setSize(this->content->getSize());
+
+        AnimationFrame frame = resources.getResAnim("normal")->getFrame(0);
+        spSprite spr = new Sprite2(frame);
+        spr->setResAnim(resources.getResAnim("tiled"));
+        spr->setPosition(content->getSize() / 2 - spr->getSize() / 2);
+        spr->attachTo(lightning);
+
+
+        spSprite light = new Sprite;
+        light->setName("light");
+        light->setResAnim(resources.getResAnim("light"));
+        light->setAnchor(0.5f, 0.5f);
+        drag.init(light.get());
+        light->setPosition(getSize() / 2);
+
+        lightning->addChild(light);
+    }
 
 };

+ 80 - 80
examples/Demo/src/entry_point.cpp

@@ -17,109 +17,109 @@ using namespace oxygine;
 //called each frame
 int mainloop()
 {
-	example_update();
-	//update our stage
-	//update all actors. Actor::update would be called also for all children
-	getStage()->update();
-	
-	if (core::beginRendering())
-	{		
-		Color clearColor(32, 32, 32, 255);
-		Rect viewport(Point(0, 0), core::getDisplaySize());
-		//render all actors. Actor::render would be called also for all children
-		getStage()->render(clearColor, viewport);
-
-		core::swapDisplayBuffers();
-	}
-
-	//update internal components
-	//all input events would be passed to Stage::instance.handleEvent
-	//if done is true then User requests quit from app.
-	bool done = core::update();
-
-	return done ? 1 : 0;
+    example_update();
+    //update our stage
+    //update all actors. Actor::update would be called also for all children
+    getStage()->update();
+
+    if (core::beginRendering())
+    {
+        Color clearColor(32, 32, 32, 255);
+        Rect viewport(Point(0, 0), core::getDisplaySize());
+        //render all actors. Actor::render would be called also for all children
+        getStage()->render(clearColor, viewport);
+
+        core::swapDisplayBuffers();
+    }
+
+    //update internal components
+    //all input events would be passed to Stage::instance.handleEvent
+    //if done is true then User requests quit from app.
+    bool done = core::update();
+
+    return done ? 1 : 0;
 }
 
 //it is application entry point
 void run()
 {
-	ObjectBase::__startTracingLeaks();
+    ObjectBase::__startTracingLeaks();
 
-	//initialize Oxygine's internal stuff
-	core::init_desc desc;
+    //initialize Oxygine's internal stuff
+    core::init_desc desc;
 
 #if OXYGINE_SDL || OXYGINE_EMSCRIPTEN
-	//we could setup initial window size on SDL builds
-	desc.w = 960;
-	desc.h = 640;
-	//marmalade settings could be changed from emulator's menu
+    //we could setup initial window size on SDL builds
+    desc.w = 960;
+    desc.h = 640;
+    //marmalade settings could be changed from emulator's menu
 #endif
 
 
-	example_preinit();
-	core::init(&desc);
+    example_preinit();
+    core::init(&desc);
 
 
-	//create Stage. Stage is a root node
-	Stage::instance = new Stage(true);
-	Point size = core::getDisplaySize();
-	getStage()->setSize(size);
+    //create Stage. Stage is a root node
+    Stage::instance = new Stage(true);
+    Point size = core::getDisplaySize();
+    getStage()->setSize(size);
 
-	//DebugActor is a helper actor node. It shows FPS, memory usage and other useful stuff
-	DebugActor::show();
-		
-	//initialize this example stuff. see example.cpp
-	example_init();
+    //DebugActor is a helper actor node. It shows FPS, memory usage and other useful stuff
+    DebugActor::show();
+
+    //initialize this example stuff. see example.cpp
+    example_init();
 
 #ifdef EMSCRIPTEN
-	/*
-	if you build for Emscripten mainloop would be called automatically outside. 
-	see emscripten_set_main_loop below
-	*/	
-	return;
+    /*
+    if you build for Emscripten mainloop would be called automatically outside.
+    see emscripten_set_main_loop below
+    */
+    return;
 #endif
 
 
-	//here is main game loop
-	while (1)
-	{
-		int done = mainloop();
-		if (done)
-			break;
-	}
-	//user wants to leave application...
+    //here is main game loop
+    while (1)
+    {
+        int done = mainloop();
+        if (done)
+            break;
+    }
+    //user wants to leave application...
 
-	//lets dump all created objects into log
-	//all created and not freed resources would be displayed
-	ObjectBase::dumpCreatedObjects();
+    //lets dump all created objects into log
+    //all created and not freed resources would be displayed
+    ObjectBase::dumpCreatedObjects();
 
-	//lets cleanup everything right now and call ObjectBase::dumpObjects() again
-	//we need to free all allocated resources and delete all created actors
-	//all actors/sprites are smart pointer objects and actually you don't need it remove them by hands
-	//but now we want delete it by hands
+    //lets cleanup everything right now and call ObjectBase::dumpObjects() again
+    //we need to free all allocated resources and delete all created actors
+    //all actors/sprites are smart pointer objects and actually you don't need it remove them by hands
+    //but now we want delete it by hands
 
-	//check example.cpp
-	example_destroy();
+    //check example.cpp
+    example_destroy();
 
 
-	//renderer.cleanup();
+    //renderer.cleanup();
 
-	/**releases all internal components and Stage*/
-	core::release();
+    /**releases all internal components and Stage*/
+    core::release();
 
-	//dump list should be empty now
-	//we deleted everything and could be sure that there aren't any memory leaks
-	ObjectBase::dumpCreatedObjects();
+    //dump list should be empty now
+    //we deleted everything and could be sure that there aren't any memory leaks
+    ObjectBase::dumpCreatedObjects();
 
-	ObjectBase::__stopTracingLeaks();
-	//end
+    ObjectBase::__stopTracingLeaks();
+    //end
 }
 
 #ifdef __S3E__
 int main(int argc, char* argv[])
 {
-	run();
-	return 0;
+    run();
+    return 0;
 }
 #endif
 
@@ -129,23 +129,23 @@ int main(int argc, char* argv[])
 #include "SDL_main.h"
 extern "C"
 {
-	int main(int argc, char* argv[])
-	{
-		run();
-		return 0;
-	}
+    int main(int argc, char* argv[])
+    {
+        run();
+        return 0;
+    }
 };
 #endif
 
 #ifdef EMSCRIPTEN
 #include <emscripten.h>
 
-void one(){ mainloop(); }
+void one() { mainloop(); }
 
 int main(int argc, char* argv[])
 {
-	run();
-	emscripten_set_main_loop(one, 0, 0);
-	return 0;
+    run();
+    emscripten_set_main_loop(one, 0, 0);
+    return 0;
 }
 #endif

+ 186 - 186
examples/Demo/src/example.cpp

@@ -42,199 +42,199 @@ spStage stage2;
 
 class TestActor: public Test
 {
-public:		
-
-	TestActor()
-	{
-
-		_x = 90;//getStage()->getWidth()/2.0f;
-		_y = 80;
-
-
-		addButton("tweens", "Tweens");
-		addButton("text", "Text");
-		addButton("progress_bar", "Progress Bar");
-		addButton("drag", "Drag and Drop");
-		addButton("drag2", "Drag and Drop2");
-		addButton("perf", "Performance");
-		addButton("manage_res", "Manage Resources");
-		addButton("texture_format", "Textures Format");
-		addButton("r2t", "Render to Texture");	
-		addButton("t2p", "Texel to Pixel");
-		addButton("sliding", "Sliding Actor");		
-		addButton("box9sprite", "Box9 Sprite");		
-		addButton("cliprect", "ClipRect Actor");		
-		addButton("usershader", "User Shader");		
-		addButton("usershader2", "User Shader2");
-		addButton("mask", "Mask");		
-		addButton("polygon", "Polygon");
-		addButton("inputtext", "Input Text");		
-		addButton("openbrowser", "Open Browser");
-		addButton("http", "Http requests");
+public:
+
+    TestActor()
+    {
+
+        _x = 90;//getStage()->getWidth()/2.0f;
+        _y = 80;
+
+
+        addButton("tweens", "Tweens");
+        addButton("text", "Text");
+        addButton("progress_bar", "Progress Bar");
+        addButton("drag", "Drag and Drop");
+        addButton("drag2", "Drag and Drop2");
+        addButton("perf", "Performance");
+        addButton("manage_res", "Manage Resources");
+        addButton("texture_format", "Textures Format");
+        addButton("r2t", "Render to Texture");
+        addButton("t2p", "Texel to Pixel");
+        addButton("sliding", "Sliding Actor");
+        addButton("box9sprite", "Box9 Sprite");
+        addButton("cliprect", "ClipRect Actor");
+        addButton("usershader", "User Shader");
+        addButton("usershader2", "User Shader2");
+        addButton("mask", "Mask");
+        addButton("polygon", "Polygon");
+        addButton("inputtext", "Input Text");
+        addButton("openbrowser", "Open Browser");
+        addButton("http", "Http requests");
     }
 
-	void showTest(spActor actor)
-	{
-		spStage stage = getStage();
+    void showTest(spActor actor)
+    {
+        spStage stage = getStage();
 #if MULTIWINDOW
-		stage = stage2;
+        stage = stage2;
 #else
-		setVisible(false);
+        setVisible(false);
 #endif
-		stage->addChild(actor);
-	}
-
-	void clicked(string id)
-	{
-		if (id == "perf")
-		{
-			showTest(new PerfTest);
-		}
-		if (id == "tweens")
-		{
-			showTest(new TweensTest);
-		}
-		if (id == "drag")
-		{
-			showTest(new DragTest);
-		}
-		if (id == "drag2")
-		{
-			showTest(new Drag2Test);
-		}
-		if (id == "manage_res")
-		{
-			showTest(new ManageResTest);
-		}
-		if (id == "r2t")
-		{
-			showTest(new TestRender2Texture);
-		}
-		if (id == "text")
-		{
-			showTest(new TestText);
-		}
-
-		if (id == "progress_bar")
-		{
-			showTest(new TestProgressBar);
-		}
-
-		if (id == "texture_format")
-		{
-			showTest(new TestTextureFormat);
-		}
-
-		if (id == "sliding")
-		{
-			showTest(new TestSliding);
-		}
-
-		if (id == "t2p")
-		{
-			showTest(new TestTexel2Pixel);
-		}
-
-		if (id == "box9sprite")
-		{
-			showTest(new TestBox9Sprite);
-		}
-
-		if (id == "cliprect")
-		{
-			showTest(new TestClipRect);
-		}
-
-		if (id == "usershader")
-		{
-			showTest(new TestUserShader);
-		}
-
-		if (id == "usershader2")
-		{
-			showTest(new TestUserShader2);
-		}
-
-		if (id == "mask")
-		{
-			showTest(new TestMask);
-		}
-
-		if (id == "polygon")
-		{
-			showTest(new TestPolygon);
-		}
-
-		if (id == "inputtext")
-		{
-			showTest(new TestInputText);
-		}
-
-		if (id == "openbrowser")
-		{
-			core::execute("http://oxygine.org/");
-			setVisible(true);
-		}
-
-		if (id == "http")
-		{
-			showTest(new TestHttp);
-		}
-	}
+        stage->addChild(actor);
+    }
+
+    void clicked(string id)
+    {
+        if (id == "perf")
+        {
+            showTest(new PerfTest);
+        }
+        if (id == "tweens")
+        {
+            showTest(new TweensTest);
+        }
+        if (id == "drag")
+        {
+            showTest(new DragTest);
+        }
+        if (id == "drag2")
+        {
+            showTest(new Drag2Test);
+        }
+        if (id == "manage_res")
+        {
+            showTest(new ManageResTest);
+        }
+        if (id == "r2t")
+        {
+            showTest(new TestRender2Texture);
+        }
+        if (id == "text")
+        {
+            showTest(new TestText);
+        }
+
+        if (id == "progress_bar")
+        {
+            showTest(new TestProgressBar);
+        }
+
+        if (id == "texture_format")
+        {
+            showTest(new TestTextureFormat);
+        }
+
+        if (id == "sliding")
+        {
+            showTest(new TestSliding);
+        }
+
+        if (id == "t2p")
+        {
+            showTest(new TestTexel2Pixel);
+        }
+
+        if (id == "box9sprite")
+        {
+            showTest(new TestBox9Sprite);
+        }
+
+        if (id == "cliprect")
+        {
+            showTest(new TestClipRect);
+        }
+
+        if (id == "usershader")
+        {
+            showTest(new TestUserShader);
+        }
+
+        if (id == "usershader2")
+        {
+            showTest(new TestUserShader2);
+        }
+
+        if (id == "mask")
+        {
+            showTest(new TestMask);
+        }
+
+        if (id == "polygon")
+        {
+            showTest(new TestPolygon);
+        }
+
+        if (id == "inputtext")
+        {
+            showTest(new TestInputText);
+        }
+
+        if (id == "openbrowser")
+        {
+            core::execute("http://oxygine.org/");
+            setVisible(true);
+        }
+
+        if (id == "http")
+        {
+            showTest(new TestHttp);
+        }
+    }
 };
 
 void example_preinit()
 {
-	/**
-	There are 2 modes of loading and blending/rendering sprites: normal and premultiplied alpha.
-	You should set it before loading any assets. 
-	Premultiplied mode is more advanced and faster than normal. In this mode RGB pixels of textures premultiplying to alpha when textures are loading and using blend_premultiply_alpha as default Sprites blend option.
-	Default value is premultiplied = true
-	http://blog.rarepebble.com/111/premultiplied-alpha-in-opengl/
+    /**
+    There are 2 modes of loading and blending/rendering sprites: normal and premultiplied alpha.
+    You should set it before loading any assets.
+    Premultiplied mode is more advanced and faster than normal. In this mode RGB pixels of textures premultiplying to alpha when textures are loading and using blend_premultiply_alpha as default Sprites blend option.
+    Default value is premultiplied = true
+    http://blog.rarepebble.com/111/premultiplied-alpha-in-opengl/
 
-	I set it to false to simplify shaders for UserShaderDemo
-	*/
+    I set it to false to simplify shaders for UserShaderDemo
+    */
 
-	Renderer::setPremultipliedAlphaRender(false);
+    Renderer::setPremultipliedAlphaRender(false);
 }
 
 file::STDFileSystem extfs(true);
 
 void example_init()
 {
-	//mount additional file system with inner path "ext"
-	//it would be used for searching path in data/ext
-	extfs.setPath(file::fs().getFullPath("ext").c_str());
-	file::mount(&extfs);
-
-	//load xml file with resources definition
-	resources.loadXML("xmls/res.xml");
-	resourcesUI.loadXML("demo/res_ui.xml");
-	resourcesUI.loadXML("demo/fonts.xml");
-
-	spSprite sp = initActor(new Sprite, 
-		arg_resAnim = resourcesUI.getResAnim("logo2"),
-		arg_input = false,
-		arg_attachTo = getStage(),
-		arg_priority = 10,
-		arg_alpha = 128
-		);
-
-	sp->setX(getStage()->getWidth() - sp->getWidth());
-	sp->setY(getStage()->getHeight() - sp->getHeight());
-
-	_tests = new TestActor;
-	getStage()->addChild(_tests);
-    
+    //mount additional file system with inner path "ext"
+    //it would be used for searching path in data/ext
+    extfs.setPath(file::fs().getFullPath("ext").c_str());
+    file::mount(&extfs);
+
+    //load xml file with resources definition
+    resources.loadXML("xmls/res.xml");
+    resourcesUI.loadXML("demo/res_ui.xml");
+    resourcesUI.loadXML("demo/fonts.xml");
+
+    spSprite sp = initActor(new Sprite,
+                            arg_resAnim = resourcesUI.getResAnim("logo2"),
+                            arg_input = false,
+                            arg_attachTo = getStage(),
+                            arg_priority = 10,
+                            arg_alpha = 128
+                           );
+
+    sp->setX(getStage()->getWidth() - sp->getWidth());
+    sp->setY(getStage()->getHeight() - sp->getHeight());
+
+    _tests = new TestActor;
+    getStage()->addChild(_tests);
+
     //initialize http requests
     HttpRequestTask::init();
 
 
 #if MULTIWINDOW
-	SDL_Window *window2 = SDL_CreateWindow("Second Oxygine Window", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, getStage()->getWidth(), getStage()->getHeight(), SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);	
-	stage2 = new Stage(false);
-	stage2->setSize(getStage()->getSize());
-	stage2->associateWithWindow(window2);
+    SDL_Window* window2 = SDL_CreateWindow("Second Oxygine Window", SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, getStage()->getWidth(), getStage()->getHeight(), SDL_WINDOW_OPENGL | SDL_WINDOW_SHOWN);
+    stage2 = new Stage(false);
+    stage2->setSize(getStage()->getSize());
+    stage2->associateWithWindow(window2);
 #endif
 
 }
@@ -242,25 +242,25 @@ void example_init()
 void example_update()
 {
 #if MULTIWINDOW
-	stage2->update();
-	SDL_Window *wnd = stage2->getAssociatedWindow();
-	if (core::beginRendering(wnd))
-	{
-		Color clearColor(32, 32, 32, 255);
-		Rect viewport(Point(0, 0), core::getDisplaySize());
-		//render all actors. Actor::render would be called also for all children
-		stage2->render(clearColor, viewport);
-	
-		core::swapDisplayBuffers(wnd);
-	}
+    stage2->update();
+    SDL_Window* wnd = stage2->getAssociatedWindow();
+    if (core::beginRendering(wnd))
+    {
+        Color clearColor(32, 32, 32, 255);
+        Rect viewport(Point(0, 0), core::getDisplaySize());
+        //render all actors. Actor::render would be called also for all children
+        stage2->render(clearColor, viewport);
+
+        core::swapDisplayBuffers(wnd);
+    }
 #endif
 }
 
 void example_destroy()
 {
-	_tests->detach();
-	_tests = 0;
-	resources.free();
-	resourcesUI.free();
+    _tests->detach();
+    _tests = 0;
+    resources.free();
+    resourcesUI.free();
     HttpRequestTask::release();
 }

+ 135 - 135
examples/Demo/src/test.cpp

@@ -4,71 +4,71 @@
 class Toggle: public Button
 {
 public:
-	Toggle(const Test::toggle *t, int num):_current(0)
-	{
-		_items.assign(t, t + num);
-	}
+    Toggle(const Test::toggle* t, int num): _current(0)
+    {
+        _items.assign(t, t + num);
+    }
 
-	int _current;
+    int _current;
 
-	std::vector<Test::toggle> _items;
+    std::vector<Test::toggle> _items;
 };
 
 spTextField createText(std::string txt)
 {
-	spTextField text = new TextField();
+    spTextField text = new TextField();
 
-	TextStyle style;
-	style.font = resourcesUI.getResFont("main")->getFont();
-	style.color = Color(72, 61, 139, 255);
-	style.vAlign = TextStyle::VALIGN_MIDDLE;
-	style.hAlign = TextStyle::HALIGN_CENTER;
-	style.multiline = true;
+    TextStyle style;
+    style.font = resourcesUI.getResFont("main")->getFont();
+    style.color = Color(72, 61, 139, 255);
+    style.vAlign = TextStyle::VALIGN_MIDDLE;
+    style.hAlign = TextStyle::HALIGN_CENTER;
+    style.multiline = true;
 
-	text->setStyle(style);
-	text->setText(txt.c_str());
+    text->setStyle(style);
+    text->setText(txt.c_str());
 
-	return text;
+    return text;
 }
 
 spButton createButtonHelper(spButton button, string txt, EventCallback cb)
 {
-	button->setPriority(10);
-	//button->setName(id);
-	button->setResAnim(resourcesUI.getResAnim("button"));
-	button->addEventListener(TouchEvent::CLICK, cb);
+    button->setPriority(10);
+    //button->setName(id);
+    button->setResAnim(resourcesUI.getResAnim("button"));
+    button->addEventListener(TouchEvent::CLICK, cb);
 
-	//create Actor with Text and it to button as child
-	spTextField text = createText(txt);
-	text->setSize(button->getSize());
-	text->attachTo(button);
+    //create Actor with Text and it to button as child
+    spTextField text = createText(txt);
+    text->setSize(button->getSize());
+    text->attachTo(button);
 
-	return button;
+    return button;
 }
 
 
 Test::Test()
 {
-	setSize(getStage()->getSize());
-
-	_x = getWidth() - 100;
-	_y = 2;
-	
-	ui = new Actor;
-	content = new Content;
-	content->setSize(getSize());
-
-	addChild(content);
-	addChild(ui);
-
-	if (_tests)
-	{
-		spButton button = createButtonHelper(new Button, "back", CLOSURE(this, &Test::back));
-		button->setY(getHeight() - button->getHeight());
-		ui->addChild(button);
-	}	
-
-	memset(_notifies, 0, sizeof(_notifies));
+    setSize(getStage()->getSize());
+
+    _x = getWidth() - 100;
+    _y = 2;
+
+    ui = new Actor;
+    content = new Content;
+    content->setSize(getSize());
+
+    addChild(content);
+    addChild(ui);
+
+    if (_tests)
+    {
+        spButton button = createButtonHelper(new Button, "back", CLOSURE(this, &Test::back));
+        button->setY(getHeight() - button->getHeight());
+        ui->addChild(button);
+    }
+
+    memset(_notifies, 0, sizeof(_notifies));
 }
 
 
@@ -79,122 +79,122 @@ Test::~Test()
 
 spButton Test::addButton(std::string id, std::string txt)
 {
-	spButton button = createButtonHelper(new Button, txt, CLOSURE(this, &Test::_clicked));
-	initActor(button.get(), 
-		arg_name = id, 
-		arg_attachTo = ui,
-		arg_anchor = Vector2(0.5f, 0.0f),
-		arg_pos = Vector2(_x, _y));
-
-	_y += button->getHeight() + 2.0f;
-
-	if (_y + button->getHeight() >= getHeight())
-	{
-		_y = 0;
-		_x += button->getWidth() + 70;
-	}
-
-	return button;
+    spButton button = createButtonHelper(new Button, txt, CLOSURE(this, &Test::_clicked));
+    initActor(button.get(),
+              arg_name = id,
+              arg_attachTo = ui,
+              arg_anchor = Vector2(0.5f, 0.0f),
+              arg_pos = Vector2(_x, _y));
+
+    _y += button->getHeight() + 2.0f;
+
+    if (_y + button->getHeight() >= getHeight())
+    {
+        _y = 0;
+        _x += button->getWidth() + 70;
+    }
+
+    return button;
 }
 
-void Test::addToggle(std::string id, const toggle *t, int num)
+void Test::addToggle(std::string id, const toggle* t, int num)
 {
-	spButton button = createButtonHelper(new Toggle(t, num), t[0].text, CLOSURE(this, &Test::_toggleClicked));
-	initActor(button.get(), 
-		arg_name = id, 
-		arg_attachTo = ui,
-		arg_anchor = Vector2(0.5f, 0.0f),
-		arg_pos = Vector2(_x, _y));
-
-	_y += button->getHeight() + 2.0f;
-
-	if (_y + button->getHeight() >= getHeight())
-	{
-		_y = 0;
-		_x += button->getWidth() + 70;
-	}
+    spButton button = createButtonHelper(new Toggle(t, num), t[0].text, CLOSURE(this, &Test::_toggleClicked));
+    initActor(button.get(),
+              arg_name = id,
+              arg_attachTo = ui,
+              arg_anchor = Vector2(0.5f, 0.0f),
+              arg_pos = Vector2(_x, _y));
+
+    _y += button->getHeight() + 2.0f;
+
+    if (_y + button->getHeight() >= getHeight())
+    {
+        _y = 0;
+        _x += button->getWidth() + 70;
+    }
 }
 
 void Test::updateText(std::string id, std::string txt)
 {
-	spActor child = ui->getChild(id);
-	if (!child)
-		return;
-
-	spTextField t = safeSpCast<TextField>(child->getFirstChild());
-	if (!t)
-		return;
-	t->setText(txt);
+    spActor child = ui->getChild(id);
+    if (!child)
+        return;
+
+    spTextField t = safeSpCast<TextField>(child->getFirstChild());
+    if (!t)
+        return;
+    t->setText(txt);
 }
 
 
-void Test::_clicked(Event *event)
+void Test::_clicked(Event* event)
 {
-	clicked(event->currentTarget->getName());
+    clicked(event->currentTarget->getName());
 }
 
-void Test::_toggleClicked(Event *event)
+void Test::_toggleClicked(Event* event)
 {
-	Toggle *t = safeCast<Toggle*>(event->currentTarget.get());
+    Toggle* t = safeCast<Toggle*>(event->currentTarget.get());
 
-	toggleClicked(event->currentTarget->getName(), &t->_items[t->_current]);
+    toggleClicked(event->currentTarget->getName(), &t->_items[t->_current]);
 
-	t->_current = (t->_current + 1) % t->_items.size();
-	spTextField ta = safeSpCast<TextField>(t->getFirstChild());
-	const toggle *data = &t->_items[t->_current];
-	ta->setText(data->text);
+    t->_current = (t->_current + 1) % t->_items.size();
+    spTextField ta = safeSpCast<TextField>(t->getFirstChild());
+    const toggle* data = &t->_items[t->_current];
+    ta->setText(data->text);
 }
 
 
-void Test::back(Event *event)
+void Test::back(Event* event)
 {
-	detach();
-	_tests->setVisible(true);
+    detach();
+    _tests->setVisible(true);
 }
 
 
 void Test::notify(std::string txt, int time)
 {
-	size_t N = 0;
-	for (size_t i = 0; i < MAX_NOTIFIES; ++i)
-	{
-		if (_notifies[i])
-			continue;
-		N = i;
-		break;
-	}
-
-	_notifies[N] += 1;
-
-
-	spColorRectSprite sprite = new ColorRectSprite();
-	sprite->setUserData((void*)N);
-	sprite->setPriority(10);
-	Color colors[] = {Color(0xD2691EFF), Color(0x7FFFD4FF), Color(0xDC143CFF), Color(0xADFF2FFF), };
-	Color c = colors[rand() % 4];
-	sprite->setColor(c);
-	sprite->setSize(100, 30);
-	//sprite->setAnimFrame(resourcesUI.getResAnim("button"));
-	sprite->setAlpha(0);
-
-	spTweenQueue tq = new TweenQueue;
-	tq->add(Actor::TweenAlpha(255), 300, 1, false, 0, Tween::ease_inExpo);
-	tq->add(Actor::TweenAlpha(0), 300, 1, false, 1200);
-	tq->setDetachActor(true);
-	tq->addDoneCallback(CLOSURE(this, &Test::notifyDone));
-
-	sprite->addTween(tq);
-	sprite->attachTo(ui);
-	sprite->setPosition(2.0f, getHeight() - 100.0f - N * sprite->getHeight() * 1.1f);
-
-	spTextField text = createText(txt);
-	text->attachTo(sprite);
-	text->setColor(Color::Black);
-	text->setPosition(sprite->getSize()/2);
+    size_t N = 0;
+    for (size_t i = 0; i < MAX_NOTIFIES; ++i)
+    {
+        if (_notifies[i])
+            continue;
+        N = i;
+        break;
+    }
+
+    _notifies[N] += 1;
+
+
+    spColorRectSprite sprite = new ColorRectSprite();
+    sprite->setUserData((void*)N);
+    sprite->setPriority(10);
+    Color colors[] = {Color(0xD2691EFF), Color(0x7FFFD4FF), Color(0xDC143CFF), Color(0xADFF2FFF), };
+    Color c = colors[rand() % 4];
+    sprite->setColor(c);
+    sprite->setSize(100, 30);
+    //sprite->setAnimFrame(resourcesUI.getResAnim("button"));
+    sprite->setAlpha(0);
+
+    spTweenQueue tq = new TweenQueue;
+    tq->add(Actor::TweenAlpha(255), 300, 1, false, 0, Tween::ease_inExpo);
+    tq->add(Actor::TweenAlpha(0), 300, 1, false, 1200);
+    tq->setDetachActor(true);
+    tq->addDoneCallback(CLOSURE(this, &Test::notifyDone));
+
+    sprite->addTween(tq);
+    sprite->attachTo(ui);
+    sprite->setPosition(2.0f, getHeight() - 100.0f - N * sprite->getHeight() * 1.1f);
+
+    spTextField text = createText(txt);
+    text->attachTo(sprite);
+    text->setColor(Color::Black);
+    text->setPosition(sprite->getSize() / 2);
 }
 
-void Test::notifyDone(Event *ev)
+void Test::notifyDone(Event* ev)
 {
-	size_t N = size_t(ev->target->getUserData());
-	_notifies[N] -= 1;
+    size_t N = size_t(ev->target->getUserData());
+    _notifies[N] -= 1;
 }

+ 41 - 41
examples/Demo/src/test.h

@@ -12,59 +12,59 @@ spButton createButtonHelper(spButton, std::string txt, EventCallback cb);
 class Content: public Actor
 {
 public:
-	Content():driver(0){}
-	IVideoDriver *driver;
+    Content(): driver(0) {}
+    IVideoDriver* driver;
 
-	void render(const RenderState &parentRS)
-	{
-		
-		parentRS.renderer->drawBatch();
+    void render(const RenderState& parentRS)
+    {
 
-		RenderState rs = parentRS;
-		STDRenderer renderer(driver ? driver : IVideoDriver::instance);
-		renderer.begin(parentRS.renderer);
-		rs.renderer = &renderer;
-		Actor::render(rs);
-		renderer.end();
-	}	
+        parentRS.renderer->drawBatch();
+
+        RenderState rs = parentRS;
+        STDRenderer renderer(driver ? driver : IVideoDriver::instance);
+        renderer.begin(parentRS.renderer);
+        rs.renderer = &renderer;
+        Actor::render(rs);
+        renderer.end();
+    }
 };
 
 class Test: public Actor
 {
 public:
-	Test();
-	~Test();
+    Test();
+    ~Test();
+
+    struct toggle
+    {
+        string text;
+        int value;
+        const void* data;
+        toggle() {}
+        toggle(const char* text_, int v_ = 0, const void* data_ = 0): text(text_), value(v_), data(data_) {}
 
-	struct toggle
-	{
-		string text;
-		int value;
-		const void *data;
-		toggle(){}
-		toggle(const char *text_, int v_ = 0, const void *data_ = 0):text(text_), value(v_), data(data_){}
+    };
 
-	};
-	
-	spButton addButton(string id, string txt);
-	void addToggle(string id, const toggle *t, int num);
-	void updateText(string id, string txt);
-	virtual void clicked(string id){}
-	virtual void toggleClicked(string id, const toggle *data){}
-	void _clicked(Event *event);
-	void _toggleClicked(Event *event);
-	void back(Event *event);
+    spButton addButton(string id, string txt);
+    void addToggle(string id, const toggle* t, int num);
+    void updateText(string id, string txt);
+    virtual void clicked(string id) {}
+    virtual void toggleClicked(string id, const toggle* data) {}
+    void _clicked(Event* event);
+    void _toggleClicked(Event* event);
+    void back(Event* event);
 
-	void notify(string text, int time = 400);
+    void notify(string text, int time = 400);
 
 protected:
-	void notifyDone(Event *ev);
-	
-	float _x;
-	float _y;
-	spActor ui;
-	Content *content;
-	enum {MAX_NOTIFIES = 8};
-	int _notifies[MAX_NOTIFIES];
+    void notifyDone(Event* ev);
+
+    float _x;
+    float _y;
+    spActor ui;
+    Content* content;
+    enum {MAX_NOTIFIES = 8};
+    int _notifies[MAX_NOTIFIES];
 };
 
 extern spActor _tests;

+ 84 - 84
examples/DemoBox2D/src/Box2DDebugDraw.cpp

@@ -6,9 +6,9 @@
 
 Box2DDraw::Box2DDraw(): _worldScale(1.0f), _world(0)
 {
-	m_drawFlags = 0xffffffff;
+    m_drawFlags = 0xffffffff;
 
-	const char* vertexShaderData = "\
+    const char* vertexShaderData = "\
 									uniform mediump mat4 projection;\
 									attribute vec2 a_position;\
 									void main() {\
@@ -17,151 +17,151 @@ Box2DDraw::Box2DDraw(): _worldScale(1.0f), _world(0)
 									}\
 									";
 
-	const char* fragmentShaderData = "\
+    const char* fragmentShaderData = "\
 									  uniform mediump vec4 color;\
 									  void main() { \
 									  gl_FragColor = color; \
 									  } \
 									  ";
 
-	_program = new ShaderProgramGL();
+    _program = new ShaderProgramGL();
 
 
-	int vs = ShaderProgramGL::createShader(GL_VERTEX_SHADER, vertexShaderData, 0, 0);
-	int fs = ShaderProgramGL::createShader(GL_FRAGMENT_SHADER, fragmentShaderData, 0, 0);
+    int vs = ShaderProgramGL::createShader(GL_VERTEX_SHADER, vertexShaderData, 0, 0);
+    int fs = ShaderProgramGL::createShader(GL_FRAGMENT_SHADER, fragmentShaderData, 0, 0);
 
-	int pr = ShaderProgramGL::createProgram(vs, fs, (VertexDeclarationGL*)IVideoDriver::instance->getVertexDeclaration(VERTEX_POSITION));
-	_program->init(pr);
+    int pr = ShaderProgramGL::createProgram(vs, fs, (VertexDeclarationGL*)IVideoDriver::instance->getVertexDeclaration(VERTEX_POSITION));
+    _program->init(pr);
 }
 
 Box2DDraw::~Box2DDraw()
 {
-	delete _program;
+    delete _program;
 }
 
-void Box2DDraw::doRender(const RenderState &rs)
+void Box2DDraw::doRender(const RenderState& rs)
 {
-	rs.renderer->drawBatch();	
-	
-	_world->SetDebugDraw(this);
+    rs.renderer->drawBatch();
 
-	rs.renderer->getDriver()->setShaderProgram(_program);
+    _world->SetDebugDraw(this);
 
-	Matrix m = Matrix(rs.transform) * rs.renderer->getViewProjection();
-	rs.renderer->getDriver()->setUniform("projection", &m);
+    rs.renderer->getDriver()->setShaderProgram(_program);
 
-	glEnable(GL_BLEND);
-	glBlendFunc  (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-	_world->DrawDebugData();
-	_world->SetDebugDraw(0);
-	rs.renderer->resetSettings();
+    Matrix m = Matrix(rs.transform) * rs.renderer->getViewProjection();
+    rs.renderer->getDriver()->setUniform("projection", &m);
+
+    glEnable(GL_BLEND);
+    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+    _world->DrawDebugData();
+    _world->SetDebugDraw(0);
+    rs.renderer->resetSettings();
 }
 
 void Box2DDraw::DrawPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color)
 {
-	createPolygonVertices(vertices, vertexCount);
-	drawPrimitives(false, true, vertexCount, color);
+    createPolygonVertices(vertices, vertexCount);
+    drawPrimitives(false, true, vertexCount, color);
 }
 
 /// Draw a solid closed polygon provided in CCW order.
 void Box2DDraw::DrawSolidPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color)
 {
-	createPolygonVertices(vertices, vertexCount);
-	drawPrimitives(true, true, vertexCount, color);
+    createPolygonVertices(vertices, vertexCount);
+    drawPrimitives(true, true, vertexCount, color);
 }
 
 /// Draw a circle.
 void Box2DDraw::DrawCircle(const b2Vec2& center, float32 aRadius, const b2Color& color)
 {
-	createCircleVertices(center, aRadius);
-	drawPrimitives(false, true, CIRCLE_SEGMENTS, color);
+    createCircleVertices(center, aRadius);
+    drawPrimitives(false, true, CIRCLE_SEGMENTS, color);
 }
 
 /// Draw a solid circle.
 void Box2DDraw::DrawSolidCircle(const b2Vec2& center, float32 aRadius, const b2Vec2& aAxis,
-									 const b2Color& color)
+                                const b2Color& color)
 {
-	createCircleVertices(center, aRadius);
-	drawPrimitives(true, true, CIRCLE_SEGMENTS, color);
-	// Draw the axis line
-	DrawSegment(center, center + aRadius * aAxis, color);
+    createCircleVertices(center, aRadius);
+    drawPrimitives(true, true, CIRCLE_SEGMENTS, color);
+    // Draw the axis line
+    DrawSegment(center, center + aRadius * aAxis, color);
 }
 
 /// Draw a line segment.
 void Box2DDraw::DrawSegment(const b2Vec2& p1, const b2Vec2& p2, const b2Color& color)
 {
-	mVertices[0].x = p1.x * _worldScale;
-	mVertices[0].y = p1.y * _worldScale;
-	mVertices[1].x = p2.x * _worldScale;
-	mVertices[1].y = p2.y * _worldScale;
-	drawPrimitives(false, true, 2, color);
+    mVertices[0].x = p1.x * _worldScale;
+    mVertices[0].y = p1.y * _worldScale;
+    mVertices[1].x = p2.x * _worldScale;
+    mVertices[1].y = p2.y * _worldScale;
+    drawPrimitives(false, true, 2, color);
 }
 
 /// Draw a transform. Choose your own length scale.
 /// @param xf a transform.
 void Box2DDraw::DrawTransform(const b2Transform& xf)
 {
-	b2Vec2 p1 = xf.p, p2;
-	const float32 k_axisScale = 0.4f;
+    b2Vec2 p1 = xf.p, p2;
+    const float32 k_axisScale = 0.4f;
 
-	p2 = p1 + k_axisScale * xf.q.GetXAxis();
-	DrawSegment(p1, p2, b2Color(1, 0, 0));
+    p2 = p1 + k_axisScale * xf.q.GetXAxis();
+    DrawSegment(p1, p2, b2Color(1, 0, 0));
 
-	p2 = p1 + k_axisScale * xf.q.GetYAxis();
-	DrawSegment(p1, p2, b2Color(0, 1, 0));
+    p2 = p1 + k_axisScale * xf.q.GetYAxis();
+    DrawSegment(p1, p2, b2Color(0, 1, 0));
 }
 
 void Box2DDraw::createCircleVertices(const b2Vec2& center, float32 aRadius)
 {
-	int vertexCount = 16;
-	const float32 k_increment = 2.0f * b2_pi / CIRCLE_SEGMENTS;
-	float32 theta = 0.0f;
-
-	for (int32 i = 0; i < CIRCLE_SEGMENTS; ++i)
-	{
-		b2Vec2 v = center + aRadius * b2Vec2(scalar::cos(theta), scalar::sin(theta));
-		mVertices[i].x = _worldScale * v.x;
-		mVertices[i].y = _worldScale * v.y;
-		theta += k_increment;
-	}
+    int vertexCount = 16;
+    const float32 k_increment = 2.0f * b2_pi / CIRCLE_SEGMENTS;
+    float32 theta = 0.0f;
+
+    for (int32 i = 0; i < CIRCLE_SEGMENTS; ++i)
+    {
+        b2Vec2 v = center + aRadius * b2Vec2(scalar::cos(theta), scalar::sin(theta));
+        mVertices[i].x = _worldScale * v.x;
+        mVertices[i].y = _worldScale * v.y;
+        theta += k_increment;
+    }
 }
 
 void Box2DDraw::createPolygonVertices(const b2Vec2* vertices, int32 vertexCount)
 {
-	if (vertexCount > MAX_VERTICES)
-	{
-		log::warning("need more vertices");
-		return;
-	}
-
-	// convert vertices to screen resolution
-	for (int i = 0; i < vertexCount; i++)
-	{
-		mVertices[i].x= _worldScale * vertices[i].x;
-		mVertices[i].y = _worldScale * vertices[i].y;
-	}
+    if (vertexCount > MAX_VERTICES)
+    {
+        log::warning("need more vertices");
+        return;
+    }
+
+    // convert vertices to screen resolution
+    for (int i = 0; i < vertexCount; i++)
+    {
+        mVertices[i].x = _worldScale * vertices[i].x;
+        mVertices[i].y = _worldScale * vertices[i].y;
+    }
 }
 
 
 //------------------------------------------------------------------------
 void Box2DDraw::drawPrimitives(bool drawTriangles, bool drawLines, int count, const b2Color& color)
 {
-	oxglEnableVertexAttribArray(0);
-	oxglVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, (GLfloat*)mVertices);
-
-	if (drawTriangles)
-	{
-		Vector4 c(color.r, color.g, color.b, 0.5f);
-		IVideoDriver::instance->setUniform("color", &c, 1);
-		glDrawArrays(GL_TRIANGLE_FAN, 0, count);
-	}
-
-	if (drawLines)
-	{
-		Vector4 c(color.r, color.g, color.b, 1.0f);
-		IVideoDriver::instance->setUniform("color", &c, 1);
-		glDrawArrays(GL_LINE_LOOP, 0, count);
-	}
-	 
-	oxglDisableVertexAttribArray(0);
+    oxglEnableVertexAttribArray(0);
+    oxglVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, (GLfloat*)mVertices);
+
+    if (drawTriangles)
+    {
+        Vector4 c(color.r, color.g, color.b, 0.5f);
+        IVideoDriver::instance->setUniform("color", &c, 1);
+        glDrawArrays(GL_TRIANGLE_FAN, 0, count);
+    }
+
+    if (drawLines)
+    {
+        Vector4 c(color.r, color.g, color.b, 1.0f);
+        IVideoDriver::instance->setUniform("color", &c, 1);
+        glDrawArrays(GL_LINE_LOOP, 0, count);
+    }
+
+    oxglDisableVertexAttribArray(0);
 }

+ 27 - 27
examples/DemoBox2D/src/Box2DDebugDraw.h

@@ -5,7 +5,7 @@
 using namespace oxygine;
 namespace oxygine
 {
-	class ShaderProgramGL;
+    class ShaderProgramGL;
 }
 
 DECLARE_SMART(Box2DDraw, spBox2DDraw);
@@ -13,42 +13,42 @@ DECLARE_SMART(Box2DDraw, spBox2DDraw);
 class Box2DDraw: public Actor, public b2Draw
 {
 public:
-	Box2DDraw();
-	~Box2DDraw();
+    Box2DDraw();
+    ~Box2DDraw();
 
-	void setWorld(float worldScale, b2World *world){_worldScale = worldScale; _world = world;}
+    void setWorld(float worldScale, b2World* world) {_worldScale = worldScale; _world = world;}
 
-	/// Draw a closed polygon provided in CCW order.
-	void DrawPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color);
+    /// Draw a closed polygon provided in CCW order.
+    void DrawPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color);
 
-	/// Draw a solid closed polygon provided in CCW order.
-	void DrawSolidPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color);
+    /// Draw a solid closed polygon provided in CCW order.
+    void DrawSolidPolygon(const b2Vec2* vertices, int32 vertexCount, const b2Color& color);
 
-	/// Draw a circle.
-	void DrawCircle(const b2Vec2& center, float32 radius, const b2Color& color);
+    /// Draw a circle.
+    void DrawCircle(const b2Vec2& center, float32 radius, const b2Color& color);
 
-	/// Draw a solid circle.
-	void DrawSolidCircle(const b2Vec2& center, float32 radius, const b2Vec2& axis, const b2Color& color);
+    /// Draw a solid circle.
+    void DrawSolidCircle(const b2Vec2& center, float32 radius, const b2Vec2& axis, const b2Color& color);
 
-	/// Draw a line segment.
-	void DrawSegment(const b2Vec2& p1, const b2Vec2& p2, const b2Color& color);
+    /// Draw a line segment.
+    void DrawSegment(const b2Vec2& p1, const b2Vec2& p2, const b2Color& color);
 
-	/// Draw a transform. Choose your own length scale.
-	/// @param xf a transform.
-	void DrawTransform(const b2Transform& xf);
+    /// Draw a transform. Choose your own length scale.
+    /// @param xf a transform.
+    void DrawTransform(const b2Transform& xf);
 
 protected:
-	b2World *_world;
-	float _worldScale; 
+    b2World* _world;
+    float _worldScale;
 
-	void doRender(const RenderState &rs);
-	static const int MAX_VERTICES = 64;
-	static const int CIRCLE_SEGMENTS = 16;
+    void doRender(const RenderState& rs);
+    static const int MAX_VERTICES = 64;
+    static const int CIRCLE_SEGMENTS = 16;
 
-	Vector2 mVertices[MAX_VERTICES];
-	void createCircleVertices(const b2Vec2& aCenter, float32 aRadius);
-	void createPolygonVertices(const b2Vec2* aVertices, int32 aVertexCount);
-	void drawPrimitives(bool drawTriangles, bool drawLines, int aCount, const b2Color& aColor);
+    Vector2 mVertices[MAX_VERTICES];
+    void createCircleVertices(const b2Vec2& aCenter, float32 aRadius);
+    void createPolygonVertices(const b2Vec2* aVertices, int32 aVertexCount);
+    void drawPrimitives(bool drawTriangles, bool drawLines, int aCount, const b2Color& aColor);
 
-	ShaderProgramGL *_program;
+    ShaderProgramGL* _program;
 };

+ 81 - 90
examples/DemoBox2D/src/entry_point.cpp

@@ -17,144 +17,135 @@ using namespace oxygine;
 //called each frame
 int mainloop()
 {
-	example_update();
-	//update our stage
-	//update all actors. Actor::update would be called also for all children
-	getStage()->update();
-	
-	if (core::beginRendering())
-	{		
-		Color clearColor(32, 32, 32, 255);
-		Rect viewport(Point(0, 0), core::getDisplaySize());
-		//render all actors. Actor::render would be called also for all children
-		getStage()->render(clearColor, viewport);
-
-		core::swapDisplayBuffers();
-	}
-
-	//update internal components
-	//all input events would be passed to Stage::instance.handleEvent
-	//if done is true then User requests quit from app.
-	bool done = core::update();
-
-	return done ? 1 : 0;
+    example_update();
+    //update our stage
+    //update all actors. Actor::update would be called also for all children
+    getStage()->update();
+
+    if (core::beginRendering())
+    {
+        Color clearColor(32, 32, 32, 255);
+        Rect viewport(Point(0, 0), core::getDisplaySize());
+        //render all actors. Actor::render would be called also for all children
+        getStage()->render(clearColor, viewport);
+
+        core::swapDisplayBuffers();
+    }
+
+    //update internal components
+    //all input events would be passed to Stage::instance.handleEvent
+    //if done is true then User requests quit from app.
+    bool done = core::update();
+
+    return done ? 1 : 0;
 }
 
 //it is application entry point
 void run()
 {
-	ObjectBase::__startTracingLeaks();
+    ObjectBase::__startTracingLeaks();
 
-	//initialize Oxygine's internal stuff
-	core::init_desc desc;
+    //initialize Oxygine's internal stuff
+    core::init_desc desc;
 
 #if OXYGINE_SDL || OXYGINE_EMSCRIPTEN
-	//we could setup initial window size on SDL builds
-	desc.w = 960;
-	desc.h = 640;
-	//marmalade settings could be changed from emulator's menu
+    //we could setup initial window size on SDL builds
+    desc.w = 960;
+    desc.h = 640;
+    //marmalade settings could be changed from emulator's menu
 #endif
 
 
-	example_preinit();
-	core::init(&desc);
+    example_preinit();
+    core::init(&desc);
 
 
-	//create Stage. Stage is a root node
-	Stage::instance = new Stage(true);
-	Point size = core::getDisplaySize();
-	getStage()->setSize(size);
+    //create Stage. Stage is a root node
+    Stage::instance = new Stage(true);
+    Point size = core::getDisplaySize();
+    getStage()->setSize(size);
 
-	//DebugActor is a helper actor node. It shows FPS, memory usage and other useful stuff
-	DebugActor::show();
-		
-	//initialize this example stuff. see example.cpp
-	example_init();
+    //DebugActor is a helper actor node. It shows FPS, memory usage and other useful stuff
+    DebugActor::show();
+
+    //initialize this example stuff. see example.cpp
+    example_init();
 
 #ifdef EMSCRIPTEN
-	/*
-	if you build for Emscripten mainloop would be called automatically outside. 
-	see emscripten_set_main_loop below
-	*/	
-	return;
+    /*
+    if you build for Emscripten mainloop would be called automatically outside.
+    see emscripten_set_main_loop below
+    */
+    return;
 #endif
 
 
-	//here is main game loop
-	while (1)
-	{
-		int done = mainloop();
-		if (done)
-			break;
-	}
-	//user wants to leave application...
+    //here is main game loop
+    while (1)
+    {
+        int done = mainloop();
+        if (done)
+            break;
+    }
+    //user wants to leave application...
 
-	//lets dump all created objects into log
-	//all created and not freed resources would be displayed
-	ObjectBase::dumpCreatedObjects();
+    //lets dump all created objects into log
+    //all created and not freed resources would be displayed
+    ObjectBase::dumpCreatedObjects();
 
-	//lets cleanup everything right now and call ObjectBase::dumpObjects() again
-	//we need to free all allocated resources and delete all created actors
-	//all actors/sprites are smart pointer objects and actually you don't need it remove them by hands
-	//but now we want delete it by hands
+    //lets cleanup everything right now and call ObjectBase::dumpObjects() again
+    //we need to free all allocated resources and delete all created actors
+    //all actors/sprites are smart pointer objects and actually you don't need it remove them by hands
+    //but now we want delete it by hands
 
-	//check example.cpp
-	example_destroy();
+    //check example.cpp
+    example_destroy();
 
 
-	//renderer.cleanup();
+    //renderer.cleanup();
 
-	/**releases all internal components and Stage*/
-	core::release();
+    /**releases all internal components and Stage*/
+    core::release();
 
-	//dump list should be empty now
-	//we deleted everything and could be sure that there aren't any memory leaks
-	ObjectBase::dumpCreatedObjects();
+    //dump list should be empty now
+    //we deleted everything and could be sure that there aren't any memory leaks
+    ObjectBase::dumpCreatedObjects();
 
-	ObjectBase::__stopTracingLeaks();
-	//end
+    ObjectBase::__stopTracingLeaks();
+    //end
 }
 
 #ifdef __S3E__
 int main(int argc, char* argv[])
 {
-	run();
-	return 0;
+    run();
+    return 0;
 }
 #endif
 
 
 #ifdef OXYGINE_SDL
-#ifdef __MINGW32__
-int WinMain(HINSTANCE hInstance,
-	HINSTANCE hPrevInstance,
-	LPSTR lpCmdLine, int nCmdShow)
-{
-	run();
-	return 0;
-}
-#else
+
 #include "SDL_main.h"
 extern "C"
 {
-	int main(int argc, char* argv[])
-	{
-		run();
-		return 0;
-	}
+    int main(int argc, char* argv[])
+    {
+        run();
+        return 0;
+    }
 };
 #endif
-#endif
 
 #ifdef EMSCRIPTEN
 #include <emscripten.h>
 
-void one(){ mainloop(); }
+void one() { mainloop(); }
 
 int main(int argc, char* argv[])
 {
-	run();
-	emscripten_set_main_loop(one, 0, 0);
-	return 0;
+    run();
+    emscripten_set_main_loop(one, 0, 0);
+    return 0;
 }
 #endif

+ 159 - 159
examples/DemoBox2D/src/example.cpp

@@ -13,14 +13,14 @@ DECLARE_SMART(MainActor, spMainActor);
 
 
 const float SCALE = 100.0f;
-b2Vec2 convert(const Vector2 &pos)
+b2Vec2 convert(const Vector2& pos)
 {
-	return b2Vec2(pos.x / SCALE, pos.y / SCALE);
+    return b2Vec2(pos.x / SCALE, pos.y / SCALE);
 }
 
-Vector2 convert(const b2Vec2 &pos)
+Vector2 convert(const b2Vec2& pos)
 {
-	return Vector2(pos.x * SCALE, pos.y * SCALE);
+    return Vector2(pos.x * SCALE, pos.y * SCALE);
 }
 
 
@@ -28,168 +28,168 @@ DECLARE_SMART(Circle, spCircle);
 class Circle : public Sprite
 {
 public:
-	Circle(b2World *world, const Vector2 &pos, float scale = 1)
-	{
-		setResAnim(gameResources.getResAnim("circle"));
-		setAnchor(Vector2(0.5f, 0.5f));
-		setTouchChildrenEnabled(false);
+    Circle(b2World* world, const Vector2& pos, float scale = 1)
+    {
+        setResAnim(gameResources.getResAnim("circle"));
+        setAnchor(Vector2(0.5f, 0.5f));
+        setTouchChildrenEnabled(false);
 
-		b2BodyDef bodyDef;
-		bodyDef.type = b2_dynamicBody;
-		bodyDef.position = convert(pos);
+        b2BodyDef bodyDef;
+        bodyDef.type = b2_dynamicBody;
+        bodyDef.position = convert(pos);
 
-		b2Body *body = world->CreateBody(&bodyDef);
+        b2Body* body = world->CreateBody(&bodyDef);
 
-		setUserData(body);
+        setUserData(body);
 
-		setScale(scale);
+        setScale(scale);
 
-		b2CircleShape shape;
-		shape.m_radius = getWidth() / SCALE / 2 * scale;
+        b2CircleShape shape;
+        shape.m_radius = getWidth() / SCALE / 2 * scale;
 
-		b2FixtureDef fixtureDef;
-		fixtureDef.shape = &shape;
-		fixtureDef.density = 1.0f;
-		fixtureDef.friction = 0.3f;
+        b2FixtureDef fixtureDef;
+        fixtureDef.shape = &shape;
+        fixtureDef.density = 1.0f;
+        fixtureDef.friction = 0.3f;
 
-		body->CreateFixture(&fixtureDef);
-		body->SetUserData(this);
-	}
+        body->CreateFixture(&fixtureDef);
+        body->SetUserData(this);
+    }
 };
 
 DECLARE_SMART(Static, spStatic);
 class Static : public Box9Sprite
 {
 public:
-	Static(b2World *world, const RectF &rc)
-	{
-		//setHorizontalMode(Box9Sprite::TILING_FULL);
-		//setVerticalMode(Box9Sprite::TILING_FULL);
-		setResAnim(gameResources.getResAnim("pen"));
-		setSize(rc.getSize());
-		setPosition(rc.getLeftTop());
-		setAnchor(Vector2(0.5f, 0.5f));
-
-		b2BodyDef groundBodyDef;
-		groundBodyDef.position = convert(getPosition());
-
-		b2Body* groundBody = world->CreateBody(&groundBodyDef);
-
-		b2PolygonShape groundBox;
-		b2Vec2 sz = convert(getSize()/2);
-		groundBox.SetAsBox(sz.x, sz.y);
-		groundBody->CreateFixture(&groundBox, 0.0f);
-	}
+    Static(b2World* world, const RectF& rc)
+    {
+        //setHorizontalMode(Box9Sprite::TILING_FULL);
+        //setVerticalMode(Box9Sprite::TILING_FULL);
+        setResAnim(gameResources.getResAnim("pen"));
+        setSize(rc.getSize());
+        setPosition(rc.getLeftTop());
+        setAnchor(Vector2(0.5f, 0.5f));
+
+        b2BodyDef groundBodyDef;
+        groundBodyDef.position = convert(getPosition());
+
+        b2Body* groundBody = world->CreateBody(&groundBodyDef);
+
+        b2PolygonShape groundBox;
+        b2Vec2 sz = convert(getSize() / 2);
+        groundBox.SetAsBox(sz.x, sz.y);
+        groundBody->CreateFixture(&groundBox, 0.0f);
+    }
 };
 
 class MainActor: public Actor
 {
-public:	
-	b2World *_world;
-	spBox2DDraw _debugDraw;
-
-	MainActor():_world(0)
-	{	
-		setSize(getStage()->getSize());
-
-		spButton btn = new Button;
-		btn->setResAnim(gameResources.getResAnim("button"));
-		btn->setX(getWidth() - btn->getWidth() - 3);
-		btn->setY(3);
-		btn->attachTo(this);
-		btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainActor::showHideDebug));
-
-		addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainActor::click));
-
-
-		_world = new b2World(b2Vec2(0, 10), false);
-
-
-		spStatic ground = new Static(_world, RectF(getWidth() / 2, getHeight() - 10, getWidth() - 100, 30));
-		addChild(ground);
-
-		spCircle circle = new Circle(_world, getSize()/2, 2);
-		addChild(circle);
-	}
-	
-	void doUpdate(const UpdateState &us)
-	{
-		//in real project you should make steps with fixed dt, check box2d documentation
-		_world->Step(us.dt / 1000.0f, 6, 2);
-
-		//update each body position on display
-		b2Body *body = _world->GetBodyList();
-		while(body)
-		{
-			Actor *actor = (Actor *)body->GetUserData();
-			b2Body *next = body->GetNext();
-			if (actor)
-			{
-				const b2Vec2& pos = body->GetPosition();
-				actor->setPosition(convert(pos));
-				actor->setRotation(body->GetAngle());
-
-				//remove fallen bodies
-				if (actor->getY() > getHeight() + 50)
-				{
-					body->SetUserData(0);
-					_world->DestroyBody(body);
-
-					actor->detach();					
-				}
-			}			
-
-			body = next;
-		}
-	}
-
-	void showHideDebug(Event *event)
-	{
-		TouchEvent *te = safeCast<TouchEvent*>(event);
-		te->stopsImmediatePropagation = true;
-		if (_debugDraw)
-		{
-			_debugDraw->detach();
-			_debugDraw = 0;
-			return;
-		}
-
-		_debugDraw = new Box2DDraw;		
-		_debugDraw->SetFlags(b2Draw::e_shapeBit | b2Draw::e_jointBit | b2Draw::e_pairBit | b2Draw::e_centerOfMassBit);
-		_debugDraw->attachTo(this);
-		_debugDraw->setWorld(SCALE, _world);
-		_debugDraw->setPriority(1);
-	}
-
-	void click(Event *event)
-	{
-		TouchEvent *te = safeCast<TouchEvent*>(event);
-				
-		if (event->target.get() == this)
-		{
-			spCircle circle = new Circle(_world, te->localPosition);
-			circle->attachTo(this);
-		}
-
-		if (event->target->getUserData())
-		{
-			//shot to circle
-			spActor actor = safeSpCast<Actor>(event->target);
-			b2Body *body = (b2Body *)actor->getUserData();
-
-			Vector2 dir = actor->getPosition() - te->localPosition;
-			dir = dir / dir.length() * body->GetMass() * 200;
-
-			body->ApplyForceToCenter(b2Vec2(dir.x, dir.y));
-
-			spSprite sprite = new Sprite();
-			sprite->setResAnim(gameResources.getResAnim("shot"));
-			Vector2 local = actor->global2local(te->localPosition);
-			sprite->setPosition(local);
-			sprite->setAnchor(Vector2(0.5f, 0.5f));
-			sprite->attachTo(actor);
-		}
-	}
+public:
+    b2World* _world;
+    spBox2DDraw _debugDraw;
+
+    MainActor(): _world(0)
+    {
+        setSize(getStage()->getSize());
+
+        spButton btn = new Button;
+        btn->setResAnim(gameResources.getResAnim("button"));
+        btn->setX(getWidth() - btn->getWidth() - 3);
+        btn->setY(3);
+        btn->attachTo(this);
+        btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainActor::showHideDebug));
+
+        addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainActor::click));
+
+
+        _world = new b2World(b2Vec2(0, 10), false);
+
+
+        spStatic ground = new Static(_world, RectF(getWidth() / 2, getHeight() - 10, getWidth() - 100, 30));
+        addChild(ground);
+
+        spCircle circle = new Circle(_world, getSize() / 2, 1);
+        addChild(circle);
+    }
+
+    void doUpdate(const UpdateState& us)
+    {
+        //in real project you should make steps with fixed dt, check box2d documentation
+        _world->Step(us.dt / 1000.0f, 6, 2);
+
+        //update each body position on display
+        b2Body* body = _world->GetBodyList();
+        while (body)
+        {
+            Actor* actor = (Actor*)body->GetUserData();
+            b2Body* next = body->GetNext();
+            if (actor)
+            {
+                const b2Vec2& pos = body->GetPosition();
+                actor->setPosition(convert(pos));
+                actor->setRotation(body->GetAngle());
+
+                //remove fallen bodies
+                if (actor->getY() > getHeight() + 50)
+                {
+                    body->SetUserData(0);
+                    _world->DestroyBody(body);
+
+                    actor->detach();
+                }
+            }
+
+            body = next;
+        }
+    }
+
+    void showHideDebug(Event* event)
+    {
+        TouchEvent* te = safeCast<TouchEvent*>(event);
+        te->stopsImmediatePropagation = true;
+        if (_debugDraw)
+        {
+            _debugDraw->detach();
+            _debugDraw = 0;
+            return;
+        }
+
+        _debugDraw = new Box2DDraw;
+        _debugDraw->SetFlags(b2Draw::e_shapeBit | b2Draw::e_jointBit | b2Draw::e_pairBit | b2Draw::e_centerOfMassBit);
+        _debugDraw->attachTo(this);
+        _debugDraw->setWorld(SCALE, _world);
+        _debugDraw->setPriority(1);
+    }
+
+    void click(Event* event)
+    {
+        TouchEvent* te = safeCast<TouchEvent*>(event);
+
+        if (event->target.get() == this)
+        {
+            spCircle circle = new Circle(_world, te->localPosition);
+            circle->attachTo(this);
+        }
+
+        if (event->target->getUserData())
+        {
+            //shot to circle
+            spActor actor = safeSpCast<Actor>(event->target);
+            b2Body* body = (b2Body*)actor->getUserData();
+
+            Vector2 dir = actor->getPosition() - te->localPosition;
+            dir = dir / dir.length() * body->GetMass() * 200;
+
+            body->ApplyForceToCenter(b2Vec2(dir.x, dir.y));
+
+            spSprite sprite = new Sprite();
+            sprite->setResAnim(gameResources.getResAnim("shot"));
+            Vector2 local = actor->global2local(te->localPosition);
+            sprite->setPosition(local);
+            sprite->setAnchor(Vector2(0.5f, 0.5f));
+            sprite->attachTo(actor);
+        }
+    }
 };
 
 void example_preinit()
@@ -198,20 +198,20 @@ void example_preinit()
 
 void example_init()
 {
-	//load xml file with resources definition
-	gameResources.loadXML("res.xml");
-
-	//lets create our client code simple actor
-	//prefix 'sp' here means it is intrusive Smart Pointer
-	//it would be deleted automatically when you lost ref to it	
-	spMainActor actor = new MainActor;
-	//and add it to Stage as child
-	getStage()->addChild(actor);
+    //load xml file with resources definition
+    gameResources.loadXML("res.xml");
+
+    //lets create our client code simple actor
+    //prefix 'sp' here means it is intrusive Smart Pointer
+    //it would be deleted automatically when you lost ref to it
+    spMainActor actor = new MainActor;
+    //and add it to Stage as child
+    getStage()->addChild(actor);
 }
 
 void example_destroy()
 {
-	gameResources.free();
+    gameResources.free();
 }
 
 void example_update()

+ 22 - 22
examples/Game/part1/src/Game.cpp

@@ -5,34 +5,34 @@
 
 Game::Game()
 {
-	
+
 }
 
 void Game::init()
 {
-	//scene layer would have size of display
-	setSize(getStage()->getSize());
-
-	//create background
-	spSprite sky = new Sprite;
-	sky->setResAnim(res::ui.getResAnim("sky"));
-	sky->attachTo(this);
-	
-	//create player ship
-	_player = new Player;
-	_player->init(this);
-
-	//create virtual joystick
-	_move = new Joystick;
-	_move->attachTo(this);
-	_move->setY(getHeight() - _move->getHeight());
+    //scene layer would have size of display
+    setSize(getStage()->getSize());
+
+    //create background
+    spSprite sky = new Sprite;
+    sky->setResAnim(res::ui.getResAnim("sky"));
+    sky->attachTo(this);
+
+    //create player ship
+    _player = new Player;
+    _player->init(this);
+
+    //create virtual joystick
+    _move = new Joystick;
+    _move->attachTo(this);
+    _move->setY(getHeight() - _move->getHeight());
 }
 
-void Game::doUpdate(const UpdateState &us)
+void Game::doUpdate(const UpdateState& us)
 {
-	//doUpdate is virtual method of Actor
-	//it is being called each frame
+    //doUpdate is virtual method of Actor
+    //it is being called each frame
 
-	//update player each frame
-	_player->update(us);
+    //update player each frame
+    _player->update(us);
 }

+ 6 - 6
examples/Game/part1/src/Game.h

@@ -8,15 +8,15 @@ DECLARE_SMART(Game, spGame);
 class Game: public Actor
 {
 public:
-	Game();
+    Game();
 
-	void init();
+    void init();
 
 private:
-	friend class Player;
-	void doUpdate(const UpdateState &us);
+    friend class Player;
+    void doUpdate(const UpdateState& us);
 
-	spJoystick _move;
+    spJoystick _move;
 
-	spPlayer _player;
+    spPlayer _player;
 };

+ 44 - 44
examples/Game/part1/src/Joystick.cpp

@@ -1,64 +1,64 @@
 #include "Joystick.h"
 #include "res.h"
 
-Joystick::Joystick():_pressed(false), _dir(0,0)
+Joystick::Joystick(): _pressed(false), _dir(0, 0)
 {
-	setResAnim(res::ui.getResAnim("joystick"));
-	setAlpha(128);
+    setResAnim(res::ui.getResAnim("joystick"));
+    setAlpha(128);
 
-	//handle touch events
-	addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &Joystick::onEvent));
-	addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Joystick::onEvent));
-	addEventListener(TouchEvent::MOVE, CLOSURE(this, &Joystick::onEvent));
+    //handle touch events
+    addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &Joystick::onEvent));
+    addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Joystick::onEvent));
+    addEventListener(TouchEvent::MOVE, CLOSURE(this, &Joystick::onEvent));
 
-	_finger = new Sprite;
-	_finger->setResAnim(res::ui.getResAnim("finger"));
-	_finger->attachTo(this);
-	_finger->setVisible(false);
-	_finger->setAnchor(Vector2(0.5f, 0.5f));
-	_finger->setTouchEnabled(false);
+    _finger = new Sprite;
+    _finger->setResAnim(res::ui.getResAnim("finger"));
+    _finger->attachTo(this);
+    _finger->setVisible(false);
+    _finger->setAnchor(Vector2(0.5f, 0.5f));
+    _finger->setTouchEnabled(false);
 }
 
-void Joystick::onEvent(Event *ev)
+void Joystick::onEvent(Event* ev)
 {
-	TouchEvent *te = safeCast<TouchEvent *>(ev);
+    TouchEvent* te = safeCast<TouchEvent*>(ev);
 
-	//if player touched down
-	if (te->type == TouchEvent::TOUCH_DOWN)
-	{
-		_finger->setVisible(true);
-		setColor(Color::Red);
-		_pressed = true;
-	}
+    //if player touched down
+    if (te->type == TouchEvent::TOUCH_DOWN)
+    {
+        _finger->setVisible(true);
+        setColor(Color::Red);
+        _pressed = true;
+    }
 
-	//if player touched up
-	if (te->type == TouchEvent::TOUCH_UP)
-	{
-		_finger->setVisible(false);
-		setColor(Color::White);
-		_pressed = false;
-	}
+    //if player touched up
+    if (te->type == TouchEvent::TOUCH_UP)
+    {
+        _finger->setVisible(false);
+        setColor(Color::White);
+        _pressed = false;
+    }
 
-	if (te->type == TouchEvent::MOVE)
-	{
-	}
+    if (te->type == TouchEvent::MOVE)
+    {
+    }
 
-	Vector2 center = getSize()/2;
-	_dir = te->localPosition - center;
+    Vector2 center = getSize() / 2;
+    _dir = te->localPosition - center;
 
-	if (_dir.length() > 100)
-		_dir.normalizeTo(100);
+    if (_dir.length() > 100)
+        _dir.normalizeTo(100);
 
-	_finger->setPosition(center + _dir);
+    _finger->setPosition(center + _dir);
 
-	if (!_pressed)
-	{
-		_dir = Vector2(0,0);
-	}
+    if (!_pressed)
+    {
+        _dir = Vector2(0, 0);
+    }
 }
 
-bool Joystick::getDirection(Vector2 &dir) const
+bool Joystick::getDirection(Vector2& dir) const
 {
-	dir = _dir;
-	return _pressed;
+    dir = _dir;
+    return _pressed;
 }

+ 7 - 7
examples/Game/part1/src/Joystick.h

@@ -6,14 +6,14 @@ DECLARE_SMART(Joystick, spController);
 class Joystick: public Sprite
 {
 public:
-	Joystick();
-	
-	bool getDirection(Vector2 &dir) const;
+    Joystick();
+
+    bool getDirection(Vector2& dir) const;
 
 private:
-	void onEvent(Event *ev);
-	bool _pressed;
-	Vector2 _dir;
+    void onEvent(Event* ev);
+    bool _pressed;
+    Vector2 _dir;
 
-	spSprite _finger;
+    spSprite _finger;
 };

+ 29 - 29
examples/Game/part1/src/Player.cpp

@@ -5,41 +5,41 @@
 
 void Player::_init()
 {
-	//initialize player's ship
-	_view->setPosition(_game->getSize()/2);
+    //initialize player's ship
+    _view->setPosition(_game->getSize() / 2);
 
-	_ship = new Sprite;
-	_ship->setResAnim(res::ui.getResAnim("ship"));
-	_ship->attachTo(_view);
-	_ship->setAnchor(Vector2(0.5f, 0.5f));
+    _ship = new Sprite;
+    _ship->setResAnim(res::ui.getResAnim("ship"));
+    _ship->attachTo(_view);
+    _ship->setAnchor(Vector2(0.5f, 0.5f));
 
-	_engine = new Sprite;
-	_engine->setResAnim(res::ui.getResAnim("shipengine"));
-	_engine->attachTo(_ship);
-	//animate engine's fire
-	_engine->addTween(Sprite::TweenColor(Color::Red), 500, -1, true);
-	//by default it is hidden
-	//and would be visible only if ship moves
-	_engine->setVisible(false);
+    _engine = new Sprite;
+    _engine->setResAnim(res::ui.getResAnim("shipengine"));
+    _engine->attachTo(_ship);
+    //animate engine's fire
+    _engine->addTween(Sprite::TweenColor(Color::Red), 500, -1, true);
+    //by default it is hidden
+    //and would be visible only if ship moves
+    _engine->setVisible(false);
 }
 
-void Player::_update(const UpdateState &us)
+void Player::_update(const UpdateState& us)
 {
-	_engine->setVisible(false);
+    _engine->setVisible(false);
 
-	Vector2 dir;
-	if (_game->_move->getDirection(dir))
-	{
-		//update player position according to delta time and finger direction from virtual joystick
-		Vector2 pos = _view->getPosition();		
-		pos = pos + dir * (us.dt / 1000.0f) * 5;
-		_view->setPosition(pos);
+    Vector2 dir;
+    if (_game->_move->getDirection(dir))
+    {
+        //update player position according to delta time and finger direction from virtual joystick
+        Vector2 pos = _view->getPosition();
+        pos = pos + dir * (us.dt / 1000.0f) * 5;
+        _view->setPosition(pos);
 
-		//rotate it
-		float angle = atan2f(dir.y, dir.x);
-		_view->setRotation(angle);
+        //rotate it
+        float angle = atan2f(dir.y, dir.x);
+        _view->setRotation(angle);
 
-		//if player moves show engine's fire
-		_engine->setVisible(true);
-	}
+        //if player moves show engine's fire
+        _engine->setVisible(true);
+    }
 }

+ 5 - 5
examples/Game/part1/src/Player.h

@@ -6,11 +6,11 @@ class Player: public Unit
 {
 public:
 
-	
+
 protected:
-	void _init();
-	void _update(const UpdateState &us);
+    void _init();
+    void _update(const UpdateState& us);
 
-	spSprite _engine;	
-	spSprite _ship;	
+    spSprite _engine;
+    spSprite _ship;
 };

+ 11 - 11
examples/Game/part1/src/Unit.cpp

@@ -1,24 +1,24 @@
 #include "Unit.h"
 #include "Game.h"
 
-Unit::Unit():_game(0)
+Unit::Unit(): _game(0)
 {
 
 }
 
-void Unit::init(Game *game)
+void Unit::init(Game* game)
 {
-	//initialize base
-	_game = game;
-	_view = new Actor;
-	_view->attachTo(game);
+    //initialize base
+    _game = game;
+    _view = new Actor;
+    _view->attachTo(game);
 
-	//virtual method was overload in Player
-	_init();
+    //virtual method was overload in Player
+    _init();
 }
 
-void Unit::update(const UpdateState &us)
+void Unit::update(const UpdateState& us)
 {
-	//virtual method was overload in Player
-	_update(us);
+    //virtual method was overload in Player
+    _update(us);
 }

+ 7 - 7
examples/Game/part1/src/Unit.h

@@ -6,16 +6,16 @@ class Game;
 class Unit: public Object
 {
 public:
-	Unit();
+    Unit();
 
-	void init(Game *game);
+    void init(Game* game);
 
-	void update(const UpdateState &us);
+    void update(const UpdateState& us);
 
 protected:
-	virtual void _init(){}
-	virtual void _update(const UpdateState &us){}
+    virtual void _init() {}
+    virtual void _update(const UpdateState& us) {}
 
-	spActor _view;
-	Game *_game;
+    spActor _view;
+    Game* _game;
 };

+ 81 - 90
examples/Game/part1/src/entry_point.cpp

@@ -17,144 +17,135 @@ using namespace oxygine;
 //called each frame
 int mainloop()
 {
-	example_update();
-	//update our stage
-	//update all actors. Actor::update would be called also for all children
-	getStage()->update();
-	
-	if (core::beginRendering())
-	{		
-		Color clearColor(32, 32, 32, 255);
-		Rect viewport(Point(0, 0), core::getDisplaySize());
-		//render all actors. Actor::render would be called also for all children
-		getStage()->render(clearColor, viewport);
-
-		core::swapDisplayBuffers();
-	}
-
-	//update internal components
-	//all input events would be passed to Stage::instance.handleEvent
-	//if done is true then User requests quit from app.
-	bool done = core::update();
-
-	return done ? 1 : 0;
+    example_update();
+    //update our stage
+    //update all actors. Actor::update would be called also for all children
+    getStage()->update();
+
+    if (core::beginRendering())
+    {
+        Color clearColor(32, 32, 32, 255);
+        Rect viewport(Point(0, 0), core::getDisplaySize());
+        //render all actors. Actor::render would be called also for all children
+        getStage()->render(clearColor, viewport);
+
+        core::swapDisplayBuffers();
+    }
+
+    //update internal components
+    //all input events would be passed to Stage::instance.handleEvent
+    //if done is true then User requests quit from app.
+    bool done = core::update();
+
+    return done ? 1 : 0;
 }
 
 //it is application entry point
 void run()
 {
-	ObjectBase::__startTracingLeaks();
+    ObjectBase::__startTracingLeaks();
 
-	//initialize Oxygine's internal stuff
-	core::init_desc desc;
+    //initialize Oxygine's internal stuff
+    core::init_desc desc;
 
 #if OXYGINE_SDL || OXYGINE_EMSCRIPTEN
-	//we could setup initial window size on SDL builds
-	desc.w = 960;
-	desc.h = 640;
-	//marmalade settings could be changed from emulator's menu
+    //we could setup initial window size on SDL builds
+    desc.w = 960;
+    desc.h = 640;
+    //marmalade settings could be changed from emulator's menu
 #endif
 
 
-	example_preinit();
-	core::init(&desc);
+    example_preinit();
+    core::init(&desc);
 
 
-	//create Stage. Stage is a root node
-	Stage::instance = new Stage(true);
-	Point size = core::getDisplaySize();
-	getStage()->setSize(size);
+    //create Stage. Stage is a root node
+    Stage::instance = new Stage(true);
+    Point size = core::getDisplaySize();
+    getStage()->setSize(size);
 
-	//DebugActor is a helper actor node. It shows FPS, memory usage and other useful stuff
-	DebugActor::show();
-		
-	//initialize this example stuff. see example.cpp
-	example_init();
+    //DebugActor is a helper actor node. It shows FPS, memory usage and other useful stuff
+    DebugActor::show();
+
+    //initialize this example stuff. see example.cpp
+    example_init();
 
 #ifdef EMSCRIPTEN
-	/*
-	if you build for Emscripten mainloop would be called automatically outside. 
-	see emscripten_set_main_loop below
-	*/	
-	return;
+    /*
+    if you build for Emscripten mainloop would be called automatically outside.
+    see emscripten_set_main_loop below
+    */
+    return;
 #endif
 
 
-	//here is main game loop
-	while (1)
-	{
-		int done = mainloop();
-		if (done)
-			break;
-	}
-	//user wants to leave application...
+    //here is main game loop
+    while (1)
+    {
+        int done = mainloop();
+        if (done)
+            break;
+    }
+    //user wants to leave application...
 
-	//lets dump all created objects into log
-	//all created and not freed resources would be displayed
-	ObjectBase::dumpCreatedObjects();
+    //lets dump all created objects into log
+    //all created and not freed resources would be displayed
+    ObjectBase::dumpCreatedObjects();
 
-	//lets cleanup everything right now and call ObjectBase::dumpObjects() again
-	//we need to free all allocated resources and delete all created actors
-	//all actors/sprites are smart pointer objects and actually you don't need it remove them by hands
-	//but now we want delete it by hands
+    //lets cleanup everything right now and call ObjectBase::dumpObjects() again
+    //we need to free all allocated resources and delete all created actors
+    //all actors/sprites are smart pointer objects and actually you don't need it remove them by hands
+    //but now we want delete it by hands
 
-	//check example.cpp
-	example_destroy();
+    //check example.cpp
+    example_destroy();
 
 
-	//renderer.cleanup();
+    //renderer.cleanup();
 
-	/**releases all internal components and Stage*/
-	core::release();
+    /**releases all internal components and Stage*/
+    core::release();
 
-	//dump list should be empty now
-	//we deleted everything and could be sure that there aren't any memory leaks
-	ObjectBase::dumpCreatedObjects();
+    //dump list should be empty now
+    //we deleted everything and could be sure that there aren't any memory leaks
+    ObjectBase::dumpCreatedObjects();
 
-	ObjectBase::__stopTracingLeaks();
-	//end
+    ObjectBase::__stopTracingLeaks();
+    //end
 }
 
 #ifdef __S3E__
 int main(int argc, char* argv[])
 {
-	run();
-	return 0;
+    run();
+    return 0;
 }
 #endif
 
 
 #ifdef OXYGINE_SDL
-#ifdef __MINGW32__
-int WinMain(HINSTANCE hInstance,
-	HINSTANCE hPrevInstance,
-	LPSTR lpCmdLine, int nCmdShow)
-{
-	run();
-	return 0;
-}
-#else
+
 #include "SDL_main.h"
 extern "C"
 {
-	int main(int argc, char* argv[])
-	{
-		run();
-		return 0;
-	}
+    int main(int argc, char* argv[])
+    {
+        run();
+        return 0;
+    }
 };
 #endif
-#endif
 
 #ifdef EMSCRIPTEN
 #include <emscripten.h>
 
-void one(){ mainloop(); }
+void one() { mainloop(); }
 
 int main(int argc, char* argv[])
 {
-	run();
-	emscripten_set_main_loop(one, 0, 0);
-	return 0;
+    run();
+    emscripten_set_main_loop(one, 0, 0);
+    return 0;
 }
 #endif

+ 9 - 9
examples/Game/part1/src/example.cpp

@@ -9,21 +9,21 @@ void example_preinit()
 
 void example_init()
 {
-	//load resources
-	res::load();
-	
-	//create scene with game
-	spGame game = new Game;
-	game->init();
-	game->attachTo(getStage());
+    //load resources
+    res::load();
+
+    //create scene with game
+    spGame game = new Game;
+    game->init();
+    game->attachTo(getStage());
 }
 
 void example_update()
 {
-	
+
 }
 
 void example_destroy()
 {
-	res::free();
+    res::free();
 }

+ 11 - 11
examples/Game/part1/src/res.cpp

@@ -2,17 +2,17 @@
 
 namespace res
 {
-	Resources ui;
+    Resources ui;
 
-	void load()
-	{
-		//load our resources
-		ui.loadXML("xmls/ui.xml");
-	}
+    void load()
+    {
+        //load our resources
+        ui.loadXML("xmls/ui.xml");
+    }
 
-	void free()
-	{
-		//unload
-		ui.free();
-	}
+    void free()
+    {
+        //unload
+        ui.free();
+    }
 }

+ 3 - 3
examples/Game/part1/src/res.h

@@ -4,7 +4,7 @@ using namespace oxygine;
 
 namespace res
 {
-	extern Resources ui;
-	void load();
-	void free();
+    extern Resources ui;
+    void load();
+    void free();
 }

+ 25 - 25
examples/Game/part2/src/Enemy.cpp

@@ -3,39 +3,39 @@
 
 void Enemy::_init()
 {
-	//you could hit enemy 3 times
-	_hp = 3;
+    //you could hit enemy 3 times
+    _hp = 3;
 
-	spSprite sprite = new Sprite;
-	sprite->setResAnim(res::ui.getResAnim("asteroid"));
-	sprite->attachTo(_view);
-	sprite->setAnchor(Vector2(0.5f, 0.5f));
+    spSprite sprite = new Sprite;
+    sprite->setResAnim(res::ui.getResAnim("asteroid"));
+    sprite->attachTo(_view);
+    sprite->setAnchor(Vector2(0.5f, 0.5f));
 
-	//it random scale and rotation
-	sprite->setRotation(scalar::randFloat(0, MATH_PI * 2));
-	sprite->setScale(scalar::randFloat(0.5f, 1.0f));
+    //it random scale and rotation
+    sprite->setRotation(scalar::randFloat(0, MATH_PI * 2));
+    sprite->setScale(scalar::randFloat(0.5f, 1.0f));
 
-	//it is rotating by tween with random speed
-	float dest = MATH_PI * 2;
-	if (rand() % 2 == 0)
-		dest *= -1;
-	dest += sprite->getRotation();
-	sprite->addTween(Sprite::TweenRotation(dest), rand() % 15000 + 15000, -1);
+    //it is rotating by tween with random speed
+    float dest = MATH_PI * 2;
+    if (rand() % 2 == 0)
+        dest *= -1;
+    dest += sprite->getRotation();
+    sprite->addTween(Sprite::TweenRotation(dest), rand() % 15000 + 15000, -1);
 }
 
-void Enemy::_update(const UpdateState &us)
+void Enemy::_update(const UpdateState& us)
 {
-	//nothing to do
+    //nothing to do
 }
 
 void Enemy::explode()
 {
-	//hit by rocket
-	_hp--;
-	if (_hp == 0)
-	{
-		//dead, hide it with alpha tween
-		_dead = true;
-		_view->addTween(Actor::TweenAlpha(0), 300)->setDetachActor(true);
-	}
+    //hit by rocket
+    _hp--;
+    if (_hp == 0)
+    {
+        //dead, hide it with alpha tween
+        _dead = true;
+        _view->addTween(Actor::TweenAlpha(0), 300)->setDetachActor(true);
+    }
 }

+ 4 - 4
examples/Game/part2/src/Enemy.h

@@ -6,10 +6,10 @@ class Enemy: public Unit
 {
 public:
 
-	void explode();
+    void explode();
 
 private:
-	void _init();
-	void _update(const UpdateState &us);
-	int _hp;
+    void _init();
+    void _update(const UpdateState& us);
+    int _hp;
 };

+ 48 - 48
examples/Game/part2/src/Game.cpp

@@ -6,7 +6,7 @@
 
 Game::Game()
 {
-	
+
 }
 
 Game::~Game()
@@ -16,61 +16,61 @@ Game::~Game()
 
 void Game::init()
 {
-	//scene layer would have size of display
-	setSize(getStage()->getSize());
+    //scene layer would have size of display
+    setSize(getStage()->getSize());
+
+    //create background
+    spSprite sky = new Sprite;
+    sky->setResAnim(res::ui.getResAnim("sky"));
+    sky->attachTo(this);
 
-	//create background
-	spSprite sky = new Sprite;
-	sky->setResAnim(res::ui.getResAnim("sky"));
-	sky->attachTo(this);
-	
-	//create player ship
-	_player = new Player;
-	_player->init(getSize()/2, this);
+    //create player ship
+    _player = new Player;
+    _player->init(getSize() / 2, this);
 
-	//create separate layer for elements virtual joystick and other UI in future
-	_ui = new Actor;
-	_ui->attachTo(this);
-	//it would be higher than other actors with default priority = 0
-	_ui->setPriority(1);
+    //create separate layer for elements virtual joystick and other UI in future
+    _ui = new Actor;
+    _ui->attachTo(this);
+    //it would be higher than other actors with default priority = 0
+    _ui->setPriority(1);
 
-	//create virtual joystick and attach it to UI
-	_move = new Joystick;
-	_move->attachTo(_ui);
-	_move->setY(getHeight() - _move->getHeight());
+    //create virtual joystick and attach it to UI
+    _move = new Joystick;
+    _move->attachTo(_ui);
+    _move->setY(getHeight() - _move->getHeight());
 
-	//create virtual joystick and attach it to UI
-	_fire = new Joystick;
-	_fire->attachTo(_ui);
-	_fire->setX(getWidth() - _fire->getWidth());
-	_fire->setY(getHeight() - _fire->getHeight());
+    //create virtual joystick and attach it to UI
+    _fire = new Joystick;
+    _fire->attachTo(_ui);
+    _fire->setX(getWidth() - _fire->getWidth());
+    _fire->setY(getHeight() - _fire->getHeight());
 
 
-	//create enemies
-	for (int i = 0; i < 10; ++i)
-	{
-		spEnemy enemy = new Enemy;
-		enemy->init(Vector2(scalar::randFloat(0, getWidth()), scalar::randFloat(0, getHeight())), this);
-	}	
+    //create enemies
+    for (int i = 0; i < 10; ++i)
+    {
+        spEnemy enemy = new Enemy;
+        enemy->init(Vector2(scalar::randFloat(0, getWidth()), scalar::randFloat(0, getHeight())), this);
+    }
 }
 
-void Game::doUpdate(const UpdateState &us)
+void Game::doUpdate(const UpdateState& us)
 {
-	//update all units
-	//ship, rocket and enemies are in this list
-	for (units::iterator i = _units.begin(); i != _units.end(); )
-	{
-		spUnit unit = *i;
-		unit->update(us);
+    //update all units
+    //ship, rocket and enemies are in this list
+    for (units::iterator i = _units.begin(); i != _units.end();)
+    {
+        spUnit unit = *i;
+        unit->update(us);
 
-		if (unit->isDead())
-		{
-			//it is dead. Time to remove it from list
-			i = _units.erase(i);
-		}
-		else
-		{
-			++i;
-		}
-	}
+        if (unit->isDead())
+        {
+            //it is dead. Time to remove it from list
+            i = _units.erase(i);
+        }
+        else
+        {
+            ++i;
+        }
+    }
 }

+ 13 - 13
examples/Game/part2/src/Game.h

@@ -12,24 +12,24 @@ DECLARE_SMART(Unit, spUnit);
 class Game: public Actor
 {
 public:
-	Game();
-	~Game();
+    Game();
+    ~Game();
 
-	void init();
+    void init();
 
 protected:
-	friend class Rocket;
-	friend class Player;
-	friend class Unit;
+    friend class Rocket;
+    friend class Player;
+    friend class Unit;
 
-	void doUpdate(const UpdateState &us);
+    void doUpdate(const UpdateState& us);
 
-	spActor _ui;
-	spJoystick _move;
-	spJoystick _fire;
+    spActor _ui;
+    spJoystick _move;
+    spJoystick _fire;
 
-	spPlayer _player;
+    spPlayer _player;
 
-	typedef std::list<spUnit> units;
-	units _units;
+    typedef std::list<spUnit> units;
+    units _units;
 };

+ 44 - 44
examples/Game/part2/src/Joystick.cpp

@@ -1,64 +1,64 @@
 #include "Joystick.h"
 #include "res.h"
 
-Joystick::Joystick():_pressed(false), _dir(0,0)
+Joystick::Joystick(): _pressed(false), _dir(0, 0)
 {
-	setResAnim(res::ui.getResAnim("joystick"));
-	setAlpha(128);
+    setResAnim(res::ui.getResAnim("joystick"));
+    setAlpha(128);
 
-	//handle touch events
-	addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &Joystick::onEvent));
-	addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Joystick::onEvent));
-	addEventListener(TouchEvent::MOVE, CLOSURE(this, &Joystick::onEvent));
+    //handle touch events
+    addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &Joystick::onEvent));
+    addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Joystick::onEvent));
+    addEventListener(TouchEvent::MOVE, CLOSURE(this, &Joystick::onEvent));
 
-	_finger = new Sprite;
-	_finger->setResAnim(res::ui.getResAnim("finger"));
-	_finger->attachTo(this);
-	_finger->setVisible(false);
-	_finger->setAnchor(Vector2(0.5f, 0.5f));
-	_finger->setTouchEnabled(false);
+    _finger = new Sprite;
+    _finger->setResAnim(res::ui.getResAnim("finger"));
+    _finger->attachTo(this);
+    _finger->setVisible(false);
+    _finger->setAnchor(Vector2(0.5f, 0.5f));
+    _finger->setTouchEnabled(false);
 }
 
-void Joystick::onEvent(Event *ev)
+void Joystick::onEvent(Event* ev)
 {
-	TouchEvent *te = safeCast<TouchEvent *>(ev);
+    TouchEvent* te = safeCast<TouchEvent*>(ev);
 
-	//if player touched down
-	if (te->type == TouchEvent::TOUCH_DOWN)
-	{
-		_finger->setVisible(true);
-		setColor(Color::Red);
-		_pressed = true;
-	}
+    //if player touched down
+    if (te->type == TouchEvent::TOUCH_DOWN)
+    {
+        _finger->setVisible(true);
+        setColor(Color::Red);
+        _pressed = true;
+    }
 
-	//if player touched up
-	if (te->type == TouchEvent::TOUCH_UP)
-	{
-		_finger->setVisible(false);
-		setColor(Color::White);
-		_pressed = false;
-	}
+    //if player touched up
+    if (te->type == TouchEvent::TOUCH_UP)
+    {
+        _finger->setVisible(false);
+        setColor(Color::White);
+        _pressed = false;
+    }
 
-	if (te->type == TouchEvent::MOVE)
-	{
-	}
+    if (te->type == TouchEvent::MOVE)
+    {
+    }
 
-	Vector2 center = getSize()/2;
-	_dir = te->localPosition - center;
+    Vector2 center = getSize() / 2;
+    _dir = te->localPosition - center;
 
-	if (_dir.length() > 100)
-		_dir.normalizeTo(100);
+    if (_dir.length() > 100)
+        _dir.normalizeTo(100);
 
-	_finger->setPosition(center + _dir);
+    _finger->setPosition(center + _dir);
 
-	if (!_pressed)
-	{
-		_dir = Vector2(0,0);
-	}
+    if (!_pressed)
+    {
+        _dir = Vector2(0, 0);
+    }
 }
 
-bool Joystick::getDirection(Vector2 &dir) const
+bool Joystick::getDirection(Vector2& dir) const
 {
-	dir = _dir;
-	return _pressed;
+    dir = _dir;
+    return _pressed;
 }

+ 7 - 7
examples/Game/part2/src/Joystick.h

@@ -6,14 +6,14 @@ DECLARE_SMART(Joystick, spController);
 class Joystick: public Sprite
 {
 public:
-	Joystick();
-	
-	bool getDirection(Vector2 &dir) const;
+    Joystick();
+
+    bool getDirection(Vector2& dir) const;
 
 private:
-	void onEvent(Event *ev);
-	bool _pressed;
-	Vector2 _dir;
+    void onEvent(Event* ev);
+    bool _pressed;
+    Vector2 _dir;
 
-	spSprite _finger;
+    spSprite _finger;
 };

+ 42 - 42
examples/Game/part2/src/Player.cpp

@@ -4,64 +4,64 @@
 #include "Joystick.h"
 #include "Rocket.h"
 
-Player::Player():_lastRocketSpawn(0)
+Player::Player(): _lastRocketSpawn(0)
 {
 
 }
 
 void Player::_init()
 {
-	//initialize player's ship
-	_view->setPosition(_game->getSize()/2);
+    //initialize player's ship
+    _view->setPosition(_game->getSize() / 2);
 
-	_ship = new Sprite;
-	_ship->setResAnim(res::ui.getResAnim("ship"));
-	_ship->attachTo(_view);
-	_ship->setAnchor(Vector2(0.5f, 0.5f));
+    _ship = new Sprite;
+    _ship->setResAnim(res::ui.getResAnim("ship"));
+    _ship->attachTo(_view);
+    _ship->setAnchor(Vector2(0.5f, 0.5f));
 
-	_engine = new Sprite;
-	_engine->setResAnim(res::ui.getResAnim("shipengine"));
-	_engine->attachTo(_ship);
-	//animate engine's fire
-	_engine->addTween(Sprite::TweenColor(Color::Red), 500, -1, true);
-	//by default it is hidden
-	//and would be visible only if ship moves
-	_engine->setVisible(false);
+    _engine = new Sprite;
+    _engine->setResAnim(res::ui.getResAnim("shipengine"));
+    _engine->attachTo(_ship);
+    //animate engine's fire
+    _engine->addTween(Sprite::TweenColor(Color::Red), 500, -1, true);
+    //by default it is hidden
+    //and would be visible only if ship moves
+    _engine->setVisible(false);
 }
 
-void Player::_update(const UpdateState &us)
+void Player::_update(const UpdateState& us)
 {
-	_engine->setVisible(false);
+    _engine->setVisible(false);
 
-	Vector2 dir;
-	if (_game->_move->getDirection(dir))
-	{
-		//update player position according to delta time and finger direction from virtual joystick
-		Vector2 pos = _view->getPosition();		
-		pos = pos + dir * (us.dt / 1000.0f) * 5;
-		_view->setPosition(pos);
+    Vector2 dir;
+    if (_game->_move->getDirection(dir))
+    {
+        //update player position according to delta time and finger direction from virtual joystick
+        Vector2 pos = _view->getPosition();
+        pos = pos + dir * (us.dt / 1000.0f) * 5;
+        _view->setPosition(pos);
 
-		//rotate it
-		float angle = atan2f(dir.y, dir.x);
-		_view->setRotation(angle);
+        //rotate it
+        float angle = atan2f(dir.y, dir.x);
+        _view->setRotation(angle);
 
-		//if player moves show engine's fire
-		_engine->setVisible(true);
-	}
+        //if player moves show engine's fire
+        _engine->setVisible(true);
+    }
 
 
-	if (_game->_fire->getDirection(dir))
-	{
-		//fire rockets each 300 ms
-		if (_lastRocketSpawn + 300 < us.time)
-		{
-			_lastRocketSpawn = us.time;
+    if (_game->_fire->getDirection(dir))
+    {
+        //fire rockets each 300 ms
+        if (_lastRocketSpawn + 300 < us.time)
+        {
+            _lastRocketSpawn = us.time;
 
-			dir.normalize();
+            dir.normalize();
 
-			//create rocket
-			spRocket rocket = new Rocket(dir);
-			rocket->init(_view->getPosition(), _game);
-		}		
-	}
+            //create rocket
+            spRocket rocket = new Rocket(dir);
+            rocket->init(_view->getPosition(), _game);
+        }
+    }
 }

+ 7 - 7
examples/Game/part2/src/Player.h

@@ -5,14 +5,14 @@ DECLARE_SMART(Player, spPlayer);
 class Player: public Unit
 {
 public:
-	Player();
+    Player();
+
 
-	
 protected:
-	void _init();
-	void _update(const UpdateState &us);
+    void _init();
+    void _update(const UpdateState& us);
 
-	spSprite _engine;	
-	spSprite _ship;	
-	timeMS _lastRocketSpawn;
+    spSprite _engine;
+    spSprite _ship;
+    timeMS _lastRocketSpawn;
 };

+ 56 - 56
examples/Game/part2/src/Rocket.cpp

@@ -3,78 +3,78 @@
 #include "Game.h"
 #include "Enemy.h"
 
-Rocket::Rocket(const Vector2 &dir):_dir(dir)
-{	
+Rocket::Rocket(const Vector2& dir): _dir(dir)
+{
 }
 
 void Rocket::_init()
 {
-	//initialize rocket's sprite
-	spSprite sp = new Sprite;
-	sp->setResAnim(res::ui.getResAnim("rocket"));
-	sp->setAnchor(Vector2(0.5f, 0.5f));
-	sp->setScale(0);
-	sp->addTween(Sprite::TweenScale(1.0f), 500);
+    //initialize rocket's sprite
+    spSprite sp = new Sprite;
+    sp->setResAnim(res::ui.getResAnim("rocket"));
+    sp->setAnchor(Vector2(0.5f, 0.5f));
+    sp->setScale(0);
+    sp->addTween(Sprite::TweenScale(1.0f), 500);
 
-	_view->addChild(sp);
-	_view->setRotation(atan2f(_dir.y, _dir.x));	
+    _view->addChild(sp);
+    _view->setRotation(atan2f(_dir.y, _dir.x));
 }
 
-void Rocket::_update(const UpdateState &us)
+void Rocket::_update(const UpdateState& us)
 {
-	//move rocket by it's direction each frame
-	Vector2 pos = _view->getPosition();
-	pos += _dir * (us.dt / 1000.0f) * 500.0f;
-	_view->setPosition(pos);
+    //move rocket by it's direction each frame
+    Vector2 pos = _view->getPosition();
+    pos += _dir * (us.dt / 1000.0f) * 500.0f;
+    _view->setPosition(pos);
+
+    //find intersection with Enemies and explode them
+    for (Game::units::iterator i = _game->_units.begin(); i != _game->_units.end(); ++i)
+    {
+        spUnit unit = *i;
+        //list of units has everything, but we need only Enemies
+        spEnemy enemy = dynamic_cast<Enemy*>(unit.get());
+        if (!enemy)
+            continue;
 
-	//find intersection with Enemies and explode them
-	for (Game::units::iterator i = _game->_units.begin(); i != _game->_units.end(); ++i)
-	{
-		spUnit unit = *i;
-		//list of units has everything, but we need only Enemies
-		spEnemy enemy = dynamic_cast<Enemy*>(unit.get());
-		if (!enemy)
-			continue;
-		
-		Vector2 d = unit->getPosition() - pos;		
-		if (d.length() < 20)
-		{
-			//if rocket is too close to Enemy then try to explode it and explode rocket
-			enemy->explode();
-			explode();
+        Vector2 d = unit->getPosition() - pos;
+        if (d.length() < 20)
+        {
+            //if rocket is too close to Enemy then try to explode it and explode rocket
+            enemy->explode();
+            explode();
 
-			return;
-		}
-	}
+            return;
+        }
+    }
 
 
-	//if rocked out of bounds then explode it
-	RectF bounds(0, 0, _game->getWidth(), _game->getHeight());
-	if (!bounds.pointIn(pos))
-	{
-		explode();
-	}
+    //if rocked out of bounds then explode it
+    RectF bounds(0, 0, _game->getWidth(), _game->getHeight());
+    if (!bounds.pointIn(pos))
+    {
+        explode();
+    }
 }
 
 void Rocket::explode()
 {
-	//we are dead
-	//set this flag to true and it this rocket would be removed from units list in Game::doUpdate
-	_dead = true;
+    //we are dead
+    //set this flag to true and it this rocket would be removed from units list in Game::doUpdate
+    _dead = true;
+
+    //create explode sprite
+    spSprite anim = new Sprite;
+    anim->attachTo(_game);
+    anim->setBlendMode(blend_add);
+    anim->setPosition(_view->getPosition());
+    anim->setAnchor(Vector2(0.5f, 0.5f));
 
-	//create explode sprite
-	spSprite anim = new Sprite;
-	anim->attachTo(_game);
-	anim->setBlendMode(blend_add);
-	anim->setPosition(_view->getPosition());
-	anim->setAnchor(Vector2(0.5f, 0.5f));
-	
-	//run tween with explosion animation
-	spTween tween = anim->addTween(TweenAnim(res::ui.getResAnim("explosion")), 1000);
-	//auto detach sprite when tween is done
-	tween->setDetachActor(true);
+    //run tween with explosion animation
+    spTween tween = anim->addTween(Sprite::TweenAnim(res::ui.getResAnim("explosion")), 1000);
+    //auto detach sprite when tween is done
+    tween->setDetachActor(true);
 
-	//hide rocket and then detach it
-	tween = _view->addTween(Actor::TweenAlpha(0), 500);
-	tween->setDetachActor(true);
+    //hide rocket and then detach it
+    tween = _view->addTween(Actor::TweenAlpha(0), 500);
+    tween->setDetachActor(true);
 }

+ 6 - 6
examples/Game/part2/src/Rocket.h

@@ -6,12 +6,12 @@ DECLARE_SMART(Rocket, spRocket);
 class Rocket: public Unit
 {
 public:
-	Rocket(const Vector2 &dir);
-	
+    Rocket(const Vector2& dir);
+
 protected:
-	void _init();
-	void _update(const UpdateState &us);
-	void explode();
+    void _init();
+    void _update(const UpdateState& us);
+    void explode();
 
-	Vector2 _dir;
+    Vector2 _dir;
 };

+ 15 - 15
examples/Game/part2/src/Unit.cpp

@@ -1,33 +1,33 @@
 #include "Unit.h"
 #include "Game.h"
 
-Unit::Unit():_game(0), _dead(false)
+Unit::Unit(): _game(0), _dead(false)
 {
 
 }
 
-void Unit::init(const Vector2 &pos, Game *game)
+void Unit::init(const Vector2& pos, Game* game)
 {
-	//initialize base
-	_game = game;
-	_view = new Actor;
-	_view->attachTo(game);
-	_view->setPosition(pos);
+    //initialize base
+    _game = game;
+    _view = new Actor;
+    _view->attachTo(game);
+    _view->setPosition(pos);
 
-	//adds to global units list
-	_game->_units.push_back(this);
+    //adds to global units list
+    _game->_units.push_back(this);
 
-	//should be overloaded in inherited classes
-	_init();
+    //should be overloaded in inherited classes
+    _init();
 }
 
 const Vector2& Unit::getPosition() const
 {
-	return _view->getPosition();
+    return _view->getPosition();
 }
 
-void Unit::update(const UpdateState &us)
+void Unit::update(const UpdateState& us)
 {
-	//should be overloaded in inherited classes
-	_update(us);
+    //should be overloaded in inherited classes
+    _update(us);
 }

+ 10 - 10
examples/Game/part2/src/Unit.h

@@ -7,20 +7,20 @@ DECLARE_SMART(Unit, spUnit);
 class Unit: public Object
 {
 public:
-	Unit();
+    Unit();
 
-	void init(const Vector2 &pos, Game *game);
+    void init(const Vector2& pos, Game* game);
 
-	const Vector2& getPosition() const;
+    const Vector2& getPosition() const;
 
-	void update(const UpdateState &us);
-	bool isDead() const {return _dead;}
+    void update(const UpdateState& us);
+    bool isDead() const {return _dead;}
 
 protected:
-	virtual void _init(){}
-	virtual void _update(const UpdateState &us){}
+    virtual void _init() {}
+    virtual void _update(const UpdateState& us) {}
 
-	spActor _view;
-	Game *_game;
-	bool _dead;
+    spActor _view;
+    Game* _game;
+    bool _dead;
 };

+ 81 - 90
examples/Game/part2/src/entry_point.cpp

@@ -17,144 +17,135 @@ using namespace oxygine;
 //called each frame
 int mainloop()
 {
-	example_update();
-	//update our stage
-	//update all actors. Actor::update would be called also for all children
-	getStage()->update();
-	
-	if (core::beginRendering())
-	{		
-		Color clearColor(32, 32, 32, 255);
-		Rect viewport(Point(0, 0), core::getDisplaySize());
-		//render all actors. Actor::render would be called also for all children
-		getStage()->render(clearColor, viewport);
-
-		core::swapDisplayBuffers();
-	}
-
-	//update internal components
-	//all input events would be passed to Stage::instance.handleEvent
-	//if done is true then User requests quit from app.
-	bool done = core::update();
-
-	return done ? 1 : 0;
+    example_update();
+    //update our stage
+    //update all actors. Actor::update would be called also for all children
+    getStage()->update();
+
+    if (core::beginRendering())
+    {
+        Color clearColor(32, 32, 32, 255);
+        Rect viewport(Point(0, 0), core::getDisplaySize());
+        //render all actors. Actor::render would be called also for all children
+        getStage()->render(clearColor, viewport);
+
+        core::swapDisplayBuffers();
+    }
+
+    //update internal components
+    //all input events would be passed to Stage::instance.handleEvent
+    //if done is true then User requests quit from app.
+    bool done = core::update();
+
+    return done ? 1 : 0;
 }
 
 //it is application entry point
 void run()
 {
-	ObjectBase::__startTracingLeaks();
+    ObjectBase::__startTracingLeaks();
 
-	//initialize Oxygine's internal stuff
-	core::init_desc desc;
+    //initialize Oxygine's internal stuff
+    core::init_desc desc;
 
 #if OXYGINE_SDL || OXYGINE_EMSCRIPTEN
-	//we could setup initial window size on SDL builds
-	desc.w = 960;
-	desc.h = 640;
-	//marmalade settings could be changed from emulator's menu
+    //we could setup initial window size on SDL builds
+    desc.w = 960;
+    desc.h = 640;
+    //marmalade settings could be changed from emulator's menu
 #endif
 
 
-	example_preinit();
-	core::init(&desc);
+    example_preinit();
+    core::init(&desc);
 
 
-	//create Stage. Stage is a root node
-	Stage::instance = new Stage(true);
-	Point size = core::getDisplaySize();
-	getStage()->setSize(size);
+    //create Stage. Stage is a root node
+    Stage::instance = new Stage(true);
+    Point size = core::getDisplaySize();
+    getStage()->setSize(size);
 
-	//DebugActor is a helper actor node. It shows FPS, memory usage and other useful stuff
-	DebugActor::show();
-		
-	//initialize this example stuff. see example.cpp
-	example_init();
+    //DebugActor is a helper actor node. It shows FPS, memory usage and other useful stuff
+    DebugActor::show();
+
+    //initialize this example stuff. see example.cpp
+    example_init();
 
 #ifdef EMSCRIPTEN
-	/*
-	if you build for Emscripten mainloop would be called automatically outside. 
-	see emscripten_set_main_loop below
-	*/	
-	return;
+    /*
+    if you build for Emscripten mainloop would be called automatically outside.
+    see emscripten_set_main_loop below
+    */
+    return;
 #endif
 
 
-	//here is main game loop
-	while (1)
-	{
-		int done = mainloop();
-		if (done)
-			break;
-	}
-	//user wants to leave application...
+    //here is main game loop
+    while (1)
+    {
+        int done = mainloop();
+        if (done)
+            break;
+    }
+    //user wants to leave application...
 
-	//lets dump all created objects into log
-	//all created and not freed resources would be displayed
-	ObjectBase::dumpCreatedObjects();
+    //lets dump all created objects into log
+    //all created and not freed resources would be displayed
+    ObjectBase::dumpCreatedObjects();
 
-	//lets cleanup everything right now and call ObjectBase::dumpObjects() again
-	//we need to free all allocated resources and delete all created actors
-	//all actors/sprites are smart pointer objects and actually you don't need it remove them by hands
-	//but now we want delete it by hands
+    //lets cleanup everything right now and call ObjectBase::dumpObjects() again
+    //we need to free all allocated resources and delete all created actors
+    //all actors/sprites are smart pointer objects and actually you don't need it remove them by hands
+    //but now we want delete it by hands
 
-	//check example.cpp
-	example_destroy();
+    //check example.cpp
+    example_destroy();
 
 
-	//renderer.cleanup();
+    //renderer.cleanup();
 
-	/**releases all internal components and Stage*/
-	core::release();
+    /**releases all internal components and Stage*/
+    core::release();
 
-	//dump list should be empty now
-	//we deleted everything and could be sure that there aren't any memory leaks
-	ObjectBase::dumpCreatedObjects();
+    //dump list should be empty now
+    //we deleted everything and could be sure that there aren't any memory leaks
+    ObjectBase::dumpCreatedObjects();
 
-	ObjectBase::__stopTracingLeaks();
-	//end
+    ObjectBase::__stopTracingLeaks();
+    //end
 }
 
 #ifdef __S3E__
 int main(int argc, char* argv[])
 {
-	run();
-	return 0;
+    run();
+    return 0;
 }
 #endif
 
 
 #ifdef OXYGINE_SDL
-#ifdef __MINGW32__
-int WinMain(HINSTANCE hInstance,
-	HINSTANCE hPrevInstance,
-	LPSTR lpCmdLine, int nCmdShow)
-{
-	run();
-	return 0;
-}
-#else
+
 #include "SDL_main.h"
 extern "C"
 {
-	int main(int argc, char* argv[])
-	{
-		run();
-		return 0;
-	}
+    int main(int argc, char* argv[])
+    {
+        run();
+        return 0;
+    }
 };
 #endif
-#endif
 
 #ifdef EMSCRIPTEN
 #include <emscripten.h>
 
-void one(){ mainloop(); }
+void one() { mainloop(); }
 
 int main(int argc, char* argv[])
 {
-	run();
-	emscripten_set_main_loop(one, 0, 0);
-	return 0;
+    run();
+    emscripten_set_main_loop(one, 0, 0);
+    return 0;
 }
 #endif

+ 7 - 7
examples/Game/part2/src/example.cpp

@@ -9,13 +9,13 @@ void example_preinit()
 
 void example_init()
 {
-	//load resources
-	res::load();
+    //load resources
+    res::load();
 
-	//create scene with game
-	spGame game = new Game;
-	game->init();
-	game->attachTo(getStage());
+    //create scene with game
+    spGame game = new Game;
+    game->init();
+    game->attachTo(getStage());
 }
 
 void example_update()
@@ -25,5 +25,5 @@ void example_update()
 
 void example_destroy()
 {
-	res::free();
+    res::free();
 }

+ 9 - 9
examples/Game/part2/src/res.cpp

@@ -2,16 +2,16 @@
 
 namespace res
 {
-	Resources ui;
+    Resources ui;
 
-	void load()
-	{
-		ui.loadXML("xmls/ui.xml");
-	}
+    void load()
+    {
+        ui.loadXML("xmls/ui.xml");
+    }
 
-	void free()
-	{
-		ui.free();
+    void free()
+    {
+        ui.free();
 
-	}
+    }
 }

+ 3 - 3
examples/Game/part2/src/res.h

@@ -4,7 +4,7 @@ using namespace oxygine;
 
 namespace res
 {
-	extern Resources ui;
-	void load();
-	void free();
+    extern Resources ui;
+    void load();
+    void free();
 }

+ 25 - 25
examples/Game/part3/src/Enemy.cpp

@@ -3,39 +3,39 @@
 
 void Enemy::_init()
 {
-	//you could hit enemy 3 times
-	_hp = 3;
+    //you could hit enemy 3 times
+    _hp = 3;
 
-	spSprite sprite = new Sprite;
-	sprite->setResAnim(res::ui.getResAnim("asteroid"));
-	sprite->attachTo(_view);
-	sprite->setAnchor(Vector2(0.5f, 0.5f));
+    spSprite sprite = new Sprite;
+    sprite->setResAnim(res::ui.getResAnim("asteroid"));
+    sprite->attachTo(_view);
+    sprite->setAnchor(Vector2(0.5f, 0.5f));
 
-	//it random scale and rotation
-	sprite->setRotation(scalar::randFloat(0, MATH_PI * 2));
-	sprite->setScale(scalar::randFloat(0.5f, 1.0f));
+    //it random scale and rotation
+    sprite->setRotation(scalar::randFloat(0, MATH_PI * 2));
+    sprite->setScale(scalar::randFloat(0.5f, 1.0f));
 
-	//it is rotating by tween with random speed
-	float dest = MATH_PI * 2;
-	if (rand() % 2 == 0)
-		dest *= -1;
-	dest += sprite->getRotation();
-	sprite->addTween(Sprite::TweenRotation(dest), rand() % 15000 + 15000, -1);
+    //it is rotating by tween with random speed
+    float dest = MATH_PI * 2;
+    if (rand() % 2 == 0)
+        dest *= -1;
+    dest += sprite->getRotation();
+    sprite->addTween(Sprite::TweenRotation(dest), rand() % 15000 + 15000, -1);
 }
 
-void Enemy::_update(const UpdateState &us)
+void Enemy::_update(const UpdateState& us)
 {
-	//nothing to do
+    //nothing to do
 }
 
 void Enemy::explode()
 {
-	//hit by rocket
-	_hp--;
-	if (_hp == 0)
-	{
-		//dead, hide it with alpha tween
-		_dead = true;
-		_view->addTween(Actor::TweenAlpha(0), 300)->setDetachActor(true);
-	}
+    //hit by rocket
+    _hp--;
+    if (_hp == 0)
+    {
+        //dead, hide it with alpha tween
+        _dead = true;
+        _view->addTween(Actor::TweenAlpha(0), 300)->setDetachActor(true);
+    }
 }

+ 4 - 4
examples/Game/part3/src/Enemy.h

@@ -6,10 +6,10 @@ class Enemy: public Unit
 {
 public:
 
-	void explode();
+    void explode();
 
 private:
-	void _init();
-	void _update(const UpdateState &us);
-	int _hp;
+    void _init();
+    void _update(const UpdateState& us);
+    int _hp;
 };

+ 48 - 48
examples/Game/part3/src/Game.cpp

@@ -6,7 +6,7 @@
 
 Game::Game()
 {
-	
+
 }
 
 Game::~Game()
@@ -16,61 +16,61 @@ Game::~Game()
 
 void Game::init()
 {
-	//scene layer would have size of display
-	setSize(getStage()->getSize());
+    //scene layer would have size of display
+    setSize(getStage()->getSize());
+
+    //create background
+    spSprite sky = new Sprite;
+    sky->setResAnim(res::ui.getResAnim("sky"));
+    sky->attachTo(this);
 
-	//create background
-	spSprite sky = new Sprite;
-	sky->setResAnim(res::ui.getResAnim("sky"));
-	sky->attachTo(this);
-	
-	//create player ship
-	_player = new Player;
-	_player->init(getSize()/2, this);
+    //create player ship
+    _player = new Player;
+    _player->init(getSize() / 2, this);
 
-	//create separate layer for elements virtual joystick and other UI in future
-	_ui = new Actor;
-	_ui->attachTo(this);
-	//it would be higher than other actors with default priority = 0
-	_ui->setPriority(1);
+    //create separate layer for elements virtual joystick and other UI in future
+    _ui = new Actor;
+    _ui->attachTo(this);
+    //it would be higher than other actors with default priority = 0
+    _ui->setPriority(1);
 
-	//create virtual joystick and attach it to UI
-	_move = new Joystick;
-	_move->attachTo(_ui);
-	_move->setY(getHeight() - _move->getHeight());
+    //create virtual joystick and attach it to UI
+    _move = new Joystick;
+    _move->attachTo(_ui);
+    _move->setY(getHeight() - _move->getHeight());
 
-	//create virtual joystick and attach it to UI
-	_fire = new Joystick;
-	_fire->attachTo(_ui);
-	_fire->setX(getWidth() - _fire->getWidth());
-	_fire->setY(getHeight() - _fire->getHeight());
+    //create virtual joystick and attach it to UI
+    _fire = new Joystick;
+    _fire->attachTo(_ui);
+    _fire->setX(getWidth() - _fire->getWidth());
+    _fire->setY(getHeight() - _fire->getHeight());
 
 
-	//create enemies
-	for (int i = 0; i < 10; ++i)
-	{
-		spEnemy enemy = new Enemy;
-		enemy->init(Vector2(scalar::randFloat(0, getWidth()), scalar::randFloat(0, getHeight())), this);
-	}	
+    //create enemies
+    for (int i = 0; i < 10; ++i)
+    {
+        spEnemy enemy = new Enemy;
+        enemy->init(Vector2(scalar::randFloat(0, getWidth()), scalar::randFloat(0, getHeight())), this);
+    }
 }
 
-void Game::doUpdate(const UpdateState &us)
+void Game::doUpdate(const UpdateState& us)
 {
-	//update all units
-	//ship, rocket and enemies are in this list
-	for (units::iterator i = _units.begin(); i != _units.end(); )
-	{
-		spUnit unit = *i;
-		unit->update(us);
+    //update all units
+    //ship, rocket and enemies are in this list
+    for (units::iterator i = _units.begin(); i != _units.end();)
+    {
+        spUnit unit = *i;
+        unit->update(us);
 
-		if (unit->isDead())
-		{
-			//it is dead. Time to remove it from list
-			i = _units.erase(i);
-		}
-		else
-		{
-			++i;
-		}
-	}
+        if (unit->isDead())
+        {
+            //it is dead. Time to remove it from list
+            i = _units.erase(i);
+        }
+        else
+        {
+            ++i;
+        }
+    }
 }

+ 13 - 13
examples/Game/part3/src/Game.h

@@ -12,24 +12,24 @@ DECLARE_SMART(Unit, spUnit);
 class Game: public Actor
 {
 public:
-	Game();
-	~Game();
+    Game();
+    ~Game();
 
-	void init();
+    void init();
 
 protected:
-	friend class Rocket;
-	friend class Player;
-	friend class Unit;
+    friend class Rocket;
+    friend class Player;
+    friend class Unit;
 
-	void doUpdate(const UpdateState &us);
+    void doUpdate(const UpdateState& us);
 
-	spActor _ui;
-	spJoystick _move;
-	spJoystick _fire;
+    spActor _ui;
+    spJoystick _move;
+    spJoystick _fire;
 
-	spPlayer _player;
+    spPlayer _player;
 
-	typedef std::list<spUnit> units;
-	units _units;
+    typedef std::list<spUnit> units;
+    units _units;
 };

+ 17 - 17
examples/Game/part3/src/GameScene.cpp

@@ -7,26 +7,26 @@ spGameScene GameScene::instance;
 
 GameScene::GameScene()
 {
-	//create game actor
-	_game = new Game;
-	_game->init();
-	_game->attachTo(_view);
+    //create game actor
+    _game = new Game;
+    _game->init();
+    _game->attachTo(_view);
 
-	//create menu button 
-	spActor btn = initActor(new MyButton,
-		arg_resAnim = res::ui.getResAnim("menu"),
-		arg_anchor = Vector2(0.5f, 0.5f),
-		arg_attachTo = _view);
-	
-	//align it to top right
-	btn->setX(_view->getWidth() - btn->getWidth()/2);
-	btn->setY(btn->getHeight()/2);
+    //create menu button
+    spActor btn = initActor(new MyButton,
+                            arg_resAnim = res::ui.getResAnim("menu"),
+                            arg_anchor = Vector2(0.5f, 0.5f),
+                            arg_attachTo = _view);
 
-	btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &GameScene::onEvent));
+    //align it to top right
+    btn->setX(_view->getWidth() - btn->getWidth() / 2);
+    btn->setY(btn->getHeight() / 2);
+
+    btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &GameScene::onEvent));
 }
 
-void GameScene::onEvent(Event *ev)
+void GameScene::onEvent(Event* ev)
 {
-	//clicked to menu button
-	changeScene(MainMenuScene::instance);
+    //clicked to menu button
+    changeScene(MainMenuScene::instance);
 }

+ 4 - 4
examples/Game/part3/src/GameScene.h

@@ -6,11 +6,11 @@ DECLARE_SMART(GameScene, spGameScene);
 class GameScene: public Scene
 {
 public:
-	static spGameScene instance;
-	GameScene();
+    static spGameScene instance;
+    GameScene();
 
 
 private:
-	void onEvent(Event *ev);
-	spGame _game;
+    void onEvent(Event* ev);
+    spGame _game;
 };

+ 44 - 44
examples/Game/part3/src/Joystick.cpp

@@ -1,64 +1,64 @@
 #include "Joystick.h"
 #include "res.h"
 
-Joystick::Joystick():_pressed(false), _dir(0,0)
+Joystick::Joystick(): _pressed(false), _dir(0, 0)
 {
-	setResAnim(res::ui.getResAnim("joystick"));
-	setAlpha(128);
+    setResAnim(res::ui.getResAnim("joystick"));
+    setAlpha(128);
 
-	//handle touch events
-	addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &Joystick::onEvent));
-	addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Joystick::onEvent));
-	addEventListener(TouchEvent::MOVE, CLOSURE(this, &Joystick::onEvent));
+    //handle touch events
+    addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &Joystick::onEvent));
+    addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Joystick::onEvent));
+    addEventListener(TouchEvent::MOVE, CLOSURE(this, &Joystick::onEvent));
 
-	_finger = new Sprite;
-	_finger->setResAnim(res::ui.getResAnim("finger"));
-	_finger->attachTo(this);
-	_finger->setVisible(false);
-	_finger->setAnchor(Vector2(0.5f, 0.5f));
-	_finger->setTouchEnabled(false);
+    _finger = new Sprite;
+    _finger->setResAnim(res::ui.getResAnim("finger"));
+    _finger->attachTo(this);
+    _finger->setVisible(false);
+    _finger->setAnchor(Vector2(0.5f, 0.5f));
+    _finger->setTouchEnabled(false);
 }
 
-void Joystick::onEvent(Event *ev)
+void Joystick::onEvent(Event* ev)
 {
-	TouchEvent *te = safeCast<TouchEvent *>(ev);
+    TouchEvent* te = safeCast<TouchEvent*>(ev);
 
-	//if player touched down
-	if (te->type == TouchEvent::TOUCH_DOWN)
-	{
-		_finger->setVisible(true);
-		setColor(Color::Red);
-		_pressed = true;
-	}
+    //if player touched down
+    if (te->type == TouchEvent::TOUCH_DOWN)
+    {
+        _finger->setVisible(true);
+        setColor(Color::Red);
+        _pressed = true;
+    }
 
-	//if player touched up
-	if (te->type == TouchEvent::TOUCH_UP)
-	{
-		_finger->setVisible(false);
-		setColor(Color::White);
-		_pressed = false;
-	}
+    //if player touched up
+    if (te->type == TouchEvent::TOUCH_UP)
+    {
+        _finger->setVisible(false);
+        setColor(Color::White);
+        _pressed = false;
+    }
 
-	if (te->type == TouchEvent::MOVE)
-	{
-	}
+    if (te->type == TouchEvent::MOVE)
+    {
+    }
 
-	Vector2 center = getSize()/2;
-	_dir = te->localPosition - center;
+    Vector2 center = getSize() / 2;
+    _dir = te->localPosition - center;
 
-	if (_dir.length() > 100)
-		_dir.normalizeTo(100);
+    if (_dir.length() > 100)
+        _dir.normalizeTo(100);
 
-	_finger->setPosition(center + _dir);
+    _finger->setPosition(center + _dir);
 
-	if (!_pressed)
-	{
-		_dir = Vector2(0,0);
-	}
+    if (!_pressed)
+    {
+        _dir = Vector2(0, 0);
+    }
 }
 
-bool Joystick::getDirection(Vector2 &dir) const
+bool Joystick::getDirection(Vector2& dir) const
 {
-	dir = _dir;
-	return _pressed;
+    dir = _dir;
+    return _pressed;
 }

+ 7 - 7
examples/Game/part3/src/Joystick.h

@@ -6,14 +6,14 @@ DECLARE_SMART(Joystick, spController);
 class Joystick: public Sprite
 {
 public:
-	Joystick();
-	
-	bool getDirection(Vector2 &dir) const;
+    Joystick();
+
+    bool getDirection(Vector2& dir) const;
 
 private:
-	void onEvent(Event *ev);
-	bool _pressed;
-	Vector2 _dir;
+    void onEvent(Event* ev);
+    bool _pressed;
+    Vector2 _dir;
 
-	spSprite _finger;
+    spSprite _finger;
 };

+ 64 - 64
examples/Game/part3/src/MainMenuScene.cpp

@@ -11,71 +11,71 @@ spMainMenuScene MainMenuScene::instance;
 
 MainMenuScene::MainMenuScene()
 {
-	//create background
-	spSprite sky = new Sprite;
-	sky->setResAnim(res::ui.getResAnim("bg"));
-	sky->attachTo(_view);
-
-	/*
-	'initActor' is syntax sugar for
-		
-	spSprite logo = new Sprite;
-	logo->setResAnim(res::ui.getResAnim("logo2")),
-	logo->attachTo(_view);
-	*/
-
-	//create logo
-	spSprite logo = initActor(new Sprite,		
-		arg_resAnim = res::ui.getResAnim("logo2"),
-		arg_attachTo = _view);
-	logo->setPosition(_view->getSize() - logo->getSize());
-
-
-	/*
-	spSprite btn = new MyButton;
-	btn->setResAnim(res::ui.getResAnim("play")),
-	btn->setAnchor(Vector2(0.5f, 0.5f));
-	btn->setPosition(_view->getSize()/2);
-	btn->attachTo(_view);	
-	*/
-
-	//create play button at center
-	spSprite btn = initActor(new MyButton,
-		arg_name = "play",
-		arg_resAnim = res::ui.getResAnim("play"),		
-		arg_anchor = Vector2(0.5f, 0.5f),
-		arg_pos = _view->getSize()/2,
-		arg_attachTo = _view);	
-
-	//handle click to button
-	btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainMenuScene::onEvent));
-
-
-	//create menu button 
-	btn = initActor(new MyButton,
-		arg_name = "exit",
-		arg_resAnim = res::ui.getResAnim("menu"),
-		arg_anchor = Vector2(0.5f, 0.5f),
-		arg_attachTo = _view);
-
-	//align it to top right
-	btn->setX(_view->getWidth() - btn->getWidth()/2);
-	btn->setY(btn->getHeight()/2);
-
-	btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainMenuScene::onEvent));
+    //create background
+    spSprite sky = new Sprite;
+    sky->setResAnim(res::ui.getResAnim("bg"));
+    sky->attachTo(_view);
+
+    /*
+    'initActor' is syntax sugar for
+
+    spSprite logo = new Sprite;
+    logo->setResAnim(res::ui.getResAnim("logo2")),
+    logo->attachTo(_view);
+    */
+
+    //create logo
+    spSprite logo = initActor(new Sprite,
+                              arg_resAnim = res::ui.getResAnim("logo2"),
+                              arg_attachTo = _view);
+    logo->setPosition(_view->getSize() - logo->getSize());
+
+
+    /*
+    spSprite btn = new MyButton;
+    btn->setResAnim(res::ui.getResAnim("play")),
+    btn->setAnchor(Vector2(0.5f, 0.5f));
+    btn->setPosition(_view->getSize()/2);
+    btn->attachTo(_view);
+    */
+
+    //create play button at center
+    spSprite btn = initActor(new MyButton,
+                             arg_name = "play",
+                             arg_resAnim = res::ui.getResAnim("play"),
+                             arg_anchor = Vector2(0.5f, 0.5f),
+                             arg_pos = _view->getSize() / 2,
+                             arg_attachTo = _view);
+
+    //handle click to button
+    btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainMenuScene::onEvent));
+
+
+    //create menu button
+    btn = initActor(new MyButton,
+                    arg_name = "exit",
+                    arg_resAnim = res::ui.getResAnim("menu"),
+                    arg_anchor = Vector2(0.5f, 0.5f),
+                    arg_attachTo = _view);
+
+    //align it to top right
+    btn->setX(_view->getWidth() - btn->getWidth() / 2);
+    btn->setY(btn->getHeight() / 2);
+
+    btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainMenuScene::onEvent));
 }
 
-void MainMenuScene::onEvent(Event *ev)
+void MainMenuScene::onEvent(Event* ev)
 {
-	string id = ev->currentTarget->getName();
-	if (id == "exit")
-	{
-		core::requestQuit();
-	}
-
-	if (id == "play")
-	{
-		//clicked to play button change scene
-		changeScene(GameScene::instance);
-	}
+    string id = ev->currentTarget->getName();
+    if (id == "exit")
+    {
+        core::requestQuit();
+    }
+
+    if (id == "play")
+    {
+        //clicked to play button change scene
+        changeScene(GameScene::instance);
+    }
 }

+ 3 - 3
examples/Game/part3/src/MainMenuScene.h

@@ -5,10 +5,10 @@ DECLARE_SMART(MainMenuScene, spMainMenuScene);
 class MainMenuScene: public Scene
 {
 public:
-	static spMainMenuScene instance;
+    static spMainMenuScene instance;
 
-	MainMenuScene();
+    MainMenuScene();
 
 private:
-	void onEvent(Event *ev);
+    void onEvent(Event* ev);
 };

+ 16 - 16
examples/Game/part3/src/MyButton.cpp

@@ -2,25 +2,25 @@
 
 MyButton::MyButton()
 {
-	//pressed button should be RED
-	addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &MyButton::onEvent));
-	addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &MyButton::onEvent));
-	addEventListener(TouchEvent::CLICK, CLOSURE(this, &MyButton::onEvent));
+    //pressed button should be RED
+    addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &MyButton::onEvent));
+    addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &MyButton::onEvent));
+    addEventListener(TouchEvent::CLICK, CLOSURE(this, &MyButton::onEvent));
 }
 
-void MyButton::onEvent(Event *ev)
+void MyButton::onEvent(Event* ev)
 {
-	TouchEvent *event = static_cast<TouchEvent *>(ev);
-	if (ev->type == TouchEvent::TOUCH_DOWN)
-		setColor(Color::Red);
+    TouchEvent* event = static_cast<TouchEvent*>(ev);
+    if (ev->type == TouchEvent::TOUCH_DOWN)
+        setColor(Color::Red);
 
-	if (ev->type == TouchEvent::TOUCH_UP)
-		setColor(Color::White);
+    if (ev->type == TouchEvent::TOUCH_UP)
+        setColor(Color::White);
 
-	if (ev->type == TouchEvent::CLICK)
-	{
-		//clicked button should scale up and down
-		setScale(1.0f);
-		addTween(Actor::TweenScale(1.1f), 300, 1, true);
-	}
+    if (ev->type == TouchEvent::CLICK)
+    {
+        //clicked button should scale up and down
+        setScale(1.0f);
+        addTween(Actor::TweenScale(1.1f), 300, 1, true);
+    }
 }

+ 2 - 2
examples/Game/part3/src/MyButton.h

@@ -6,8 +6,8 @@ DECLARE_SMART(MyButton, spMyButton);
 class MyButton: public Sprite
 {
 public:
-	MyButton();
+    MyButton();
 
 private:
-	void onEvent(Event *);
+    void onEvent(Event*);
 };

+ 42 - 42
examples/Game/part3/src/Player.cpp

@@ -4,64 +4,64 @@
 #include "Joystick.h"
 #include "Rocket.h"
 
-Player::Player():_lastRocketSpawn(0)
+Player::Player(): _lastRocketSpawn(0)
 {
 
 }
 
 void Player::_init()
 {
-	//initialize player's ship
-	_view->setPosition(_game->getSize()/2);
+    //initialize player's ship
+    _view->setPosition(_game->getSize() / 2);
 
-	_ship = new Sprite;
-	_ship->setResAnim(res::ui.getResAnim("ship"));
-	_ship->attachTo(_view);
-	_ship->setAnchor(Vector2(0.5f, 0.5f));
+    _ship = new Sprite;
+    _ship->setResAnim(res::ui.getResAnim("ship"));
+    _ship->attachTo(_view);
+    _ship->setAnchor(Vector2(0.5f, 0.5f));
 
-	_engine = new Sprite;
-	_engine->setResAnim(res::ui.getResAnim("shipengine"));
-	_engine->attachTo(_ship);
-	//animate engine's fire
-	_engine->addTween(Sprite::TweenColor(Color::Red), 500, -1, true);
-	//by default it is hidden
-	//and would be visible only if ship moves
-	_engine->setVisible(false);
+    _engine = new Sprite;
+    _engine->setResAnim(res::ui.getResAnim("shipengine"));
+    _engine->attachTo(_ship);
+    //animate engine's fire
+    _engine->addTween(Sprite::TweenColor(Color::Red), 500, -1, true);
+    //by default it is hidden
+    //and would be visible only if ship moves
+    _engine->setVisible(false);
 }
 
-void Player::_update(const UpdateState &us)
+void Player::_update(const UpdateState& us)
 {
-	_engine->setVisible(false);
+    _engine->setVisible(false);
 
-	Vector2 dir;
-	if (_game->_move->getDirection(dir))
-	{
-		//update player position according to delta time and finger direction from virtual joystick
-		Vector2 pos = _view->getPosition();		
-		pos = pos + dir * (us.dt / 1000.0f) * 5;
-		_view->setPosition(pos);
+    Vector2 dir;
+    if (_game->_move->getDirection(dir))
+    {
+        //update player position according to delta time and finger direction from virtual joystick
+        Vector2 pos = _view->getPosition();
+        pos = pos + dir * (us.dt / 1000.0f) * 5;
+        _view->setPosition(pos);
 
-		//rotate it
-		float angle = atan2f(dir.y, dir.x);
-		_view->setRotation(angle);
+        //rotate it
+        float angle = atan2f(dir.y, dir.x);
+        _view->setRotation(angle);
 
-		//if player moves show engine's fire
-		_engine->setVisible(true);
-	}
+        //if player moves show engine's fire
+        _engine->setVisible(true);
+    }
 
 
-	if (_game->_fire->getDirection(dir))
-	{
-		//fire rockets each 300 ms
-		if (_lastRocketSpawn + 300 < us.time)
-		{
-			_lastRocketSpawn = us.time;
+    if (_game->_fire->getDirection(dir))
+    {
+        //fire rockets each 300 ms
+        if (_lastRocketSpawn + 300 < us.time)
+        {
+            _lastRocketSpawn = us.time;
 
-			dir.normalize();
+            dir.normalize();
 
-			//create rocket
-			spRocket rocket = new Rocket(dir);
-			rocket->init(_view->getPosition(), _game);
-		}		
-	}
+            //create rocket
+            spRocket rocket = new Rocket(dir);
+            rocket->init(_view->getPosition(), _game);
+        }
+    }
 }

+ 7 - 7
examples/Game/part3/src/Player.h

@@ -5,14 +5,14 @@ DECLARE_SMART(Player, spPlayer);
 class Player: public Unit
 {
 public:
-	Player();
+    Player();
+
 
-	
 protected:
-	void _init();
-	void _update(const UpdateState &us);
+    void _init();
+    void _update(const UpdateState& us);
 
-	spSprite _engine;	
-	spSprite _ship;	
-	timeMS _lastRocketSpawn;
+    spSprite _engine;
+    spSprite _ship;
+    timeMS _lastRocketSpawn;
 };

+ 56 - 56
examples/Game/part3/src/Rocket.cpp

@@ -3,78 +3,78 @@
 #include "Game.h"
 #include "Enemy.h"
 
-Rocket::Rocket(const Vector2 &dir):_dir(dir)
-{	
+Rocket::Rocket(const Vector2& dir): _dir(dir)
+{
 }
 
 void Rocket::_init()
 {
-	//initialize rocket's sprite
-	spSprite sp = new Sprite;
-	sp->setResAnim(res::ui.getResAnim("rocket"));
-	sp->setAnchor(Vector2(0.5f, 0.5f));
-	sp->setScale(0);
-	sp->addTween(Sprite::TweenScale(1.0f), 500);
+    //initialize rocket's sprite
+    spSprite sp = new Sprite;
+    sp->setResAnim(res::ui.getResAnim("rocket"));
+    sp->setAnchor(Vector2(0.5f, 0.5f));
+    sp->setScale(0);
+    sp->addTween(Sprite::TweenScale(1.0f), 500);
 
-	_view->addChild(sp);
-	_view->setRotation(atan2f(_dir.y, _dir.x));	
+    _view->addChild(sp);
+    _view->setRotation(atan2f(_dir.y, _dir.x));
 }
 
-void Rocket::_update(const UpdateState &us)
+void Rocket::_update(const UpdateState& us)
 {
-	//move rocket by it's direction each frame
-	Vector2 pos = _view->getPosition();
-	pos += _dir * (us.dt / 1000.0f) * 500.0f;
-	_view->setPosition(pos);
+    //move rocket by it's direction each frame
+    Vector2 pos = _view->getPosition();
+    pos += _dir * (us.dt / 1000.0f) * 500.0f;
+    _view->setPosition(pos);
+
+    //find intersection with Enemies and explode them
+    for (Game::units::iterator i = _game->_units.begin(); i != _game->_units.end(); ++i)
+    {
+        spUnit unit = *i;
+        //list of units has everything, but we need only Enemies
+        spEnemy enemy = dynamic_cast<Enemy*>(unit.get());
+        if (!enemy)
+            continue;
 
-	//find intersection with Enemies and explode them
-	for (Game::units::iterator i = _game->_units.begin(); i != _game->_units.end(); ++i)
-	{
-		spUnit unit = *i;
-		//list of units has everything, but we need only Enemies
-		spEnemy enemy = dynamic_cast<Enemy*>(unit.get());
-		if (!enemy)
-			continue;
-		
-		Vector2 d = unit->getPosition() - pos;		
-		if (d.length() < 20)
-		{
-			//if rocket is too close to Enemy then try to explode it and explode rocket
-			enemy->explode();
-			explode();
+        Vector2 d = unit->getPosition() - pos;
+        if (d.length() < 20)
+        {
+            //if rocket is too close to Enemy then try to explode it and explode rocket
+            enemy->explode();
+            explode();
 
-			return;
-		}
-	}
+            return;
+        }
+    }
 
 
-	//if rocked out of bounds then explode it
-	RectF bounds(0, 0, _game->getWidth(), _game->getHeight());
-	if (!bounds.pointIn(pos))
-	{
-		explode();
-	}
+    //if rocked out of bounds then explode it
+    RectF bounds(0, 0, _game->getWidth(), _game->getHeight());
+    if (!bounds.pointIn(pos))
+    {
+        explode();
+    }
 }
 
 void Rocket::explode()
 {
-	//we are dead
-	//set this flag to true and it this rocket would be removed from units list in Game::doUpdate
-	_dead = true;
+    //we are dead
+    //set this flag to true and it this rocket would be removed from units list in Game::doUpdate
+    _dead = true;
+
+    //create explode sprite
+    spSprite anim = new Sprite;
+    anim->attachTo(_game);
+    anim->setBlendMode(blend_add);
+    anim->setPosition(_view->getPosition());
+    anim->setAnchor(Vector2(0.5f, 0.5f));
 
-	//create explode sprite
-	spSprite anim = new Sprite;
-	anim->attachTo(_game);
-	anim->setBlendMode(blend_add);
-	anim->setPosition(_view->getPosition());
-	anim->setAnchor(Vector2(0.5f, 0.5f));
-	
-	//run tween with explosion animation
-	spTween tween = anim->addTween(TweenAnim(res::ui.getResAnim("explosion")), 1000);
-	//auto detach sprite when tween is done
-	tween->setDetachActor(true);
+    //run tween with explosion animation
+    spTween tween = anim->addTween(Sprite::TweenAnim(res::ui.getResAnim("explosion")), 1000);
+    //auto detach sprite when tween is done
+    tween->setDetachActor(true);
 
-	//hide rocket and then detach it
-	tween = _view->addTween(Actor::TweenAlpha(0), 500);
-	tween->setDetachActor(true);
+    //hide rocket and then detach it
+    tween = _view->addTween(Actor::TweenAlpha(0), 500);
+    tween->setDetachActor(true);
 }

+ 6 - 6
examples/Game/part3/src/Rocket.h

@@ -6,12 +6,12 @@ DECLARE_SMART(Rocket, spRocket);
 class Rocket: public Unit
 {
 public:
-	Rocket(const Vector2 &dir);
-	
+    Rocket(const Vector2& dir);
+
 protected:
-	void _init();
-	void _update(const UpdateState &us);
-	void explode();
+    void _init();
+    void _update(const UpdateState& us);
+    void explode();
 
-	Vector2 _dir;
+    Vector2 _dir;
 };

+ 10 - 10
examples/Game/part3/src/Scene.cpp

@@ -2,19 +2,19 @@
 
 Scene::Scene()
 {
-	_view = new Actor;
-	_view->setSize(getStage()->getSize());
+    _view = new Actor;
+    _view->setSize(getStage()->getSize());
 }
 
 void Scene::changeScene(spScene next)
 {
-	//hide current scene
-	spTween tween = _view->addTween(Actor::TweenAlpha(0), 300);
-	//detach when done
-	tween->setDetachActor(true);
+    //hide current scene
+    spTween tween = _view->addTween(Actor::TweenAlpha(0), 300);
+    //detach when done
+    tween->setDetachActor(true);
 
-	//show next scene
-	getStage()->addChild(next->getView());
-	next->getView()->setAlpha(0);
-	next->getView()->addTween(Actor::TweenAlpha(255), 300);
+    //show next scene
+    getStage()->addChild(next->getView());
+    next->getView()->setAlpha(0);
+    next->getView()->addTween(Actor::TweenAlpha(255), 300);
 }

+ 4 - 4
examples/Game/part3/src/Scene.h

@@ -7,13 +7,13 @@ DECLARE_SMART(Scene, spScene);
 class Scene: public Object
 {
 public:
-	Scene();
+    Scene();
 
-	void changeScene(spScene next);
+    void changeScene(spScene next);
 
-	spActor getView() const {return _view;}
+    spActor getView() const {return _view;}
 
-	spActor _view;
+    spActor _view;
 };
 
 

+ 15 - 15
examples/Game/part3/src/Unit.cpp

@@ -1,33 +1,33 @@
 #include "Unit.h"
 #include "Game.h"
 
-Unit::Unit():_game(0), _dead(false)
+Unit::Unit(): _game(0), _dead(false)
 {
 
 }
 
-void Unit::init(const Vector2 &pos, Game *game)
+void Unit::init(const Vector2& pos, Game* game)
 {
-	//initialize base
-	_game = game;
-	_view = new Actor;
-	_view->attachTo(game);
-	_view->setPosition(pos);
+    //initialize base
+    _game = game;
+    _view = new Actor;
+    _view->attachTo(game);
+    _view->setPosition(pos);
 
-	//adds to global units list
-	_game->_units.push_back(this);
+    //adds to global units list
+    _game->_units.push_back(this);
 
-	//should be overloaded in inherited classes
-	_init();
+    //should be overloaded in inherited classes
+    _init();
 }
 
 const Vector2& Unit::getPosition() const
 {
-	return _view->getPosition();
+    return _view->getPosition();
 }
 
-void Unit::update(const UpdateState &us)
+void Unit::update(const UpdateState& us)
 {
-	//should be overloaded in inherited classes
-	_update(us);
+    //should be overloaded in inherited classes
+    _update(us);
 }

+ 10 - 10
examples/Game/part3/src/Unit.h

@@ -7,20 +7,20 @@ DECLARE_SMART(Unit, spUnit);
 class Unit: public Object
 {
 public:
-	Unit();
+    Unit();
 
-	void init(const Vector2 &pos, Game *game);
+    void init(const Vector2& pos, Game* game);
 
-	const Vector2& getPosition() const;
+    const Vector2& getPosition() const;
 
-	void update(const UpdateState &us);
-	bool isDead() const {return _dead;}
+    void update(const UpdateState& us);
+    bool isDead() const {return _dead;}
 
 protected:
-	virtual void _init(){}
-	virtual void _update(const UpdateState &us){}
+    virtual void _init() {}
+    virtual void _update(const UpdateState& us) {}
 
-	spActor _view;
-	Game *_game;
-	bool _dead;
+    spActor _view;
+    Game* _game;
+    bool _dead;
 };

+ 81 - 90
examples/Game/part3/src/entry_point.cpp

@@ -17,144 +17,135 @@ using namespace oxygine;
 //called each frame
 int mainloop()
 {
-	example_update();
-	//update our stage
-	//update all actors. Actor::update would be called also for all children
-	getStage()->update();
-	
-	if (core::beginRendering())
-	{		
-		Color clearColor(32, 32, 32, 255);
-		Rect viewport(Point(0, 0), core::getDisplaySize());
-		//render all actors. Actor::render would be called also for all children
-		getStage()->render(clearColor, viewport);
-
-		core::swapDisplayBuffers();
-	}
-
-	//update internal components
-	//all input events would be passed to Stage::instance.handleEvent
-	//if done is true then User requests quit from app.
-	bool done = core::update();
-
-	return done ? 1 : 0;
+    example_update();
+    //update our stage
+    //update all actors. Actor::update would be called also for all children
+    getStage()->update();
+
+    if (core::beginRendering())
+    {
+        Color clearColor(32, 32, 32, 255);
+        Rect viewport(Point(0, 0), core::getDisplaySize());
+        //render all actors. Actor::render would be called also for all children
+        getStage()->render(clearColor, viewport);
+
+        core::swapDisplayBuffers();
+    }
+
+    //update internal components
+    //all input events would be passed to Stage::instance.handleEvent
+    //if done is true then User requests quit from app.
+    bool done = core::update();
+
+    return done ? 1 : 0;
 }
 
 //it is application entry point
 void run()
 {
-	ObjectBase::__startTracingLeaks();
+    ObjectBase::__startTracingLeaks();
 
-	//initialize Oxygine's internal stuff
-	core::init_desc desc;
+    //initialize Oxygine's internal stuff
+    core::init_desc desc;
 
 #if OXYGINE_SDL || OXYGINE_EMSCRIPTEN
-	//we could setup initial window size on SDL builds
-	desc.w = 960;
-	desc.h = 640;
-	//marmalade settings could be changed from emulator's menu
+    //we could setup initial window size on SDL builds
+    desc.w = 960;
+    desc.h = 640;
+    //marmalade settings could be changed from emulator's menu
 #endif
 
 
-	example_preinit();
-	core::init(&desc);
+    example_preinit();
+    core::init(&desc);
 
 
-	//create Stage. Stage is a root node
-	Stage::instance = new Stage(true);
-	Point size = core::getDisplaySize();
-	getStage()->setSize(size);
+    //create Stage. Stage is a root node
+    Stage::instance = new Stage(true);
+    Point size = core::getDisplaySize();
+    getStage()->setSize(size);
 
-	//DebugActor is a helper actor node. It shows FPS, memory usage and other useful stuff
-	DebugActor::show();
-		
-	//initialize this example stuff. see example.cpp
-	example_init();
+    //DebugActor is a helper actor node. It shows FPS, memory usage and other useful stuff
+    DebugActor::show();
+
+    //initialize this example stuff. see example.cpp
+    example_init();
 
 #ifdef EMSCRIPTEN
-	/*
-	if you build for Emscripten mainloop would be called automatically outside. 
-	see emscripten_set_main_loop below
-	*/	
-	return;
+    /*
+    if you build for Emscripten mainloop would be called automatically outside.
+    see emscripten_set_main_loop below
+    */
+    return;
 #endif
 
 
-	//here is main game loop
-	while (1)
-	{
-		int done = mainloop();
-		if (done)
-			break;
-	}
-	//user wants to leave application...
+    //here is main game loop
+    while (1)
+    {
+        int done = mainloop();
+        if (done)
+            break;
+    }
+    //user wants to leave application...
 
-	//lets dump all created objects into log
-	//all created and not freed resources would be displayed
-	ObjectBase::dumpCreatedObjects();
+    //lets dump all created objects into log
+    //all created and not freed resources would be displayed
+    ObjectBase::dumpCreatedObjects();
 
-	//lets cleanup everything right now and call ObjectBase::dumpObjects() again
-	//we need to free all allocated resources and delete all created actors
-	//all actors/sprites are smart pointer objects and actually you don't need it remove them by hands
-	//but now we want delete it by hands
+    //lets cleanup everything right now and call ObjectBase::dumpObjects() again
+    //we need to free all allocated resources and delete all created actors
+    //all actors/sprites are smart pointer objects and actually you don't need it remove them by hands
+    //but now we want delete it by hands
 
-	//check example.cpp
-	example_destroy();
+    //check example.cpp
+    example_destroy();
 
 
-	//renderer.cleanup();
+    //renderer.cleanup();
 
-	/**releases all internal components and Stage*/
-	core::release();
+    /**releases all internal components and Stage*/
+    core::release();
 
-	//dump list should be empty now
-	//we deleted everything and could be sure that there aren't any memory leaks
-	ObjectBase::dumpCreatedObjects();
+    //dump list should be empty now
+    //we deleted everything and could be sure that there aren't any memory leaks
+    ObjectBase::dumpCreatedObjects();
 
-	ObjectBase::__stopTracingLeaks();
-	//end
+    ObjectBase::__stopTracingLeaks();
+    //end
 }
 
 #ifdef __S3E__
 int main(int argc, char* argv[])
 {
-	run();
-	return 0;
+    run();
+    return 0;
 }
 #endif
 
 
 #ifdef OXYGINE_SDL
-#ifdef __MINGW32__
-int WinMain(HINSTANCE hInstance,
-	HINSTANCE hPrevInstance,
-	LPSTR lpCmdLine, int nCmdShow)
-{
-	run();
-	return 0;
-}
-#else
+
 #include "SDL_main.h"
 extern "C"
 {
-	int main(int argc, char* argv[])
-	{
-		run();
-		return 0;
-	}
+    int main(int argc, char* argv[])
+    {
+        run();
+        return 0;
+    }
 };
 #endif
-#endif
 
 #ifdef EMSCRIPTEN
 #include <emscripten.h>
 
-void one(){ mainloop(); }
+void one() { mainloop(); }
 
 int main(int argc, char* argv[])
 {
-	run();
-	emscripten_set_main_loop(one, 0, 0);
-	return 0;
+    run();
+    emscripten_set_main_loop(one, 0, 0);
+    return 0;
 }
 #endif

+ 8 - 8
examples/Game/part3/src/example.cpp

@@ -12,12 +12,12 @@ void example_preinit()
 
 void example_init()
 {
-	//load resources
-	res::load();
+    //load resources
+    res::load();
 
-	GameScene::instance = new GameScene;
-	MainMenuScene::instance = new MainMenuScene;
-	getStage()->addChild(MainMenuScene::instance->getView());
+    GameScene::instance = new GameScene;
+    MainMenuScene::instance = new MainMenuScene;
+    getStage()->addChild(MainMenuScene::instance->getView());
 }
 
 void example_update()
@@ -27,8 +27,8 @@ void example_update()
 
 void example_destroy()
 {
-	MainMenuScene::instance = 0;
-	GameScene::instance = 0;
+    MainMenuScene::instance = 0;
+    GameScene::instance = 0;
 
-	res::free();
+    res::free();
 }

+ 9 - 9
examples/Game/part3/src/res.cpp

@@ -2,16 +2,16 @@
 
 namespace res
 {
-	Resources ui;
+    Resources ui;
 
-	void load()
-	{
-		ui.loadXML("xmls/ui.xml");
-	}
+    void load()
+    {
+        ui.loadXML("xmls/ui.xml");
+    }
 
-	void free()
-	{
-		ui.free();
+    void free()
+    {
+        ui.free();
 
-	}
+    }
 }

+ 3 - 3
examples/Game/part3/src/res.h

@@ -4,7 +4,7 @@ using namespace oxygine;
 
 namespace res
 {
-	extern Resources ui;
-	void load();
-	void free();
+    extern Resources ui;
+    void load();
+    void free();
 }

+ 25 - 25
examples/Game/part4/src/Enemy.cpp

@@ -3,39 +3,39 @@
 
 void Enemy::_init()
 {
-	//you could hit enemy 3 times
-	_hp = 3;
+    //you could hit enemy 3 times
+    _hp = 3;
 
-	spSprite sprite = new Sprite;
-	sprite->setResAnim(res::ui.getResAnim("asteroid"));
-	sprite->attachTo(_view);
-	sprite->setAnchor(Vector2(0.5f, 0.5f));
+    spSprite sprite = new Sprite;
+    sprite->setResAnim(res::ui.getResAnim("asteroid"));
+    sprite->attachTo(_view);
+    sprite->setAnchor(Vector2(0.5f, 0.5f));
 
-	//it random scale and rotation
-	sprite->setRotation(scalar::randFloat(0, MATH_PI * 2));
-	sprite->setScale(scalar::randFloat(0.5f, 1.0f));
+    //it random scale and rotation
+    sprite->setRotation(scalar::randFloat(0, MATH_PI * 2));
+    sprite->setScale(scalar::randFloat(0.5f, 1.0f));
 
-	//it is rotating by tween with random speed
-	float dest = MATH_PI * 2;
-	if (rand() % 2 == 0)
-		dest *= -1;
-	dest += sprite->getRotation();
-	sprite->addTween(Sprite::TweenRotation(dest), rand() % 12000 + 10000, -1);
+    //it is rotating by tween with random speed
+    float dest = MATH_PI * 2;
+    if (rand() % 2 == 0)
+        dest *= -1;
+    dest += sprite->getRotation();
+    sprite->addTween(Sprite::TweenRotation(dest), rand() % 12000 + 10000, -1);
 }
 
-void Enemy::_update(const UpdateState &us)
+void Enemy::_update(const UpdateState& us)
 {
-	//nothing to do
+    //nothing to do
 }
 
 void Enemy::explode()
 {
-	//hit by rocket
-	_hp--;
-	if (_hp == 0)
-	{
-		//dead, hide it with alpha tween
-		_dead = true;
-		_view->addTween(Actor::TweenAlpha(0), 300)->setDetachActor(true);
-	}
+    //hit by rocket
+    _hp--;
+    if (_hp == 0)
+    {
+        //dead, hide it with alpha tween
+        _dead = true;
+        _view->addTween(Actor::TweenAlpha(0), 300)->setDetachActor(true);
+    }
 }

+ 4 - 4
examples/Game/part4/src/Enemy.h

@@ -6,10 +6,10 @@ class Enemy: public Unit
 {
 public:
 
-	void explode();
+    void explode();
 
 private:
-	void _init();
-	void _update(const UpdateState &us);
-	int _hp;
+    void _init();
+    void _update(const UpdateState& us);
+    int _hp;
 };

+ 56 - 56
examples/Game/part4/src/Game.cpp

@@ -6,7 +6,7 @@
 
 Game::Game()
 {
-	
+
 }
 
 Game::~Game()
@@ -16,63 +16,63 @@ Game::~Game()
 
 void Game::init()
 {
-	//scene layer would have size of display
-	setSize(getStage()->getSize());
-
-	//create background
-	spSprite sky = new Sprite;
-	sky->setResAnim(res::ui.getResAnim("sky"));
-	sky->attachTo(this);
-	
-	//create separate layer for elements virtual joystick and other UI in future
-	_ui = new Actor;
-	_ui->attachTo(this);
-	//it would be higher than other actors with default priority = 0
-	_ui->setPriority(1);
-
-	//create virtual joystick and attach it to UI
-	_move = new Joystick;
-	_move->attachTo(_ui);
-	_move->setY(getHeight() - _move->getHeight());
-
-	//create virtual joystick and attach it to UI
-	_fire = new Joystick;
-	_fire->attachTo(_ui);
-	_fire->setX(getWidth() - _fire->getWidth());
-	_fire->setY(getHeight() - _fire->getHeight());
-
-
-	//create enemies
-	for (int i = 0; i < 10; ++i)
-	{
-		spEnemy enemy = new Enemy;
-		enemy->init(Vector2(scalar::randFloat(0, getWidth()), scalar::randFloat(0, getHeight())), this);
-	}	
-
-
-	//create player ship
-	_player = new Player;
-	_player->init(getSize()/2, this);
+    //scene layer would have size of display
+    setSize(getStage()->getSize());
+
+    //create background
+    spSprite sky = new Sprite;
+    sky->setResAnim(res::ui.getResAnim("sky"));
+    sky->attachTo(this);
+
+    //create separate layer for elements virtual joystick and other UI in future
+    _ui = new Actor;
+    _ui->attachTo(this);
+    //it would be higher than other actors with default priority = 0
+    _ui->setPriority(1);
+
+    //create virtual joystick and attach it to UI
+    _move = new Joystick;
+    _move->attachTo(_ui);
+    _move->setY(getHeight() - _move->getHeight());
+
+    //create virtual joystick and attach it to UI
+    _fire = new Joystick;
+    _fire->attachTo(_ui);
+    _fire->setX(getWidth() - _fire->getWidth());
+    _fire->setY(getHeight() - _fire->getHeight());
+
+
+    //create enemies
+    for (int i = 0; i < 10; ++i)
+    {
+        spEnemy enemy = new Enemy;
+        enemy->init(Vector2(scalar::randFloat(0, getWidth()), scalar::randFloat(0, getHeight())), this);
+    }
+
+
+    //create player ship
+    _player = new Player;
+    _player->init(getSize() / 2, this);
 
 }
 
-void Game::doUpdate(const UpdateState &us)
+void Game::doUpdate(const UpdateState& us)
 {
-	//update all units
-	//ship, rocket and enemies are in this list
-	for (units::iterator i = _units.begin(); i != _units.end(); )
-	{
-		spUnit unit = *i;
-		unit->update(us);
-
-		if (unit->isDead())
-		{
-			//it is dead. Time to remove it from list
-			i = _units.erase(i);
-		}
-		else
-		{
-			++i;
-		}
-	}
+    //update all units
+    //ship, rocket and enemies are in this list
+    for (units::iterator i = _units.begin(); i != _units.end();)
+    {
+        spUnit unit = *i;
+        unit->update(us);
+
+        if (unit->isDead())
+        {
+            //it is dead. Time to remove it from list
+            i = _units.erase(i);
+        }
+        else
+        {
+            ++i;
+        }
+    }
 }

+ 13 - 13
examples/Game/part4/src/Game.h

@@ -12,24 +12,24 @@ DECLARE_SMART(Unit, spUnit);
 class Game: public Actor
 {
 public:
-	Game();
-	~Game();
+    Game();
+    ~Game();
 
-	void init();
+    void init();
 
 protected:
-	friend class Rocket;
-	friend class Player;
-	friend class Unit;
+    friend class Rocket;
+    friend class Player;
+    friend class Unit;
 
-	void doUpdate(const UpdateState &us);
+    void doUpdate(const UpdateState& us);
 
-	spActor _ui;
-	spJoystick _move;
-	spJoystick _fire;
+    spActor _ui;
+    spJoystick _move;
+    spJoystick _fire;
 
-	spPlayer _player;
+    spPlayer _player;
 
-	typedef std::list<spUnit> units;
-	units _units;
+    typedef std::list<spUnit> units;
+    units _units;
 };

+ 92 - 92
examples/Game/part4/src/GameMenu.cpp

@@ -7,106 +7,106 @@ spGameMenu GameMenu::instance;
 
 GameMenu::GameMenu()
 {
-	//initialize dialog background
-	_bg = initActor(new Box9Sprite,
-		arg_attachTo = _view,		
-		arg_resAnim = res::ui.getResAnim("box9"),
-		arg_pos = _view->getSize()/2 - Vector2(300, 300)/2);
-
-	_bg->setGuides(30, 30, 30, 30);
-
-
-	//create holder for button and text
-	_buttons = new Actor;
-	_buttons->attachTo(_view);
-
-	float y = _view->getHeight()/2 - 80;
-
-	//initialize TextStyle for TextField
-	//TextStyle is plain struct with "setting" for Text
-	TextStyle style;
-	style.font = res::ui.getResFont("big")->getFont();
-	//vertical align
-	style.vAlign = TextStyle::VALIGN_BOTTOM;
-	//horizontal align
-	style.hAlign = TextStyle::HALIGN_CENTER;
-
-	spTextField paused = initActor(new TextField,
-		arg_style = style,
-		//colored text by "html" tags
-		arg_htmlText = "Paused<div c='00FF00'>!</div>",
-		arg_x = _view->getWidth()/2,
-		arg_y = y,
-		arg_attachTo = _buttons,
-		arg_alpha = 128);
-
-	//animate with infinity loops "Paused!" text
-	paused->addTween(Actor::TweenAlpha(255), 1200, -1, true);
-	paused->addTween(Actor::TweenScale(1.1f), 1200, -1, true);
-
-	y += 70;
-	
-
-	//'buttons' image has 2 columns and 5 rows
-	//game actually uses only 2 selected randomly
-	const ResAnim *btns = res::ui.getResAnim("buttons");
-	//create 2 buttons
-	const char *txt[2] = {"Continue", "Exit"};
-	for (int i = 0; i < 2; ++i)
-	{	
-		//select random frame of image
-		const AnimationFrame &frame = btns->getFrame(rand() % btns->getColumns(), rand() % btns->getRows());
-
-		//MyButton is user class inherited from Sprite
-		spMyButton button = initActor(new MyButton,
-			arg_resAnim = frame,
-			arg_anchor = Vector2(0.5f, 0.5f),
-			arg_attachTo = _buttons);
-
-		button->setX(_view->getWidth()/2);
-		button->setY(y);
-		button->setText(txt[i]);
-
-		y+= button->getHeight() + 10;
-
-		button->setName(txt[i]);
-		//handle click on button
-		//each Object could have unique name. In this example button has the same name as text
-		button->addEventListener(TouchEvent::CLICK, CLOSURE(this, &GameMenu::onEvent));		
-	}
+    //initialize dialog background
+    _bg = initActor(new Box9Sprite,
+                    arg_attachTo = _view,
+                    arg_resAnim = res::ui.getResAnim("box9"),
+                    arg_pos = _view->getSize() / 2 - Vector2(300, 300) / 2);
+
+    _bg->setGuides(30, 30, 30, 30);
+
+
+    //create holder for button and text
+    _buttons = new Actor;
+    _buttons->attachTo(_view);
+
+    float y = _view->getHeight() / 2 - 80;
+
+    //initialize TextStyle for TextField
+    //TextStyle is plain struct with "setting" for Text
+    TextStyle style;
+    style.font = res::ui.getResFont("big")->getFont();
+    //vertical align
+    style.vAlign = TextStyle::VALIGN_BOTTOM;
+    //horizontal align
+    style.hAlign = TextStyle::HALIGN_CENTER;
+
+    spTextField paused = initActor(new TextField,
+                                   arg_style = style,
+                                   //colored text by "html" tags
+                                   arg_htmlText = "Paused<div c='00FF00'>!</div>",
+                                   arg_x = _view->getWidth() / 2,
+                                   arg_y = y,
+                                   arg_attachTo = _buttons,
+                                   arg_alpha = 128);
+
+    //animate with infinity loops "Paused!" text
+    paused->addTween(Actor::TweenAlpha(255), 1200, -1, true);
+    paused->addTween(Actor::TweenScale(1.1f), 1200, -1, true);
+
+    y += 70;
+
+
+    //'buttons' image has 2 columns and 5 rows
+    //game actually uses only 2 selected randomly
+    const ResAnim* btns = res::ui.getResAnim("buttons");
+    //create 2 buttons
+    const char* txt[2] = {"Continue", "Exit"};
+    for (int i = 0; i < 2; ++i)
+    {
+        //select random frame of image
+        const AnimationFrame& frame = btns->getFrame(rand() % btns->getColumns(), rand() % btns->getRows());
+
+        //MyButton is user class inherited from Sprite
+        spMyButton button = initActor(new MyButton,
+                                      arg_resAnim = frame,
+                                      arg_anchor = Vector2(0.5f, 0.5f),
+                                      arg_attachTo = _buttons);
+
+        button->setX(_view->getWidth() / 2);
+        button->setY(y);
+        button->setText(txt[i]);
+
+        y += button->getHeight() + 10;
+
+        button->setName(txt[i]);
+        //handle click on button
+        //each Object could have unique name. In this example button has the same name as text
+        button->addEventListener(TouchEvent::CLICK, CLOSURE(this, &GameMenu::onEvent));
+    }
 }
 
 void GameMenu::_show()
-{	
-	//before showing dialog hide buttons
-	_buttons->setAlpha(0);
-
-	//animate background
-	//set default small size
-	_bg->setSize(_bg->getAnimFrame().getSize());
-
-	//and modify height and then width by tween
-	spTweenQueue tq = new TweenQueue;
-	tq->add(Actor::TweenHeight(300), 500);
-	tq->add(Actor::TweenWidth(300), 500);
-	//and show buttons when done
-	tq->addDoneCallback(CLOSURE(this, &GameMenu::showButtons));
-	_bg->addTween(tq);
+{
+    //before showing dialog hide buttons
+    _buttons->setAlpha(0);
+
+    //animate background
+    //set default small size
+    _bg->setSize(_bg->getAnimFrame().getSize());
+
+    //and modify height and then width by tween
+    spTweenQueue tq = new TweenQueue;
+    tq->add(Actor::TweenHeight(300), 500);
+    tq->add(Actor::TweenWidth(300), 500);
+    //and show buttons when done
+    tq->addDoneCallback(CLOSURE(this, &GameMenu::showButtons));
+    _bg->addTween(tq);
 }
 
-void GameMenu::showButtons(Event *ev)
+void GameMenu::showButtons(Event* ev)
 {
-	//tween activated from GameMenu::_show is done
-	//fade in buttons and text
-	_buttons->addTween(Actor::TweenAlpha(255), 300);
+    //tween activated from GameMenu::_show is done
+    //fade in buttons and text
+    _buttons->addTween(Actor::TweenAlpha(255), 300);
 }
 
-void GameMenu::onEvent(Event *ev)
+void GameMenu::onEvent(Event* ev)
 {
-	//button clicked
-	//remember it's name. It would asked later from GameScene.cpp
-	_lastClicked = ev->currentTarget->getName();
+    //button clicked
+    //remember it's name. It would asked later from GameScene.cpp
+    _lastClicked = ev->currentTarget->getName();
 
-	//hide dialog
-	hide();
+    //hide dialog
+    hide();
 }

+ 9 - 9
examples/Game/part4/src/GameMenu.h

@@ -5,17 +5,17 @@ DECLARE_SMART(GameMenu, spGameMenu);
 class GameMenu: public Scene
 {
 public:
-	static spGameMenu instance;
+    static spGameMenu instance;
 
-	GameMenu();
-	const string& getLastClicked() const {return _lastClicked;}
+    GameMenu();
+    const string& getLastClicked() const {return _lastClicked;}
 
 private:
-	void onEvent(Event *ev);
-	void showButtons(Event *ev);
-	void _show();
+    void onEvent(Event* ev);
+    void showButtons(Event* ev);
+    void _show();
 
-	spBox9Sprite _bg;
-	spActor _buttons;
-	string _lastClicked;
+    spBox9Sprite _bg;
+    spActor _buttons;
+    string _lastClicked;
 };

+ 49 - 49
examples/Game/part4/src/GameScene.cpp

@@ -8,62 +8,62 @@ spGameScene GameScene::instance;
 
 GameScene::GameScene()
 {
-	//create game actor
-	_game = new Game;
-	_game->init();
-	_game->attachTo(_view);
+    //create game actor
+    _game = new Game;
+    _game->init();
+    _game->attachTo(_view);
 
-	//Game Actor would have own Clock.
-	//clock is internal time of each Actor
-	//by default own clock has only Stage
-	//clock could be paused and all children of this Actor would be paused to
-	_game->setClock(new Clock);
+    //Game Actor would have own Clock.
+    //clock is internal time of each Actor
+    //by default own clock has only Stage
+    //clock could be paused and all children of this Actor would be paused to
+    _game->setClock(new Clock);
 
-	//create menu button 
-	spActor btn = initActor(new MyButton,
-		arg_resAnim = res::ui.getResAnim("menu"),
-		arg_anchor = Vector2(0.5f, 0.5f),
-		arg_attachTo = _view);
-	
-	//align it to top right
-	btn->setX(_view->getWidth() - btn->getWidth()/2);
-	btn->setY(btn->getHeight()/2);
+    //create menu button
+    spActor btn = initActor(new MyButton,
+                            arg_resAnim = res::ui.getResAnim("menu"),
+                            arg_anchor = Vector2(0.5f, 0.5f),
+                            arg_attachTo = _view);
 
-	//handle click to menu
-	btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &GameScene::onEvent));
+    //align it to top right
+    btn->setX(_view->getWidth() - btn->getWidth() / 2);
+    btn->setY(btn->getHeight() / 2);
 
-	//subscribe to Hidden Event from GameMenu
-	GameMenu::instance->addEventListener(GameScene::HiddenEvent::EVENT, CLOSURE(this, &GameScene::onEvent));
+    //handle click to menu
+    btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &GameScene::onEvent));
+
+    //subscribe to Hidden Event from GameMenu
+    GameMenu::instance->addEventListener(GameScene::HiddenEvent::EVENT, CLOSURE(this, &GameScene::onEvent));
 }
 
-void GameScene::onEvent(Event *ev)
-{	
-	if (ev->type == TouchEvent::CLICK)
-	{
-		//menu button clicked
-		//pause game by pausing it's clock
-		_game->getClock()->pause();
+void GameScene::onEvent(Event* ev)
+{
+    if (ev->type == TouchEvent::CLICK)
+    {
+        //menu button clicked
+        //pause game by pausing it's clock
+        _game->getClock()->pause();
 
-		//show GameMenu dialog
-		GameMenu::instance->show();
-	}
+        //show GameMenu dialog
+        GameMenu::instance->show();
+    }
 
 
-	if (ev->type == GameScene::HiddenEvent::EVENT)
-	{
-		//event from GameMenu called after GameMenu::instance->hide()
-		const string &name = GameMenu::instance->getLastClicked();
-		if (name == "Exit")		
-		{
-			//if "Exit" button was clicked
-			changeScene(MainMenuScene::instance);
-		}
-		else
-		{
-			//"Continue" button was clicked
-			//dialog already hidden
-			//just resume Clock to continue game
-			_game->getClock()->resume();
-		}
-	}
+    if (ev->type == GameScene::HiddenEvent::EVENT)
+    {
+        //event from GameMenu called after GameMenu::instance->hide()
+        const string& name = GameMenu::instance->getLastClicked();
+        if (name == "Exit")
+        {
+            //if "Exit" button was clicked
+            changeScene(MainMenuScene::instance);
+        }
+        else
+        {
+            //"Continue" button was clicked
+            //dialog already hidden
+            //just resume Clock to continue game
+            _game->getClock()->resume();
+        }
+    }
 }

+ 4 - 4
examples/Game/part4/src/GameScene.h

@@ -6,11 +6,11 @@ DECLARE_SMART(GameScene, spGameScene);
 class GameScene: public Scene
 {
 public:
-	static spGameScene instance;
-	GameScene();
+    static spGameScene instance;
+    GameScene();
 
 
 private:
-	void onEvent(Event *ev);
-	spGame _game;
+    void onEvent(Event* ev);
+    spGame _game;
 };

+ 44 - 44
examples/Game/part4/src/Joystick.cpp

@@ -1,64 +1,64 @@
 #include "Joystick.h"
 #include "res.h"
 
-Joystick::Joystick():_pressed(false), _dir(0,0)
+Joystick::Joystick(): _pressed(false), _dir(0, 0)
 {
-	setResAnim(res::ui.getResAnim("joystick"));
-	setAlpha(128);
+    setResAnim(res::ui.getResAnim("joystick"));
+    setAlpha(128);
 
-	//handle touch events
-	addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &Joystick::onEvent));
-	addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Joystick::onEvent));
-	addEventListener(TouchEvent::MOVE, CLOSURE(this, &Joystick::onEvent));
+    //handle touch events
+    addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &Joystick::onEvent));
+    addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &Joystick::onEvent));
+    addEventListener(TouchEvent::MOVE, CLOSURE(this, &Joystick::onEvent));
 
-	_finger = new Sprite;
-	_finger->setResAnim(res::ui.getResAnim("finger"));
-	_finger->attachTo(this);
-	_finger->setVisible(false);
-	_finger->setAnchor(Vector2(0.5f, 0.5f));
-	_finger->setTouchEnabled(false);
+    _finger = new Sprite;
+    _finger->setResAnim(res::ui.getResAnim("finger"));
+    _finger->attachTo(this);
+    _finger->setVisible(false);
+    _finger->setAnchor(Vector2(0.5f, 0.5f));
+    _finger->setTouchEnabled(false);
 }
 
-void Joystick::onEvent(Event *ev)
+void Joystick::onEvent(Event* ev)
 {
-	TouchEvent *te = safeCast<TouchEvent *>(ev);
+    TouchEvent* te = safeCast<TouchEvent*>(ev);
 
-	//if player touched down
-	if (te->type == TouchEvent::TOUCH_DOWN)
-	{
-		_finger->setVisible(true);
-		setColor(Color::Red);
-		_pressed = true;
-	}
+    //if player touched down
+    if (te->type == TouchEvent::TOUCH_DOWN)
+    {
+        _finger->setVisible(true);
+        setColor(Color::Red);
+        _pressed = true;
+    }
 
-	//if player touched up
-	if (te->type == TouchEvent::TOUCH_UP)
-	{
-		_finger->setVisible(false);
-		setColor(Color::White);
-		_pressed = false;
-	}
+    //if player touched up
+    if (te->type == TouchEvent::TOUCH_UP)
+    {
+        _finger->setVisible(false);
+        setColor(Color::White);
+        _pressed = false;
+    }
 
-	if (te->type == TouchEvent::MOVE)
-	{
-	}
+    if (te->type == TouchEvent::MOVE)
+    {
+    }
 
-	Vector2 center = getSize()/2;
-	_dir = te->localPosition - center;
+    Vector2 center = getSize() / 2;
+    _dir = te->localPosition - center;
 
-	if (_dir.length() > 100)
-		_dir.normalizeTo(100);
+    if (_dir.length() > 100)
+        _dir.normalizeTo(100);
 
-	_finger->setPosition(center + _dir);
+    _finger->setPosition(center + _dir);
 
-	if (!_pressed)
-	{
-		_dir = Vector2(0,0);
-	}
+    if (!_pressed)
+    {
+        _dir = Vector2(0, 0);
+    }
 }
 
-bool Joystick::getDirection(Vector2 &dir) const
+bool Joystick::getDirection(Vector2& dir) const
 {
-	dir = _dir;
-	return _pressed;
+    dir = _dir;
+    return _pressed;
 }

+ 7 - 7
examples/Game/part4/src/Joystick.h

@@ -6,14 +6,14 @@ DECLARE_SMART(Joystick, spController);
 class Joystick: public Sprite
 {
 public:
-	Joystick();
-	
-	bool getDirection(Vector2 &dir) const;
+    Joystick();
+
+    bool getDirection(Vector2& dir) const;
 
 private:
-	void onEvent(Event *ev);
-	bool _pressed;
-	Vector2 _dir;
+    void onEvent(Event* ev);
+    bool _pressed;
+    Vector2 _dir;
 
-	spSprite _finger;
+    spSprite _finger;
 };

+ 55 - 55
examples/Game/part4/src/MainMenuScene.cpp

@@ -9,73 +9,73 @@ spMainMenuScene MainMenuScene::instance;
 
 MainMenuScene::MainMenuScene()
 {
-	//create background
-	spSprite sky = new Sprite;
-	sky->setResAnim(res::ui.getResAnim("bg"));
-	sky->attachTo(_view);
+    //create background
+    spSprite sky = new Sprite;
+    sky->setResAnim(res::ui.getResAnim("bg"));
+    sky->attachTo(_view);
 
-	/*
-	'initActor' is syntax sugar for
-		
-	spSprite logo = new Sprite;
-	logo->setResAnim(res::ui.getResAnim("logo2")),
-	logo->attachTo(_view);
-	*/
+    /*
+    'initActor' is syntax sugar for
 
-	//create logo
-	spSprite logo = initActor(new Sprite,		
-		arg_resAnim = res::ui.getResAnim("logo2"),
-		arg_attachTo = _view);
-	logo->setPosition(_view->getSize() - logo->getSize());
+    spSprite logo = new Sprite;
+    logo->setResAnim(res::ui.getResAnim("logo2")),
+    logo->attachTo(_view);
+    */
 
+    //create logo
+    spSprite logo = initActor(new Sprite,
+                              arg_resAnim = res::ui.getResAnim("logo2"),
+                              arg_attachTo = _view);
+    logo->setPosition(_view->getSize() - logo->getSize());
 
-	/*
-	spSprite btn = new MyButton;
-	btn->setResAnim(res::ui.getResAnim("play")),
-	btn->setAnchor(Vector2(0.5f, 0.5f));
-	btn->setPosition(_view->getSize()/2);
-	btn->attachTo(_view);	
-	*/
 
-	//create play button at center
-	spSprite btn = initActor(new MyButton,
-		arg_name = "play",
-		arg_resAnim = res::ui.getResAnim("play"),		
-		arg_anchor = Vector2(0.5f, 0.5f),
-		arg_pos = _view->getSize()/2,
-		arg_attachTo = _view);	
+    /*
+    spSprite btn = new MyButton;
+    btn->setResAnim(res::ui.getResAnim("play")),
+    btn->setAnchor(Vector2(0.5f, 0.5f));
+    btn->setPosition(_view->getSize()/2);
+    btn->attachTo(_view);
+    */
 
-	//handle click to button
-	btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainMenuScene::onEvent));
+    //create play button at center
+    spSprite btn = initActor(new MyButton,
+                             arg_name = "play",
+                             arg_resAnim = res::ui.getResAnim("play"),
+                             arg_anchor = Vector2(0.5f, 0.5f),
+                             arg_pos = _view->getSize() / 2,
+                             arg_attachTo = _view);
 
+    //handle click to button
+    btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainMenuScene::onEvent));
 
-	//create menu button 
-	btn = initActor(new MyButton,
-		arg_name = "exit",
-		arg_resAnim = res::ui.getResAnim("menu"),
-		arg_anchor = Vector2(0.5f, 0.5f),
-		arg_attachTo = _view);
 
-	//align it to top right
-	btn->setX(_view->getWidth() - btn->getWidth()/2);
-	btn->setY(btn->getHeight()/2);
+    //create menu button
+    btn = initActor(new MyButton,
+                    arg_name = "exit",
+                    arg_resAnim = res::ui.getResAnim("menu"),
+                    arg_anchor = Vector2(0.5f, 0.5f),
+                    arg_attachTo = _view);
 
-	btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainMenuScene::onEvent));
+    //align it to top right
+    btn->setX(_view->getWidth() - btn->getWidth() / 2);
+    btn->setY(btn->getHeight() / 2);
+
+    btn->addEventListener(TouchEvent::CLICK, CLOSURE(this, &MainMenuScene::onEvent));
 }
 
-void MainMenuScene::onEvent(Event *ev)
+void MainMenuScene::onEvent(Event* ev)
 {
-	string id = ev->currentTarget->getName();
-	if (id == "exit")
-	{
-		//request quit
-		core::requestQuit();
-	}
+    string id = ev->currentTarget->getName();
+    if (id == "exit")
+    {
+        //request quit
+        core::requestQuit();
+    }
 
-	if (id == "play")
-	{
-		//clicked to play button
-		//change scene
-		changeScene(GameScene::instance);
-	}
+    if (id == "play")
+    {
+        //clicked to play button
+        //change scene
+        changeScene(GameScene::instance);
+    }
 }

+ 3 - 3
examples/Game/part4/src/MainMenuScene.h

@@ -5,10 +5,10 @@ DECLARE_SMART(MainMenuScene, spMainMenuScene);
 class MainMenuScene: public Scene
 {
 public:
-	static spMainMenuScene instance;
+    static spMainMenuScene instance;
 
-	MainMenuScene();
+    MainMenuScene();
 
 private:
-	void onEvent(Event *ev);
+    void onEvent(Event* ev);
 };

+ 32 - 32
examples/Game/part4/src/MyButton.cpp

@@ -3,46 +3,46 @@
 
 MyButton::MyButton()
 {
-	//pressed button should be RED
-	addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &MyButton::onEvent));
-	addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &MyButton::onEvent));
-	addEventListener(TouchEvent::CLICK, CLOSURE(this, &MyButton::onEvent));
+    //pressed button should be RED
+    addEventListener(TouchEvent::TOUCH_DOWN, CLOSURE(this, &MyButton::onEvent));
+    addEventListener(TouchEvent::TOUCH_UP, CLOSURE(this, &MyButton::onEvent));
+    addEventListener(TouchEvent::CLICK, CLOSURE(this, &MyButton::onEvent));
 }
 
-void MyButton::onEvent(Event *ev)
+void MyButton::onEvent(Event* ev)
 {
-	TouchEvent *event = static_cast<TouchEvent *>(ev);
-	if (ev->type == TouchEvent::TOUCH_DOWN)
-		setColor(Color::Red);
+    TouchEvent* event = static_cast<TouchEvent*>(ev);
+    if (ev->type == TouchEvent::TOUCH_DOWN)
+        setColor(Color::Red);
 
-	if (ev->type == TouchEvent::TOUCH_UP)
-		setColor(Color::White);
+    if (ev->type == TouchEvent::TOUCH_UP)
+        setColor(Color::White);
 
-	if (ev->type == TouchEvent::CLICK)
-	{
-		//clicked button should scale up and down
-		setScale(1.0f);
-		addTween(Actor::TweenScale(1.1f), 300, 1, true);
-	}
+    if (ev->type == TouchEvent::CLICK)
+    {
+        //clicked button should scale up and down
+        setScale(1.0f);
+        addTween(Actor::TweenScale(1.1f), 300, 1, true);
+    }
 }
 
-void MyButton::setText(const string &txt)
+void MyButton::setText(const string& txt)
 {
-	if (!_text)
-	{		
-		//create TextField if it wasn't created yet
-		TextStyle style;
-		style.font = res::ui.getResFont("normal")->getFont();
-		style.vAlign = TextStyle::VALIGN_MIDDLE;
-		style.hAlign = TextStyle::HALIGN_CENTER;
+    if (!_text)
+    {
+        //create TextField if it wasn't created yet
+        TextStyle style;
+        style.font = res::ui.getResFont("normal")->getFont();
+        style.vAlign = TextStyle::VALIGN_MIDDLE;
+        style.hAlign = TextStyle::HALIGN_CENTER;
 
-		//attach it to MyButton and set the same size as button
-		//text would be centered
-		_text = initActor(new TextField,
-			arg_style = style,
-			arg_size = getSize(),
-			arg_attachTo = this);
-	}
+        //attach it to MyButton and set the same size as button
+        //text would be centered
+        _text = initActor(new TextField,
+                          arg_style = style,
+                          arg_size = getSize(),
+                          arg_attachTo = this);
+    }
 
-	_text->setText(txt);
+    _text->setText(txt);
 }

+ 4 - 4
examples/Game/part4/src/MyButton.h

@@ -7,12 +7,12 @@ DECLARE_SMART(MyButton, spMyButton);
 class MyButton: public Sprite
 {
 public:
-	MyButton();
+    MyButton();
 
-	void setText(const string &txt);
+    void setText(const string& txt);
 
 private:
-	void onEvent(Event *);
+    void onEvent(Event*);
 
-	spTextField _text;
+    spTextField _text;
 };

+ 42 - 42
examples/Game/part4/src/Player.cpp

@@ -4,64 +4,64 @@
 #include "Joystick.h"
 #include "Rocket.h"
 
-Player::Player():_lastRocketSpawn(0)
+Player::Player(): _lastRocketSpawn(0)
 {
 
 }
 
 void Player::_init()
 {
-	//initialize player's ship
-	_view->setPosition(_game->getSize()/2);
+    //initialize player's ship
+    _view->setPosition(_game->getSize() / 2);
 
-	_ship = new Sprite;
-	_ship->setResAnim(res::ui.getResAnim("ship"));
-	_ship->attachTo(_view);
-	_ship->setAnchor(Vector2(0.5f, 0.5f));
+    _ship = new Sprite;
+    _ship->setResAnim(res::ui.getResAnim("ship"));
+    _ship->attachTo(_view);
+    _ship->setAnchor(Vector2(0.5f, 0.5f));
 
-	_engine = new Sprite;
-	_engine->setResAnim(res::ui.getResAnim("shipengine"));
-	_engine->attachTo(_ship);
-	//animate engine's fire
-	_engine->addTween(Sprite::TweenColor(Color::Red), 500, -1, true);
-	//by default it is hidden
-	//and would be visible only if ship moves
-	_engine->setVisible(false);
+    _engine = new Sprite;
+    _engine->setResAnim(res::ui.getResAnim("shipengine"));
+    _engine->attachTo(_ship);
+    //animate engine's fire
+    _engine->addTween(Sprite::TweenColor(Color::Red), 500, -1, true);
+    //by default it is hidden
+    //and would be visible only if ship moves
+    _engine->setVisible(false);
 }
 
-void Player::_update(const UpdateState &us)
+void Player::_update(const UpdateState& us)
 {
-	_engine->setVisible(false);
+    _engine->setVisible(false);
 
-	Vector2 dir;
-	if (_game->_move->getDirection(dir))
-	{
-		//update player position according to delta time and finger direction from virtual joystick
-		Vector2 pos = _view->getPosition();		
-		pos = pos + dir * (us.dt / 1000.0f) * 5;
-		_view->setPosition(pos);
+    Vector2 dir;
+    if (_game->_move->getDirection(dir))
+    {
+        //update player position according to delta time and finger direction from virtual joystick
+        Vector2 pos = _view->getPosition();
+        pos = pos + dir * (us.dt / 1000.0f) * 5;
+        _view->setPosition(pos);
 
-		//rotate it
-		float angle = atan2f(dir.y, dir.x);
-		_view->setRotation(angle);
+        //rotate it
+        float angle = atan2f(dir.y, dir.x);
+        _view->setRotation(angle);
 
-		//if player moves show engine's fire
-		_engine->setVisible(true);
-	}
+        //if player moves show engine's fire
+        _engine->setVisible(true);
+    }
 
 
-	if (_game->_fire->getDirection(dir))
-	{
-		//fire rockets each 300 ms
-		if (_lastRocketSpawn + 300 < us.time)
-		{
-			_lastRocketSpawn = us.time;
+    if (_game->_fire->getDirection(dir))
+    {
+        //fire rockets each 300 ms
+        if (_lastRocketSpawn + 300 < us.time)
+        {
+            _lastRocketSpawn = us.time;
 
-			dir.normalize();
+            dir.normalize();
 
-			//create rocket
-			spRocket rocket = new Rocket(dir);
-			rocket->init(_view->getPosition(), _game);
-		}		
-	}
+            //create rocket
+            spRocket rocket = new Rocket(dir);
+            rocket->init(_view->getPosition(), _game);
+        }
+    }
 }

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