diff --git a/src/main/java/de/bixilon/minosoft/data/direction/Directions.kt b/src/main/java/de/bixilon/minosoft/data/direction/Directions.kt index 08dec8ae7..84a28b2f0 100644 --- a/src/main/java/de/bixilon/minosoft/data/direction/Directions.kt +++ b/src/main/java/de/bixilon/minosoft/data/direction/Directions.kt @@ -14,12 +14,16 @@ package de.bixilon.minosoft.data.direction import de.bixilon.minosoft.data.Axes import de.bixilon.minosoft.data.registries.blocks.properties.serializer.BlockPropertiesSerializer +import de.bixilon.minosoft.gui.rendering.models.FaceSize import de.bixilon.minosoft.gui.rendering.util.VecUtil.get import de.bixilon.minosoft.util.KUtil import de.bixilon.minosoft.util.enum.ValuesEnum import glm_.vec3.Vec3 import glm_.vec3.Vec3d import glm_.vec3.Vec3i +import glm_.vec3.swizzle.xy +import glm_.vec3.swizzle.xz +import glm_.vec3.swizzle.yz import kotlin.math.abs enum class Directions( @@ -66,12 +70,20 @@ enum class Directions( fun getPositions(from: Vec3, to: Vec3): Array { return when (this) { - DOWN -> arrayOf(from, Vec3(to.x, from.y, from.y), Vec3(from.x, from.y, to.z), Vec3(to.x, from.y, to.z)) - UP -> arrayOf(to, Vec3(to.x, to.y, from.y), Vec3(from.x, to.y, to.z), Vec3(from.x, to.y, from.z)) - NORTH -> arrayOf(Vec3(to.x, to.y, from.y), Vec3(to.x, from.y, from.y), Vec3(from.x, to.y, from.z), from) - SOUTH -> arrayOf(Vec3(from.x, from.y, to.z), Vec3(to.x, from.y, to.y), Vec3(from.x, to.y, to.z), to) - WEST -> arrayOf(Vec3(from.x, to.y, to.z), Vec3(from.x, to.y, from.y), Vec3(from.x, from.y, to.z), from) - EAST -> arrayOf(Vec3(to.x, from.y, from.z), Vec3(to.x, to.y, from.y), Vec3(to.x, from.y, to.z), to) + DOWN -> arrayOf(from, Vec3(from.x, from.y, to.z), Vec3(to.x, from.y, to.z), Vec3(to.x, from.y, from.y)) + UP -> arrayOf(to, Vec3(from.x, to.y, to.z), Vec3(from.x, to.y, from.z), Vec3(to.x, to.y, from.y)) + NORTH -> arrayOf(Vec3(to.x, to.y, from.y), Vec3(from.x, to.y, from.z), from, Vec3(to.x, from.y, from.y)) + SOUTH -> arrayOf(Vec3(from.x, from.y, to.z), Vec3(from.x, to.y, to.z), to, Vec3(to.x, from.y, to.y)) + WEST -> arrayOf(Vec3(from.x, to.y, to.z), Vec3(from.x, from.y, to.z), from, Vec3(from.x, to.y, from.y)) + EAST -> arrayOf(Vec3(to.x, from.y, from.z), Vec3(to.x, from.y, to.z), to, Vec3(to.x, to.y, from.y)) + } + } + + fun getSize(from: Vec3, to: Vec3): FaceSize { + return when (this) { + DOWN, UP -> FaceSize(from.xz, to.xz) + NORTH, SOUTH -> FaceSize(from.xy, to.xy) + WEST, EAST -> FaceSize(from.yz, to.yz) } } diff --git a/src/main/java/de/bixilon/minosoft/data/entities/block/MobSpawnerBlockEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/block/MobSpawnerBlockEntity.kt index dec6af2cd..a09e96acb 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/block/MobSpawnerBlockEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/block/MobSpawnerBlockEntity.kt @@ -18,10 +18,10 @@ import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.world.WorldEntities import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.fire.SmokeParticle import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.slowing.FlameParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.center import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3d +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toInt import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/Entity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/Entity.kt index a46202bcd..de5f908d7 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/Entity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/Entity.kt @@ -39,7 +39,6 @@ import de.bixilon.minosoft.data.text.ChatComponent import de.bixilon.minosoft.gui.rendering.input.camera.EntityPositionInfo import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.advanced.block.BlockDustParticle import de.bixilon.minosoft.gui.rendering.util.VecUtil -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.blockPosition import de.bixilon.minosoft.gui.rendering.util.VecUtil.chunkPosition import de.bixilon.minosoft.gui.rendering.util.VecUtil.empty @@ -47,6 +46,7 @@ import de.bixilon.minosoft.gui.rendering.util.VecUtil.floor import de.bixilon.minosoft.gui.rendering.util.VecUtil.horizontal import de.bixilon.minosoft.gui.rendering.util.VecUtil.inChunkPosition import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3d +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.util.KUtil.synchronizedMapOf diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/PlayerEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/PlayerEntity.kt index b3e8d7a1d..935218d32 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/PlayerEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/PlayerEntity.kt @@ -23,8 +23,8 @@ import de.bixilon.minosoft.data.player.PlayerProperty import de.bixilon.minosoft.data.player.tab.TabListItem import de.bixilon.minosoft.data.registries.entities.EntityType import de.bixilon.minosoft.data.world.World -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.clamp +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.vec2.Vec2 import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/RemotePlayerEntity.kt b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/RemotePlayerEntity.kt index 1da5c0068..be27cfeb7 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/entities/player/RemotePlayerEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/entities/player/RemotePlayerEntity.kt @@ -20,7 +20,7 @@ import de.bixilon.minosoft.data.player.tab.TabListItem import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.entities.EntityFactory import de.bixilon.minosoft.data.registries.entities.EntityType -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/data/physics/CollisionDetector.kt b/src/main/java/de/bixilon/minosoft/data/physics/CollisionDetector.kt index 77b82bde3..86eff8863 100644 --- a/src/main/java/de/bixilon/minosoft/data/physics/CollisionDetector.kt +++ b/src/main/java/de/bixilon/minosoft/data/physics/CollisionDetector.kt @@ -19,9 +19,9 @@ import de.bixilon.minosoft.data.player.LocalPlayerEntity import de.bixilon.minosoft.data.registries.AABB import de.bixilon.minosoft.data.registries.VoxelShape import de.bixilon.minosoft.data.world.Chunk -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.chunkPosition import de.bixilon.minosoft.gui.rendering.util.VecUtil.inChunkPosition +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.vec2.Vec2i import glm_.vec3.Vec3 diff --git a/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt b/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt index 0a217b325..ec295e9d6 100644 --- a/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt +++ b/src/main/java/de/bixilon/minosoft/data/player/LocalPlayerEntity.kt @@ -40,11 +40,12 @@ import de.bixilon.minosoft.data.tags.DefaultBlockTags import de.bixilon.minosoft.data.tags.Tag import de.bixilon.minosoft.gui.rendering.input.camera.MovementInput import de.bixilon.minosoft.gui.rendering.util.VecUtil -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.chunkPosition import de.bixilon.minosoft.gui.rendering.util.VecUtil.clearZero import de.bixilon.minosoft.gui.rendering.util.VecUtil.get import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.c2s.play.* import de.bixilon.minosoft.protocol.packets.s2c.play.TagsS2CP diff --git a/src/main/java/de/bixilon/minosoft/data/registries/AABB.kt b/src/main/java/de/bixilon/minosoft/data/registries/AABB.kt index b7bdb0d5a..0fa553f42 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/AABB.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/AABB.kt @@ -16,10 +16,11 @@ package de.bixilon.minosoft.data.registries import com.google.gson.JsonObject import de.bixilon.minosoft.data.Axes import de.bixilon.minosoft.data.direction.Directions -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY -import de.bixilon.minosoft.gui.rendering.util.VecUtil.ONE import de.bixilon.minosoft.gui.rendering.util.VecUtil.get +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.ONE import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.toVec3 +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.ONE import de.bixilon.minosoft.util.MMath.ceil import de.bixilon.minosoft.util.MMath.floor import glm_.Java.Companion.glm diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/BrewingStandBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/BrewingStandBlock.kt index b183aaddb..ce98787f4 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/BrewingStandBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/BrewingStandBlock.kt @@ -18,9 +18,9 @@ import de.bixilon.minosoft.data.registries.blocks.BlockFactory import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.registries.Registries import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.fire.SmokeParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.horizontal import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3d +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.vec3.Vec3d import glm_.vec3.Vec3i diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/FluidBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/FluidBlock.kt index 3bee4229d..003e290eb 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/FluidBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/FluidBlock.kt @@ -20,7 +20,7 @@ import de.bixilon.minosoft.data.registries.blocks.BlockFactory import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.fluid.Fluid import de.bixilon.minosoft.data.registries.registries.Registries -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.vec3.Vec3 import glm_.vec3.Vec3i diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/RedstoneTorchBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/RedstoneTorchBlock.kt index 3113f052e..d98d250e0 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/RedstoneTorchBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/RedstoneTorchBlock.kt @@ -21,8 +21,8 @@ import de.bixilon.minosoft.data.registries.particle.data.DustParticleData import de.bixilon.minosoft.data.registries.registries.Registries import de.bixilon.minosoft.data.text.Colors import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.dust.DustParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.of +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.vec3.Vec3d import glm_.vec3.Vec3i diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/TorchBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/TorchBlock.kt index 322f59e77..ff6bc7174 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/TorchBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/TorchBlock.kt @@ -18,7 +18,7 @@ import de.bixilon.minosoft.data.registries.blocks.BlockFactory import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.registries.Registries import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.fire.SmokeParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.vec3.Vec3d import glm_.vec3.Vec3i diff --git a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wall/LeverBlock.kt b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wall/LeverBlock.kt index 180afc781..d61f4c241 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wall/LeverBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/blocks/types/wall/LeverBlock.kt @@ -26,7 +26,7 @@ import de.bixilon.minosoft.data.text.Colors import de.bixilon.minosoft.gui.rendering.input.camera.hit.RaycastHit import de.bixilon.minosoft.gui.rendering.input.interaction.InteractionResults import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.dust.DustParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.chance import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/data/registries/fluid/FlowableFluid.kt b/src/main/java/de/bixilon/minosoft/data/registries/fluid/FlowableFluid.kt index 58ab7138a..64fbe2f5a 100644 --- a/src/main/java/de/bixilon/minosoft/data/registries/fluid/FlowableFluid.kt +++ b/src/main/java/de/bixilon/minosoft/data/registries/fluid/FlowableFluid.kt @@ -17,8 +17,8 @@ import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.registries.blocks.types.FluidBlock import de.bixilon.minosoft.data.registries.registries.Registries -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.vec3.Vec3d import glm_.vec3.Vec3i diff --git a/src/main/java/de/bixilon/minosoft/data/world/Chunk.kt b/src/main/java/de/bixilon/minosoft/data/world/Chunk.kt index f5fd359dd..def0392db 100644 --- a/src/main/java/de/bixilon/minosoft/data/world/Chunk.kt +++ b/src/main/java/de/bixilon/minosoft/data/world/Chunk.kt @@ -16,10 +16,10 @@ import de.bixilon.minosoft.data.entities.block.BlockEntity import de.bixilon.minosoft.data.registries.blocks.BlockState import de.bixilon.minosoft.data.world.biome.source.BiomeSource import de.bixilon.minosoft.data.world.light.LightAccessor -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.inChunkSectionPosition import de.bixilon.minosoft.gui.rendering.util.VecUtil.of import de.bixilon.minosoft.gui.rendering.util.VecUtil.sectionHeight +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toSynchronizedMap import glm_.vec2.Vec2i diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/block/LightMap.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/block/LightMap.kt index 308b3f7f3..3c1a6d88b 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/block/LightMap.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/block/LightMap.kt @@ -17,11 +17,11 @@ import de.bixilon.minosoft.Minosoft import de.bixilon.minosoft.data.registries.effects.DefaultStatusEffects import de.bixilon.minosoft.gui.rendering.system.base.shader.Shader import de.bixilon.minosoft.gui.rendering.system.opengl.buffer.uniform.FloatOpenGLUniformBuffer -import de.bixilon.minosoft.gui.rendering.util.VecUtil.ONE import de.bixilon.minosoft.gui.rendering.util.VecUtil.clamp import de.bixilon.minosoft.gui.rendering.util.VecUtil.lerp import de.bixilon.minosoft.gui.rendering.util.VecUtil.modify import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3 +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.ONE import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.glm import glm_.vec3.Vec3 diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/block/mesh/ChunkSectionMeshes.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/block/mesh/ChunkSectionMeshes.kt index 9246e1a9c..815fca5dd 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/block/mesh/ChunkSectionMeshes.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/block/mesh/ChunkSectionMeshes.kt @@ -15,7 +15,7 @@ package de.bixilon.minosoft.gui.rendering.block.mesh import de.bixilon.minosoft.data.registries.AABB import de.bixilon.minosoft.gui.rendering.RenderWindow -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.EMPTY import glm_.vec3.Vec3i class ChunkSectionMeshes( diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/Element.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/Element.kt index a39af49ba..b18a44837 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/Element.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/Element.kt @@ -18,13 +18,13 @@ import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer 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.util.vec.Vec4Util.EMPTY -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.spaceSize import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.isGreater import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.isSmaller import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.max import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.min +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.spaceSize import glm_.vec2.Vec2i import glm_.vec4.Vec4i diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/layout/RowLayout.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/layout/RowLayout.kt index b49f20a19..bf650d10d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/layout/RowLayout.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/layout/RowLayout.kt @@ -19,13 +19,13 @@ import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments.Compa import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.bottom -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.horizontal -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.left -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.offset -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.spaceSize -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.top -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.vertical +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.bottom +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.horizontal +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.left +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.offset +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.spaceSize +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.top +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.vertical import de.bixilon.minosoft.util.KUtil.synchronizedListOf import de.bixilon.minosoft.util.KUtil.toSynchronizedList import glm_.vec2.Vec2i diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/layout/ZLayout.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/layout/ZLayout.kt index 341c4603d..1b38103f0 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/layout/ZLayout.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/layout/ZLayout.kt @@ -17,10 +17,10 @@ import de.bixilon.minosoft.gui.rendering.gui.elements.Element import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.offset -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.spaceSize import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.max +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.offset +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.spaceSize import de.bixilon.minosoft.util.KUtil.synchronizedListOf import de.bixilon.minosoft.util.KUtil.toSynchronizedList import glm_.vec2.Vec2i diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/layout/grid/GridLayout.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/layout/grid/GridLayout.kt index 6f7171b18..05f257a97 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/layout/grid/GridLayout.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/layout/grid/GridLayout.kt @@ -18,8 +18,8 @@ import de.bixilon.minosoft.gui.rendering.gui.elements.HorizontalAlignments.Compa import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.horizontal -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.offset +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.horizontal +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.offset import glm_.vec2.Vec2i import java.lang.Integer.min import kotlin.math.max diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/text/TextElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/text/TextElement.kt index ddf0db0a0..a8b02a097 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/text/TextElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/elements/text/TextElement.kt @@ -26,8 +26,8 @@ import de.bixilon.minosoft.gui.rendering.gui.elements.InfiniteSizeElement import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.offset import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.offset import de.bixilon.minosoft.util.KUtil.decide import glm_.vec2.Vec2i diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarCoreElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarCoreElement.kt index cc5dbbcec..f3140b17b 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarCoreElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarCoreElement.kt @@ -22,8 +22,8 @@ import de.bixilon.minosoft.gui.rendering.gui.elements.layout.RowLayout import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.copy import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.max +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.copy import glm_.vec2.Vec2i import java.lang.Integer.max diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarElement.kt index 6d922a99c..4e3500a62 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarElement.kt @@ -23,9 +23,9 @@ import de.bixilon.minosoft.gui.rendering.gui.elements.text.FadingTextElement import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.left -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.right import de.bixilon.minosoft.gui.rendering.util.vec.vec2.Vec2iUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.left +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.right import glm_.vec2.Vec2i import java.lang.Integer.max diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarOffhandElement.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarOffhandElement.kt index c9c9c863d..972683ce8 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarOffhandElement.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/gui/hud/elements/hotbar/HotbarOffhandElement.kt @@ -21,7 +21,7 @@ import de.bixilon.minosoft.gui.rendering.gui.elements.primitive.ImageElement import de.bixilon.minosoft.gui.rendering.gui.hud.HUDRenderer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions -import de.bixilon.minosoft.gui.rendering.util.vec.Vec4Util.marginOf +import de.bixilon.minosoft.gui.rendering.util.vec.vec4.Vec4iUtil.marginOf import glm_.vec2.Vec2i import java.lang.Integer.max diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/Frustum.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/Frustum.kt index 90c576319..30a5f02cb 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/Frustum.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/input/camera/Frustum.kt @@ -16,8 +16,8 @@ package de.bixilon.minosoft.gui.rendering.input.camera import de.bixilon.minosoft.data.registries.AABB import de.bixilon.minosoft.gui.rendering.RenderConstants -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.of +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.EMPTY import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import de.bixilon.minosoft.util.KUtil import de.bixilon.minosoft.util.KUtil.get diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/FaceSize.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/FaceSize.kt index fc44c3ae2..debb584bc 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/FaceSize.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/FaceSize.kt @@ -13,9 +13,9 @@ package de.bixilon.minosoft.gui.rendering.models -import glm_.vec3.Vec3 +import glm_.vec2.Vec2 class FaceSize( - val start: Vec3, - val end: Vec3, + val start: Vec2, + val end: Vec2, ) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/WeightedBakedModel.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/WeightedBakedModel.kt index 1d639e04e..6347413b1 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/WeightedBakedModel.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/WeightedBakedModel.kt @@ -47,7 +47,8 @@ class WeightedBakedModel( return model } } - TODO("Should never happen!") + + throw IllegalStateException("Could not find a model: This should never happen!") } override fun getFaceSize(direction: Directions, random: Random): Array { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/block/BakedBlockStateModel.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/block/BakedBlockStateModel.kt index 98c260a0e..5fe25ef79 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/block/BakedBlockStateModel.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/block/BakedBlockStateModel.kt @@ -17,22 +17,23 @@ import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.world.light.LightAccessor import de.bixilon.minosoft.gui.rendering.block.mesh.ChunkSectionMesh import de.bixilon.minosoft.gui.rendering.models.FaceSize +import glm_.vec3.Vec3 import glm_.vec3.Vec3i import java.util.* class BakedBlockStateModel( val faces: Array>, - val sizes: Array>, -) : BakedBlockModel { +) : BakedBlockModel { // ToDo: Greedy meshable override fun getFaceSize(direction: Directions, random: Random): Array { - return sizes[direction.ordinal] + return arrayOf() // ToDo } override fun singleRender(position: Vec3i, mesh: ChunkSectionMesh, random: Random, light: Int, ambientLight: IntArray) { + val floatPosition = Vec3(position) for (direction in faces) { for (face in direction) { - face.singleRender(position, mesh, light, ambientLight) + face.singleRender(floatPosition, mesh, light, ambientLight) } } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/block/BakedFace.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/block/BakedFace.kt index 4ac3a8355..1208c4d4e 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/block/BakedFace.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/baked/block/BakedFace.kt @@ -15,12 +15,14 @@ package de.bixilon.minosoft.gui.rendering.models.baked.block import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.gui.rendering.block.mesh.ChunkSectionMesh +import de.bixilon.minosoft.gui.rendering.models.FaceSize import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.AbstractTexture +import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh import glm_.vec2.Vec2 import glm_.vec3.Vec3 -import glm_.vec3.Vec3i class BakedFace( + val faceSize: FaceSize, val positions: Array, val uv: Array, val shade: Boolean, @@ -28,23 +30,10 @@ class BakedFace( val cullFace: Directions?, val texture: AbstractTexture, ) { - fun singleRender(position: Vec3i, mesh: ChunkSectionMesh, light: Int, ambientLight: IntArray) { - val floatPosition = Vec3(position) - - for (index in DRAW_ORDER) { - mesh.addVertex(positions[index] + floatPosition, uv[index], texture, null, light) + fun singleRender(position: Vec3, mesh: ChunkSectionMesh, light: Int, ambientLight: IntArray) { + // ToDo: Ambient light + for ((index, textureIndex) in Mesh.QUAD_DRAW_ODER) { + mesh.addVertex(positions[index] + position, uv[textureIndex], texture, null, light) } } - - - companion object { - private val DRAW_ORDER = intArrayOf( - 0, - 1, - 3, - 3, - 2, - 0, - ) - } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/display/ModelDisplay.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/display/ModelDisplay.kt index 9cf2af313..5de48e89a 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/display/ModelDisplay.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/display/ModelDisplay.kt @@ -13,24 +13,22 @@ package de.bixilon.minosoft.gui.rendering.models.display -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY -import de.bixilon.minosoft.gui.rendering.util.VecUtil.ONE import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.toVec3 import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.toVec3i import glm_.vec3.Vec3 import glm_.vec3.Vec3i data class ModelDisplay( - val rotation: Vec3i, - val translation: Vec3i, - val scale: Vec3, + val rotation: Vec3i?, + val translation: Vec3i?, + val scale: Vec3?, ) { companion object { operator fun invoke(data: Map): ModelDisplay { return ModelDisplay( - rotation = data["rotation"]?.toVec3i() ?: Vec3i.EMPTY, - translation = data["translation"]?.toVec3i() ?: Vec3i.EMPTY, - scale = data["scale"]?.toVec3() ?: Vec3.ONE, + rotation = data["rotation"]?.toVec3i(), + translation = data["translation"]?.toVec3i(), + scale = data["scale"]?.toVec3(), ) } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/UnbakedBlockStateModel.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/UnbakedBlockStateModel.kt index c0c572fa8..06a1638b8 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/UnbakedBlockStateModel.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/block/UnbakedBlockStateModel.kt @@ -16,7 +16,6 @@ package de.bixilon.minosoft.gui.rendering.models.unbaked.block import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.gui.rendering.RenderWindow -import de.bixilon.minosoft.gui.rendering.models.FaceSize import de.bixilon.minosoft.gui.rendering.models.baked.block.BakedBlockModel import de.bixilon.minosoft.gui.rendering.models.baked.block.BakedBlockStateModel import de.bixilon.minosoft.gui.rendering.models.baked.block.BakedFace @@ -70,21 +69,23 @@ data class UnbakedBlockStateModel( val faces: Array> = Array(Directions.VALUES.size) { mutableListOf() } - val sizes: Array> = Array(Directions.VALUES.size) { mutableListOf() } for (element in model.elements) { + val rescale = element.rotation?.rescale ?: false for (face in element.faces) { val texture = resolvedTextures[face.texture.removePrefix("#")]!! // ToDo: Allow direct texture names? val positions = face.direction.getPositions(element.from, element.to) + val texturePositions = arrayOf( + Vec2(face.uvEnd.x, face.uvStart.y), face.uvStart, Vec2(face.uvStart.x, face.uvEnd.y), - Vec2(face.uvEnd.x, face.uvStart.y), face.uvEnd, ) faces[face.direction.ordinal] += BakedFace( + faceSize = face.direction.getSize(element.from, element.to), positions = positions, uv = texturePositions, shade = element.shade, @@ -101,13 +102,7 @@ data class UnbakedBlockStateModel( finalFaces[index] = faceArray.toTypedArray() } - val finalSizes: Array?> = Array(sizes.size) { null } - - for ((index, sizeArray) in sizes.withIndex()) { - finalSizes[index] = sizeArray.toTypedArray() - } - - return BakedBlockStateModel(finalFaces.unsafeCast(), finalSizes.unsafeCast()) + return BakedBlockStateModel(finalFaces.unsafeCast()) } companion object { diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/element/UnbakedElementRotation.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/element/UnbakedElementRotation.kt index cf04a064d..a8c3d6fa4 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/element/UnbakedElementRotation.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/models/unbaked/element/UnbakedElementRotation.kt @@ -14,14 +14,13 @@ package de.bixilon.minosoft.gui.rendering.models.unbaked.element import de.bixilon.minosoft.data.Axes -import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.toVec3 import de.bixilon.minosoft.util.KUtil.toBoolean import de.bixilon.minosoft.util.KUtil.toFloat import glm_.vec3.Vec3 data class UnbakedElementRotation( - val origin: Vec3, + val origin: Vec3?, val axis: Axes, val angle: Float, val rescale: Boolean, @@ -30,7 +29,7 @@ data class UnbakedElementRotation( operator fun invoke(data: Map): UnbakedElementRotation { return UnbakedElementRotation( - origin = data["origin"]?.toVec3() ?: Vec3.EMPTY, + origin = data["origin"]?.toVec3(), axis = Axes[data["axis"].toString()], angle = data["angle"].toFloat(), rescale = data["rescale"]?.toBoolean() ?: false, diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/Particle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/Particle.kt index b2ce34cb4..0034d1529 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/Particle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/Particle.kt @@ -19,9 +19,10 @@ import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory import de.bixilon.minosoft.gui.rendering.particle.ParticleMesh import de.bixilon.minosoft.gui.rendering.util.VecUtil -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.assign import de.bixilon.minosoft.gui.rendering.util.VecUtil.plusAssign +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import glm_.vec3.Vec3 diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/norender/ExplosionEmitterParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/norender/ExplosionEmitterParticle.kt index 5639a9c71..89a6002a2 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/norender/ExplosionEmitterParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/norender/ExplosionEmitterParticle.kt @@ -17,8 +17,8 @@ import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.ExplosionParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toResourceLocation import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/AscendingParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/AscendingParticle.kt index 39df64254..21a694c98 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/AscendingParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/AscendingParticle.kt @@ -15,7 +15,7 @@ package de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.data.text.RGBColor.Companion.asGray -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.MMath import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/ExplosionParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/ExplosionParticle.kt index 3ea63180d..0bbddab61 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/ExplosionParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/ExplosionParticle.kt @@ -17,7 +17,7 @@ import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.data.text.RGBColor.Companion.asGray import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toResourceLocation import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/NoteParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/NoteParticle.kt index 2a6144d85..946575107 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/NoteParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/NoteParticle.kt @@ -17,7 +17,7 @@ import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toResourceLocation import glm_.glm diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/PortalParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/PortalParticle.kt index 748442631..6d6cffe79 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/PortalParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/PortalParticle.kt @@ -17,8 +17,8 @@ import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.assign +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toResourceLocation import glm_.pow diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/animated/AnimatedParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/animated/AnimatedParticle.kt index 5cc514d2d..5b3e39125 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/animated/AnimatedParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/animated/AnimatedParticle.kt @@ -16,7 +16,7 @@ package de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.a import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.SimpleTextureParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/campfire/CampfireSmokeParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/campfire/CampfireSmokeParticle.kt index 2267d64a2..0aae6ab36 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/campfire/CampfireSmokeParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/campfire/CampfireSmokeParticle.kt @@ -17,8 +17,8 @@ import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.SimpleTextureParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.assign +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toResourceLocation import glm_.vec3.Vec3 diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/cloud/CloudParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/cloud/CloudParticle.kt index 31f449f9b..cd9d7acf9 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/cloud/CloudParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/cloud/CloudParticle.kt @@ -19,7 +19,7 @@ import de.bixilon.minosoft.data.text.RGBColor.Companion.asGray import de.bixilon.minosoft.data.world.WorldEntities import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.SimpleTextureParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toResourceLocation import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/damage/DamageParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/damage/DamageParticle.kt index 154e25b8f..583639ca7 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/damage/DamageParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/damage/DamageParticle.kt @@ -16,7 +16,7 @@ package de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.d import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.data.text.RGBColor.Companion.asGray import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.SimpleTextureParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.MMath import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/emotion/EmotionParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/emotion/EmotionParticle.kt index 425b8eeb2..f605a4ff9 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/emotion/EmotionParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/emotion/EmotionParticle.kt @@ -15,7 +15,7 @@ package de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.e import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.SimpleTextureParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.MMath import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/enchant/EnchantedGlyphParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/enchant/EnchantedGlyphParticle.kt index af9ce481f..f3fc67432 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/enchant/EnchantedGlyphParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/enchant/EnchantedGlyphParticle.kt @@ -16,8 +16,8 @@ package de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.e import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.SimpleTextureParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.assign +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import glm_.vec3.Vec3d import kotlin.math.pow diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/lava/LavaParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/lava/LavaParticle.kt index 93b1406dc..b1c66f95b 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/lava/LavaParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/lava/LavaParticle.kt @@ -18,8 +18,8 @@ import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.SimpleTextureParticle import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.fire.SmokeParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.sqr +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toResourceLocation import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/water/BubbleParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/water/BubbleParticle.kt index d4fc9b0d2..9f36d8e1d 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/water/BubbleParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/water/BubbleParticle.kt @@ -17,9 +17,9 @@ import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.SimpleTextureParticle -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.assign import de.bixilon.minosoft.gui.rendering.util.VecUtil.of +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toResourceLocation import glm_.vec3.Vec3 diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/water/UnderwaterParticle.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/water/UnderwaterParticle.kt index bb12eb136..769074e96 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/water/UnderwaterParticle.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/particle/types/render/texture/simple/water/UnderwaterParticle.kt @@ -17,7 +17,7 @@ import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.particle.data.ParticleData import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.util.KUtil.toResourceLocation import glm_.vec3.Vec3d diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/AudioPlayer.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/AudioPlayer.kt index 75d2e25ba..203568e1a 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/AudioPlayer.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/AudioPlayer.kt @@ -22,8 +22,8 @@ import de.bixilon.minosoft.gui.rendering.input.camera.Camera import de.bixilon.minosoft.gui.rendering.modding.events.CameraPositionChangeEvent import de.bixilon.minosoft.gui.rendering.sound.sounds.Sound import de.bixilon.minosoft.gui.rendering.sound.sounds.SoundList -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY import de.bixilon.minosoft.gui.rendering.util.VecUtil.centerf +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY import de.bixilon.minosoft.modding.event.invoker.CallbackEventInvoker import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/SoundListener.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/SoundListener.kt index a51793632..8b4878349 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/SoundListener.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/SoundListener.kt @@ -13,7 +13,8 @@ package de.bixilon.minosoft.gui.rendering.sound -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import glm_.vec3.Vec3 import glm_.vec3.Vec3d import org.lwjgl.openal.AL10.* diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/SoundSource.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/SoundSource.kt index 4a06a42a4..dde178fbb 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/sound/SoundSource.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/sound/SoundSource.kt @@ -14,7 +14,7 @@ package de.bixilon.minosoft.gui.rendering.sound import de.bixilon.minosoft.gui.rendering.sound.sounds.Sound -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY import glm_.vec3.Vec3 import org.lwjgl.openal.AL10.* diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/util/VecUtil.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/util/VecUtil.kt index 080473511..1a11f41bf 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/util/VecUtil.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/util/VecUtil.kt @@ -20,12 +20,11 @@ import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.registries.AABB import de.bixilon.minosoft.data.registries.blocks.RandomOffsetTypes import de.bixilon.minosoft.data.registries.blocks.types.Block +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition import glm_.func.common.ceil import glm_.func.common.clamp import glm_.func.common.floor -import glm_.func.cos -import glm_.func.sin import glm_.glm import glm_.vec2.Vec2 import glm_.vec2.Vec2i @@ -38,20 +37,6 @@ import kotlin.random.Random @Deprecated(message = "Use VecXUtil instead") object VecUtil { - val Vec3.Companion.EMPTY: Vec3 - get() = Vec3(0.0f, 0.0f, 0.0f) - - val Vec3d.Companion.EMPTY: Vec3d - get() = Vec3d(0.0, 0.0, 0.0) - - val Vec3i.Companion.EMPTY: Vec3i - get() = Vec3i(0.0f, 0.0f, 0.0f) - - val Vec3.Companion.ONE: Vec3 - get() = Vec3(1.0f, 1.0f, 1.0f) - - val Vec3d.Companion.ONE: Vec3d - get() = Vec3d(1.0, 1.0, 1.0) fun Vec3.clear() { x = 0.0f @@ -150,37 +135,6 @@ object VecUtil { val Vec3d.millis: Vec3d get() = this * ProtocolDefinition.TICKS_PER_SECOND - fun getRotatedValues(x: Float, y: Float, sin: Float, cos: Float, rescale: Boolean): Vec2 { - val result = Vec2(x * cos - y * sin, x * sin + y * cos) - if (rescale) { - return result / cos - } - return result - } - - fun Vec3.rotate(angle: Float, axis: Axes): Vec3 { - return this.rotate(angle, axis, false) - } - - fun Vec3.rotate(angle: Float, axis: Axes, rescale: Boolean): Vec3 { - if (angle == 0.0f) { - return this - } - return when (axis) { - Axes.X -> { - val rotatedValues = getRotatedValues(this.y, this.z, angle.sin, angle.cos, rescale) - Vec3(this.x, rotatedValues) - } - Axes.Y -> { - val rotatedValues = getRotatedValues(this.x, this.z, angle.sin, angle.cos, rescale) - Vec3(rotatedValues.x, this.y, rotatedValues.y) - } - Axes.Z -> { - val rotatedValues = getRotatedValues(this.x, this.y, angle.sin, angle.cos, rescale) - Vec3(rotatedValues.x, rotatedValues.y, this.z) - } - } - } fun Vec3.rotate(axis: Vec3, sin: Float, cos: Float): Vec3 { return this * cos + (axis cross this) * sin + axis * (axis dot this) * (1 - cos) diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/util/mesh/LineMesh.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/util/mesh/LineMesh.kt index f850348b0..544989375 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/util/mesh/LineMesh.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/util/mesh/LineMesh.kt @@ -17,7 +17,7 @@ import de.bixilon.minosoft.data.registries.AABB import de.bixilon.minosoft.data.registries.VoxelShape import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.gui.rendering.RenderWindow -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.EMPTY import de.bixilon.minosoft.util.BitByte.isBit import de.bixilon.minosoft.util.MMath.positiveNegative import glm_.vec3.Vec3 diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec3/Vec3Util.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec3/Vec3Util.kt index 8130610af..a78466c70 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec3/Vec3Util.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec3/Vec3Util.kt @@ -13,8 +13,15 @@ package de.bixilon.minosoft.gui.rendering.util.vec.vec3 +import de.bixilon.minosoft.data.Axes import de.bixilon.minosoft.util.KUtil.toFloat +import glm_.func.cos +import glm_.func.sin +import glm_.vec2.Vec2 import glm_.vec3.Vec3 +import glm_.vec3.swizzle.xy +import glm_.vec3.swizzle.xz +import glm_.vec3.swizzle.yz object Vec3Util { @@ -24,16 +31,43 @@ object Vec3Util { val Vec3.Companion.EMPTY: Vec3 get() = Vec3(0.0f, 0.0f, 0.0f) + val Vec3.Companion.ONE: Vec3 + get() = Vec3(1.0f, 1.0f, 1.0f) + val Vec3.Companion.MAX: Vec3 get() = Vec3(Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE) + fun rotate(x: Float, y: Float, sin: Float, cos: Float, rescale: Boolean): Vec2 { + val result = Vec2(x * cos - y * sin, x * sin + y * cos) + if (rescale) { + return result / cos + } + return result + } + + + fun Vec3.rotate(angle: Float, axis: Axes, rescale: Boolean = false) { + if (angle == 0.0f) { + return + } + when (axis) { + Axes.X -> this.yz = rotate(this.y, this.z, angle.sin, angle.cos, rescale) + Axes.Y -> this.xz = rotate(this.x, this.z, angle.sin, angle.cos, rescale) + Axes.Z -> this.xy = rotate(this.x, this.y, angle.sin, angle.cos, rescale) + } + } + fun Any?.toVec3(default: Vec3? = null): Vec3 { + return toVec3N() ?: default ?: throw IllegalArgumentException("Not a Vec3: $this") + } + + fun Any?.toVec3N(): Vec3? { return when (this) { is List<*> -> Vec3(this[0].toFloat(), this[1].toFloat(), this[2].toFloat()) is Map<*, *> -> Vec3(this["x"]?.toFloat() ?: 0.0f, this["y"]?.toFloat() ?: 0.0f, this["z"]?.toFloat() ?: 0.0f) is Number -> Vec3(this.toFloat()) - else -> default ?: throw IllegalArgumentException("Not a Vec3: $this") + else -> null } } } diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec3/Vec3dUtil.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec3/Vec3dUtil.kt new file mode 100644 index 000000000..790d62234 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec3/Vec3dUtil.kt @@ -0,0 +1,32 @@ +/* + * Minosoft + * Copyright (C) 2021 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.gui.rendering.util.vec.vec3 + +import glm_.vec3.Vec3d + +object Vec3dUtil { + + val Vec3d.Companion.MIN: Vec3d + get() = Vec3d(Double.MIN_VALUE, Double.MIN_VALUE, Double.MIN_VALUE) + + val Vec3d.Companion.EMPTY: Vec3d + get() = Vec3d(0.0, 0.0, 0.0) + + val Vec3d.Companion.ONE: Vec3d + get() = Vec3d(1.0, 1.0, 1.0) + + val Vec3d.Companion.MAX: Vec3d + get() = Vec3d(Double.MAX_VALUE, Double.MAX_VALUE, Double.MAX_VALUE) + +} diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec4/Vec4Util.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec4/Vec4Util.kt new file mode 100644 index 000000000..a83230ae8 --- /dev/null +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec4/Vec4Util.kt @@ -0,0 +1,28 @@ +/* + * Minosoft + * Copyright (C) 2021 Moritz Zwerger + * + * This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with this program. If not, see . + * + * This software is not affiliated with Mojang AB, the original developer of Minecraft. + */ + +package de.bixilon.minosoft.gui.rendering.util.vec.vec4 + +import glm_.vec4.Vec4 + +object Vec4Util { + + val Vec4.Companion.MIN: Vec4 + get() = Vec4(Float.MIN_VALUE, Float.MIN_VALUE, Float.MIN_VALUE, Float.MIN_VALUE) + + val Vec4.Companion.EMPTY: Vec4 + get() = Vec4(0.0f, 0.0f, 0.0f, 0.0f) + + val Vec4.Companion.MAX: Vec4 + get() = Vec4(Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE) +} diff --git a/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/Vec4Util.kt b/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec4/Vec4iUtil.kt similarity index 81% rename from src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/Vec4Util.kt rename to src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec4/Vec4iUtil.kt index 1a0636d03..bf732e345 100644 --- a/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/Vec4Util.kt +++ b/src/main/java/de/bixilon/minosoft/gui/rendering/util/vec/vec4/Vec4iUtil.kt @@ -11,23 +11,12 @@ * This software is not affiliated with Mojang AB, the original developer of Minecraft. */ -package de.bixilon.minosoft.gui.rendering.util.vec +package de.bixilon.minosoft.gui.rendering.util.vec.vec4 import glm_.vec2.Vec2i -import glm_.vec4.Vec4 import glm_.vec4.Vec4i -object Vec4Util { - - val Vec4.Companion.MIN: Vec4 - get() = Vec4(Float.MIN_VALUE, Float.MIN_VALUE, Float.MIN_VALUE, Float.MIN_VALUE) - - val Vec4.Companion.EMPTY: Vec4 - get() = Vec4(0.0f, 0.0f, 0.0f, 0.0f) - - val Vec4.Companion.MAX: Vec4 - get() = Vec4(Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE, Float.MAX_VALUE) - +object Vec4iUtil { val Vec4i.Companion.MIN: Vec4i get() = Vec4i(Int.MIN_VALUE, Int.MIN_VALUE, Int.MIN_VALUE, Int.MIN_VALUE) diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PlayerActionC2SP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PlayerActionC2SP.kt index 1b9528791..53e6efef5 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PlayerActionC2SP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/c2s/play/PlayerActionC2SP.kt @@ -13,7 +13,7 @@ package de.bixilon.minosoft.protocol.packets.c2s.play import de.bixilon.minosoft.data.direction.Directions -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.EMPTY import de.bixilon.minosoft.protocol.packets.c2s.PlayC2SPacket import de.bixilon.minosoft.protocol.protocol.PlayOutByteBuffer import de.bixilon.minosoft.protocol.protocol.ProtocolVersions diff --git a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt index 4412a6caa..b94bbf8c4 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt +++ b/src/main/java/de/bixilon/minosoft/protocol/packets/s2c/play/RespawnS2CP.kt @@ -16,7 +16,7 @@ import de.bixilon.minosoft.data.Difficulties import de.bixilon.minosoft.data.abilities.Gamemodes import de.bixilon.minosoft.data.registries.ResourceLocation import de.bixilon.minosoft.data.registries.dimension.DimensionProperties -import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY +import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY import de.bixilon.minosoft.modding.event.events.RespawnEvent import de.bixilon.minosoft.protocol.network.connection.play.PlayConnection import de.bixilon.minosoft.protocol.packets.s2c.PlayS2CPacket