Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public static void main(final String[] args) {
- class Listener implements EventListener {
- public void onEvent(final Event event) {
- if (event instanceof WindowReadyEvent) {
- EventLayer.ROOT.removeListener(this);
- thread.start();
- }
- }
- }
- EventLayer.ROOT.addListener(new Listener());
- thread = new Thread(() -> {
- double lastUpdateTime = provider.getTime();
- double lastRenderTime = provider.getTime();
- marker.set();
- int frameCount = 0;
- while (running) {
- if (window.shouldClose()) running = false;
- double now = provider.getTime();
- int updateCount = 0;
- while (now - lastUpdateTime > UPS_DELTA && updateCount < MAX_UPDATES_BEFORE_RENDER) {
- tick();
- lastUpdateTime += UPS_DELTA;
- updateCount++;
- }
- if (ALLOW_FRAMESKIP && now - lastUpdateTime > UPS_DELTA) lastUpdateTime = now - UPS_DELTA;
- final float interpolation = (float) Math.min(UPS_DELTA, now - lastUpdateTime);
- render(renderer, interpolation);
- frameCount++;
- lastRenderTime = now;
- if (marker.elapsed() > 1d) {
- System.out.println(frameCount);
- frameCount = 0;
- marker.set();
- }
- while (now - lastRenderTime < FPS_DELTA && now - lastUpdateTime < UPS_DELTA) {
- Thread.yield();
- try {
- Thread.sleep(SLEEP);
- } catch (final Exception e) {
- }
- now = provider.getTime();
- }
- }
- window.dispose();
- }, "Game");
- thread.setPriority(Thread.MAX_PRIORITY);
- EventQueue.invokeLater(() -> {
- window = new JWindow(WIDTH, HEIGHT, TITLE);
- renderer = new JRenderer(((JWindow) window).getCanvas());
- EventLayer.ROOT.dispatch(new WindowReadyEvent(null));
- });
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement