@Override public Runnable getRenderRunnable() { return () -> { ensureSceneThread(); if (sceneState.views.isEmpty()) return; renderer.submit(() -> sceneState.create(renderer)); }; }
/** * Updates the state of this object based on the current state of its nativeWindow. * * <p>May only be called from the event thread. */ public void update() { super.update(); if (scene != null) { // These variables and others from the super class need be kept up to date to // minimize rendering. For now, claim that the embedded scene is always visible // and not minimized so that rendering can occur isWindowVisible = true; isWindowMinimized = false; } }
@Override public void removeMesh(IMesh mesh) { ensureSceneThread(); sceneState.removeMesh(mesh); }
@Override public void removeLight(ILight light) { ensureSceneThread(); sceneState.removeLight(light); }
@Override public void addMesh(IMesh mesh) { ensureSceneThread(); sceneState.addMesh(mesh); }
@Override public IViewCameraState getViewCameraState(IView view) { ensureSceneThread(); return sceneState.getViewCameraState(view); }
@Override public void addLight(ILight light) { ensureSceneThread(); sceneState.addLight(light); }
@Override public void lockCamera(IView view, Mat4 viewMatrix, Mat4 projMatrix) { ensureSceneThread(); sceneState.lockCamera(view, viewMatrix, projMatrix); }
@Override public void setCamera(IView view, ICamera camera) { ensureSceneThread(); sceneState.setCamera(view, camera); }
@Override public ICamera getCamera(IView view) { ensureSceneThread(); return sceneState.getCamera(view); }
@Override public void removeView(IView view) { ensureSceneThread(); sceneState.removeView(view); }
@Override public void addView(IView view) { ensureSceneThread(); sceneState.addView(view); }