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.commands.parser.minecraft.target.targets.selector.properties.EntityTargetProperty
import de.bixilon.minosoft.data.Axes import de.bixilon.minosoft.data.Axes
import de.bixilon.minosoft.data.entities.entities.Entity 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.* import java.util.*
abstract class CenterProperty( 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.Vec3
import de.bixilon.kotlinglm.vec3.Vec3d import de.bixilon.kotlinglm.vec3.Vec3d
import de.bixilon.kotlinglm.vec3.Vec3i 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.unsafeCast
import de.bixilon.kutil.cast.CastUtil.unsafeNull import de.bixilon.kutil.cast.CastUtil.unsafeNull
import de.bixilon.kutil.enums.EnumUtil 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.properties.serializer.BlockPropertiesSerializer
import de.bixilon.minosoft.data.registries.blocks.state.BlockState import de.bixilon.minosoft.data.registries.blocks.state.BlockState
import de.bixilon.minosoft.data.world.chunk.ChunkSection 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 de.bixilon.minosoft.protocol.protocol.ProtocolDefinition
import kotlin.reflect.jvm.javaField 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.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.EMPTY
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.ONE 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.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.max
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.min import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.min
import kotlin.math.abs 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.ShapeRegistry
import de.bixilon.minosoft.data.registries.shapes.aabb.AABB 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.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.max
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.min import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3dUtil.min
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet

View File

@ -14,10 +14,8 @@
package de.bixilon.minosoft.gui.rendering.util.vec.vec2 package de.bixilon.minosoft.gui.rendering.util.vec.vec2
import de.bixilon.kotlinglm.func.rad import de.bixilon.kotlinglm.func.rad
import de.bixilon.kotlinglm.mat4x4.Mat4
import de.bixilon.kotlinglm.vec2.Vec2 import de.bixilon.kotlinglm.vec2.Vec2
import de.bixilon.kotlinglm.vec2.Vec2i import de.bixilon.kotlinglm.vec2.Vec2i
import de.bixilon.kotlinglm.vec2.Vec2t
import de.bixilon.kutil.primitive.IntUtil.toInt import de.bixilon.kutil.primitive.IntUtil.toInt
import de.bixilon.minosoft.data.Axes import de.bixilon.minosoft.data.Axes
import de.bixilon.minosoft.data.direction.Directions import de.bixilon.minosoft.data.direction.Directions
@ -112,14 +110,6 @@ object Vec2iUtil {
return this isSmaller min || this isGreater max 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 { operator fun Vec2i.plus(direction: Directions): Vec2i {
val ret = Vec2i(this) val ret = Vec2i(this)
ret.x += direction.vector.x 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.vec2.Vec2
import de.bixilon.kotlinglm.vec3.Vec3 import de.bixilon.kotlinglm.vec3.Vec3
import de.bixilon.kotlinglm.vec3.Vec3i 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.xy
import de.bixilon.kotlinglm.vec3.swizzle.xz import de.bixilon.kotlinglm.vec3.swizzle.xz
import de.bixilon.kotlinglm.vec3.swizzle.yz import de.bixilon.kotlinglm.vec3.swizzle.yz
@ -94,7 +93,7 @@ object Vec3Util {
this += origin this += origin
} }
operator fun <T : Number> Vec3t<T>.get(axis: Axes): T { operator fun Vec3.get(axis: Axes): Float {
return when (axis) { return when (axis) {
Axes.X -> x Axes.X -> x
Axes.Y -> y 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) { when (axis) {
Axes.X -> x = value Axes.X -> x = value
Axes.Y -> y = 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.ceil
import de.bixilon.kutil.math.simple.DoubleMath.floor import de.bixilon.kutil.math.simple.DoubleMath.floor
import de.bixilon.minosoft.data.Axes import de.bixilon.minosoft.data.Axes
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.get
import kotlin.math.abs import kotlin.math.abs
object Vec3dUtil { object Vec3dUtil {
@ -133,4 +132,21 @@ object Vec3dUtil {
fun Vec3d.length3(): Double { fun Vec3d.length3(): Double {
return x + y + z 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.Vec3
import de.bixilon.kotlinglm.vec3.Vec3i import de.bixilon.kotlinglm.vec3.Vec3i
import de.bixilon.kutil.primitive.IntUtil.toInt 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.inSectionHeight
import de.bixilon.minosoft.gui.rendering.util.VecUtil.sectionHeight import de.bixilon.minosoft.gui.rendering.util.VecUtil.sectionHeight
@ -73,4 +74,20 @@ object Vec3iUtil {
fun Vec3i.length2(): Int { fun Vec3i.length2(): Int {
return x * x + y * y + z * z 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.Axes
import de.bixilon.minosoft.data.entities.entities.Entity import de.bixilon.minosoft.data.entities.entities.Entity
import de.bixilon.minosoft.data.registries.shapes.aabb.AABB 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 import de.bixilon.minosoft.physics.handlers.general.AbstractEntityPhysics
interface SneakAdjuster : StepAdjuster, 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.World
import de.bixilon.minosoft.data.world.chunk.chunk.Chunk import de.bixilon.minosoft.data.world.chunk.chunk.Chunk
import de.bixilon.minosoft.data.world.iterator.WorldIterator 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.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.gui.rendering.util.vec.vec3.Vec3iUtil.EMPTY
import de.bixilon.minosoft.physics.entities.EntityPhysics import de.bixilon.minosoft.physics.entities.EntityPhysics
import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet 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.direction.Directions
import de.bixilon.minosoft.data.world.positions.BlockPosition import de.bixilon.minosoft.data.world.positions.BlockPosition
import de.bixilon.minosoft.gui.rendering.util.VecUtil.plus 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 import de.bixilon.minosoft.physics.entities.living.player.local.LocalPlayerPhysics
object OutOfBlockPusher { object OutOfBlockPusher {