JSAtomicGame.cpp 2.1 KB

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