@@ -24,25 +24,29 @@ import com.lambda.module.modules.client.RenderSettings
2424import org.lwjgl.opengl.GL11C
2525import org.lwjgl.opengl.GL45C.*
2626import java.awt.image.BufferedImage
27+ import java.lang.IllegalStateException
28+ import java.nio.ByteBuffer
2729
2830/**
29- * Represents a texture that can be uploaded and bound to the graphics pipeline.
31+ * Represents a texture that can be uploaded and bound to the graphics pipeline
3032 * Supports mipmap generation and LOD (Level of Detail) configuration
3133 *
3234 * @param image Optional initial image to upload to the texture
35+ * @param format The format of the image passed in
3336 * @param levels Number of mipmap levels to generate for the texture
3437 * @param forceConsistency Flag to enforce consistency when updating the texture. If true, attempts to update
3538 * the texture after initialization will throw an exception
3639 */
3740open class Texture(
3841 image: BufferedImage?,
42+ val format: Int = GL_RGBA,
3943 private val levels: Int = 4,
4044 private val forceConsistency: Boolean = false,
4145) {
4246 /**
4347 * Indicates whether there is an initial texture or not
4448 */
45- var initialized: Boolean = false; private set
49+ var initialized: Boolean = false; protected set
4650 val id = glGenTextures()
4751
4852 var width = -1; protected set
@@ -63,6 +67,8 @@ open class Texture(
6367 * @param offset The mipmap level to upload the image to
6468 */
6569 open fun upload(image: BufferedImage, offset: Int = 0) {
70+ if (forceConsistency && initialized) throw IllegalStateException("Client tried to update a texture, but the enforce consistency flag was present")
71+
6672 // Store level_base +1 through `level` images and generate
6773 // mipmaps from them
6874 setupLOD(levels = levels)
@@ -79,10 +85,7 @@ open class Texture(
7985
8086 open fun update(image: BufferedImage, offset: Int = 0) {
8187 if (!initialized) return upload(image, offset)
82-
83- check(forceConsistency && initialized) {
84- "Client tried to update a texture, but the enforce consistency flag was present"
85- }
88+ if (forceConsistency && initialized) throw IllegalStateException("Client tried to update a texture, but the enforce consistency flag was present")
8689
8790 check(image.width + image.height > this.width + this.height && initialized) {
8891 "Client tried to update a texture with more data than allowed" +
0 commit comments