From 1992228032b6e215b8e6f278c2e59770b8d58ac7 Mon Sep 17 00:00:00 2001 From: Moritz Zwerger Date: Sun, 15 Oct 2023 18:33:37 +0200 Subject: [PATCH] fix test building, properly fail render test if loading fails --- .../minosoft/gui/rendering/RenderTestLoader.kt | 7 ++++++- .../renderer/component/DummyComponentConsumer.kt | 6 +++--- .../rendering/gui/mesh/DummyGUIVertexConsumer.kt | 5 ++--- .../gui/rendering/models/loader/BlockLoader.kt | 3 ++- .../gui/rendering/models/loader/ItemLoader.kt | 3 ++- .../gui/rendering/models/loader/ModelLoader.kt | 14 ++++++++++++-- .../gui/rendering/models/loader/SkeletalLoader.kt | 3 ++- 7 files changed, 29 insertions(+), 12 deletions(-) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/RenderTestLoader.kt b/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/RenderTestLoader.kt index 8215ddf24..6decb6153 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/RenderTestLoader.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/RenderTestLoader.kt @@ -14,6 +14,7 @@ package de.bixilon.minosoft.gui.rendering import de.bixilon.kutil.latch.SimpleLatch +import de.bixilon.kutil.observer.DataObserver import de.bixilon.kutil.reflection.ReflectionUtil.forceSet import de.bixilon.minosoft.assets.AssetsLoader import de.bixilon.minosoft.gui.rendering.system.dummy.DummyRenderSystem @@ -30,10 +31,14 @@ class RenderTestLoader { val latch = SimpleLatch(1) connection::assetsManager.forceSet(AssetsLoader.create(connection.profiles.resources, connection.version, latch)) connection.assetsManager.load(latch) + connection::error.forceSet(DataObserver(null)) RenderTestUtil.rendering = Rendering(connection) RenderTestUtil.rendering.start(latch, audio = false) latch.dec() - latch.await() + while (latch.count > 0) { + Thread.sleep(10) + connection.error?.let { throw it } + } val context = RenderTestUtil.rendering.context assertTrue(context.window is DummyWindow) assertTrue(context.system is DummyRenderSystem) diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/font/renderer/component/DummyComponentConsumer.kt b/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/font/renderer/component/DummyComponentConsumer.kt index edb28a719..381cff187 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/font/renderer/component/DummyComponentConsumer.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/font/renderer/component/DummyComponentConsumer.kt @@ -22,7 +22,7 @@ import de.bixilon.minosoft.gui.rendering.font.types.FontType import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIMeshCache import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions -import de.bixilon.minosoft.gui.rendering.system.base.texture.shader.ShaderIdentifiable +import de.bixilon.minosoft.gui.rendering.system.base.texture.shader.ShaderTexture import org.testng.Assert.assertEquals class DummyComponentConsumer : GUIVertexConsumer { @@ -30,11 +30,11 @@ class DummyComponentConsumer : GUIVertexConsumer { val quads: MutableList = mutableListOf() override val order: IntArray get() = IntArray(0) - override fun addVertex(position: Vec2, texture: ShaderIdentifiable?, uv: Vec2, tint: RGBColor, options: GUIVertexOptions?) = Broken() + override fun addVertex(position: Vec2, texture: ShaderTexture?, uv: Vec2, tint: RGBColor, options: GUIVertexOptions?) = Broken() override fun addCache(cache: GUIMeshCache) = Broken() override fun ensureSize(size: Int) = Unit - override fun addQuad(start: Vec2, end: Vec2, texture: ShaderIdentifiable?, uvStart: Vec2, uvEnd: Vec2, tint: RGBColor, options: GUIVertexOptions?) { + override fun addQuad(start: Vec2, end: Vec2, texture: ShaderTexture?, uvStart: Vec2, uvEnd: Vec2, tint: RGBColor, options: GUIVertexOptions?) { quads += RendererdQuad(Vec2(start), Vec2(end)) } diff --git a/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/gui/mesh/DummyGUIVertexConsumer.kt b/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/gui/mesh/DummyGUIVertexConsumer.kt index 6e42fec45..3b645a486 100644 --- a/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/gui/mesh/DummyGUIVertexConsumer.kt +++ b/src/integration-test/kotlin/de/bixilon/minosoft/gui/rendering/gui/mesh/DummyGUIVertexConsumer.kt @@ -15,10 +15,9 @@ package de.bixilon.minosoft.gui.rendering.gui.mesh import de.bixilon.kotlinglm.vec2.Vec2 import de.bixilon.minosoft.data.text.formatting.color.RGBColor -import de.bixilon.minosoft.gui.rendering.system.base.texture.shader.ShaderIdentifiable +import de.bixilon.minosoft.gui.rendering.system.base.texture.shader.ShaderTexture import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.Texture import de.bixilon.minosoft.gui.rendering.system.opengl.OpenGLRenderSystem -import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh open class DummyGUIVertexConsumer : GUIVertexConsumer { override val order: IntArray get() = OpenGLRenderSystem.QUAD_ORDER @@ -32,7 +31,7 @@ open class DummyGUIVertexConsumer : GUIVertexConsumer { TODO("Not yet implemented") } - override fun addVertex(position: Vec2, texture: ShaderIdentifiable?, uv: Vec2, tint: RGBColor, options: GUIVertexOptions?) { + override fun addVertex(position: Vec2, texture: ShaderTexture?, uv: Vec2, tint: RGBColor, options: GUIVertexOptions?) { TODO("Not yet implemented") } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/BlockLoader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/BlockLoader.kt index 1f9e960f1..8c1c3b188 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/BlockLoader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/BlockLoader.kt @@ -17,6 +17,7 @@ import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.kutil.collections.iterator.async.AsyncIterator.Companion.async import de.bixilon.kutil.collections.map.LockMap import de.bixilon.kutil.latch.AbstractLatch +import de.bixilon.kutil.reflection.ReflectionUtil.forceSet import de.bixilon.minosoft.assets.minecraft.MinecraftAssetsVersion import de.bixilon.minosoft.assets.util.InputStreamUtil.readJsonObject import de.bixilon.minosoft.data.registries.blocks.types.Block @@ -88,7 +89,7 @@ class BlockLoader(private val loader: ModelLoader) { } fun cleanup() { - this.cache.clear() + this::cache.forceSet(null) } fun fixTexturePath(name: ResourceLocation): ResourceLocation { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/ItemLoader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/ItemLoader.kt index 45fc60905..c92d348b6 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/ItemLoader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/ItemLoader.kt @@ -15,6 +15,7 @@ package de.bixilon.minosoft.gui.rendering.models.loader import de.bixilon.kutil.cast.CastUtil.nullCast import de.bixilon.kutil.latch.AbstractLatch +import de.bixilon.kutil.reflection.ReflectionUtil.forceSet import de.bixilon.minosoft.assets.minecraft.MinecraftAssetsVersion import de.bixilon.minosoft.assets.util.InputStreamUtil.readJsonObject import de.bixilon.minosoft.data.registries.identified.ResourceLocation @@ -78,7 +79,7 @@ class ItemLoader(private val loader: ModelLoader) { } fun cleanup() { - this.cache.clear() + this::cache.forceSet(null) } fun fixTexturePath(name: ResourceLocation): ResourceLocation { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/ModelLoader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/ModelLoader.kt index 357bd50d5..eac29f8da 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/ModelLoader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/ModelLoader.kt @@ -14,6 +14,8 @@ package de.bixilon.minosoft.gui.rendering.models.loader import de.bixilon.kutil.latch.AbstractLatch +import de.bixilon.kutil.time.TimeUtil.nanos +import de.bixilon.kutil.unit.UnitFormatter.formatNanos import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.data.registries.identified.ResourceLocationUtil.extend import de.bixilon.minosoft.gui.rendering.RenderContext @@ -33,21 +35,29 @@ class ModelLoader( fun load(latch: AbstractLatch) { + val start = nanos() + DefaultEntityModels.load(this, latch) fluids.load(latch) block.load(latch) item.load(latch) skeletal.load(latch) - Log.log(LogMessageType.LOADING, LogLevels.VERBOSE) { "Loaded all models!" } + val time = nanos() - start + + Log.log(LogMessageType.LOADING, LogLevels.VERBOSE) { "Loaded all models in ${time.formatNanos()}!" } } fun bake(latch: AbstractLatch) { + val start = nanos() + block.bake(latch) item.bake(latch) skeletal.bake(latch) - Log.log(LogMessageType.LOADING, LogLevels.VERBOSE) { "Baked models!" } + val time = nanos() - start + + Log.log(LogMessageType.LOADING, LogLevels.VERBOSE) { "Baked models in ${time.formatNanos()}!" } } fun cleanup() { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/SkeletalLoader.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/SkeletalLoader.kt index 49d9f459d..7dee45d08 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/SkeletalLoader.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/loader/SkeletalLoader.kt @@ -16,6 +16,7 @@ package de.bixilon.minosoft.gui.rendering.models.loader import de.bixilon.kutil.collections.CollectionUtil.synchronizedMapOf import de.bixilon.kutil.collections.map.SynchronizedMap import de.bixilon.kutil.latch.AbstractLatch +import de.bixilon.kutil.reflection.ReflectionUtil.forceSet import de.bixilon.minosoft.assets.util.InputStreamUtil.readJson import de.bixilon.minosoft.data.registries.identified.ResourceLocation import de.bixilon.minosoft.gui.rendering.skeletal.baked.BakedSkeletalModel @@ -45,7 +46,7 @@ class SkeletalLoader(private val loader: ModelLoader) { } fun cleanup() { - this.registered.clear() + this::registered.forceSet(null) } operator fun get(name: ResourceLocation): BakedSkeletalModel? {