JSAtomicGame.cpp 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. // Copyright (c) 2014-2015, THUNDERBEAST GAMES LLC All rights reserved
  2. // Please see LICENSE.md in repository root for license information
  3. // https://github.com/AtomicGameEngine/AtomicGameEngine
  4. #include <Atomic/IO/FileSystem.h>
  5. #include <Atomic/IO/Log.h>
  6. #include <Atomic/Resource/ResourceCache.h>
  7. #include <Atomic/Input/Input.h>
  8. #include <Atomic/Graphics/Renderer.h>
  9. #include <Atomic/Graphics/Graphics.h>
  10. #include <Atomic/UI/UI.h>
  11. #include <Atomic/Engine/Engine.h>
  12. #include "JSEvents.h"
  13. #include "JSVM.h"
  14. #include "JSGraphics.h"
  15. #include "JSScene.h"
  16. #include "JSAtomicGame.h"
  17. #include <Atomic/Scene/Scene.h>
  18. #include <Atomic/Environment/ProcSky.h>
  19. namespace Atomic
  20. {
  21. extern void jsb_modules_init(JSVM* vm);
  22. // TODO: add this properly
  23. static int get_joystick_state(duk_context* ctx)
  24. {
  25. JSVM* vm = JSVM::GetJSVM(ctx);
  26. Input* input = vm->GetSubsystem<Input>();
  27. JoystickState* state = (JoystickState*) input->GetJoystickByIndex(duk_to_number(ctx, 0));
  28. duk_push_object(ctx);
  29. if (state->GetButtonDown(0))
  30. duk_push_true(ctx);
  31. else
  32. duk_push_false(ctx);
  33. duk_put_prop_string(ctx, -2, "button0");
  34. if (state->GetButtonDown(1))
  35. duk_push_true(ctx);
  36. else
  37. duk_push_false(ctx);
  38. duk_put_prop_string(ctx, -2, "button1");
  39. if (state->GetButtonDown(2))
  40. duk_push_true(ctx);
  41. else
  42. duk_push_false(ctx);
  43. duk_put_prop_string(ctx, -2, "button2");
  44. if (state->GetButtonDown(3))
  45. duk_push_true(ctx);
  46. else
  47. duk_push_false(ctx);
  48. duk_put_prop_string(ctx, -2, "button3");
  49. duk_push_number(ctx, state->GetAxisPosition(0));
  50. duk_put_prop_string(ctx, -2, "axis0");
  51. duk_push_number(ctx, state->GetAxisPosition(1));
  52. duk_put_prop_string(ctx, -2, "axis1");
  53. duk_push_number(ctx, state->GetAxisPosition(2));
  54. duk_put_prop_string(ctx, -2, "axis2");
  55. duk_push_number(ctx, state->GetAxisPosition(3));
  56. duk_put_prop_string(ctx, -2, "axis3");
  57. return 1;
  58. }
  59. void jsapi_init_atomicgame(JSVM* vm)
  60. {
  61. duk_context* ctx = vm->GetJSContext();
  62. duk_get_global_string(ctx, "Atomic");
  63. duk_pop(ctx);
  64. }
  65. }