mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-15 10:25:06 -04:00
save block display
This commit is contained in:
parent
7a2c29b524
commit
88eeac3e09
@ -73,6 +73,11 @@ open class BlockFeature(
|
||||
override fun draw(mesh: BlockMesh) {
|
||||
renderer.renderer.context.system.reset(faceCulling = false)
|
||||
val shader = renderer.renderer.features.block.shader
|
||||
draw(mesh, shader)
|
||||
}
|
||||
|
||||
protected open fun draw(mesh: BlockMesh, shader: BlockShader) {
|
||||
shader.use()
|
||||
shader.matrix = matrix
|
||||
shader.tint = renderer.light.value
|
||||
super.draw(mesh)
|
||||
|
@ -136,7 +136,7 @@ data class SingleBlockStateApply(
|
||||
element.bake(bakedFaces, properties)
|
||||
}
|
||||
|
||||
return BakedModel(bakedFaces.compact(), properties.compactProperties(), this.particle)
|
||||
return BakedModel(bakedFaces.compact(), properties.compactProperties(), model.display, this.particle)
|
||||
}
|
||||
|
||||
private fun Vec2.applyRotation(axis: Axes, data: FaceVertexData) {
|
||||
|
@ -23,12 +23,15 @@ import de.bixilon.minosoft.gui.rendering.chunk.mesh.BlockVertexConsumer
|
||||
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.cull.FaceCulling
|
||||
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.cull.side.SideProperties
|
||||
import de.bixilon.minosoft.gui.rendering.models.block.state.render.BlockRender
|
||||
import de.bixilon.minosoft.gui.rendering.models.raw.display.DisplayPositions
|
||||
import de.bixilon.minosoft.gui.rendering.models.raw.display.ModelDisplay
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.Texture
|
||||
import java.util.*
|
||||
|
||||
class BakedModel(
|
||||
val faces: Array<Array<BakedFace>>,
|
||||
val properties: Array<SideProperties?>,
|
||||
val display: Map<DisplayPositions, ModelDisplay>?,
|
||||
val particle: Texture?,
|
||||
) : BlockRender {
|
||||
|
||||
@ -71,4 +74,8 @@ class BakedModel(
|
||||
|
||||
override fun render(mesh: BlockVertexConsumer, state: BlockState, tints: IntArray?) = render(mesh, tints)
|
||||
override fun render(mesh: BlockVertexConsumer, stack: ItemStack, tints: IntArray?) = render(mesh, tints)
|
||||
|
||||
override fun getDisplay(position: DisplayPositions): ModelDisplay? {
|
||||
return this.display?.get(position)
|
||||
}
|
||||
}
|
||||
|
@ -25,6 +25,8 @@ import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
|
||||
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.cull.side.SideProperties
|
||||
import de.bixilon.minosoft.gui.rendering.models.raw.display.DisplayPositions
|
||||
import de.bixilon.minosoft.gui.rendering.models.raw.display.ModelDisplay
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.Texture
|
||||
import java.util.*
|
||||
|
||||
@ -54,6 +56,10 @@ interface PickedBlockRender : BlockRender {
|
||||
return default?.getProperties(direction) // both models should have the same properties
|
||||
}
|
||||
|
||||
override fun getDisplay(position: DisplayPositions): ModelDisplay? {
|
||||
return default?.getDisplay(position)
|
||||
}
|
||||
|
||||
override fun getParticleTexture(random: Random?, position: Vec3i): Texture? {
|
||||
return default?.getParticleTexture(random, position)
|
||||
}
|
||||
|
@ -28,6 +28,8 @@ import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
|
||||
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.BakedModel
|
||||
import de.bixilon.minosoft.gui.rendering.models.block.state.baked.cull.side.SideProperties
|
||||
import de.bixilon.minosoft.gui.rendering.models.raw.display.DisplayPositions
|
||||
import de.bixilon.minosoft.gui.rendering.models.raw.display.ModelDisplay
|
||||
import de.bixilon.minosoft.gui.rendering.system.base.texture.texture.Texture
|
||||
import java.util.*
|
||||
import kotlin.math.abs
|
||||
@ -78,6 +80,10 @@ class WeightedBlockRender(
|
||||
models.first().model.render(mesh, stack, tints)
|
||||
}
|
||||
|
||||
override fun getDisplay(position: DisplayPositions): ModelDisplay? {
|
||||
return models.first().model.getDisplay(position)
|
||||
}
|
||||
|
||||
|
||||
data class WeightedEntry(
|
||||
val weight: Int,
|
||||
|
@ -14,7 +14,6 @@
|
||||
package de.bixilon.minosoft.gui.rendering.models.item
|
||||
|
||||
import de.bixilon.kotlinglm.vec2.Vec2
|
||||
import de.bixilon.kotlinglm.vec3.Vec3
|
||||
import de.bixilon.minosoft.data.container.stack.ItemStack
|
||||
import de.bixilon.minosoft.gui.rendering.chunk.mesh.BlockVertexConsumer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.GUIRenderer
|
||||
@ -22,15 +21,12 @@ import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexConsumer
|
||||
import de.bixilon.minosoft.gui.rendering.gui.mesh.GUIVertexOptions
|
||||
import de.bixilon.minosoft.gui.rendering.models.raw.display.DisplayPositions
|
||||
import de.bixilon.minosoft.gui.rendering.models.raw.display.ModelDisplay
|
||||
import de.bixilon.minosoft.gui.rendering.util.vec.vec3.Vec3Util.rad
|
||||
|
||||
interface ItemRender {
|
||||
|
||||
fun render(gui: GUIRenderer, offset: Vec2, consumer: GUIVertexConsumer, options: GUIVertexOptions?, size: Vec2, stack: ItemStack, tints: IntArray?)
|
||||
fun render(mesh: BlockVertexConsumer, stack: ItemStack, tints: IntArray?)
|
||||
|
||||
fun getDisplay(position: DisplayPositions): ModelDisplay? = when (position) { // TODO: remove hardcoded value
|
||||
DisplayPositions.GUI -> ModelDisplay(Vec3(30, 225, 0).rad, scale = Vec3(0.625f))
|
||||
else -> null
|
||||
}
|
||||
// TODO: is that really a property of ItemRender? not BlockRender
|
||||
fun getDisplay(position: DisplayPositions): ModelDisplay? = null
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user