mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-17 11:24:56 -04:00
util: use more generics
This commit is contained in:
parent
da4b243c1e
commit
bd10ea951f
@ -15,9 +15,7 @@ package de.bixilon.minosoft.data
|
||||
import de.bixilon.minosoft.data.registries.blocks.properties.serializer.BlockPropertiesSerializer
|
||||
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.Vec3t
|
||||
|
||||
enum class Axes {
|
||||
X,
|
||||
@ -25,31 +23,11 @@ enum class Axes {
|
||||
Z,
|
||||
;
|
||||
|
||||
fun choose(vec3: Vec3): Float {
|
||||
return choose(vec3.x, vec3.y, vec3.z)
|
||||
}
|
||||
|
||||
fun choose(vec3: Vec3d): Double {
|
||||
return choose(vec3.x, vec3.y, vec3.z)
|
||||
}
|
||||
|
||||
fun choose(vec3i: Vec3i): Int {
|
||||
return choose(Vec3(vec3i)).toInt()
|
||||
}
|
||||
|
||||
private fun choose(x: Float, y: Float, z: Float): Float {
|
||||
fun <T : Number> choose(vec3: Vec3t<T>): T {
|
||||
return when (this) {
|
||||
X -> x
|
||||
Y -> y
|
||||
Z -> z
|
||||
}
|
||||
}
|
||||
|
||||
private fun choose(x: Double, y: Double, z: Double): Double {
|
||||
return when (this) {
|
||||
X -> x
|
||||
Y -> y
|
||||
Z -> z
|
||||
X -> vec3.x
|
||||
Y -> vec3.y
|
||||
Z -> vec3.z
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -36,6 +36,7 @@ import glm_.vec2.Vec2i
|
||||
import glm_.vec3.Vec3
|
||||
import glm_.vec3.Vec3d
|
||||
import glm_.vec3.Vec3i
|
||||
import glm_.vec3.Vec3t
|
||||
import kotlin.math.abs
|
||||
import kotlin.random.Random
|
||||
|
||||
@ -70,16 +71,10 @@ object VecUtil {
|
||||
z = 0.0f
|
||||
}
|
||||
|
||||
infix fun Vec3.assign(vec3: Vec3) {
|
||||
x = vec3.x
|
||||
y = vec3.y
|
||||
z = vec3.z
|
||||
}
|
||||
|
||||
infix fun Vec3d.assign(vec3d: Vec3d) {
|
||||
x = vec3d.x
|
||||
y = vec3d.y
|
||||
z = vec3d.z
|
||||
infix fun <T : Number> Vec3t<T>.assign(other: Vec3t<T>) {
|
||||
x = other.x
|
||||
y = other.y
|
||||
z = other.z
|
||||
}
|
||||
|
||||
@JvmName(name = "times2")
|
||||
@ -391,29 +386,13 @@ object VecUtil {
|
||||
return minDistanceDirection
|
||||
}
|
||||
|
||||
val Vec3i.toVec3: Vec3
|
||||
val <T : Number> Vec3t<T>.toVec3: Vec3
|
||||
get() = Vec3(this)
|
||||
|
||||
val Vec3i.toVec3d: Vec3d
|
||||
val <T : Number> Vec3t<T>.toVec3d: Vec3d
|
||||
get() = Vec3d(this)
|
||||
|
||||
operator fun Vec3.get(axis: Axes): Float {
|
||||
return when (axis) {
|
||||
Axes.X -> this.x
|
||||
Axes.Y -> this.y
|
||||
Axes.Z -> this.z
|
||||
}
|
||||
}
|
||||
|
||||
operator fun Vec3d.get(axis: Axes): Double {
|
||||
return when (axis) {
|
||||
Axes.X -> this.x
|
||||
Axes.Y -> this.y
|
||||
Axes.Z -> this.z
|
||||
}
|
||||
}
|
||||
|
||||
operator fun Vec3i.get(axis: Axes): Int {
|
||||
operator fun <T : Number> Vec3t<T>.get(axis: Axes): T {
|
||||
return when (axis) {
|
||||
Axes.X -> this.x
|
||||
Axes.Y -> this.y
|
||||
|
Loading…
x
Reference in New Issue
Block a user