remove VecUtil.EMPTY_VEC3, replace with Vec3.EMPTY

This commit is contained in:
Bixilon 2021-05-27 18:39:25 +02:00
parent 61a72961f5
commit 8eee74df5d
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
11 changed files with 56 additions and 45 deletions

View File

@ -19,10 +19,11 @@ import de.bixilon.minosoft.data.entities.entities.player.PlayerEntity
import de.bixilon.minosoft.data.mappings.items.Item
import de.bixilon.minosoft.data.mappings.other.containers.Container
import de.bixilon.minosoft.data.mappings.other.containers.PlayerInventory
import de.bixilon.minosoft.gui.rendering.util.VecUtil
import de.bixilon.minosoft.gui.rendering.util.VecUtil.EMPTY
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
import de.bixilon.minosoft.util.KUtil.synchronizedMapOf
import glm_.vec3.Vec3
import glm_.vec3.Vec3i
class Player(
@ -31,8 +32,8 @@ class Player(
) {
val healthCondition = PlayerHealthCondition()
val experienceCondition = PlayerExperienceCondition()
var spawnPosition: Vec3i = VecUtil.EMPTY_VEC3I
val entity: PlayerEntity = PlayerEntity(connection, connection.registries.entityTypeRegistry[PlayerEntity.RESOURCE_LOCATION]!!, VecUtil.EMPTY_VEC3, EntityRotation(0.0, 0.0), account.username)
var spawnPosition: Vec3i = Vec3i.EMPTY
val entity: PlayerEntity = PlayerEntity(connection, connection.registries.entityTypeRegistry[PlayerEntity.RESOURCE_LOCATION]!!, Vec3.EMPTY, EntityRotation(0.0, 0.0), account.username)
@Deprecated(message = "Will be replaced with some kind of teleport manager, ...")
var isSpawnConfirmed = false

View File

@ -6,7 +6,8 @@ import com.google.gson.JsonPrimitive
import de.bixilon.minosoft.data.Axes
import de.bixilon.minosoft.data.Directions
import de.bixilon.minosoft.gui.rendering.chunk.models.AABB
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.ONE
import de.bixilon.minosoft.gui.rendering.util.VecUtil.getMinDistanceDirection
import glm_.vec3.Vec3
import glm_.vec3.Vec3i
@ -99,7 +100,7 @@ class VoxelShape(private val aabbs: MutableList<AABB> = mutableListOf()) : Itera
companion object {
val EMPTY = VoxelShape()
val FULL = VoxelShape(mutableListOf(AABB(VecUtil.EMPTY_VEC3, VecUtil.ONES_VEC3)))
val FULL = VoxelShape(mutableListOf(AABB(Vec3.EMPTY, Vec3.ONE)))
}
override fun iterator(): Iterator<AABB> {

View File

@ -24,7 +24,7 @@ import de.bixilon.minosoft.gui.rendering.RendererBuilder
import de.bixilon.minosoft.gui.rendering.chunk.VoxelShape
import de.bixilon.minosoft.gui.rendering.chunk.models.renderable.ElementRenderer
import de.bixilon.minosoft.gui.rendering.shader.Shader
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.getWorldOffset
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
@ -55,7 +55,7 @@ class BlockOutlineRenderer(
private fun drawLine(start: Vec3, end: Vec3, mesh: BlockOutlineMesh) {
val direction = (end - start).normalize()
val normal1 = Vec3(direction.z, direction.z, direction.x - direction.y)
if (normal1 == VecUtil.EMPTY_VEC3) {
if (normal1 == Vec3.EMPTY) {
normal1.x = normal1.z
normal1.z = direction.z
}

View File

@ -4,7 +4,8 @@ import com.google.gson.JsonArray
import com.google.gson.JsonElement
import com.google.gson.JsonObject
import de.bixilon.minosoft.data.Axes
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.ONE
import de.bixilon.minosoft.gui.rendering.util.VecUtil.get
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3
import glm_.Java.Companion.glm
@ -17,8 +18,8 @@ class AABB {
val max: Vec3
constructor(jsonData: JsonObject) {
min = readPositionFromJson(jsonData["from"], VecUtil.EMPTY_VEC3)
max = readPositionFromJson(jsonData["to"], VecUtil.ONES_VEC3)
min = readPositionFromJson(jsonData["from"], Vec3.EMPTY)
max = readPositionFromJson(jsonData["to"], Vec3.ONE)
}
private fun readPositionFromJson(jsonData: JsonElement, default: Vec3): Vec3 {
@ -139,7 +140,7 @@ class AABB {
}
fun raycast(position: Vec3, direction: Vec3): Float {
if (max - min == VecUtil.ONES_VEC3 || position in this) {
if (max - min == Vec3.ONE || position in this) {
return 0f
}
var tMin = 0f

View File

@ -26,7 +26,7 @@ import de.bixilon.minosoft.gui.rendering.chunk.models.loading.BlockModelElement
import de.bixilon.minosoft.gui.rendering.chunk.models.loading.BlockModelFace
import de.bixilon.minosoft.gui.rendering.textures.Texture
import de.bixilon.minosoft.gui.rendering.textures.TextureTransparencies
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.plus
import de.bixilon.minosoft.gui.rendering.util.VecUtil.rotate
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3
@ -129,7 +129,7 @@ class ElementRenderer(
}
fun getRotatedDirection(rotation: Vec3, direction: Directions): Directions {
if (rotation == VecUtil.EMPTY_VEC3) {
if (rotation == Vec3.EMPTY) {
return direction
}
var rotatedDirectionVector = direction.floatDirectionVector.rotate(-rotation.x, Axes.X)
@ -138,12 +138,12 @@ class ElementRenderer(
}
fun rotatePositionsAxes(positions: Array<Vec3>, angles: Vec3, rescale: Boolean) {
if (angles == VecUtil.EMPTY_VEC3) {
if (angles == Vec3.EMPTY) {
return
}
BlockModelElement.rotatePositions(positions, Axes.X, -angles.x, VecUtil.EMPTY_VEC3, rescale)
BlockModelElement.rotatePositions(positions, Axes.Y, angles.y, VecUtil.EMPTY_VEC3, rescale)
BlockModelElement.rotatePositions(positions, Axes.Z, -angles.z, VecUtil.EMPTY_VEC3, rescale)
BlockModelElement.rotatePositions(positions, Axes.X, -angles.x, Vec3.EMPTY, rescale)
BlockModelElement.rotatePositions(positions, Axes.Y, angles.y, Vec3.EMPTY, rescale)
BlockModelElement.rotatePositions(positions, Axes.Z, -angles.z, Vec3.EMPTY, rescale)
}
val POSITION_1 = Vec3(-0.5f, -0.5f, -0.5f)

View File

@ -26,6 +26,7 @@ import de.bixilon.minosoft.gui.rendering.modding.events.FrustumChangeEvent
import de.bixilon.minosoft.gui.rendering.modding.events.ScreenResizeEvent
import de.bixilon.minosoft.gui.rendering.sky.SkyRenderer
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.floor
@ -250,7 +251,7 @@ class Camera(
if (renderWindow.inputHandler.isKeyBindingDown(KeyBindingsNames.MOVE_RIGHT)) {
movementDirection += cameraRight
}
val deltaMovement = if (movementDirection != VecUtil.EMPTY_VEC3) {
val deltaMovement = if (movementDirection != Vec3.EMPTY) {
movementDirection.normalize() * cameraSpeed
} else {
movementDirection
@ -267,7 +268,7 @@ class Camera(
playerEntity.velocity.y += 0.75f * ProtocolDefinition.GRAVITY
playerEntity.onGround = false
}
if (deltaMovement != VecUtil.EMPTY_VEC3) {
if (deltaMovement != Vec3.EMPTY) {
playerEntity.move(deltaMovement, false)
recalculateViewProjectionMatrix()
currentPositionSent = false

View File

@ -21,10 +21,16 @@ import de.bixilon.minosoft.gui.rendering.util.VecUtil.ONE
import de.bixilon.minosoft.gui.rendering.util.VecUtil.clear
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
import de.bixilon.minosoft.util.KUtil.millis
import glm_.vec3.Vec3
import kotlin.random.Random
abstract class Particle(protected val connection: PlayConnection, protected val particleRenderer: ParticleRenderer, protected val position: Vec3, protected val data: ParticleData) {
abstract class Particle(
protected val connection: PlayConnection,
protected val particleRenderer: ParticleRenderer,
protected val position: Vec3,
protected val data: ParticleData,
) {
protected val random = Random
private var lastTickTime = -1L
@ -33,21 +39,7 @@ abstract class Particle(protected val connection: PlayConnection, protected val
var dead = false
var age: Int = 0
protected set
var tickAge: Int
get() = age / ProtocolDefinition.TICK_TIME
set(value) {
age = value * ProtocolDefinition.TICK_TIME
}
var maxAge: Int = Integer.MAX_VALUE
var maxTickAge: Int
get() = maxAge / ProtocolDefinition.TICK_TIME
set(value) {
maxAge = value * ProtocolDefinition.TICK_TIME
}
init {
maxTickAge = (4.0f / (random.nextFloat() * 0.9f + 0.1f)).toInt()
}
var maxAge: Int = (4.0f / (random.nextFloat() * 0.9f + 0.1f)).millis
// moving
val friction = Vec3.EMPTY

View File

@ -21,13 +21,15 @@ import de.bixilon.minosoft.gui.rendering.particle.types.render.texture.simple.Ex
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.util.KUtil.asResourceLocation
import de.bixilon.minosoft.util.KUtil.millis
import de.bixilon.minosoft.util.KUtil.ticks
import glm_.vec3.Vec3
class ExplosionEmitterParticle(connection: PlayConnection, particleRenderer: ParticleRenderer, position: Vec3, data: ParticleData) : NoRenderParticle(connection, particleRenderer, position, data) {
private val explosionParticleType = connection.registries.particleTypeRegistry[ExplosionParticle]!!
init {
maxTickAge = 8
maxAge = 8.millis
}
@ -36,7 +38,7 @@ class ExplosionEmitterParticle(connection: PlayConnection, particleRenderer: Par
for (i in 0 until 6) {
val position = position + { (random.nextFloat() - random.nextFloat()) * 4.0f }
particleRenderer.add(ExplosionParticle(connection, particleRenderer, position, explosionParticleType.simple(), (tickAge.toFloat() / maxTickAge)))
particleRenderer.add(ExplosionParticle(connection, particleRenderer, position, explosionParticleType.simple(), (age.ticks.toFloat() / maxAge.ticks)))
}
}

View File

@ -20,12 +20,13 @@ import de.bixilon.minosoft.gui.rendering.particle.ParticleFactory
import de.bixilon.minosoft.gui.rendering.particle.ParticleRenderer
import de.bixilon.minosoft.protocol.network.connection.PlayConnection
import de.bixilon.minosoft.util.KUtil.asResourceLocation
import de.bixilon.minosoft.util.KUtil.ticks
import glm_.vec3.Vec3
class ExplosionParticle(connection: PlayConnection, particleRenderer: ParticleRenderer, position: Vec3, data: ParticleData, val power: Float = 1.0f) : SimpleTextureParticle(connection, particleRenderer, position, data) {
init {
maxTickAge = 6 + random.nextInt(4)
maxAge = (6 + random.nextInt(4)).ticks
val gray = random.nextFloat() * 0.6f + 0.4f
color = gray.asGray()
scale = 2.0f * (power - gray * 0.5f)

View File

@ -37,15 +37,14 @@ import glm_.vec3.Vec3
import glm_.vec3.Vec3i
object VecUtil {
val EMPTY_VEC3 = Vec3(0, 0, 0)
val EMPTY_VEC3I = Vec3i(0, 0, 0)
val ONES_VEC3 = Vec3(1)
val Vec3.Companion.EMPTY: Vec3
get() = Vec3(EMPTY_VEC3)
get() = Vec3(0, 0, 0)
val Vec3i.Companion.EMPTY: Vec3i
get() = Vec3i(0, 0, 0)
val Vec3.Companion.ONE: Vec3
get() = Vec3(ONES_VEC3)
get() = Vec3(1, 1, 1)
fun JsonElement.toVec3(): Vec3 {
return when (this) {
@ -221,7 +220,7 @@ object VecUtil {
fun Vec3i.getWorldOffset(block: Block): Vec3 {
if (block.randomOffsetType == null || !Minosoft.config.config.game.other.flowerRandomOffset) {
return EMPTY_VEC3
return Vec3.EMPTY
}
val positionHash = generatePositionHash(x, 0, z)

View File

@ -14,6 +14,7 @@
package de.bixilon.minosoft.util
import de.bixilon.minosoft.data.mappings.ResourceLocation
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
import de.bixilon.minosoft.util.enum.AliasableEnum
import sun.misc.Unsafe
import java.util.*
@ -113,4 +114,16 @@ object KUtil {
fun Random.nextFloat(min: Float = Float.MIN_VALUE, max: Float = Float.MAX_VALUE): Float {
return min + this.nextFloat() * (max - min)
}
/**
* Converts millis to ticks
*/
val Number.ticks: Int
get() = this.toInt() / ProtocolDefinition.TICK_TIME
/**
* Converts ticks to millis
*/
val Number.millis: Int
get() = this.toInt() * ProtocolDefinition.TICK_TIME
}