Ещё больше прибираемся
This commit is contained in:
parent
d8c1d9dab8
commit
819d188e2a
@ -10,7 +10,7 @@ import ru.dbotthepony.kstarbound.client.gl.vertex.StatefulVertexBuilder
|
|||||||
import ru.dbotthepony.kstarbound.client.gl.vertex.quad
|
import ru.dbotthepony.kstarbound.client.gl.vertex.quad
|
||||||
import ru.dbotthepony.kstarbound.client.gl.vertex.shadowLine
|
import ru.dbotthepony.kstarbound.client.gl.vertex.shadowLine
|
||||||
import ru.dbotthepony.kstarbound.client.render.ConfiguredStaticMesh
|
import ru.dbotthepony.kstarbound.client.render.ConfiguredStaticMesh
|
||||||
import ru.dbotthepony.kstarbound.client.render.EntityRenderer
|
import ru.dbotthepony.kstarbound.client.render.entity.EntityRenderer
|
||||||
import ru.dbotthepony.kstarbound.client.render.ILayeredRenderer
|
import ru.dbotthepony.kstarbound.client.render.ILayeredRenderer
|
||||||
import ru.dbotthepony.kstarbound.client.render.GPULightRenderer
|
import ru.dbotthepony.kstarbound.client.render.GPULightRenderer
|
||||||
import ru.dbotthepony.kstarbound.client.render.TileLayerList
|
import ru.dbotthepony.kstarbound.client.render.TileLayerList
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package ru.dbotthepony.kstarbound.client.render.entity
|
package ru.dbotthepony.kstarbound.client.render.entity
|
||||||
|
|
||||||
|
import it.unimi.dsi.fastutil.objects.Reference2ObjectOpenHashMap
|
||||||
import ru.dbotthepony.kstarbound.client.ClientChunk
|
import ru.dbotthepony.kstarbound.client.ClientChunk
|
||||||
import ru.dbotthepony.kstarbound.client.gl.GLStateTracker
|
import ru.dbotthepony.kstarbound.client.gl.GLStateTracker
|
||||||
import ru.dbotthepony.kstarbound.client.render.entity.ItemRenderer
|
import ru.dbotthepony.kstarbound.client.render.entity.ItemRenderer
|
||||||
@ -11,12 +12,6 @@ import ru.dbotthepony.kvector.matrix.Matrix4fStack
|
|||||||
import ru.dbotthepony.kvector.vector.ndouble.Vector2d
|
import ru.dbotthepony.kvector.vector.ndouble.Vector2d
|
||||||
import java.io.Closeable
|
import java.io.Closeable
|
||||||
|
|
||||||
/**
|
|
||||||
* Pseudo Z position for entities, for them to appear behind tile geometry,
|
|
||||||
* but in front of background walls geometry
|
|
||||||
*/
|
|
||||||
const val Z_LEVEL_ENTITIES = 30000
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Базовый класс, отвечающий за отрисовку определённого ентити в мире
|
* Базовый класс, отвечающий за отрисовку определённого ентити в мире
|
||||||
*
|
*
|
||||||
@ -35,19 +30,34 @@ open class EntityRenderer(val state: GLStateTracker, val entity: Entity, open va
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
open val layer: Int = Z_LEVEL_ENTITIES
|
open val layer: Int get() = Z_LEVEL_ENTITIES
|
||||||
|
|
||||||
override fun close() {
|
override fun close() {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
/**
|
||||||
|
* Pseudo Z position for entities, for them to appear behind tile geometry,
|
||||||
|
* but in front of background walls geometry
|
||||||
|
*/
|
||||||
|
const val Z_LEVEL_ENTITIES = 30000
|
||||||
|
|
||||||
|
private val renderers = Reference2ObjectOpenHashMap<Class<*>, (state: GLStateTracker, entity: Entity, chunk: ClientChunk?) -> EntityRenderer>()
|
||||||
|
|
||||||
|
@Suppress("unchecked_cast")
|
||||||
|
fun <T : Entity> registerRenderer(clazz: Class<T>, renderer: (state: GLStateTracker, entity: T, chunk: ClientChunk?) -> EntityRenderer) {
|
||||||
|
check(renderers.put(clazz, renderer as (state: GLStateTracker, entity: Entity, chunk: ClientChunk?) -> EntityRenderer) == null) { "Already has renderer for ${clazz.canonicalName}!" }
|
||||||
|
}
|
||||||
|
|
||||||
fun getRender(state: GLStateTracker, entity: Entity, chunk: ClientChunk? = null): EntityRenderer {
|
fun getRender(state: GLStateTracker, entity: Entity, chunk: ClientChunk? = null): EntityRenderer {
|
||||||
return when (entity) {
|
val factory = renderers[entity::class.java] ?: return EntityRenderer(state, entity, chunk)
|
||||||
is Projectile -> ProjectileRenderer(state, entity, chunk)
|
return factory.invoke(state, entity, chunk)
|
||||||
is ItemEntity -> ItemRenderer(state, entity, chunk)
|
}
|
||||||
else -> EntityRenderer(state, entity, chunk)
|
|
||||||
}
|
init {
|
||||||
|
registerRenderer(Projectile::class.java, ::ProjectileRenderer)
|
||||||
|
registerRenderer(ItemEntity::class.java, ::ItemRenderer)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,7 +6,6 @@ import ru.dbotthepony.kstarbound.client.ClientChunk
|
|||||||
import ru.dbotthepony.kstarbound.client.gl.GLStateTracker
|
import ru.dbotthepony.kstarbound.client.gl.GLStateTracker
|
||||||
import ru.dbotthepony.kstarbound.client.gl.vertex.QuadTransformers
|
import ru.dbotthepony.kstarbound.client.gl.vertex.QuadTransformers
|
||||||
import ru.dbotthepony.kstarbound.client.gl.vertex.quadRotatedZ
|
import ru.dbotthepony.kstarbound.client.gl.vertex.quadRotatedZ
|
||||||
import ru.dbotthepony.kstarbound.client.render.EntityRenderer
|
|
||||||
import ru.dbotthepony.kstarbound.world.entities.ItemEntity
|
import ru.dbotthepony.kstarbound.world.entities.ItemEntity
|
||||||
import ru.dbotthepony.kvector.matrix.Matrix4fStack
|
import ru.dbotthepony.kvector.matrix.Matrix4fStack
|
||||||
|
|
||||||
|
@ -5,7 +5,6 @@ import ru.dbotthepony.kstarbound.client.ClientChunk
|
|||||||
import ru.dbotthepony.kstarbound.client.gl.GLStateTracker
|
import ru.dbotthepony.kstarbound.client.gl.GLStateTracker
|
||||||
import ru.dbotthepony.kstarbound.client.gl.vertex.QuadTransformers
|
import ru.dbotthepony.kstarbound.client.gl.vertex.QuadTransformers
|
||||||
import ru.dbotthepony.kstarbound.client.gl.vertex.quadRotatedZ
|
import ru.dbotthepony.kstarbound.client.gl.vertex.quadRotatedZ
|
||||||
import ru.dbotthepony.kstarbound.client.render.EntityRenderer
|
|
||||||
import ru.dbotthepony.kstarbound.client.render.FrameSetAnimator
|
import ru.dbotthepony.kstarbound.client.render.FrameSetAnimator
|
||||||
import ru.dbotthepony.kstarbound.world.entities.projectile.Projectile
|
import ru.dbotthepony.kstarbound.world.entities.projectile.Projectile
|
||||||
import ru.dbotthepony.kvector.matrix.Matrix4fStack
|
import ru.dbotthepony.kvector.matrix.Matrix4fStack
|
||||||
|
Loading…
Reference in New Issue
Block a user