Guest User

Dynamic lighting test

a guest
Jun 21st, 2015
354
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Haxe 2.01 KB | None | 0 0
  1. package;
  2.  
  3. import flixel.FlxG;
  4. import flixel.FlxSprite;
  5. import flixel.FlxState;
  6. import flixel.util.FlxPoint;
  7. import flixel.util.FlxColor;
  8. import flixel.util.FlxSpriteUtil;
  9. import flixel.group.FlxGroup;
  10. import flash.display.BlendMode;
  11.  
  12. class Darkness extends FlxSprite
  13. {
  14.     public var ambience:Int = 0x222222;
  15.  
  16.     public function new()
  17.     {
  18.         super(0, 0);
  19.  
  20.         makeGraphic(FlxG.width, FlxG.height, ambience);
  21.         scrollFactor.x = 0;
  22.         scrollFactor.y = 0;
  23.         blend = BlendMode.MULTIPLY;
  24.     }
  25.  
  26.     override public function update()
  27.     {
  28.         super.update();
  29.     }
  30. }
  31.  
  32. class Light extends FlxSprite
  33. {
  34.     private var darkness:Darkness;
  35.  
  36.     public function new(X:Float=0, Y:Float=0, Darkness:Darkness)
  37.     {
  38.         super(X, Y);
  39.  
  40.         blend = BlendMode.ADD;
  41.         darkness = Darkness;
  42.     }
  43.  
  44.     override public function draw()
  45.     {
  46.         if (isOnScreen() && visible) {
  47.             var screenXY:FlxPoint = getScreenXY();
  48.             darkness.stamp(this, Std.int(screenXY.x), Std.int(screenXY.y));
  49.         }
  50.     }
  51. }
  52.  
  53. class TestState extends FlxState
  54. {
  55.     private var darkness:Darkness;
  56.     private var lights:FlxGroup;
  57.  
  58.     override public function create():Void
  59.     {
  60.         super.create();
  61.  
  62.         var background = new FlxSprite(0, 0).loadGraphic(AssetPaths.background__png, false, 320, 240);
  63.         add(background);
  64.  
  65.         darkness = new Darkness();
  66.         lights = new FlxGroup();
  67.  
  68.         var redLight = new Light(75+25, 75+25, darkness);
  69.         redLight.makeGraphic(100, 100, FlxColor.RED);
  70.         lights.add(redLight);
  71.  
  72.         var greenLight = new Light(100+25, 50+25, darkness);
  73.         greenLight.makeGraphic(100, 100, FlxColor.GREEN);
  74.         lights.add(greenLight);
  75.  
  76.         var blueLight = new Light(50+25, 100+25, darkness);
  77.         blueLight.makeGraphic(100, 100, FlxColor.BLUE);
  78.         lights.add(blueLight);
  79.  
  80.         add(lights);
  81.         add(darkness);
  82.     }
  83.    
  84.     override public function destroy():Void
  85.     {
  86.         super.destroy();
  87.  
  88.         darkness = null;
  89.         lights = null;
  90.     }
  91.  
  92.     override public function update():Void
  93.     {
  94.         super.update();
  95.  
  96.         FlxSpriteUtil.drawRect(darkness, 0, 0, FlxG.width, FlxG.height, 0xff000000 | darkness.ambience);       
  97.     }  
  98. }
Advertisement
Add Comment
Please, Sign In to add comment