From cf051c3b91a1d8160744823bab6b96964a98a3eb Mon Sep 17 00:00:00 2001 From: Stanislav Mishchenko Date: Tue, 12 Mar 2024 16:02:08 +0300 Subject: [PATCH] small fixes --- .../solve/rendering/canvas/SceneCanvas.kt | 25 ++++++++++------- .../solve/rendering/engine/scene/Scene.kt | 28 +------------------ .../unit/rendering/engine/scene/SceneTests.kt | 24 ---------------- 3 files changed, 16 insertions(+), 61 deletions(-) delete mode 100644 src/test/kotlin/solve/unit/rendering/engine/scene/SceneTests.kt diff --git a/src/main/kotlin/solve/rendering/canvas/SceneCanvas.kt b/src/main/kotlin/solve/rendering/canvas/SceneCanvas.kt index 101c4479..02093b33 100644 --- a/src/main/kotlin/solve/rendering/canvas/SceneCanvas.kt +++ b/src/main/kotlin/solve/rendering/canvas/SceneCanvas.kt @@ -4,19 +4,20 @@ import org.joml.Vector2f import org.joml.Vector2i import solve.rendering.engine.core.renderers.FramesRenderer import solve.rendering.engine.core.renderers.PointsLayerRenderer -import solve.rendering.engine.scene.Scene import solve.rendering.engine.utils.minus import solve.rendering.engine.utils.times import solve.rendering.engine.utils.toFloatVector import solve.scene.controller.SceneController import solve.scene.model.Layer +import solve.scene.model.Scene import solve.scene.model.VisualizationFrame import solve.utils.ServiceLocator import solve.utils.ceilToInt +import solve.rendering.engine.scene.Scene as EngineScene class SceneCanvas : OpenGLCanvas() { private var sceneController: SceneController? = null - private var canvasScene: Scene? = null + private var canvasScene: EngineScene? = null private var isDraggingScene = false private var dragStartCameraPoint = Vector2f() @@ -31,16 +32,16 @@ class SceneCanvas : OpenGLCanvas() { private val rowsNumber: Int get() = (framesSelectionSize.toFloat() / columnsNumber.toFloat()).ceilToInt() - private var qwe = false - private var scene: solve.scene.model.Scene? = null + private var needToReinitializeRenderers = false + private var scene: Scene? = null init { initializeCanvasEvents() } - fun setNewScene(scene: solve.scene.model.Scene) { + fun setNewScene(scene: Scene) { canvasScene?.clearLandmarkRenderers() - qwe = true + needToReinitializeRenderers = true this.scene = scene } @@ -93,19 +94,23 @@ class SceneCanvas : OpenGLCanvas() { val controller = ServiceLocator.getService() ?: return sceneController = controller - canvasScene = Scene(FramesRenderer(window)) + canvasScene = EngineScene(FramesRenderer(window)) } override fun onDraw(deltaTime: Float) { - canvasScene?.update(deltaTime) - if (qwe) { + canvasScene?.update() + checkRenderersInitialization() + } + + private fun checkRenderersInitialization() { + if (needToReinitializeRenderers) { val scene = this.scene ?: return scene.layers.forEach { layer -> if (layer is Layer.PointLayer) { addLandmarkRenderer(layer, scene) } } - qwe = false + needToReinitializeRenderers = false } } diff --git a/src/main/kotlin/solve/rendering/engine/scene/Scene.kt b/src/main/kotlin/solve/rendering/engine/scene/Scene.kt index 94fe4515..3fd3b90e 100644 --- a/src/main/kotlin/solve/rendering/engine/scene/Scene.kt +++ b/src/main/kotlin/solve/rendering/engine/scene/Scene.kt @@ -4,23 +4,11 @@ import solve.rendering.engine.core.renderers.FramesRenderer import solve.rendering.engine.core.renderers.Renderer class Scene(val framesRenderer: FramesRenderer) { - private val _renderObjects = mutableListOf() - val renderObjects: List - get() = _renderObjects - private val _landmarkRenderers = mutableListOf() val landmarkRenderers: List get() = _landmarkRenderers - fun update(deltaTime: Float) { - _renderObjects.forEach { gameObject -> - if (gameObject.isDestroyed) { - removeRenderObject(gameObject) - return@forEach - } - - gameObject.update(deltaTime) - } + fun update() { render() } @@ -33,20 +21,6 @@ class Scene(val framesRenderer: FramesRenderer) { _landmarkRenderers.clear() } - fun addRenderObject(renderObject: RenderObject) { - if (_renderObjects.contains(renderObject)) { - println("The scene already contains adding game object ($renderObject)!") - return - } - _renderObjects.add(renderObject) - landmarkRenderers.forEach { it.addRenderObject(renderObject) } - } - - fun removeRenderObject(renderObject: RenderObject) { - _renderObjects.remove(renderObject) - landmarkRenderers.forEach { it.removeRenderObject(renderObject) } - } - private fun render() { framesRenderer.render() landmarkRenderers.forEach { it.render() } diff --git a/src/test/kotlin/solve/unit/rendering/engine/scene/SceneTests.kt b/src/test/kotlin/solve/unit/rendering/engine/scene/SceneTests.kt deleted file mode 100644 index 735ed280..00000000 --- a/src/test/kotlin/solve/unit/rendering/engine/scene/SceneTests.kt +++ /dev/null @@ -1,24 +0,0 @@ -package solve.unit.rendering.engine.scene - -import org.junit.jupiter.api.Test -import solve.rendering.engine.scene.RenderObject -import solve.rendering.engine.scene.Scene - -class SceneTests { - @Test - fun `Adds a render object to a scene and checks if it contained`() { - val scene = Scene() - val addedRenderObject = RenderObject("Render object") - scene.addRenderObject(addedRenderObject) - assert(scene.renderObjects.contains(addedRenderObject)) - } - - @Test - fun `Removes added render object and checks if it does not exists`() { - val scene = Scene() - val addedRenderObject = RenderObject("Render object") - scene.addRenderObject(addedRenderObject) - scene.removeRenderObject(addedRenderObject) - assert(!scene.renderObjects.contains(addedRenderObject)) - } -}