JSGraphics.cpp 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  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 "JSGraphics.h"
  5. #include "JSVM.h"
  6. #include <Atomic/Graphics/Light.h>
  7. namespace Atomic
  8. {
  9. static int Light_SetShadowCascade(duk_context* ctx)
  10. {
  11. //CascadeParameters(float split1, float split2, float split3, float split4, float fadeStart, float biasAutoAdjust = 1.0f) :
  12. int numargs = duk_get_top(ctx);
  13. float split1;
  14. float split2;
  15. float split3;
  16. float split4;
  17. float fadeStart;
  18. float biasAutoAdjust = 1.0f;
  19. split1 = (float) duk_to_number(ctx, 0);
  20. split2 = (float) duk_to_number(ctx, 1);
  21. split3 = (float) duk_to_number(ctx, 2);
  22. split4 = (float) duk_to_number(ctx, 3);
  23. fadeStart = (float) duk_to_number(ctx, 4);
  24. if (numargs == 6)
  25. biasAutoAdjust = (float) duk_to_number(ctx, 5);
  26. CascadeParameters cparms(split1, split2, split3, split4, fadeStart, biasAutoAdjust);
  27. duk_push_this(ctx);
  28. Light* light = js_to_class_instance<Light>(ctx, -1, 0);
  29. light->SetShadowCascade(cparms);
  30. return 0;
  31. }
  32. static int Light_SetShadowBias(duk_context* ctx)
  33. {
  34. float constantBias = (float) duk_to_number(ctx, 0);
  35. float slopeScaledBias = (float) duk_to_number(ctx, 1);
  36. BiasParameters bparms(constantBias, slopeScaledBias);
  37. duk_push_this(ctx);
  38. Light* light = js_to_class_instance<Light>(ctx, -1, 0);
  39. light->SetShadowBias(bparms);
  40. return 0;
  41. }
  42. void jsapi_init_graphics(JSVM* vm)
  43. {
  44. duk_context* ctx = vm->GetJSContext();
  45. js_class_get_prototype(ctx, "Light");
  46. duk_push_c_function(ctx, Light_SetShadowCascade, DUK_VARARGS);
  47. duk_put_prop_string(ctx, -2, "setShadowCascade");
  48. duk_push_c_function(ctx, Light_SetShadowBias, 2);
  49. duk_put_prop_string(ctx, -2, "setShadowBias");
  50. duk_pop(ctx);
  51. }
  52. }