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