BulbSunlight.gml 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. /// @param renderer
  2. /// @param angle
  3. function BulbSunlight(_renderer, _angle) constructor
  4. {
  5. visible = true;
  6. normalMap = BULB_DEFAULT_USE_NORMAL_MAP;
  7. normalMapZ = BULB_DEFAULT_NORMAL_MAP_Z;
  8. angle = _angle;
  9. blend = c_white;
  10. intensity = 1.0;
  11. penumbraSize = 0.0;
  12. __oldSprite = undefined;
  13. __radius = 0;
  14. __destroyed = false;
  15. static Destroy = function()
  16. {
  17. __destroyed = true;
  18. }
  19. static AddToRenderer = function(_renderer)
  20. {
  21. if (__destroyed) return;
  22. array_push(_renderer.__sunlightArray, weak_ref_create(self));
  23. }
  24. static RemoveFromRenderer = function(_renderer)
  25. {
  26. var _array = _renderer.__sunlightArray;
  27. var _i = array_length(_array) - 1;
  28. repeat(array_length(_array))
  29. {
  30. var _weak = _array[_i];
  31. if (weak_ref_alive(_weak))
  32. {
  33. if (_weak.ref == self) array_delete(_array, _i, 1);
  34. }
  35. else
  36. {
  37. array_delete(_array, _i, 1);
  38. }
  39. --_i;
  40. }
  41. }
  42. if (_renderer != undefined) AddToRenderer(_renderer);
  43. }