Skip to content

Commit 50f69cc

Browse files
committed
Mat4(buffer, offset)
1 parent 60d835b commit 50f69cc

File tree

1 file changed

+29
-5
lines changed

1 file changed

+29
-5
lines changed

src/main/kotlin/glm_/mat4x4/Mat4.kt

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package glm_.mat4x4
22

33
import glm_.*
4-
import glm_.glm.determinant
54
import glm_.glm.inverse
65
import glm_.glm.transpose
76
import glm_.mat2x2.Mat2x2t
@@ -79,6 +78,24 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
7978
list.elementAt(index + 11)!!.toFloat, list.elementAt(index + 12)!!.toFloat, list.elementAt(index + 13)!!.toFloat,
8079
list.elementAt(index + 14)!!.toFloat, list.elementAt(index + 15)!!.toFloat)
8180

81+
constructor(buffer: ByteBuffer, offset: Int) : this(
82+
buffer.getFloat(offset),
83+
buffer.getFloat(offset + Float.BYTES),
84+
buffer.getFloat(offset + Float.BYTES * 2),
85+
buffer.getFloat(offset + Float.BYTES * 3),
86+
buffer.getFloat(offset + Float.BYTES * 4),
87+
buffer.getFloat(offset + Float.BYTES * 5),
88+
buffer.getFloat(offset + Float.BYTES * 6),
89+
buffer.getFloat(offset + Float.BYTES * 7),
90+
buffer.getFloat(offset + Float.BYTES * 8),
91+
buffer.getFloat(offset + Float.BYTES * 9),
92+
buffer.getFloat(offset + Float.BYTES * 10),
93+
buffer.getFloat(offset + Float.BYTES * 11),
94+
buffer.getFloat(offset + Float.BYTES * 12),
95+
buffer.getFloat(offset + Float.BYTES * 13),
96+
buffer.getFloat(offset + Float.BYTES * 14),
97+
buffer.getFloat(offset + Float.BYTES * 15))
98+
8299
// -- Matrix conversions --
83100

84101
constructor(mat2x2: Mat2x2t<*>) : this(mutableListOf(
@@ -355,6 +372,7 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
355372
infix operator fun plusAssign(b: Float) {
356373
plus(this, this, b)
357374
}
375+
358376
infix operator fun plusAssign(b: Mat4) {
359377
plus(this, this, b)
360378
}
@@ -369,6 +387,7 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
369387
infix operator fun minusAssign(b: Float) {
370388
minus(this, this, b)
371389
}
390+
372391
infix operator fun minusAssign(b: Mat4) {
373392
minus(this, this, b)
374393
}
@@ -393,9 +412,11 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
393412
infix operator fun timesAssign(b: Float) {
394413
times(this, this, b)
395414
}
415+
396416
infix operator fun timesAssign(b: Vec4) {
397417
times(b, this, b)
398418
}
419+
399420
infix operator fun timesAssign(b: Mat4) {
400421
times(this, this, b)
401422
}
@@ -410,6 +431,7 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
410431
infix operator fun divAssign(b: Float) {
411432
div(this, this, b)
412433
}
434+
413435
infix operator fun divAssign(b: Mat4) {
414436
div(this, this, b)
415437
}
@@ -432,6 +454,7 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
432454

433455
// TODO others
434456
infix fun scale(scale: Vec3) = scale(scale.x, scale.y, scale.z, Mat4())
457+
435458
fun scale(scale: Vec3, res: Mat4) = scale(scale.x, scale.y, scale.z, res)
436459

437460
infix fun scale(scale: Float) = scale(scale, scale, scale, Mat4())
@@ -558,10 +581,11 @@ data class Mat4(override var value: MutableList<Vec4>) : Mat4x4t<Vec4>(value) {
558581
}
559582

560583

561-
val isIdentity get() = this[0][0] == 1f && this[1][0] == 0f && this[2][0] == 0f && this[3][0] == 0f &&
562-
this[0][1] == 0f && this[1][1] == 1f && this[2][1] == 0f && this[3][1] == 0f &&
563-
this[0][2] == 0f && this[1][2] == 0f && this[2][2] == 1f && this[3][2] == 0f &&
564-
this[0][3] == 0f && this[1][3] == 0f && this[2][3] == 0f && this[3][3] == 1f
584+
val isIdentity
585+
get() = this[0][0] == 1f && this[1][0] == 0f && this[2][0] == 0f && this[3][0] == 0f &&
586+
this[0][1] == 0f && this[1][1] == 1f && this[2][1] == 0f && this[3][1] == 0f &&
587+
this[0][2] == 0f && this[1][2] == 0f && this[2][2] == 1f && this[3][2] == 0f &&
588+
this[0][3] == 0f && this[1][3] == 0f && this[2][3] == 0f && this[3][3] == 1f
565589

566590

567591
override fun toString() = super.toString()

0 commit comments

Comments
 (0)