add Vec3t::get(Axes) for each datatype

Optimization for upcoming glm version
This commit is contained in:
Bixilon 2023-05-28 20:02:46 +02:00
parent 5fd52fb192
commit 48b44c3fa0
No known key found for this signature in database
GPG Key ID: 5CAD791931B09AC4
11 changed files with 47 additions and 22 deletions

View File

@ -17,7 +17,7 @@ import de.bixilon.minosoft.commands.parser.minecraft.target.targets.selector.Ent
import de.bixilon.minosoft.commands.parser.minecraft.target.targets.selector.properties.EntityTargetProperty
import de.bixilon.minosoft.data.Axes
import de.bixilon.minosoft.data.entities.entities.Entity
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.set
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.set
import java.util.*
abstract class CenterProperty(

View File

@ -17,7 +17,10 @@ import de.bixilon.kotlinglm.vec2.Vec2
import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.kotlinglm.vec3.Vec3d
import de.bixilon.kotlinglm.vec3.Vec3i
import de.bixilon.kotlinglm.vec3.swizzle.*
import de.bixilon.kotlinglm.vec3.swizzle.xy
import de.bixilon.kotlinglm.vec3.swizzle.xz
import de.bixilon.kotlinglm.vec3.swizzle.yz
import de.bixilon.kotlinglm.vec3.swizzle.zy
import de.bixilon.kutil.cast.CastUtil.unsafeCast
import de.bixilon.kutil.cast.CastUtil.unsafeNull
import de.bixilon.kutil.enums.EnumUtil
@ -28,7 +31,7 @@ import de.bixilon.minosoft.data.Axes
import de.bixilon.minosoft.data.registries.blocks.properties.serializer.BlockPropertiesSerializer
import de.bixilon.minosoft.data.registries.blocks.state.BlockState
import de.bixilon.minosoft.data.world.chunk.ChunkSection
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.get
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.get
import de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
import kotlin.reflect.jvm.javaField

View File

@ -25,8 +25,8 @@ import de.bixilon.minosoft.data.direction.Directions
import de.bixilon.minosoft.data.registries.shapes.voxel.AABBRaycastHit
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.get
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.toVec3
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.get
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.max
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.min
import kotlin.math.abs

View File

@ -22,7 +22,7 @@ import de.bixilon.minosoft.data.Axes
import de.bixilon.minosoft.data.registries.shapes.ShapeRegistry
import de.bixilon.minosoft.data.registries.shapes.aabb.AABB
import de.bixilon.minosoft.gui.rendering.util.VecUtil.toVec3d
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.get
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.get
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.max
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.min
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet

View File

@ -14,10 +14,8 @@
package de.bixilon.minosoft.gui.rendering.util.vec.vec2
import de.bixilon.kotlinglm.func.rad
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.kotlinglm.vec2.Vec2
import de.bixilon.kotlinglm.vec2.Vec2i
import de.bixilon.kotlinglm.vec2.Vec2t
import de.bixilon.kutil.primitive.IntUtil.toInt
import de.bixilon.minosoft.data.Axes
import de.bixilon.minosoft.data.direction.Directions
@ -112,14 +110,6 @@ object Vec2iUtil {
return this isSmaller min || this isGreater max
}
infix fun Mat4.orthoTimes(vec: Vec2t<*>): Vec2 {
val array = this.array
return Vec2(
array[0] * vec[0].toFloat() + array[4] * vec[1].toFloat() - 1.0f,
array[1] * vec[0].toFloat() + array[5] * vec[1].toFloat() + 1.0f,
)
}
operator fun Vec2i.plus(direction: Directions): Vec2i {
val ret = Vec2i(this)
ret.x += direction.vector.x

View File

@ -18,7 +18,6 @@ import de.bixilon.kotlinglm.func.sin
import de.bixilon.kotlinglm.vec2.Vec2
import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.kotlinglm.vec3.Vec3i
import de.bixilon.kotlinglm.vec3.Vec3t
import de.bixilon.kotlinglm.vec3.swizzle.xy
import de.bixilon.kotlinglm.vec3.swizzle.xz
import de.bixilon.kotlinglm.vec3.swizzle.yz
@ -94,7 +93,7 @@ object Vec3Util {
this += origin
}
operator fun <T : Number> Vec3t<T>.get(axis: Axes): T {
operator fun Vec3.get(axis: Axes): Float {
return when (axis) {
Axes.X -> x
Axes.Y -> y
@ -102,7 +101,7 @@ object Vec3Util {
}
}
operator fun <T : Number> Vec3t<T>.set(axis: Axes, value: T) {
operator fun Vec3.set(axis: Axes, value: Float) {
when (axis) {
Axes.X -> x = value
Axes.Y -> y = value

View File

@ -21,7 +21,6 @@ import de.bixilon.kutil.math.interpolation.DoubleInterpolation.interpolateSine
import de.bixilon.kutil.math.simple.DoubleMath.ceil
import de.bixilon.kutil.math.simple.DoubleMath.floor
import de.bixilon.minosoft.data.Axes
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.get
import kotlin.math.abs
object Vec3dUtil {
@ -133,4 +132,21 @@ object Vec3dUtil {
fun Vec3d.length3(): Double {
return x + y + z
}
operator fun Vec3d.get(axis: Axes): Double {
return when (axis) {
Axes.X -> x
Axes.Y -> y
Axes.Z -> z
}
}
operator fun Vec3d.set(axis: Axes, value: Double) {
when (axis) {
Axes.X -> x = value
Axes.Y -> y = value
Axes.Z -> z = value
}
}
}

View File

@ -17,6 +17,7 @@ import de.bixilon.kotlinglm.vec2.Vec2i
import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.kotlinglm.vec3.Vec3i
import de.bixilon.kutil.primitive.IntUtil.toInt
import de.bixilon.minosoft.data.Axes
import de.bixilon.minosoft.gui.rendering.util.VecUtil.inSectionHeight
import de.bixilon.minosoft.gui.rendering.util.VecUtil.sectionHeight
@ -73,4 +74,20 @@ object Vec3iUtil {
fun Vec3i.length2(): Int {
return x * x + y * y + z * z
}
operator fun Vec3i.get(axis: Axes): Int {
return when (axis) {
Axes.X -> x
Axes.Y -> y
Axes.Z -> z
}
}
operator fun Vec3i.set(axis: Axes, value: Int) {
when (axis) {
Axes.X -> x = value
Axes.Y -> y = value
Axes.Z -> z = value
}
}
}

View File

@ -17,7 +17,7 @@ import de.bixilon.kotlinglm.vec3.Vec3d
import de.bixilon.minosoft.data.Axes
import de.bixilon.minosoft.data.entities.entities.Entity
import de.bixilon.minosoft.data.registries.shapes.aabb.AABB
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.set
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.set
import de.bixilon.minosoft.physics.handlers.general.AbstractEntityPhysics
interface SneakAdjuster : StepAdjuster, AbstractEntityPhysics {

View File

@ -28,8 +28,8 @@ import de.bixilon.minosoft.data.registries.shapes.voxel.VoxelShape
import de.bixilon.minosoft.data.world.World
import de.bixilon.minosoft.data.world.chunk.chunk.Chunk
import de.bixilon.minosoft.data.world.iterator.WorldIterator
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.set
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.EMPTY
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.set
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.EMPTY
import de.bixilon.minosoft.physics.entities.EntityPhysics
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet

View File

@ -20,7 +20,7 @@ import de.bixilon.minosoft.data.abilities.Gamemodes
import de.bixilon.minosoft.data.direction.Directions
import de.bixilon.minosoft.data.world.positions.BlockPosition
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.get
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3iUtil.get
import de.bixilon.minosoft.physics.entities.living.player.local.LocalPlayerPhysics
object OutOfBlockPusher {