LoadingScene.hx 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package h2d;
  2. class LoadingScene extends h2d.Scene {
  3. var renderTarget : h3d.mat.Texture;
  4. var presentCooldown : Float;
  5. public function new(presentCooldown : Float) {
  6. super();
  7. this.presentCooldown = presentCooldown;
  8. renderTarget = new h3d.mat.Texture(width, height, [Target]);
  9. }
  10. var lastPresentTime : Float = 0.0;
  11. public override function render( engine : h3d.Engine ) {
  12. var time = haxe.Timer.stamp();
  13. if ( time - lastPresentTime < presentCooldown)
  14. return;
  15. lastPresentTime = time;
  16. #if usesys
  17. haxe.System.emitEvents(@:privateAccess hxd.Window.inst.event);
  18. #elseif hldx
  19. dx.Loop.processEvents(@:privateAccess hxd.Window.inst.onEvent);
  20. #elseif hlsdl
  21. sdl.Sdl.processEvents(@:privateAccess hxd.Window.inst.onEvent);
  22. #end
  23. if ( renderTarget.width != engine.width || renderTarget.height != engine.height) {
  24. renderTarget.dispose();
  25. renderTarget = new h3d.mat.Texture(engine.width, engine.height, [Target]);
  26. }
  27. engine.pushTarget(renderTarget);
  28. super.render(engine);
  29. engine.popTarget();
  30. h3d.pass.Copy.run(renderTarget, null);
  31. engine.driver.present();
  32. }
  33. override function onRemove() {
  34. super.onRemove();
  35. if ( renderTarget != null )
  36. renderTarget.dispose();
  37. }
  38. }