mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-17 11:24:56 -04:00
arm overlay: use new skin system
This commit is contained in:
parent
7a8cec05d1
commit
2e5a4c1b03
@ -27,7 +27,7 @@ import de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.Overlay
|
|||||||
import de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.OverlayFactory
|
import de.bixilon.minosoft.gui.rendering.framebuffer.world.overlay.OverlayFactory
|
||||||
import de.bixilon.minosoft.gui.rendering.models.unbaked.element.UnbakedElement.Companion.BLOCK_RESOLUTION
|
import de.bixilon.minosoft.gui.rendering.models.unbaked.element.UnbakedElement.Companion.BLOCK_RESOLUTION
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.RenderingCapabilities
|
import de.bixilon.minosoft.gui.rendering.system.base.RenderingCapabilities
|
||||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.dynamic.DynamicTexture
|
import de.bixilon.minosoft.gui.rendering.system.base.texture.skin.PlayerSkin
|
||||||
import de.bixilon.minosoft.util.KUtil.minosoft
|
import de.bixilon.minosoft.util.KUtil.minosoft
|
||||||
|
|
||||||
class ArmOverlay(private val renderWindow: RenderWindow) : Overlay {
|
class ArmOverlay(private val renderWindow: RenderWindow) : Overlay {
|
||||||
@ -36,7 +36,7 @@ class ArmOverlay(private val renderWindow: RenderWindow) : Overlay {
|
|||||||
override val render: Boolean
|
override val render: Boolean
|
||||||
get() = renderWindow.camera.view.view.renderArm && config.arm.render
|
get() = renderWindow.camera.view.view.renderArm && config.arm.render
|
||||||
private var arm = renderWindow.connection.player.mainArm // TODO: camera player entity
|
private var arm = renderWindow.connection.player.mainArm // TODO: camera player entity
|
||||||
private var skin: DynamicTexture? = null
|
private var skin: PlayerSkin? = null
|
||||||
private var model: PlayerModel? = null
|
private var model: PlayerModel? = null
|
||||||
private var mesh: ArmMesh = unsafeNull()
|
private var mesh: ArmMesh = unsafeNull()
|
||||||
private var animator: ArmAnimator? = null
|
private var animator: ArmAnimator? = null
|
||||||
@ -50,8 +50,11 @@ class ArmOverlay(private val renderWindow: RenderWindow) : Overlay {
|
|||||||
|
|
||||||
private fun updateMesh() {
|
private fun updateMesh() {
|
||||||
this.mesh = ArmMesh(renderWindow)
|
this.mesh = ArmMesh(renderWindow)
|
||||||
val skin = this.skin ?: renderWindow.textureManager.steveTexture
|
val skin = this.skin
|
||||||
this.model?.instance?.model?.model?.let { this.mesh.addArm(it, arm, skin) }
|
val model = this.model?.instance?.model?.model
|
||||||
|
if (model != null && skin != null) {
|
||||||
|
this.mesh.addArm(model, arm, skin.texture)
|
||||||
|
}
|
||||||
this.mesh.load()
|
this.mesh.load()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,12 +69,12 @@ class ArmOverlay(private val renderWindow: RenderWindow) : Overlay {
|
|||||||
val model = renderWindow.connection.player.model.nullCast<PlayerModel>()
|
val model = renderWindow.connection.player.model.nullCast<PlayerModel>()
|
||||||
this.model = model
|
this.model = model
|
||||||
this.animator = model?.let { ArmAnimator(it) }
|
this.animator = model?.let { ArmAnimator(it) }
|
||||||
val skin = model?.skin
|
val skin = model?.skin ?: return
|
||||||
if (this.skin == skin) {
|
if (this.skin == skin) {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
this.skin?.usages?.decrementAndGet()
|
this.skin?.texture?.usages?.decrementAndGet()
|
||||||
skin?.usages?.incrementAndGet()
|
skin.texture.usages.incrementAndGet()
|
||||||
this.skin = skin
|
this.skin = skin
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,7 +112,7 @@ class ArmOverlay(private val renderWindow: RenderWindow) : Overlay {
|
|||||||
updateMesh()
|
updateMesh()
|
||||||
shader.use()
|
shader.use()
|
||||||
shader.transform = calculateTransform()
|
shader.transform = calculateTransform()
|
||||||
shader.textureIndexLayer = skin.shaderId
|
shader.textureIndexLayer = skin.texture.shaderId
|
||||||
mesh.draw()
|
mesh.draw()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user