Browse Source

Merge remote-tracking branch 'origin/dev' into ref-dest-rect

dmuratshin 9 years ago
parent
commit
b036768b99
58 changed files with 244 additions and 210 deletions
  1. 1 1
      examples/DemoBox2D/src/example.cpp
  2. 1 1
      oxygine/SDL/android/lib/src/org/oxygine/lib/HttpRequests.java
  3. 7 0
      oxygine/SDL/android/lib/src/org/oxygine/lib/Utils.java
  4. 7 7
      oxygine/src/Actor.cpp
  5. 11 11
      oxygine/src/Actor.h
  6. 2 2
      oxygine/src/AnimationFrame.cpp
  7. 6 6
      oxygine/src/Box9Sprite.cpp
  8. 3 6
      oxygine/src/Box9Sprite.h
  9. 3 3
      oxygine/src/Button.cpp
  10. 3 9
      oxygine/src/Button.h
  11. 5 5
      oxygine/src/ClipRectActor.cpp
  12. 3 6
      oxygine/src/ClipRectActor.h
  13. 1 1
      oxygine/src/ColorRectSprite.cpp
  14. 3 9
      oxygine/src/ColorRectSprite.h
  15. 18 2
      oxygine/src/DebugActor.cpp
  16. 0 1
      oxygine/src/EventDispatcher.cpp
  17. 3 2
      oxygine/src/EventDispatcher.h
  18. 3 3
      oxygine/src/MaskedSprite.cpp
  19. 3 9
      oxygine/src/MaskedSprite.h
  20. 4 4
      oxygine/src/Polygon.cpp
  21. 3 9
      oxygine/src/Polygon.h
  22. 9 1
      oxygine/src/PostProcess.cpp
  23. 4 1
      oxygine/src/PostProcess.h
  24. 7 7
      oxygine/src/ProgressBar.cpp
  25. 3 6
      oxygine/src/ProgressBar.h
  26. 3 3
      oxygine/src/STDMaterial.cpp
  27. 3 3
      oxygine/src/SlidingActor.cpp
  28. 3 6
      oxygine/src/SlidingActor.h
  29. 3 3
      oxygine/src/Sprite.cpp
  30. 3 9
      oxygine/src/Sprite.h
  31. 2 1
      oxygine/src/Stage.h
  32. 3 3
      oxygine/src/TextField.cpp
  33. 3 9
      oxygine/src/TextField.h
  34. 2 1
      oxygine/src/ThreadLoader.h
  35. 9 3
      oxygine/src/VisualStyle.cpp
  36. 4 9
      oxygine/src/VisualStyle.h
  37. 3 6
      oxygine/src/WebImage.h
  38. 1 8
      oxygine/src/core/Object.h
  39. 4 0
      oxygine/src/core/android/HttpRequestJavaTask.cpp
  40. 29 4
      oxygine/src/core/android/jniUtils.cpp
  41. 3 0
      oxygine/src/core/android/jniUtils.h
  42. 7 0
      oxygine/src/core/curl/HttpRequestCurlTask.cpp
  43. 2 2
      oxygine/src/core/file.h
  44. 10 6
      oxygine/src/core/oxygine.cpp
  45. 8 0
      oxygine/src/oxygine_include.h
  46. 2 1
      oxygine/src/res/ResAnim.h
  47. 2 2
      oxygine/src/res/ResAtlas.cpp
  48. 2 1
      oxygine/src/res/ResAtlas.h
  49. 1 1
      oxygine/src/res/ResBuffer.cpp
  50. 2 1
      oxygine/src/res/ResBuffer.h
  51. 2 1
      oxygine/src/res/ResFont.h
  52. 1 1
      oxygine/src/res/ResFontBM.cpp
  53. 1 0
      oxygine/src/res/ResFontBM.h
  54. 2 1
      oxygine/src/res/ResStarlingAtlas.h
  55. 3 9
      oxygine/src/res/Resource.h
  56. 3 3
      oxygine/src/res/Resources.cpp
  57. 2 1
      oxygine/src/res/Resources.h
  58. 3 0
      tools/others/format.bat

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

@@ -183,7 +183,7 @@ public:
 
 
             spSprite sprite = new Sprite();
             spSprite sprite = new Sprite();
             sprite->setResAnim(gameResources.getResAnim("shot"));
             sprite->setResAnim(gameResources.getResAnim("shot"));
-            Vector2 local = actor->global2local(te->localPosition);
+            Vector2 local = actor->parent2local(te->localPosition);
             sprite->setPosition(local);
             sprite->setPosition(local);
             sprite->setAnchor(Vector2(0.5f, 0.5f));
             sprite->setAnchor(Vector2(0.5f, 0.5f));
             sprite->attachTo(actor);
             sprite->attachTo(actor);

+ 1 - 1
oxygine/SDL/android/lib/src/org/oxygine/lib/HttpRequests.java

@@ -247,7 +247,7 @@ public class HttpRequests {
     }
     }
 
 
     static public void release() {
     static public void release() {
-
+        _handler = null;
     }
     }
 
 
     static public HttpRequestHolder createRequest(String url, String fname, byte[] post, long handle) {
     static public HttpRequestHolder createRequest(String url, String fname, byte[] post, long handle) {

+ 7 - 0
oxygine/SDL/android/lib/src/org/oxygine/lib/Utils.java

@@ -6,6 +6,7 @@ import android.content.Intent;
 import android.net.ConnectivityManager;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
 import android.net.NetworkInfo;
 import android.net.Uri;
 import android.net.Uri;
+import android.provider.Settings;
 
 
 import java.io.File;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.FileOutputStream;
@@ -27,6 +28,12 @@ public class Utils {
         return _context.getPackageName();
         return _context.getPackageName();
     }
     }
 
 
+    public static String getProperty(String prop) {
+    	if (prop == "ANDROID_ID")
+    		return Settings.Secure.ANDROID_ID;
+        return "";
+    }
+
     public static boolean isNetworkAvailable() {
     public static boolean isNetworkAvailable() {
         if (_context == null)
         if (_context == null)
             return false;
             return false;

+ 7 - 7
oxygine/src/Actor.cpp

@@ -387,7 +387,7 @@ namespace oxygine
                 if (TouchEvent::isTouchEvent(event->type))
                 if (TouchEvent::isTouchEvent(event->type))
                 {
                 {
                     TouchEvent* me = safeCast<TouchEvent*>(event);
                     TouchEvent* me = safeCast<TouchEvent*>(event);
-                    me->localPosition = local2global(me->localPosition);
+                    me->localPosition = local2parent(me->localPosition);
                 }
                 }
 
 
                 event->phase = Event::phase_bubbling;
                 event->phase = Event::phase_bubbling;
@@ -418,7 +418,7 @@ namespace oxygine
         {
         {
             TouchEvent* me = safeCast<TouchEvent*>(event);
             TouchEvent* me = safeCast<TouchEvent*>(event);
             originalLocalPos = me->localPosition;
             originalLocalPos = me->localPosition;
-            me->localPosition = global2local(originalLocalPos);
+            me->localPosition = parent2local(originalLocalPos);
         }
         }
 
 
         event->phase = Event::phase_capturing;
         event->phase = Event::phase_capturing;
@@ -1037,13 +1037,13 @@ namespace oxygine
 
 
     }
     }
 
 
-    Vector2 Actor::global2local(const Vector2& global) const
+    Vector2 Actor::parent2local(const Vector2& global) const
     {
     {
         const AffineTransform& t = getTransformInvert();
         const AffineTransform& t = getTransformInvert();
         return t.transform(global);
         return t.transform(global);
     }
     }
 
 
-    Vector2 Actor::local2global(const Vector2& local) const
+    Vector2 Actor::local2parent(const Vector2& local) const
     {
     {
         const AffineTransform& t = getTransform();
         const AffineTransform& t = getTransform();
         return t.transform(local);
         return t.transform(local);
@@ -1340,7 +1340,7 @@ namespace oxygine
         if (child->getParent() && child->getParent() != parent)
         if (child->getParent() && child->getParent() != parent)
             pos = convert_global2local_(child->getParent(), parent, pos);
             pos = convert_global2local_(child->getParent(), parent, pos);
 
 
-        pos = child->global2local(pos);
+        pos = child->parent2local(pos);
         return pos;
         return pos;
     }
     }
 
 
@@ -1353,7 +1353,7 @@ namespace oxygine
     {
     {
         while (child && child != parent)
         while (child && child != parent)
         {
         {
-            pos = child->local2global(pos);
+            pos = child->local2parent(pos);
             child = child->getParent();
             child = child->getParent();
         }
         }
 
 
@@ -1425,7 +1425,7 @@ namespace oxygine
         spActor act = actor->getParent();
         spActor act = actor->getParent();
         while (act && act != mutualParent)
         while (act && act != mutualParent)
         {
         {
-            pos = act->local2global(pos);
+            pos = act->local2parent(pos);
             act = act->getParent();
             act = act->getParent();
         }
         }
 
 

+ 11 - 11
oxygine/src/Actor.h

@@ -284,10 +284,17 @@ namespace oxygine
         virtual void handleEvent(Event* event);
         virtual void handleEvent(Event* event);
         virtual void doRender(const RenderState& rs) {}
         virtual void doRender(const RenderState& rs) {}
 
 
-        //converts global position (position in parent space) to local space
-        Vector2 global2local(const Vector2& pos) const;
+        //converts global position (position in parent space) to local space, deprecated use parent2local
+        OXYGINE_DEPRECATED
+        Vector2 global2local(const Vector2& pos) const { return parent2local(pos); }
+        //converts local position to parent space, deprecated use local2parent
+        OXYGINE_DEPRECATED
+        Vector2 local2global(const Vector2& pos = Vector2(0, 0)) const { return local2parent(pos); }
+
+        //converts position in parent space to local space
+        Vector2 parent2local(const Vector2& pos) const;
         //converts local position to parent space
         //converts local position to parent space
-        Vector2 local2global(const Vector2& pos = Vector2(0, 0)) const;
+        Vector2 local2parent(const Vector2& pos = Vector2(0, 0)) const;
 
 
         //converts local position to Stage
         //converts local position to Stage
         Vector2 local2stage(const Vector2& pos = Vector2(0, 0), Actor* stage = 0) const;
         Vector2 local2stage(const Vector2& pos = Vector2(0, 0), Actor* stage = 0) const;
@@ -442,11 +449,4 @@ namespace oxygine
 }
 }
 
 
 
 
-#ifdef OX_EDITOR
-#include "EditorActor.h"
-#else
-namespace oxygine
-{
-    typedef Actor _Actor;
-}
-#endif
+EDITOR_INCLUDE(Actor);

+ 2 - 2
oxygine/src/AnimationFrame.cpp

@@ -85,7 +85,7 @@ namespace oxygine
         _diffuse.base = t;
         _diffuse.base = t;
         _diffuse.premultiplied = true;
         _diffuse.premultiplied = true;
         _srcRect = RectF(0, 0, 1, 1);
         _srcRect = RectF(0, 0, 1, 1);
-        _destRect = RectF(0, 0, t->getWidth(), t->getHeight());
-        _frameSize = Vector2(t->getWidth(), t->getHeight());
+        _destRect = RectF(0, 0, (float)t->getWidth(), (float)t->getHeight());
+        _frameSize = Vector2((float)t->getWidth(), (float)t->getHeight());
     }
     }
 }
 }

+ 6 - 6
oxygine/src/Box9Sprite.cpp

@@ -14,7 +14,7 @@ namespace oxygine
 {
 {
     void Box9Sprite::copyFrom(const Box9Sprite& src, cloneOptions opt)
     void Box9Sprite::copyFrom(const Box9Sprite& src, cloneOptions opt)
     {
     {
-        _Sprite::copyFrom(src, opt);
+        inherited::copyFrom(src, opt);
 
 
         _prepared = src._prepared;
         _prepared = src._prepared;
 
 
@@ -90,7 +90,7 @@ namespace oxygine
     void Box9Sprite::changeAnimFrame(const AnimationFrame& f)
     void Box9Sprite::changeAnimFrame(const AnimationFrame& f)
     {
     {
         Vector2 size = getSize();
         Vector2 size = getSize();
-        _Sprite::changeAnimFrame(f);
+        inherited::changeAnimFrame(f);
         setSize(size);
         setSize(size);
     }
     }
 
 
@@ -121,7 +121,7 @@ namespace oxygine
             attr = resanim->getAttribute("horizontal");
             attr = resanim->getAttribute("horizontal");
             _horzMode = (StretchMode)attr.as_uint(STRETCHING);
             _horzMode = (StretchMode)attr.as_uint(STRETCHING);
         }
         }
-        _Sprite::animFrameChanged(f);
+        inherited::animFrameChanged(f);
     }
     }
 
 
     RectF Box9Sprite::getDestRect() const
     RectF Box9Sprite::getDestRect() const
@@ -274,7 +274,7 @@ namespace oxygine
         stream << "\n";
         stream << "\n";
 
 
 
 
-        stream << _Sprite::dump(options);
+        stream << inherited::dump(options);
         return stream.str();
         return stream.str();
     }
     }
 
 
@@ -342,7 +342,7 @@ namespace oxygine
 
 
     void Box9Sprite::serialize(serializedata* data)
     void Box9Sprite::serialize(serializedata* data)
     {
     {
-        _Sprite::serialize(data);
+        inherited::serialize(data);
         setAttrV2(data->node, "size", getSize(), Vector2(0, 0));
         setAttrV2(data->node, "size", getSize(), Vector2(0, 0));
         data->node.set_name("Box9Sprite");
         data->node.set_name("Box9Sprite");
     }
     }
@@ -351,7 +351,7 @@ namespace oxygine
 
 
     void Box9Sprite::deserialize(const deserializedata* data)
     void Box9Sprite::deserialize(const deserializedata* data)
     {
     {
-        _Sprite::deserialize(data);
+        inherited::deserialize(data);
 
 
         setSize(attr2Vector2(data->node.attribute("size").as_string()));
         setSize(attr2Vector2(data->node.attribute("size").as_string()));
     }
     }

+ 3 - 6
oxygine/src/Box9Sprite.h

@@ -5,8 +5,9 @@ namespace oxygine
 {
 {
     DECLARE_SMART(Box9Sprite, spBox9Sprite);
     DECLARE_SMART(Box9Sprite, spBox9Sprite);
 
 
-    class Box9Sprite: public _Sprite
+    class Box9Sprite: public Sprite
     {
     {
+        INHERITED(Sprite);
     public:
     public:
         DECLARE_COPYCLONE_NEW(Box9Sprite);
         DECLARE_COPYCLONE_NEW(Box9Sprite);
         enum StretchMode
         enum StretchMode
@@ -64,9 +65,5 @@ namespace oxygine
     };
     };
 }
 }
 
 
-#ifdef OX_EDITOR
-#include "EditorBox9Sprite.h"
-#else
-typedef oxygine::Box9Sprite BaseBox9Sprite;
-#endif
 
 
+EDITOR_INCLUDE(Box9Sprite);

+ 3 - 3
oxygine/src/Button.cpp

@@ -8,7 +8,7 @@ namespace oxygine
 {
 {
     void Button::copyFrom(const Button& src, cloneOptions opt)
     void Button::copyFrom(const Button& src, cloneOptions opt)
     {
     {
-        _Sprite::copyFrom(src, opt);
+        inherited::copyFrom(src, opt);
 
 
         _state = src._state;
         _state = src._state;
         _resAnim = src._resAnim;
         _resAnim = src._resAnim;
@@ -115,9 +115,9 @@ namespace oxygine
             return;
             return;
 
 
         if (_resAnim->getColumns() > s)
         if (_resAnim->getColumns() > s)
-            _Sprite::setAnimFrame(_resAnim->getFrame(s, _row));
+            inherited::setAnimFrame(_resAnim->getFrame(s, _row));
         else
         else
-            _Sprite::setAnimFrame(_resAnim->getFrame(0, _row));
+            inherited::setAnimFrame(_resAnim->getFrame(0, _row));
 
 
     }
     }
 }
 }

+ 3 - 9
oxygine/src/Button.h

@@ -7,8 +7,9 @@ namespace oxygine
 
 
     class ResAnim;
     class ResAnim;
 
 
-    class Button: public _Sprite
+    class Button: public Sprite
     {
     {
+        INHERITED(Sprite);
     public:
     public:
         DECLARE_COPYCLONE_NEW(Button);
         DECLARE_COPYCLONE_NEW(Button);
 
 
@@ -45,11 +46,4 @@ namespace oxygine
     };
     };
 }
 }
 
 
-#ifdef OX_EDITOR
-#include "EditorButton.h"
-#else
-namespace oxygine
-{
-    typedef Button _Button;
-}
-#endif
+EDITOR_INCLUDE(Button);

+ 5 - 5
oxygine/src/ClipRectActor.cpp

@@ -10,7 +10,7 @@ namespace oxygine
 {
 {
     void ClipRectActor::copyFrom(const ClipRectActor& src, cloneOptions opt)
     void ClipRectActor::copyFrom(const ClipRectActor& src, cloneOptions opt)
     {
     {
-        _Actor::copyFrom(src, opt);
+        inherited::copyFrom(src, opt);
         _clipping = src._clipping;
         _clipping = src._clipping;
     }
     }
 
 
@@ -29,12 +29,12 @@ namespace oxygine
         if (TouchEvent::isTouchEvent(event->type))
         if (TouchEvent::isTouchEvent(event->type))
         {
         {
             TouchEvent* te = safeCast<TouchEvent*>(event);
             TouchEvent* te = safeCast<TouchEvent*>(event);
-            Vector2 localPosition = global2local(te->localPosition);
+            Vector2 localPosition = parent2local(te->localPosition);
             if (!isOn(localPosition))
             if (!isOn(localPosition))
                 return;
                 return;
         }
         }
 
 
-        _Actor::handleEvent(event);
+        inherited::handleEvent(event);
     }
     }
 
 
     void ClipRectActor::render(const RenderState& parentRS)
     void ClipRectActor::render(const RenderState& parentRS)
@@ -44,13 +44,13 @@ namespace oxygine
 
 
     void ClipRectActor::serialize(serializedata* data)
     void ClipRectActor::serialize(serializedata* data)
     {
     {
-        _Actor::serialize(data);
+        inherited::serialize(data);
         pugi::xml_node node = data->node;
         pugi::xml_node node = data->node;
         node.set_name("ClipRectActor");
         node.set_name("ClipRectActor");
     }
     }
 
 
     void ClipRectActor::deserialize(const deserializedata* data)
     void ClipRectActor::deserialize(const deserializedata* data)
     {
     {
-        _Actor::deserialize(data);
+        inherited::deserialize(data);
     }
     }
 }
 }

+ 3 - 6
oxygine/src/ClipRectActor.h

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

+ 1 - 1
oxygine/src/ColorRectSprite.cpp

@@ -8,7 +8,7 @@ namespace oxygine
 {
 {
     void ColorRectSprite::copyFrom(const ColorRectSprite& src, cloneOptions opt)
     void ColorRectSprite::copyFrom(const ColorRectSprite& src, cloneOptions opt)
     {
     {
-        _Sprite::copyFrom(src, opt);
+        inherited::copyFrom(src, opt);
     }
     }
 
 
     ColorRectSprite::ColorRectSprite()
     ColorRectSprite::ColorRectSprite()

+ 3 - 9
oxygine/src/ColorRectSprite.h

@@ -6,8 +6,9 @@ namespace oxygine
 {
 {
     DECLARE_SMART(ColorRectSprite, spColorRectSprite);
     DECLARE_SMART(ColorRectSprite, spColorRectSprite);
 
 
-    class ColorRectSprite: public _Sprite
+    class ColorRectSprite: public Sprite
     {
     {
+        INHERITED(Sprite);
     public:
     public:
         DECLARE_COPYCLONE_NEW(ColorRectSprite);
         DECLARE_COPYCLONE_NEW(ColorRectSprite);
         ColorRectSprite();
         ColorRectSprite();
@@ -27,11 +28,4 @@ namespace oxygine
     };
     };
 }
 }
 
 
-#ifdef OX_EDITOR
-#include "EditorColorRectSprite.h"
-#else
-namespace oxygine
-{
-    typedef ColorRectSprite _ColorRectSprite;
-}
-#endif
+EDITOR_INCLUDE(ColorRectSprite);

+ 18 - 2
oxygine/src/DebugActor.cpp

@@ -31,6 +31,7 @@
 #include <stdarg.h>
 #include <stdarg.h>
 #include <iomanip>
 #include <iomanip>
 
 
+
 #ifdef __S3E__
 #ifdef __S3E__
 #include "s3eMemory.h"
 #include "s3eMemory.h"
 #elif __APPLE__
 #elif __APPLE__
@@ -41,6 +42,13 @@
 #include "SDL_video.h"
 #include "SDL_video.h"
 #endif
 #endif
 
 
+#ifdef __WIN32__
+#pragma comment(lib, "psapi.lib") // Added to support GetProcessMemoryInfo()
+#include <windows.h>
+#include <Psapi.h>
+#endif
+
+
 namespace oxygine
 namespace oxygine
 {
 {
     Resources* DebugActor::resSystem = 0;
     Resources* DebugActor::resSystem = 0;
@@ -340,7 +348,8 @@ namespace oxygine
 #if OXYGINE_TRACE_VIDEO_STATS
 #if OXYGINE_TRACE_VIDEO_STATS
         int primitives = 0;
         int primitives = 0;
         primitives += vstats.elements[IVideoDriver::PT_TRIANGLES] / 3;
         primitives += vstats.elements[IVideoDriver::PT_TRIANGLES] / 3;
-        primitives += vstats.elements[IVideoDriver::PT_TRIANGLE_STRIP] - 2;
+        if (vstats.elements[IVideoDriver::PT_TRIANGLE_STRIP])
+            primitives += vstats.elements[IVideoDriver::PT_TRIANGLE_STRIP] - 2;
         s << "batches=" << aligned(vstats.batches, 3) << " primitives=" << aligned(primitives, 3) << std::endl;
         s << "batches=" << aligned(vstats.batches, 3) << " primitives=" << aligned(primitives, 3) << std::endl;
 #endif
 #endif
 
 
@@ -354,6 +363,13 @@ namespace oxygine
         s << "memory=" << mem / 1024 << "kb ";
         s << "memory=" << mem / 1024 << "kb ";
 #endif
 #endif
 
 
+#ifdef __WIN32__
+        PROCESS_MEMORY_COUNTERS_EX pmc;
+        GetProcessMemoryInfo(GetCurrentProcess(), (PROCESS_MEMORY_COUNTERS*) &pmc, sizeof(pmc));
+        s << "memory=" << pmc.PrivateUsage / 1024 << "kb ";
+
+#endif
+
         if (!_debugText.empty())
         if (!_debugText.empty())
         {
         {
             s << "\n";
             s << "\n";
@@ -385,7 +401,7 @@ namespace oxygine
                 break;
                 break;
         }
         }
 
 
-        pos = getStage()->global2local(pos);
+        pos = getStage()->parent2local(pos);
 
 
         Vector2 realSize = getScaledSize();
         Vector2 realSize = getScaledSize();
         switch (_corner)
         switch (_corner)

+ 0 - 1
oxygine/src/EventDispatcher.cpp

@@ -54,7 +54,6 @@ namespace oxygine
     {
     {
         __doCheck();
         __doCheck();
 
 
-        OX_ASSERT(_listeners);
         if (!_listeners)
         if (!_listeners)
             return;
             return;
 
 

+ 3 - 2
oxygine/src/EventDispatcher.h

@@ -21,10 +21,11 @@ namespace oxygine
     typedef Closure<void (Event* ev)> EventCallback;
     typedef Closure<void (Event* ev)> EventCallback;
 
 
     DECLARE_SMART(EventDispatcher, spEventDispatcher);
     DECLARE_SMART(EventDispatcher, spEventDispatcher);
-    class EventDispatcher: public _Object
+    class EventDispatcher: public Object
     {
     {
+        INHERITED(Object);
     public:
     public:
-        EventDispatcher(const EventDispatcher& ed): _Object(ed), _lastID(0), _listeners(0) {}
+        EventDispatcher(const EventDispatcher& ed): inherited(ed), _lastID(0), _listeners(0) {}
         EventDispatcher();
         EventDispatcher();
         ~EventDispatcher();
         ~EventDispatcher();
 
 

+ 3 - 3
oxygine/src/MaskedSprite.cpp

@@ -16,7 +16,7 @@ namespace oxygine
 
 
     void MaskedSprite::copyFrom(const MaskedSprite& src, cloneOptions opt)
     void MaskedSprite::copyFrom(const MaskedSprite& src, cloneOptions opt)
     {
     {
-        _Sprite::copyFrom(src, opt);
+        inherited::copyFrom(src, opt);
         _useRChannel = src._useRChannel;
         _useRChannel = src._useRChannel;
         //_mask = src._mask;
         //_mask = src._mask;
     }
     }
@@ -49,13 +49,13 @@ namespace oxygine
 
 
     void MaskedSprite::serialize(serializedata* data)
     void MaskedSprite::serialize(serializedata* data)
     {
     {
-        _Sprite::serialize(data);
+        inherited::serialize(data);
         data->node.set_name("MaskedSprite");
         data->node.set_name("MaskedSprite");
     }
     }
 
 
     void MaskedSprite::deserialize(const deserializedata* data)
     void MaskedSprite::deserialize(const deserializedata* data)
     {
     {
-        _Sprite::deserialize(data);
+        inherited::deserialize(data);
     }
     }
 
 
     void MaskedSprite::deserializeLink(const deserializeLinkData* data)
     void MaskedSprite::deserializeLink(const deserializeLinkData* data)

+ 3 - 9
oxygine/src/MaskedSprite.h

@@ -5,8 +5,9 @@
 namespace oxygine
 namespace oxygine
 {
 {
     DECLARE_SMART(MaskedSprite, spMaskedSprite);
     DECLARE_SMART(MaskedSprite, spMaskedSprite);
-    class MaskedSprite: public _Sprite
+    class MaskedSprite: public Sprite
     {
     {
+        INHERITED(Sprite);
     public:
     public:
         DECLARE_COPYCLONE_NEW(MaskedSprite);
         DECLARE_COPYCLONE_NEW(MaskedSprite);
 
 
@@ -31,11 +32,4 @@ namespace oxygine
     };
     };
 }
 }
 
 
-#ifdef OX_EDITOR
-#include "EditorMaskedSprite.h"
-#else
-namespace oxygine
-{
-    typedef MaskedSprite _MaskedSprite;
-}
-#endif
+EDITOR_INCLUDE(MaskedSprite);

+ 4 - 4
oxygine/src/Polygon.cpp

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

+ 3 - 9
oxygine/src/Polygon.h

@@ -7,8 +7,9 @@ namespace oxygine
     class ResAnim;
     class ResAnim;
 
 
     DECLARE_SMART(Polygon, spPolygon);
     DECLARE_SMART(Polygon, spPolygon);
-    class Polygon : public _Sprite
+    class Polygon : public Sprite
     {
     {
+        INHERITED(Sprite);
     public:
     public:
         DECLARE_COPYCLONE_NEW(Polygon);
         DECLARE_COPYCLONE_NEW(Polygon);
 
 
@@ -35,11 +36,4 @@ namespace oxygine
     };
     };
 }
 }
 
 
-#ifdef OX_EDITOR
-#include "EditorPolygon.h"
-#else
-namespace oxygine
-{
-    typedef Polygon _Polygon;
-}
-#endif
+EDITOR_INCLUDE(Polygon);

+ 9 - 1
oxygine/src/PostProcess.cpp

@@ -280,11 +280,17 @@ namespace oxygine
     }
     }
 
 
 
 
+    bool _renderingPP = false;
+    bool isRenderingPostProcessItems()
+    {
+        return _renderingPP;
+    }
 
 
     void updatePortProcessItems()
     void updatePortProcessItems()
     {
     {
         if (!postProcessItems.empty())
         if (!postProcessItems.empty())
         {
         {
+            _renderingPP = true;
             Material::setCurrent(0);
             Material::setCurrent(0);
 
 
             IVideoDriver* driver = IVideoDriver::instance;
             IVideoDriver* driver = IVideoDriver::instance;
@@ -300,6 +306,7 @@ namespace oxygine
 
 
             postProcessItems.clear();
             postProcessItems.clear();
             driver->setRenderTarget(prevRT);
             driver->setRenderTarget(prevRT);
+            _renderingPP = false;
         }
         }
 
 
         _rtm.update();
         _rtm.update();
@@ -398,7 +405,8 @@ namespace oxygine
         Rect vp = _screen;
         Rect vp = _screen;
         vp.pos = Point(0, 0);
         vp.pos = Point(0, 0);
         driver->setViewport(vp);
         driver->setViewport(vp);
-        driver->clear(0);
+
+        driver->clear(_options._clearColor);
 
 
 
 
         RenderState rs;
         RenderState rs;

+ 4 - 1
oxygine/src/PostProcess.h

@@ -23,14 +23,16 @@ namespace oxygine
             flag_screen = 1 << 2,
             flag_screen = 1 << 2,
         };
         };
 
 
-        PostProcessOptions(int flags = 0) : _flags(flags), _downscale(1) {}
+        PostProcessOptions(int flags = 0) : _flags(flags), _downscale(1), _clearColor(0, 0, 0, 0) {}
         PostProcessOptions& fullscreen(bool enable = true) { _flags = enable ? (_flags | flag_fullscreen) : (_flags  & (~flag_fullscreen)); return *this; }
         PostProcessOptions& fullscreen(bool enable = true) { _flags = enable ? (_flags | flag_fullscreen) : (_flags  & (~flag_fullscreen)); return *this; }
         PostProcessOptions& singleRender(bool enable = true) { _flags = enable ? (_flags | flag_singleR2T) : (_flags  & (~flag_singleR2T)); return *this; }
         PostProcessOptions& singleRender(bool enable = true) { _flags = enable ? (_flags | flag_singleR2T) : (_flags  & (~flag_singleR2T)); return *this; }
         //loops -(2, 3, 4, ...),  final size: 2^loops
         //loops -(2, 3, 4, ...),  final size: 2^loops
         PostProcessOptions& downscale(int loops = 2) { _downscale = loops; return *this; }
         PostProcessOptions& downscale(int loops = 2) { _downscale = loops; return *this; }
+        PostProcessOptions& clear(const Color& c) { _clearColor = c; return *this; }
 
 
         int _flags;
         int _flags;
         int _downscale;
         int _downscale;
+        Color _clearColor;
     };
     };
 
 
 
 
@@ -123,6 +125,7 @@ namespace oxygine
     RenderTargetsManager& getRTManager();
     RenderTargetsManager& getRTManager();
 
 
     void updatePortProcessItems();
     void updatePortProcessItems();
+    bool isRenderingPostProcessItems();
     void addPostProcessItem(PPTask*);
     void addPostProcessItem(PPTask*);
     void removePostProcessItem(PPTask*);
     void removePostProcessItem(PPTask*);
     void clearPostProcessItems();
     void clearPostProcessItems();

+ 7 - 7
oxygine/src/ProgressBar.cpp

@@ -52,7 +52,7 @@ namespace oxygine
 
 
     void ProgressBar::copyFrom(const ProgressBar& src, cloneOptions opt)
     void ProgressBar::copyFrom(const ProgressBar& src, cloneOptions opt)
     {
     {
-        _Sprite::copyFrom(src, opt);
+        inherited::copyFrom(src, opt);
         _progress = src._progress;
         _progress = src._progress;
         _direction = src._direction;
         _direction = src._direction;
         _originalFrame = src._originalFrame;
         _originalFrame = src._originalFrame;
@@ -62,7 +62,7 @@ namespace oxygine
     {
     {
         _originalFrame = f;
         _originalFrame = f;
         _update();
         _update();
-        _Sprite::animFrameChanged(f);
+        inherited::animFrameChanged(f);
     }
     }
 
 
     void ProgressBar::_update()
     void ProgressBar::_update()
@@ -105,7 +105,7 @@ namespace oxygine
             return;
             return;
         if (((_direction != __dir_radial_ccw) && (_direction != dir_radial_cw)) || (_progress == 1.0f))
         if (((_direction != __dir_radial_ccw) && (_direction != dir_radial_cw)) || (_progress == 1.0f))
         {
         {
-            _Sprite::doRender(rs);
+            inherited::doRender(rs);
             return;
             return;
         }
         }
 
 
@@ -124,7 +124,7 @@ namespace oxygine
             renderer->setBlendMode(getBlendMode());
             renderer->setBlendMode(getBlendMode());
             renderer->setTexture(df.base, df.alpha, df.premultiplied);
             renderer->setTexture(df.base, df.alpha, df.premultiplied);
 
 
-            RectF destRect = _Sprite::getDestRect();
+            RectF destRect = inherited::getDestRect();
 
 
             RectF srcRect = _frame.getSrcRect();
             RectF srcRect = _frame.getSrcRect();
             float u = srcRect.pos.x;
             float u = srcRect.pos.x;
@@ -344,7 +344,7 @@ namespace oxygine
         }
         }
         stream << " direction=" << dir << "";
         stream << " direction=" << dir << "";
 
 
-        stream << "\n" << _Sprite::dump(options);
+        stream << "\n" << inherited::dump(options);
 
 
         return stream.str();
         return stream.str();
     }
     }
@@ -389,7 +389,7 @@ namespace oxygine
 
 
     void ProgressBar::serialize(serializedata* data)
     void ProgressBar::serialize(serializedata* data)
     {
     {
-        _Sprite::serialize(data);
+        inherited::serialize(data);
         pugi::xml_node node = data->node;
         pugi::xml_node node = data->node;
         data->node.set_name("ProgressBar");
         data->node.set_name("ProgressBar");
         data->node.append_attribute("progress").set_value(_progress);
         data->node.append_attribute("progress").set_value(_progress);
@@ -398,7 +398,7 @@ namespace oxygine
 
 
     void ProgressBar::deserialize(const deserializedata* data)
     void ProgressBar::deserialize(const deserializedata* data)
     {
     {
-        _Sprite::deserialize(data);
+        inherited::deserialize(data);
         _direction = (direction)data->node.attribute("direction").as_int();
         _direction = (direction)data->node.attribute("direction").as_int();
         _progress = data->node.attribute("progress").as_float(1.0f);
         _progress = data->node.attribute("progress").as_float(1.0f);
 
 

+ 3 - 6
oxygine/src/ProgressBar.h

@@ -6,8 +6,9 @@ namespace oxygine
 {
 {
     DECLARE_SMART(ProgressBar, spProgressBar);
     DECLARE_SMART(ProgressBar, spProgressBar);
 
 
-    class ProgressBar: public _Sprite
+    class ProgressBar: public Sprite
     {
     {
+        INHERITED(Sprite);
     public:
     public:
         enum { PROGRESS_CHANGED = sysEventID('P', 'C', 'h') };
         enum { PROGRESS_CHANGED = sysEventID('P', 'C', 'h') };
 
 
@@ -56,8 +57,4 @@ namespace oxygine
     };
     };
 }
 }
 
 
-#ifdef OX_EDITOR
-#include "EditorProgressBar.h"
-#else
-typedef oxygine::ProgressBar BaseProgressBar;
-#endif
+EDITOR_INCLUDE(ProgressBar);

+ 3 - 3
oxygine/src/STDMaterial.cpp

@@ -82,7 +82,7 @@ namespace oxygine
         }
         }
 
 
         if (vis)
         if (vis)
-            actor->_Actor::render(rs);
+            actor->Actor::render(rs);
 
 
 
 
         if (actor->getClipping())
         if (actor->getClipping())
@@ -120,14 +120,14 @@ namespace oxygine
             mr.begin(_renderer);
             mr.begin(_renderer);
             _renderer = &mr;
             _renderer = &mr;
             RenderState rs = parentRS;
             RenderState rs = parentRS;
-            sprite->_Sprite::render(rs);
+            sprite->Sprite::render(rs);
             mr.end();
             mr.end();
 
 
             _renderer = original;
             _renderer = original;
         }
         }
         else
         else
         {
         {
-            sprite->_Sprite::render(parentRS);
+            sprite->Sprite::render(parentRS);
         }
         }
     }
     }
 
 

+ 3 - 3
oxygine/src/SlidingActor.cpp

@@ -205,7 +205,7 @@ namespace oxygine
 
 
     void SlidingActor::handleEvent(Event* event)
     void SlidingActor::handleEvent(Event* event)
     {
     {
-        _Actor::handleEvent(event);
+        inherited::handleEvent(event);
     }
     }
 
 
     void SlidingActor::_newEvent(Event* event)
     void SlidingActor::_newEvent(Event* event)
@@ -348,13 +348,13 @@ namespace oxygine
 
 
     void SlidingActor::serialize(serializedata* data)
     void SlidingActor::serialize(serializedata* data)
     {
     {
-        _Actor::serialize(data);
+        inherited::serialize(data);
 
 
         data->node.set_name("SlidingActor");
         data->node.set_name("SlidingActor");
     }
     }
 
 
     void SlidingActor::deserialize(const deserializedata* data)
     void SlidingActor::deserialize(const deserializedata* data)
     {
     {
-        _Actor::deserialize(data);
+        inherited::deserialize(data);
     }
     }
 }
 }

+ 3 - 6
oxygine/src/SlidingActor.h

@@ -10,8 +10,9 @@ namespace oxygine
     DECLARE_SMART(SlidingActor, spSlidingActor);
     DECLARE_SMART(SlidingActor, spSlidingActor);
     DECLARE_SMART(DragHandler, spDragHandler);
     DECLARE_SMART(DragHandler, spDragHandler);
 
 
-    class SlidingActor: public _Actor
+    class SlidingActor: public Actor
     {
     {
+        INHERITED(Actor);
     public:
     public:
         static void setDefaultTouchThreshold(float val);
         static void setDefaultTouchThreshold(float val);
 
 
@@ -95,8 +96,4 @@ namespace oxygine
     };
     };
 }
 }
 
 
-#ifdef OX_EDITOR
-#include "EditorSlidingActor.h"
-#else
-typedef oxygine::SlidingActor BaseSlidingActor;
-#endif
+EDITOR_INCLUDE(SlidingActor);

+ 3 - 3
oxygine/src/Sprite.cpp

@@ -26,7 +26,7 @@ namespace oxygine
 
 
     void Sprite::copyFrom(const Sprite& src, cloneOptions opt)
     void Sprite::copyFrom(const Sprite& src, cloneOptions opt)
     {
     {
-        _VStyleActor::copyFrom(src, opt);
+        inherited::copyFrom(src, opt);
 
 
         _frame = src._frame;
         _frame = src._frame;
         _localScale = src._localScale;
         _localScale = src._localScale;
@@ -248,7 +248,7 @@ namespace oxygine
 
 
     void Sprite::serialize(serializedata* data)
     void Sprite::serialize(serializedata* data)
     {
     {
-        _VStyleActor::serialize(data);
+        inherited::serialize(data);
 
 
         pugi::xml_node node = data->node;
         pugi::xml_node node = data->node;
 
 
@@ -291,7 +291,7 @@ namespace oxygine
 
 
     void Sprite::deserialize(const deserializedata* data)
     void Sprite::deserialize(const deserializedata* data)
     {
     {
-        _VStyleActor::deserialize(data);
+        inherited::deserialize(data);
 
 
         pugi::xml_node node = data->node;
         pugi::xml_node node = data->node;
         const char* res = node.attribute("resanim").as_string(0);
         const char* res = node.attribute("resanim").as_string(0);

+ 3 - 9
oxygine/src/Sprite.h

@@ -13,8 +13,9 @@ namespace oxygine
     class ResAnim;
     class ResAnim;
 
 
     DECLARE_SMART(Sprite, spSprite);
     DECLARE_SMART(Sprite, spSprite);
-    class Sprite : public _VStyleActor
+    class Sprite : public VStyleActor
     {
     {
+        INHERITED(VStyleActor);
     public:
     public:
         DECLARE_COPYCLONE_NEW(Sprite);
         DECLARE_COPYCLONE_NEW(Sprite);
 
 
@@ -72,11 +73,4 @@ namespace oxygine
     };
     };
 }
 }
 
 
-#ifdef OX_EDITOR
-#include "EditorSprite.h"
-#else
-namespace oxygine
-{
-    typedef Sprite _Sprite;
-}
-#endif
+EDITOR_INCLUDE(Sprite);

+ 2 - 1
oxygine/src/Stage.h

@@ -12,8 +12,9 @@ namespace oxygine
     DECLARE_SMART(Stage, spStage);
     DECLARE_SMART(Stage, spStage);
 
 
     class DebugActor;
     class DebugActor;
-    class Stage : public _Actor
+    class Stage : public Actor
     {
     {
+        INHERITED(Actor);
     public:
     public:
         enum
         enum
         {
         {

+ 3 - 3
oxygine/src/TextField.cpp

@@ -40,7 +40,7 @@ namespace oxygine
 
 
     void TextField::copyFrom(const TextField& src, cloneOptions opt)
     void TextField::copyFrom(const TextField& src, cloneOptions opt)
     {
     {
-        _VStyleActor::copyFrom(src, opt);
+        inherited::copyFrom(src, opt);
         _text = src._text;
         _text = src._text;
         _style = src._style;
         _style = src._style;
         _root = 0;
         _root = 0;
@@ -401,7 +401,7 @@ namespace oxygine
 
 
     void TextField::serialize(serializedata* data)
     void TextField::serialize(serializedata* data)
     {
     {
-        _VStyleActor::serialize(data);
+        inherited::serialize(data);
         pugi::xml_node node = data->node;
         pugi::xml_node node = data->node;
 
 
         TextStyle def;
         TextStyle def;
@@ -422,7 +422,7 @@ namespace oxygine
 
 
     void TextField::deserialize(const deserializedata* data)
     void TextField::deserialize(const deserializedata* data)
     {
     {
-        _VStyleActor::deserialize(data);
+        inherited::deserialize(data);
         pugi::xml_node node = data->node;
         pugi::xml_node node = data->node;
 
 
         TextStyle def;
         TextStyle def;

+ 3 - 9
oxygine/src/TextField.h

@@ -14,8 +14,9 @@ namespace oxygine
     }
     }
 
 
 
 
-    class TextField : public _VStyleActor
+    class TextField : public VStyleActor
     {
     {
+        INHERITED(VStyleActor);
     public:
     public:
         DECLARE_COPYCLONE_NEW(TextField);
         DECLARE_COPYCLONE_NEW(TextField);
         TextField();
         TextField();
@@ -121,11 +122,4 @@ namespace oxygine
     };
     };
 }
 }
 
 
-#ifdef OX_EDITOR
-#include "EditorTextField.h"
-#else
-namespace oxygine
-{
-    typedef TextField _TextField;
-}
-#endif
+EDITOR_INCLUDE(TextField);

+ 2 - 1
oxygine/src/ThreadLoader.h

@@ -4,6 +4,7 @@
 #include "pthread.h"
 #include "pthread.h"
 #include "core/ThreadDispatcher.h"
 #include "core/ThreadDispatcher.h"
 #include <functional>
 #include <functional>
+#include "Event.h"
 
 
 namespace oxygine
 namespace oxygine
 {
 {
@@ -16,7 +17,7 @@ namespace oxygine
     public:
     public:
         enum
         enum
         {
         {
-            COMPLETE = sysEventID('T', 'L', 'C'),
+            COMPLETE = Event::COMPLETE,
         };
         };
 
 
         ThreadLoader();
         ThreadLoader();

+ 9 - 3
oxygine/src/VisualStyle.cpp

@@ -18,7 +18,7 @@ namespace oxygine
 
 
     void VStyleActor::copyFrom(const VStyleActor& src, cloneOptions opt)
     void VStyleActor::copyFrom(const VStyleActor& src, cloneOptions opt)
     {
     {
-        _Actor::copyFrom(src, opt);
+        inherited::copyFrom(src, opt);
         _vstyle = src._vstyle;
         _vstyle = src._vstyle;
     }
     }
 
 
@@ -52,7 +52,7 @@ namespace oxygine
 
 
     void VStyleActor::serialize(serializedata* data)
     void VStyleActor::serialize(serializedata* data)
     {
     {
-        _Actor::serialize(data);
+        inherited::serialize(data);
         if (_vstyle.getColor() != Color(0xffffffff))
         if (_vstyle.getColor() != Color(0xffffffff))
             data->node.append_attribute("color").set_value(color2hex(_vstyle.getColor()).c_str());
             data->node.append_attribute("color").set_value(color2hex(_vstyle.getColor()).c_str());
         if (_vstyle.getBlendMode() != blend_premultiplied_alpha)
         if (_vstyle.getBlendMode() != blend_premultiplied_alpha)
@@ -63,7 +63,7 @@ namespace oxygine
 
 
     void VStyleActor::deserialize(const deserializedata* data)
     void VStyleActor::deserialize(const deserializedata* data)
     {
     {
-        _Actor::deserialize(data);
+        inherited::deserialize(data);
         setColor(hex2color(data->node.attribute("color").as_string("ffffffff")));
         setColor(hex2color(data->node.attribute("color").as_string("ffffffff")));
         setBlendMode((blend_mode)(data->node.attribute("blend").as_int(blend_premultiplied_alpha)));
         setBlendMode((blend_mode)(data->node.attribute("blend").as_int(blend_premultiplied_alpha)));
     }
     }
@@ -77,4 +77,10 @@ namespace oxygine
     {
     {
         _vstyle.setColor(color);
         _vstyle.setColor(color);
     }
     }
+
+    void VStyleActor::setColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a)
+    {
+        setColor(Color(r, g, b, a));
+    }
+
 }
 }

+ 4 - 9
oxygine/src/VisualStyle.h

@@ -27,8 +27,9 @@ namespace oxygine
     };
     };
 
 
     DECLARE_SMART(VStyleActor, spVStyleActor);
     DECLARE_SMART(VStyleActor, spVStyleActor);
-    class VStyleActor : public _Actor
+    class VStyleActor : public Actor
     {
     {
+        INHERITED(Actor);
     public:
     public:
         DECLARE_COPYCLONE_NEW(VStyleActor);
         DECLARE_COPYCLONE_NEW(VStyleActor);
         VStyleActor();
         VStyleActor();
@@ -40,6 +41,7 @@ namespace oxygine
         const Color&            getColor() const;
         const Color&            getColor() const;
 
 
         void                    setColor(const Color& color);
         void                    setColor(const Color& color);
+        void                    setColor(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
         void                    setBlendMode(blend_mode mode) {_vstyle.setBlendMode(mode);}
         void                    setBlendMode(blend_mode mode) {_vstyle.setBlendMode(mode);}
 
 
         typedef Property<Color, const Color&, VStyleActor, &VStyleActor::getColor, &VStyleActor::setColor> TweenColor;
         typedef Property<Color, const Color&, VStyleActor, &VStyleActor::getColor, &VStyleActor::setColor> TweenColor;
@@ -52,11 +54,4 @@ namespace oxygine
 
 
 }
 }
 
 
-#ifdef OX_EDITOR
-#include "EditorVisualStyle.h"
-#else
-namespace oxygine
-{
-    typedef VStyleActor _VStyleActor;
-}
-#endif
+EDITOR_INCLUDE(VStyleActor);

+ 3 - 6
oxygine/src/WebImage.h

@@ -8,8 +8,9 @@ namespace oxygine
     DECLARE_SMART(Sprite, spSprite);
     DECLARE_SMART(Sprite, spSprite);
     DECLARE_SMART(WebImage, spWebImage);
     DECLARE_SMART(WebImage, spWebImage);
 
 
-    class WebImage : public _Actor
+    class WebImage : public Actor
     {
     {
+        INHERITED(Actor);
     public:
     public:
         DECLARE_COPYCLONE(WebImage);
         DECLARE_COPYCLONE(WebImage);
 
 
@@ -29,8 +30,4 @@ namespace oxygine
     };
     };
 }
 }
 
 
-#ifdef OX_EDITOR
-#include "EditorWebImage.h"
-#else
-typedef oxygine::WebImage BaseWebImage;
-#endif
+EDITOR_INCLUDE(WebImage);

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

@@ -125,11 +125,4 @@ namespace oxygine
     }
     }
 }
 }
 
 
-#ifdef OX_EDITOR
-#include "EditorObject.h"
-#else
-namespace oxygine
-{
-    typedef Object _Object;
-}
-#endif
+EDITOR_INCLUDE(Object);

+ 4 - 0
oxygine/src/core/android/HttpRequestJavaTask.cpp

@@ -38,6 +38,10 @@ namespace oxygine
         jmethodID jRelease = env->GetStaticMethodID(_jHttpRequestsClass, "release", "()V");
         jmethodID jRelease = env->GetStaticMethodID(_jHttpRequestsClass, "release", "()V");
         JNI_NOT_NULL(jRelease);
         JNI_NOT_NULL(jRelease);
         env->CallStaticObjectMethod(_jHttpRequestsClass, jRelease);
         env->CallStaticObjectMethod(_jHttpRequestsClass, jRelease);
+
+        env->DeleteGlobalRef(_jHttpRequestsClass);
+        _jHttpRequestsClass = 0;
+        _jCreateRequestMethod = 0;
     }
     }
 
 
     HttpRequestJavaTask::HttpRequestJavaTask(): _handle(0)
     HttpRequestJavaTask::HttpRequestJavaTask(): _handle(0)

+ 29 - 4
oxygine/src/core/android/jniUtils.cpp

@@ -12,6 +12,7 @@ jclass _jUtils = 0;
 jmethodID _jUtils_getTimeUTCMS = 0;
 jmethodID _jUtils_getTimeUTCMS = 0;
 jmethodID _jUtils_getLanguage = 0;
 jmethodID _jUtils_getLanguage = 0;
 jmethodID _jUtils_getPackage = 0;
 jmethodID _jUtils_getPackage = 0;
+jmethodID _jUtils_getProperty = 0;
 jmethodID _jUtils_isNetworkAvailable = 0;
 jmethodID _jUtils_isNetworkAvailable = 0;
 jmethodID _jRunnable_run = 0;
 jmethodID _jRunnable_run = 0;
 
 
@@ -52,6 +53,9 @@ namespace oxygine
             _jUtils_getPackage = env->GetStaticMethodID(_jUtils, "getPackage", "()Ljava/lang/String;");
             _jUtils_getPackage = env->GetStaticMethodID(_jUtils, "getPackage", "()Ljava/lang/String;");
             JNI_NOT_NULL(_jUtils_getPackage);
             JNI_NOT_NULL(_jUtils_getPackage);
 
 
+            _jUtils_getProperty = env->GetStaticMethodID(_jUtils, "getProperty", "(Ljava/lang/String;)Ljava/lang/String;");
+            JNI_NOT_NULL(_jUtils_getProperty);
+
             _jUtils_isNetworkAvailable = env->GetStaticMethodID(_jUtils, "isNetworkAvailable", "()Z");
             _jUtils_isNetworkAvailable = env->GetStaticMethodID(_jUtils, "isNetworkAvailable", "()Z");
             JNI_NOT_NULL(_jUtils_isNetworkAvailable);
             JNI_NOT_NULL(_jUtils_isNetworkAvailable);
 
 
@@ -189,14 +193,35 @@ namespace oxygine
 
 
     jobject jniFindExtension(JNIEnv* env, jclass cl)
     jobject jniFindExtension(JNIEnv* env, jclass cl)
     {
     {
-        jmethodID m = env->GetMethodID(jniGetMainActivityClass(), "findClass", "(Ljava/lang/Class;)Lorg/oxygine/lib/extension/ActivityObserver;");
-        JNI_NOT_NULL(m);
+        jobject r;
+
+        try
+        {
+            jmethodID m = env->GetMethodID(jniGetMainActivityClass(), "findClass", "(Ljava/lang/Class;)Lorg/oxygine/lib/extension/ActivityObserver;");
+            JNI_NOT_NULL(m);
+
+            r = env->CallObjectMethod(jniGetMainActivity(), m, cl);
+            JNI_NOT_NULL(r);
+        }
+        catch (const notFound&)
+        {
 
 
-        jobject r = env->CallObjectMethod(jniGetMainActivity(), m, cl);
-        JNI_NOT_NULL(r);
+        }
+
+        return r;
     }
     }
 
 
+    std::string     jniGetProperty(const std::string& id)
+    {
+        JNIEnv* env = jniGetEnv();
+        LOCAL_REF_HOLDER(env);
 
 
+        jstring jarg = env->NewStringUTF(id.c_str());
+        jstring jstr = (jstring)env->CallStaticObjectMethod(_jUtils, _jUtils_getProperty, jarg);
+
+
+        return jniGetString(env, jstr);
+    }
 }
 }
 
 
 static void _init(JNIEnv* env)
 static void _init(JNIEnv* env)

+ 3 - 0
oxygine/src/core/android/jniUtils.h

@@ -25,4 +25,7 @@ namespace oxygine
     void            jniWriteBuffer2InternalStorageFile(const char* path, const char* data, size_t size);
     void            jniWriteBuffer2InternalStorageFile(const char* path, const char* data, size_t size);
 
 
     jobject         jniFindExtension(JNIEnv* env, jclass cl);
     jobject         jniFindExtension(JNIEnv* env, jclass cl);
+
+
+    std::string     jniGetProperty(const std::string& id);
 }
 }

+ 7 - 0
oxygine/src/core/curl/HttpRequestCurlTask.cpp

@@ -76,6 +76,7 @@ namespace oxygine
             _messages.wait();
             _messages.wait();
 
 
             int still_running = -1;
             int still_running = -1;
+
             while (still_running)
             while (still_running)
             {
             {
                 static int i = 0;
                 static int i = 0;
@@ -84,6 +85,8 @@ namespace oxygine
                 ThreadDispatcher::peekMessage tmsg;
                 ThreadDispatcher::peekMessage tmsg;
                 if (_messages.peek(tmsg, true))
                 if (_messages.peek(tmsg, true))
                 {
                 {
+                    if (tmsg.msgid == 1)
+                        return 0;
                     curl_multi_add_handle(multi_handle, (CURL*)tmsg.arg1);
                     curl_multi_add_handle(multi_handle, (CURL*)tmsg.arg1);
                     int q = 0;
                     int q = 0;
                 }
                 }
@@ -131,6 +134,7 @@ namespace oxygine
                     }
                     }
                 }
                 }
             }
             }
+
         }
         }
 
 
         return 0;
         return 0;
@@ -147,6 +151,9 @@ namespace oxygine
 
 
     void HttpRequestTask::release()
     void HttpRequestTask::release()
     {
     {
+        _messages.post(1, 0, 0);
+        pthread_join(_thread, 0);
+
         if (multi_handle)
         if (multi_handle)
             curl_multi_cleanup(multi_handle);
             curl_multi_cleanup(multi_handle);
         multi_handle = 0;
         multi_handle = 0;

+ 2 - 2
oxygine/src/core/file.h

@@ -11,8 +11,8 @@ namespace oxygine
     {
     {
         class STDFileSystem;
         class STDFileSystem;
 
 
-        struct _handle_ {};
-        typedef _handle_* handle;
+
+        typedef file::fileHandle* handle;
 
 
         /**memory buffer for files IO operations, emulates std::vector */
         /**memory buffer for files IO operations, emulates std::vector */
         class buffer
         class buffer

+ 10 - 6
oxygine/src/core/oxygine.cpp

@@ -342,7 +342,6 @@ namespace oxygine
 #if TARGET_OS_IPHONE
 #if TARGET_OS_IPHONE
             flags |= SDL_WINDOW_BORDERLESS;
             flags |= SDL_WINDOW_BORDERLESS;
             flags |= SDL_WINDOW_ALLOW_HIGHDPI;
             flags |= SDL_WINDOW_ALLOW_HIGHDPI;
-            flags |= SDL_WINDOW_FULLSCREEN;
 #endif
 #endif
 
 
             //SDL_DisplayMode mode;
             //SDL_DisplayMode mode;
@@ -358,10 +357,15 @@ namespace oxygine
             if (desc.fullscreen)
             if (desc.fullscreen)
                 flags |= SDL_WINDOW_FULLSCREEN;
                 flags |= SDL_WINDOW_FULLSCREEN;
 
 
-            {
-                Event ev(EVENT_PRECREATEWINDOW);
-                _dispatcher->dispatchEvent(&ev);
-            }
+
+            Event ev(EVENT_PRECREATEWINDOW);
+            _dispatcher->dispatchEvent(&ev);
+
+
+#if TARGET_OS_IPHONE
+            //ios bug workaround
+            flags &= ~SDL_WINDOW_FULLSCREEN;
+#endif
 
 
             log::messageln("creating window %d %d", desc.w, desc.h);
             log::messageln("creating window %d %d", desc.w, desc.h);
 
 
@@ -535,7 +539,7 @@ namespace oxygine
             {
             {
                 if (!focus)
                 if (!focus)
                 {
                 {
-                    log::messageln("!focus");
+                    //log::messageln("!focus");
                     return false;
                     return false;
                 }
                 }
 
 

+ 8 - 0
oxygine/src/oxygine_include.h

@@ -139,6 +139,14 @@ typedef signed long long int64;
 #   endif
 #   endif
 #endif
 #endif
 
 
+#define INHERITED(CLASS) private: typedef CLASS inherited
+
+#ifndef EDITOR_INCLUDE
+#define EDITOR_INCLUDE(CLASS)
+//namespace oxygine {typedef CLASS _##CLASS;}
+#endif
+
+
 namespace oxygine
 namespace oxygine
 {
 {
     enum error_policy
     enum error_policy

+ 2 - 1
oxygine/src/res/ResAnim.h

@@ -14,8 +14,9 @@ namespace oxygine
     class Image;
     class Image;
 
 
     DECLARE_SMART(ResAnim, spResAnim);
     DECLARE_SMART(ResAnim, spResAnim);
-    class ResAnim: public _Resource
+    class ResAnim: public Resource
     {
     {
+        INHERITED(Resource);
     public:
     public:
         ResAnim(Resource* atlas = 0);
         ResAnim(Resource* atlas = 0);
         ~ResAnim();
         ~ResAnim();

+ 2 - 2
oxygine/src/res/ResAtlas.cpp

@@ -56,7 +56,7 @@ namespace oxygine
 
 
     void ResAtlas::init_resAnim(ResAnim* rs, const std::string& file, pugi::xml_node node)
     void ResAtlas::init_resAnim(ResAnim* rs, const std::string& file, pugi::xml_node node)
     {
     {
-        rs->setName(_Resource::extractID(node, file, ""));
+        rs->setName(Resource::extractID(node, file, ""));
         setNode(rs, node);
         setNode(rs, node);
     }
     }
 
 
@@ -97,7 +97,7 @@ namespace oxygine
             ra = rs;
             ra = rs;
         }
         }
 
 
-        ra->setName(_Resource::extractID(context.walker.getNode(), "", std::string("!atlas:") + *context.xml_name));
+        ra->setName(Resource::extractID(context.walker.getNode(), "", std::string("!atlas:") + *context.xml_name));
         context.resources->add(ra);
         context.resources->add(ra);
         setNode(ra, context.walker.getNode());
         setNode(ra, context.walker.getNode());
 
 

+ 2 - 1
oxygine/src/res/ResAtlas.h

@@ -11,8 +11,9 @@ namespace oxygine
     class CreateResourceContext;
     class CreateResourceContext;
     DECLARE_SMART(NativeTexture, spNativeTexture);
     DECLARE_SMART(NativeTexture, spNativeTexture);
 
 
-    class ResAtlas: public _Resource
+    class ResAtlas: public Resource
     {
     {
+        INHERITED(Resource);
     public:
     public:
         static Resource* create(CreateResourceContext& context);
         static Resource* create(CreateResourceContext& context);
         struct atlas
         struct atlas

+ 1 - 1
oxygine/src/res/ResBuffer.cpp

@@ -10,7 +10,7 @@ namespace oxygine
         pugi::xml_node node = context.walker.getNode();
         pugi::xml_node node = context.walker.getNode();
         std::string file = node.attribute("file").value();
         std::string file = node.attribute("file").value();
 
 
-        rs->setName(_Resource::extractID(node, file, ""));
+        rs->setName(Resource::extractID(node, file, ""));
         rs->init(context.walker.getPath("file").c_str());
         rs->init(context.walker.getPath("file").c_str());
         setNode(rs, node);
         setNode(rs, node);
 
 

+ 2 - 1
oxygine/src/res/ResBuffer.h

@@ -9,8 +9,9 @@ namespace oxygine
     class Resources;
     class Resources;
     class CreateResourceContext;
     class CreateResourceContext;
 
 
-    class ResBuffer: public _Resource
+    class ResBuffer: public Resource
     {
     {
+        INHERITED(Resource);
     public:
     public:
         static Resource* create(CreateResourceContext&);
         static Resource* create(CreateResourceContext&);
 
 

+ 2 - 1
oxygine/src/res/ResFont.h

@@ -6,8 +6,9 @@ namespace oxygine
     class Font;
     class Font;
 
 
     DECLARE_SMART(ResFont, spResFont);
     DECLARE_SMART(ResFont, spResFont);
-    class ResFont: public _Resource
+    class ResFont: public Resource
     {
     {
+        INHERITED(Resource);
     public:
     public:
         ResFont(): _size(0) {}
         ResFont(): _size(0) {}
 
 

+ 1 - 1
oxygine/src/res/ResFontBM.cpp

@@ -450,7 +450,7 @@ namespace oxygine
             _premultipliedAlpha = node.attribute("premultiplied_alpha").as_bool(_premultipliedAlpha);
             _premultipliedAlpha = node.attribute("premultiplied_alpha").as_bool(_premultipliedAlpha);
 
 
             _file = context->walker.getPath("file");
             _file = context->walker.getPath("file");
-            setName(_Resource::extractID(node, _file, ""));
+            setName(Resource::extractID(node, _file, ""));
 
 
             if (bmc)
             if (bmc)
             {
             {

+ 1 - 0
oxygine/src/res/ResFontBM.h

@@ -15,6 +15,7 @@ namespace oxygine
 
 
     class ResFontBM: public ResFont
     class ResFontBM: public ResFont
     {
     {
+        INHERITED(ResFont);
     public:
     public:
         static Resource* create(CreateResourceContext& context);
         static Resource* create(CreateResourceContext& context);
         static Resource* createBM(CreateResourceContext& context);
         static Resource* createBM(CreateResourceContext& context);

+ 2 - 1
oxygine/src/res/ResStarlingAtlas.h

@@ -8,8 +8,9 @@ namespace oxygine
     class CreateResourceContext;
     class CreateResourceContext;
     DECLARE_SMART(NativeTexture, spNativeTexture);
     DECLARE_SMART(NativeTexture, spNativeTexture);
 
 
-    class ResStarlingAtlas: public _Resource
+    class ResStarlingAtlas: public Resource
     {
     {
+        INHERITED(Resource);
     public:
     public:
         static Resource* create(CreateResourceContext& context);
         static Resource* create(CreateResourceContext& context);
 
 

+ 3 - 9
oxygine/src/res/Resource.h

@@ -13,8 +13,9 @@ namespace oxygine
     class LoadResourcesContext;
     class LoadResourcesContext;
 
 
     DECLARE_SMART(Resource, spResource);
     DECLARE_SMART(Resource, spResource);
-    class Resource: public _Object//Base
+    class Resource: public Object
     {
     {
+        INHERITED(Object);
     public:
     public:
         Resource();
         Resource();
         ~Resource();
         ~Resource();
@@ -61,12 +62,5 @@ namespace oxygine
 }
 }
 
 
 
 
-#ifdef OX_EDITOR
-#include "EditorResource.h"
-#else
-namespace oxygine
-{
-    typedef Resource _Resource;
-}
-#endif
+EDITOR_INCLUDE(Resource);
 
 

+ 3 - 3
oxygine/src/res/Resources.cpp

@@ -84,14 +84,14 @@ namespace oxygine
 
 
     void Resources::load(ResLoadedCallback cb)
     void Resources::load(ResLoadedCallback cb)
     {
     {
-        _Resource::load(0);
+        inherited::load(0);
         //if (cb)
         //if (cb)
         //  cb(thi)
         //  cb(thi)
     }
     }
 
 
     void Resources::unload()
     void Resources::unload()
     {
     {
-        _Resource::unload();
+        inherited::unload();
     }
     }
 
 
     void Resources::_load(LoadResourcesContext* context)
     void Resources::_load(LoadResourcesContext* context)
@@ -257,7 +257,7 @@ namespace oxygine
             registeredResources::iterator i = std::lower_bound(_registeredResources.begin(), _registeredResources.end(), type);
             registeredResources::iterator i = std::lower_bound(_registeredResources.begin(), _registeredResources.end(), type);
             if (i == _registeredResources.end() || strcmp(i->id, type))
             if (i == _registeredResources.end() || strcmp(i->id, type))
             {
             {
-                log::error("unknown resource. type: '%s' id: '%s'", type, _Resource::extractID(context.walker.getNode(), "", "").c_str());
+                log::error("unknown resource. type: '%s' id: '%s'", type, Resource::extractID(context.walker.getNode(), "", "").c_str());
                 OX_ASSERT(!"unknown resource type");
                 OX_ASSERT(!"unknown resource type");
                 continue;
                 continue;
             }
             }

+ 2 - 1
oxygine/src/res/Resources.h

@@ -51,8 +51,9 @@ namespace oxygine
         std::string _prebuilFolder;
         std::string _prebuilFolder;
     };
     };
 
 
-    class Resources: public _Resource
+    class Resources: public Resource
     {
     {
+        INHERITED(Resource);
     public:
     public:
         typedef std::vector<spResource> resources;
         typedef std::vector<spResource> resources;
 #ifdef __S3E__
 #ifdef __S3E__

+ 3 - 0
tools/others/format.bat

@@ -20,6 +20,9 @@ echo %root%
 %astyle% %root%\oxygine-billing\examples\*.cpp %root%\oxygine-billing\examples\*.h %options%
 %astyle% %root%\oxygine-billing\examples\*.cpp %root%\oxygine-billing\examples\*.h %options%
 %astyle% %root%\oxygine-billing\src\*.cpp %root%\oxygine-billing\src\*.h %options%
 %astyle% %root%\oxygine-billing\src\*.cpp %root%\oxygine-billing\src\*.h %options%
 
 
+%astyle% %root%\oxygine-freetype\examples\*.cpp %root%\oxygine-freetype\examples\*.h %options%
+%astyle% %root%\oxygine-freetype\src\*.cpp %root%\oxygine-freetype\src\*.h %options%
+
 %astyle% %root%\oxygine-facebook\example\*.cpp %root%\oxygine-facebook\example\*.h %options%
 %astyle% %root%\oxygine-facebook\example\*.cpp %root%\oxygine-facebook\example\*.h %options%
 %astyle% %root%\oxygine-facebook\src\*.cpp %root%\oxygine-facebook\src\*.h %options%
 %astyle% %root%\oxygine-facebook\src\*.cpp %root%\oxygine-facebook\src\*.h %options%