JSGraphics.cpp 1.7 KB

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