From ac30bc7a78b1048f1622275c48a7aa4cfa42ef11 Mon Sep 17 00:00:00 2001 From: Stanislav Mishchenko Date: Mon, 11 Mar 2024 15:30:33 +0300 Subject: [PATCH] codestyle --- .../engine/core/renderers/FramesRenderer.kt | 20 ++++++++++++------- src/main/kotlin/solve/scene/view/SceneView.kt | 4 ---- 2 files changed, 13 insertions(+), 11 deletions(-) diff --git a/src/main/kotlin/solve/rendering/engine/core/renderers/FramesRenderer.kt b/src/main/kotlin/solve/rendering/engine/core/renderers/FramesRenderer.kt index b3f32f49..7b93348d 100644 --- a/src/main/kotlin/solve/rendering/engine/core/renderers/FramesRenderer.kt +++ b/src/main/kotlin/solve/rendering/engine/core/renderers/FramesRenderer.kt @@ -26,8 +26,8 @@ import solve.rendering.engine.utils.toIntVector import solve.scene.controller.SceneController import solve.scene.model.VisualizationFrame import solve.utils.ceilToInt +import java.util.Date import java.util.concurrent.CopyOnWriteArrayList -import kotlin.io.path.nameWithoutExtension import kotlin.math.abs import kotlin.math.max import kotlin.math.min @@ -38,7 +38,7 @@ class FramesRenderer( private data class LoadedBufferFrameData( val textureData: Texture2DData, val bufferIndex: Int, - val name: String + val time: Long ) override val maxBatchSize = 1000 @@ -169,9 +169,13 @@ class FramesRenderer( } private fun uploadLoadedFramesToBuffers() { - bufferFramesToUpload.forEach { frame -> + val uploadedFramesIndices = mutableSetOf() + bufferFramesToUpload.sortedBy { it.time }.forEach { frame -> bufferFramesToUpload.remove(frame) - bufferFramesArrayTexture?.uploadTexture(frame.textureData, frame.bufferIndex) + if (!uploadedFramesIndices.contains(frame.bufferIndex)) { + bufferFramesArrayTexture?.uploadTexture(frame.textureData, frame.bufferIndex) + uploadedFramesIndices.add(frame.bufferIndex) + } Texture2D.freeData(frame.textureData) } } @@ -217,7 +221,7 @@ class FramesRenderer( rectWidth, rectHeight ) - loadRectFramesToBuffers(newFramesRect) + loadRectFramesToBuffers(newFramesRect) } private fun getFramesAtRect(rect: IntRect): List> { @@ -251,8 +255,9 @@ class FramesRenderer( for (x in 0 until rectFrames[y].count()) { val textureBuffersIndex = ((buffersOffset.y + y) % buffersSize.y) * buffersSize.x + (buffersOffset.x + x) % buffersSize.x - if (uploadedBuffersIndices.contains(textureBuffersIndex)) + if (uploadedBuffersIndices.contains(textureBuffersIndex)) { continue + } uploadFrameToBuffersArray(rectFrames[y][x], textureBuffersIndex) uploadedBuffersIndices.add(textureBuffersIndex) @@ -289,6 +294,7 @@ class FramesRenderer( } private fun uploadFrameToBuffersArray(frame: VisualizationFrame, index: Int) { + val loadTime = Date().time framesLoadingCoroutineScope.launch { val textureData = Texture2D.loadData(frame.imagePath.toString()) if (textureData == null) { @@ -296,7 +302,7 @@ class FramesRenderer( return@launch } - bufferFramesToUpload.add(LoadedBufferFrameData(textureData, index, frame.imagePath.nameWithoutExtension)) + bufferFramesToUpload.add(LoadedBufferFrameData(textureData, index, loadTime)) } } diff --git a/src/main/kotlin/solve/scene/view/SceneView.kt b/src/main/kotlin/solve/scene/view/SceneView.kt index 58c08568..e47820cd 100644 --- a/src/main/kotlin/solve/scene/view/SceneView.kt +++ b/src/main/kotlin/solve/scene/view/SceneView.kt @@ -29,9 +29,6 @@ class SceneView : View() { override val root = canvas.canvas - private val projectChangedEventHandler = InvalidationListener { - - } private val sceneChangedEventHandler = InvalidationListener { if (SceneFacade.lastVisualizationKeepSettings) { canvas.setFramesSelection(controller.scene.frames) @@ -55,7 +52,6 @@ class SceneView : View() { } private fun addSceneFramesBindings() { - SceneFacade.lastVisualizationKeepSettingsProperty.addListener(projectChangedEventHandler) controller.sceneProperty.addListener(sceneChangedEventHandler) }