ApplicationProxy.cpp 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include <stdio.h>
  2. #ifndef _MSC_VER
  3. # include <unistd.h>
  4. #endif
  5. #include "AllUrho.h"
  6. #include "ApplicationProxy.h"
  7. #include <Urho3D/Urho3D.h>
  8. #include <Urho3D/Core/ProcessUtils.h>
  9. #include <Urho3D/DebugNew.h>
  10. #include "glue.h"
  11. using namespace Urho3D;
  12. sdl_callback sdlCallback;
  13. const char *sdlResourceDir;
  14. const char *sdlDocumentsDir;
  15. extern "C" {
  16. DllExport void *
  17. ApplicationProxy_ApplicationProxy (Context *context, callback_t setup, callback_t start, callback_t stop, const char* args, void * externalWindow)
  18. {
  19. return new ApplicationProxy (context, setup, start, stop, args, externalWindow);
  20. }
  21. DllExport void *
  22. Application_GetEngine (ApplicationProxy *application)
  23. {
  24. return application->GetEngine ();
  25. }
  26. DllExport void
  27. RegisterSdlLauncher(sdl_callback callback)
  28. {
  29. sdlCallback = callback;
  30. }
  31. DllExport void
  32. InitSdl(const char *resourceDir, const char *documentsDir)
  33. {
  34. sdlResourceDir = resourceDir;
  35. sdlDocumentsDir = documentsDir;
  36. }
  37. DllExport void
  38. TryDeleteRefCounted(Urho3D::RefCounted *refCounted)
  39. {
  40. if (refCounted && refCounted->RefCountPtr() && !refCounted->Refs())
  41. delete refCounted;
  42. }
  43. }
  44. //FileSystem.cpp uses these functions as external.
  45. #if defined(IOS)
  46. const char* SDL_IOS_GetResourceDir()
  47. {
  48. return sdlResourceDir;
  49. }
  50. const char* SDL_IOS_GetDocumentsDir()
  51. {
  52. return sdlDocumentsDir;
  53. }
  54. #endif
  55. #if defined(ANDROID) || defined(IOS)
  56. // Entry point for SDL (Android)
  57. int RunApplication()
  58. {
  59. return sdlCallback(NULL);
  60. }
  61. URHO3D_DEFINE_MAIN(RunApplication());
  62. #endif