[WIP] major rewrite, grass and leaves working already
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
package mods.betterfoliage.render.pipeline
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack
|
||||
import mods.betterfoliage.render.ISpecialRenderModel
|
||||
import mods.betterfoliage.render.lighting.ForgeVertexLighter
|
||||
import mods.betterfoliage.render.lighting.ForgeVertexLighterAccess
|
||||
import mods.betterfoliage.render.old.HalfBakedQuad
|
||||
import mods.betterfoliage.util.Int3
|
||||
import mods.betterfoliage.util.directionsAndNull
|
||||
import mods.betterfoliage.util.get
|
||||
import mods.octarinecore.VertexLighterFlat_blockInfo
|
||||
import net.minecraft.block.BlockState
|
||||
import net.minecraft.client.renderer.model.IBakedModel
|
||||
import net.minecraft.util.math.BlockPos
|
||||
import net.minecraft.world.ILightReader
|
||||
import net.minecraftforge.client.model.data.IModelData
|
||||
import net.minecraftforge.client.model.pipeline.VertexLighterFlat
|
||||
import java.util.Random
|
||||
|
||||
class RenderCtxForge(
|
||||
world: ILightReader,
|
||||
pos: BlockPos,
|
||||
val lighter: VertexLighterFlat,
|
||||
matrixStack: MatrixStack,
|
||||
checkSides: Boolean,
|
||||
random: Random,
|
||||
modelData: IModelData
|
||||
): RenderCtxBase(world, pos, matrixStack, checkSides, random, modelData), ForgeVertexLighterAccess {
|
||||
|
||||
val blockInfo = lighter[VertexLighterFlat_blockInfo]
|
||||
override var vertexLighter: ForgeVertexLighter
|
||||
get() = (lighter as ForgeVertexLighterAccess).vertexLighter
|
||||
set(value) { (lighter as ForgeVertexLighterAccess).vertexLighter = value }
|
||||
|
||||
override fun renderQuad(quad: HalfBakedQuad) { quad.baked.pipe(lighter) }
|
||||
|
||||
override fun renderFallback(model: IBakedModel) {
|
||||
directionsAndNull.forEach { face ->
|
||||
model.getQuads(state, null, random, modelData).forEach { quad ->
|
||||
if (quad.face.shouldRender()) {
|
||||
quad.pipe(lighter)
|
||||
hasRendered = true
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
override fun renderMasquerade(offset: Int3, func: () -> Unit) {
|
||||
TODO("Not yet implemented")
|
||||
}
|
||||
|
||||
companion object {
|
||||
@JvmStatic
|
||||
fun render(
|
||||
lighter: VertexLighterFlat,
|
||||
world: ILightReader,
|
||||
model: ISpecialRenderModel,
|
||||
state: BlockState,
|
||||
pos: BlockPos,
|
||||
matrixStack: MatrixStack,
|
||||
checkSides: Boolean,
|
||||
rand: Random, seed: Long,
|
||||
modelData: IModelData
|
||||
): Boolean {
|
||||
lighter.setWorld(world)
|
||||
lighter.setState(state)
|
||||
lighter.setBlockPos(pos)
|
||||
rand.setSeed(seed)
|
||||
lighter.updateBlockInfo()
|
||||
return RenderCtxForge(world, pos, lighter, matrixStack, checkSides, rand, modelData).let {
|
||||
model.render(it, false)
|
||||
lighter.resetBlockInfo()
|
||||
it.hasRendered
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user