From 47ccaa06132ce43ca74d164198dd64adf90c2484 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Sun, 25 Sep 2022 22:44:32 +0200 Subject: [PATCH] =?UTF-8?q?light=20engine:=20micro=20optimisations?= =?UTF-8?q?=E2=80=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/de/bixilon/minosoft/data/world/chunk/Chunk.kt | 4 ++-- .../minosoft/data/world/chunk/light/SectionLight.kt | 7 +++++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/data/world/chunk/Chunk.kt b/src/main/java/de/bixilon/minosoft/data/world/chunk/Chunk.kt index 711b4a4ea..1e5ab48dd 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/chunk/Chunk.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/chunk/Chunk.kt @@ -533,7 +533,7 @@ class Chunk( if (x < ProtocolDefinition.SECTION_MAX_X) { skylightHeightmap[heightmapIndex + 1] } else { - neighbours[ChunkNeighbours.WEST].skylightHeightmap[((z shl 4) or 0)] + neighbours[ChunkNeighbours.WEST].skylightHeightmap[(z shl 4) or 0] }, if (z > 0) { @@ -569,7 +569,7 @@ class Chunk( } } - fun getMaxHeight(x: Int, z: Int): Int { + inline fun getMaxHeight(x: Int, z: Int): Int { return skylightHeightmap[(z shl 4) or x] } } diff --git a/src/main/java/de/bixilon/minosoft/data/world/chunk/light/SectionLight.kt b/src/main/java/de/bixilon/minosoft/data/world/chunk/light/SectionLight.kt index d353c6114..dc30866e6 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/chunk/light/SectionLight.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/chunk/light/SectionLight.kt @@ -264,11 +264,14 @@ class SectionLight( return } - val lightProperties = section.blocks.unsafeGet(index)?.lightProperties ?: TransparentProperty + var lightProperties = section.blocks.unsafeGet(index)?.lightProperties - if (!lightProperties.propagatesLight) { + if (lightProperties == null) { + lightProperties = TransparentProperty + } else if (!lightProperties.propagatesLight) { return } + this.light[index] = ((currentLight and BLOCK_LIGHT_MASK) or (nextLevel shl 4)).toByte() val neighbours = this.section.neighbours ?: return