public Game() { SilenceEngine.eventManager.addUpdateHandler(this::doUpdate); SilenceEngine.eventManager.addRenderHandler(this::doRender); SilenceEngine.eventManager.addResizeHandler(this::doResized); SilenceEngine.eventManager.addDisposeHandler(this::doDispose); }
public void raiseDisposeEvent() { processHandlers(); for (IDisposeEventHandler handler : disposeEventHandlers) handler.dispose(); // No updates happen after dispose, it's the end of the game clearAllHandlers(); }
@Override public void setSize(int width, int height) { window.setSize(width, height); if (!fullscreen) { windowWidth = width; windowHeight = height; } SilenceEngine.eventManager.raiseResizeEvent(); }
private static void checkInitialized() { if (!initialized) { SilenceEngine.eventManager.addUpdateHandler(TaskManager::forceUpdateTasks); SilenceEngine.eventManager.addRenderHandler(TaskManager::forceRenderTasks); initialized = true; } } }
SilenceEngine.eventManager.waitUntil(() -> gameDone[0]); SilenceEngine.eventManager.raiseResizeEvent(); }); }); SilenceEngine.eventManager.raiseDisposeEvent();
SilenceEngine.eventManager.raiseResizeEvent(); }); }); SilenceEngine.eventManager.addDisposeHandler(this::cleanUp);
/** * Prevent instantiation by users. Should only be used via {@code SilenceEngine.audio.scene} */ AudioScene() { sourcesPool = new ReusableStack<>(ALSource::new); playingSourcesPool = new ReusableStack<>(PlayingSource::new); playingSources = new HashMap<>(); defaultAudioSource = new AudioSource(); SilenceEngine.eventManager.addDisposeHandler(this::cleanUp); SilenceEngine.eventManager.addUpdateHandler(this::updateSources); }
LwjglIODevice() { // Free all the direct buffers at the end SilenceEngine.eventManager.addDisposeHandler(() -> { directBuffers.forEach(directBuffer -> ((LwjglDirectBuffer) directBuffer).free()); directBuffers.clear(); }); }
@Override public void performLoopFrame() { if (prevTime == 0) prevTime = (int) TimeUtils.currentTime(); float currTime = (float) TimeUtils.currentTime(); float elapsedTime = currTime - prevTime; prevTime = currTime; SilenceEngine.eventManager.raiseUpdateEvent(elapsedTime); SilenceEngine.eventManager.raiseRenderEvent(elapsedTime); frames++; if (currTime - lastFPSTime >= TimeUtils.convert(1000, TimeUtils.Unit.MILLIS)) { framesPerSecond = frames; frames = 0; lastFPSTime = currTime; } }
@Override public void onSurfaceCreated(GL10 gl, EGLConfig config) { loopFrame = () -> { // Assume 100 seconds so that tasks are force flushed TaskManager.forceUpdateTasks(100); TaskManager.forceRenderTasks(100); }; resized = () -> { }; SilenceEngine.eventManager.clearAllHandlers(); SilenceEngine.gameLoop.onFocusLost(); startCallback.invoke(); }
public void clearAllHandlers() { processHandlers(); updateEventHandlers.clear(); renderEventHandlers.clear(); resizeEventHandlers.clear(); disposeEventHandlers.clear(); }
public GameTimer(double time, TimeUtils.Unit unit) { if (!initialized) { SilenceEngine.eventManager.addUpdateHandler(GameTimer::updateTimers); initialized = true; } this.callback = () -> { }; this.time = TimeUtils.convert(time, unit, TimeUtils.getDefaultTimeUnit()); }
LwjglAudioDevice() { device = alcOpenDevice((ByteBuffer) null); ALCCapabilities deviceCaps = ALC.createCapabilities(device); context = alcCreateContext(device, (IntBuffer) null); alcMakeContextCurrent(context); AL.createCapabilities(deviceCaps); SilenceEngine.eventManager.addDisposeHandler(this::cleanUp); }
@Override public void performLoopFrame() { double now = TimeUtils.currentTime(); if (previous == -1) previous = now; double delta = now - previous; if (delta >= TimeUtils.convert(1, TimeUtils.Unit.SECONDS)) delta = frameTime; lag += delta; while (lag >= frameTime) { updates++; SilenceEngine.eventManager.raiseUpdateEvent(frameTime); lag -= frameTime; } frames++; SilenceEngine.eventManager.raiseRenderEvent(frameTime); if (now - lastStatsTime >= TimeUtils.convert(1, TimeUtils.Unit.SECONDS)) { updatesPerSecond = updates; framesPerSecond = frames; updates = frames = 0; lastStatsTime = now; } previous = now; }
public void raiseResizeEvent() { processHandlers(); if (waiting) return; for (IResizeEventHandler handler : resizeEventHandlers) handler.resized(); }
public InputDevice() { simulateTouch = false; keyEventHandlers = new ArrayList<>(); mouseEventHandlers = new ArrayList<>(); touchEventHandlers = new ArrayList<>(); textEventHandlers = new ArrayList<>(); controllerConnectionEventHandlers = new ArrayList<>(); controllerButtonEventHandlers = new ArrayList<>(); controllerAxisEventHandlers = new ArrayList<>(); eventHandlerAddQueue = new LinkedList<>(); eventHandlerRemQueue = new LinkedList<>(); Keyboard.init(); Mouse.init(); Touch.init(); Controller.init(); SilenceEngine.eventManager.addUpdateHandler(this::update); }
@Override public void setSize(int width, int height) { canvas.setCoordinateSpaceWidth(width); canvas.setCoordinateSpaceHeight(height); SilenceEngine.eventManager.raiseResizeEvent(); }
public void raiseUpdateEvent(float deltaTime) { processHandlers(); if (waiting) { if (waiting = !waitCondition.provide()) return; } for (IUpdateEventHandler handler : updateEventHandlers) handler.update(deltaTime); }
@Override public void setFullscreen(boolean fullscreen) { if (fullscreen) { // We need to make sure that fullscreen is only requested from within event handler. // Otherwise browsers will not accept our request. fullScreenRequested = true; } else { WebGLContext.exitFullscreen(); fullScreenRequested = false; } SilenceEngine.eventManager.raiseResizeEvent(); canvas.setFocus(true); }
public void raiseRenderEvent(float delta) { GLContext.clear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); processHandlers(); if (waiting) return; for (IRenderEventHandler handler : renderEventHandlers) handler.render(delta); }