mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-12 17:07:55 -04:00
wip hitbox rendering
This commit is contained in:
parent
725d569016
commit
0e094609ed
@ -33,7 +33,12 @@ abstract class EntityRenderFeature(val renderer: EntityRenderer<*>) : Comparable
|
||||
|
||||
abstract fun draw()
|
||||
|
||||
open fun compareByDistance(other: EntityRenderFeature): Int = 0
|
||||
open fun compareByDistance(other: EntityRenderFeature): Int {
|
||||
// TODO: optimize, cache
|
||||
val a = (renderer.info.eyePosition - renderer.renderer.context.camera.view.view.eyePosition).length2()
|
||||
val b = (renderer.info.eyePosition - renderer.renderer.context.camera.view.view.eyePosition).length2()
|
||||
return a.compareTo(b)
|
||||
}
|
||||
|
||||
override fun compareTo(other: EntityRenderFeature): Int {
|
||||
var compare = priority.compareTo(other.priority)
|
||||
|
@ -13,12 +13,37 @@
|
||||
|
||||
package de.bixilon.minosoft.gui.rendering.entities.hitbox
|
||||
|
||||
import de.bixilon.minosoft.data.text.formatting.color.ChatColors
|
||||
import de.bixilon.minosoft.gui.rendering.entities.feature.EntityRenderFeature
|
||||
import de.bixilon.minosoft.gui.rendering.entities.renderer.EntityRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.LineMesh
|
||||
import de.bixilon.minosoft.gui.rendering.util.mesh.Mesh
|
||||
|
||||
class HitboxFeature(renderer: EntityRenderer<*>) : EntityRenderFeature(renderer) {
|
||||
private val shader = renderer.renderer.context.shaders.genericColorShader
|
||||
private var mesh: LineMesh? = null
|
||||
|
||||
override fun reset() {
|
||||
unload()
|
||||
}
|
||||
|
||||
override fun update(millis: Long) {
|
||||
unload()
|
||||
val mesh = LineMesh(renderer.renderer.context)
|
||||
mesh.drawLazyAABB(renderer.entity.renderInfo.cameraAABB, renderer.entity.hitboxColor ?: ChatColors.WHITE)
|
||||
}
|
||||
|
||||
|
||||
override fun draw() {
|
||||
TODO("Not yet implemented")
|
||||
val mesh = this.mesh ?: return
|
||||
if (mesh.state != Mesh.MeshStates.LOADED) mesh.load()
|
||||
shader.use()
|
||||
mesh.draw()
|
||||
}
|
||||
|
||||
override fun unload() {
|
||||
val mesh = this.mesh ?: return
|
||||
this.mesh = null
|
||||
renderer.renderer.queue += { mesh.unload() }
|
||||
}
|
||||
}
|
||||
|
@ -26,6 +26,7 @@ abstract class EntityRenderer<E : Entity>(
|
||||
) {
|
||||
val features = FeatureManager(this)
|
||||
val visibility = EntityVisibility(this)
|
||||
val info = entity.renderInfo
|
||||
|
||||
val hitbox = HitboxFeature(this).register()
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user