Ещё больше прибираемся
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.shadowLine
|
||||
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.GPULightRenderer
|
||||
import ru.dbotthepony.kstarbound.client.render.TileLayerList
|
||||
|
@ -1,5 +1,6 @@
|
||||
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.gl.GLStateTracker
|
||||
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 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() {
|
||||
|
||||
}
|
||||
|
||||
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 {
|
||||
return when (entity) {
|
||||
is Projectile -> ProjectileRenderer(state, entity, chunk)
|
||||
is ItemEntity -> ItemRenderer(state, entity, chunk)
|
||||
else -> EntityRenderer(state, entity, chunk)
|
||||
}
|
||||
val factory = renderers[entity::class.java] ?: return EntityRenderer(state, entity, chunk)
|
||||
return factory.invoke(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.vertex.QuadTransformers
|
||||
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.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.vertex.QuadTransformers
|
||||
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.world.entities.projectile.Projectile
|
||||
import ru.dbotthepony.kvector.matrix.Matrix4fStack
|
||||
|
Loading…
Reference in New Issue
Block a user