mirror of
https://github.com/MightyPirates/OpenComputers.git
synced 2025-09-17 11:15:12 -04:00
More work on screen rendering. Base is working, still needs 'front'.
This commit is contained in:
parent
1c57dc40d0
commit
c95d8ef4fd
@ -104,6 +104,7 @@ object Textures {
|
||||
val ScreenUpIndicator = L("screen/up_indicator")
|
||||
val SwitchSideOn = L("SwitchSideOn")
|
||||
|
||||
// Kill me now.
|
||||
object Screen {
|
||||
val Single = Array(
|
||||
L("screen/b"),
|
||||
@ -114,141 +115,287 @@ object Textures {
|
||||
L("screen/b2")
|
||||
)
|
||||
|
||||
val HorizontalLeft = Array(
|
||||
L("screen/bht"),
|
||||
L("screen/bht"),
|
||||
L("screen/bht2"),
|
||||
L("screen/bht2"),
|
||||
L("screen/b2"),
|
||||
L("screen/b2") // Never rendered.
|
||||
val Horizontal = Array(
|
||||
// Vertical.
|
||||
Array(
|
||||
Array(
|
||||
L("screen/bht"),
|
||||
L("screen/bht"),
|
||||
L("screen/bht2"),
|
||||
L("screen/bht2"),
|
||||
L("screen/b2"),
|
||||
L("screen/b2") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhm"),
|
||||
L("screen/bhm"),
|
||||
L("screen/bhm2"),
|
||||
L("screen/bhm2"),
|
||||
L("screen/b2"), // Never rendered.
|
||||
L("screen/b2") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhb"),
|
||||
L("screen/bhb"),
|
||||
L("screen/bhb2"),
|
||||
L("screen/bhb2"),
|
||||
L("screen/b2"), // Never rendered.
|
||||
L("screen/b2")
|
||||
)
|
||||
),
|
||||
// Horizontal.
|
||||
Array(
|
||||
Array(
|
||||
L("screen/bht2"),
|
||||
L("screen/bht2"),
|
||||
L("screen/bht"),
|
||||
L("screen/bht"),
|
||||
L("screen/b2"),
|
||||
L("screen/b2") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhm2"),
|
||||
L("screen/bhm2"),
|
||||
L("screen/bhm"),
|
||||
L("screen/bhm"),
|
||||
L("screen/b2"), // Never rendered.
|
||||
L("screen/b2") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhb2"),
|
||||
L("screen/bhb2"),
|
||||
L("screen/bhb"),
|
||||
L("screen/bhb"),
|
||||
L("screen/b2"), // Never rendered.
|
||||
L("screen/b2")
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
val HorizontalMiddle = Array(
|
||||
L("screen/bhm"),
|
||||
L("screen/bhm"),
|
||||
L("screen/bhm2"),
|
||||
L("screen/bhm2"),
|
||||
L("screen/b2"), // Never rendered.
|
||||
L("screen/b2") // Never rendered.
|
||||
val Vertical = Array(
|
||||
// Vertical.
|
||||
Array(
|
||||
Array(
|
||||
L("screen/b"), // Never rendered.
|
||||
L("screen/b"),
|
||||
L("screen/bvt"),
|
||||
L("screen/bvt"),
|
||||
L("screen/bvt"),
|
||||
L("screen/bvt")
|
||||
),
|
||||
Array(
|
||||
L("screen/b"), // Never rendered.
|
||||
L("screen/b"), // Never rendered.
|
||||
L("screen/bvm"),
|
||||
L("screen/bvm"),
|
||||
L("screen/bvm"),
|
||||
L("screen/bvm")
|
||||
),
|
||||
Array(
|
||||
L("screen/b"),
|
||||
L("screen/b"), // Never rendered.
|
||||
L("screen/bvb2"),
|
||||
L("screen/bvb2"),
|
||||
L("screen/bvb2"),
|
||||
L("screen/bvb2")
|
||||
)
|
||||
),
|
||||
// Horizontal.
|
||||
Array(
|
||||
Array(
|
||||
L("screen/b2"), // Never rendered.
|
||||
L("screen/b2"),
|
||||
L("screen/bvt"),
|
||||
L("screen/bvt"),
|
||||
L("screen/bht2"),
|
||||
L("screen/bht2")
|
||||
),
|
||||
Array(
|
||||
L("screen/b2"), // Never rendered.
|
||||
L("screen/b2"), // Never rendered.
|
||||
L("screen/bvm"),
|
||||
L("screen/bvm"),
|
||||
L("screen/bhm2"),
|
||||
L("screen/bhm2")
|
||||
),
|
||||
Array(
|
||||
L("screen/b2"),
|
||||
L("screen/b2"), // Never rendered.
|
||||
L("screen/bvb"),
|
||||
L("screen/bvb"),
|
||||
L("screen/bhb2"),
|
||||
L("screen/bhb2")
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
val HorizontalRight = Array(
|
||||
L("screen/bhb"),
|
||||
L("screen/bhb"),
|
||||
L("screen/bhb2"),
|
||||
L("screen/bhb2"),
|
||||
L("screen/b2"), // Never rendered.
|
||||
L("screen/b2")
|
||||
)
|
||||
|
||||
val VerticalTop = Array(
|
||||
L("screen/b"), // Never rendered.
|
||||
L("screen/b"),
|
||||
L("screen/bvt"),
|
||||
L("screen/bvt"),
|
||||
L("screen/bvt"),
|
||||
L("screen/bvt")
|
||||
)
|
||||
|
||||
val VerticalMiddle = Array(
|
||||
L("screen/b"), // Never rendered.
|
||||
L("screen/b"), // Never rendered.
|
||||
L("screen/bvm"),
|
||||
L("screen/bvm"),
|
||||
L("screen/bvm"),
|
||||
L("screen/bvm")
|
||||
)
|
||||
|
||||
val VerticalBottom = Array(
|
||||
L("screen/b"),
|
||||
L("screen/b"), // Never rendered.
|
||||
L("screen/bvb2"),
|
||||
L("screen/bvb2"),
|
||||
L("screen/bvb2"),
|
||||
L("screen/bvb2")
|
||||
)
|
||||
|
||||
// TODO Horizontal one, too (for alternative sides).
|
||||
|
||||
val MultiTopLeft = Array(
|
||||
L("screen/bht"), // Never rendered.
|
||||
L("screen/bht"),
|
||||
L("screen/btl"),
|
||||
L("screen/btl"),
|
||||
L("screen/bvt"),
|
||||
L("screen/bvt") // Never rendered.
|
||||
)
|
||||
|
||||
val MultiTopMiddle = Array(
|
||||
L("screen/bhm"), // Never rendered.
|
||||
L("screen/bhm"),
|
||||
L("screen/btm"),
|
||||
L("screen/btm"),
|
||||
L("screen/bvt"),
|
||||
L("screen/bvt") // Never rendered.
|
||||
)
|
||||
|
||||
val MultiTopRight = Array(
|
||||
L("screen/bhb"), // Never rendered.
|
||||
L("screen/bhb"), // Never rendered.
|
||||
L("screen/btr"),
|
||||
L("screen/btr"),
|
||||
L("screen/bvt"), // Never rendered.
|
||||
L("screen/bvt") // Never rendered.
|
||||
)
|
||||
|
||||
val MultiMiddleLeft = Array(
|
||||
L("screen/bht"), // Never rendered.
|
||||
L("screen/bht"), // Never rendered.
|
||||
L("screen/bml"),
|
||||
L("screen/bml"),
|
||||
L("screen/bvm"), // Never rendered.
|
||||
L("screen/bvm") // Never rendered.
|
||||
)
|
||||
|
||||
val MultiMiddleMiddle = Array(
|
||||
L("screen/bhm"), // Never rendered.
|
||||
L("screen/bhm"), // Never rendered.
|
||||
L("screen/bmm"),
|
||||
L("screen/bmm"),
|
||||
L("screen/bvt"), // Never rendered.
|
||||
L("screen/bvt") // Never rendered.
|
||||
)
|
||||
|
||||
val MultiMiddleRight = Array(
|
||||
L("screen/bhb"),
|
||||
L("screen/bhb"), // Never rendered.
|
||||
L("screen/bmr"),
|
||||
L("screen/bmr"),
|
||||
L("screen/bvm"), // Never rendered.
|
||||
L("screen/bvm")
|
||||
)
|
||||
|
||||
val MultiBottomLeft = Array(
|
||||
L("screen/bht"), // Never rendered.
|
||||
L("screen/bht"),
|
||||
L("screen/bbl2"),
|
||||
L("screen/bbl2"),
|
||||
L("screen/bvb2"),
|
||||
L("screen/bvb2") // Never rendered.
|
||||
)
|
||||
|
||||
val MultiBottomMiddle = Array(
|
||||
L("screen/bhm"),
|
||||
L("screen/bhm"), // Never rendered.
|
||||
L("screen/bbm2"),
|
||||
L("screen/bbm2"),
|
||||
L("screen/bvb2"),
|
||||
L("screen/bvb2") // Never rendered.
|
||||
)
|
||||
|
||||
val MultiBottomRight = Array(
|
||||
L("screen/bhb"),
|
||||
L("screen/bhb"), // Never rendered.
|
||||
L("screen/bbr2"),
|
||||
L("screen/bbr2"),
|
||||
L("screen/bvb2"), // Never rendered.
|
||||
L("screen/bvb2")
|
||||
val Multi = Array(
|
||||
// Vertical.
|
||||
Array(
|
||||
// Top.
|
||||
Array(
|
||||
Array(
|
||||
L("screen/bht"), // Never rendered.
|
||||
L("screen/bht"),
|
||||
L("screen/btl"),
|
||||
L("screen/btl"),
|
||||
L("screen/bvt"),
|
||||
L("screen/bvt") // Never rendered.
|
||||
),Array(
|
||||
L("screen/bhm"), // Never rendered.
|
||||
L("screen/bhm"),
|
||||
L("screen/btm"),
|
||||
L("screen/btm"),
|
||||
L("screen/bvt"),
|
||||
L("screen/bvt") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhb"), // Never rendered.
|
||||
L("screen/bhb"), // Never rendered.
|
||||
L("screen/btr"),
|
||||
L("screen/btr"),
|
||||
L("screen/bvt"), // Never rendered.
|
||||
L("screen/bvt") // Never rendered.
|
||||
)
|
||||
),
|
||||
// Middle.
|
||||
Array(
|
||||
Array(
|
||||
L("screen/bht"), // Never rendered.
|
||||
L("screen/bht"), // Never rendered.
|
||||
L("screen/bml"),
|
||||
L("screen/bml"),
|
||||
L("screen/bvm"), // Never rendered.
|
||||
L("screen/bvm") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhm"), // Never rendered.
|
||||
L("screen/bhm"), // Never rendered.
|
||||
L("screen/bmm"),
|
||||
L("screen/bmm"),
|
||||
L("screen/bvt"), // Never rendered.
|
||||
L("screen/bvt") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhb"),
|
||||
L("screen/bhb"), // Never rendered.
|
||||
L("screen/bmr"),
|
||||
L("screen/bmr"),
|
||||
L("screen/bvm"), // Never rendered.
|
||||
L("screen/bvm")
|
||||
)
|
||||
),
|
||||
// Right.
|
||||
Array(
|
||||
Array(
|
||||
L("screen/bht"), // Never rendered.
|
||||
L("screen/bht"),
|
||||
L("screen/bbl2"),
|
||||
L("screen/bbl2"),
|
||||
L("screen/bvb2"),
|
||||
L("screen/bvb2") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhm"),
|
||||
L("screen/bhm"), // Never rendered.
|
||||
L("screen/bbm2"),
|
||||
L("screen/bbm2"),
|
||||
L("screen/bvb2"),
|
||||
L("screen/bvb2") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhb"),
|
||||
L("screen/bhb"), // Never rendered.
|
||||
L("screen/bbr2"),
|
||||
L("screen/bbr2"),
|
||||
L("screen/bvb2"), // Never rendered.
|
||||
L("screen/bvb2")
|
||||
)
|
||||
)
|
||||
),
|
||||
// Horizontal.
|
||||
Array(
|
||||
// Top.
|
||||
Array(
|
||||
Array(
|
||||
L("screen/bht2"), // Never rendered.
|
||||
L("screen/bht2"),
|
||||
L("screen/btl"),
|
||||
L("screen/btl"),
|
||||
L("screen/bht2"),
|
||||
L("screen/bht2") // Never rendered.
|
||||
),Array(
|
||||
L("screen/bhm2"), // Never rendered.
|
||||
L("screen/bhm2"),
|
||||
L("screen/btm"),
|
||||
L("screen/btm"),
|
||||
L("screen/bht2"),
|
||||
L("screen/bht2") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhb2"), // Never rendered.
|
||||
L("screen/bhb2"), // Never rendered.
|
||||
L("screen/btr"),
|
||||
L("screen/btr"),
|
||||
L("screen/bht2"), // Never rendered.
|
||||
L("screen/bht2") // Never rendered.
|
||||
)
|
||||
),
|
||||
// Middle.
|
||||
Array(
|
||||
Array(
|
||||
L("screen/bht2"), // Never rendered.
|
||||
L("screen/bht2"), // Never rendered.
|
||||
L("screen/bml"),
|
||||
L("screen/bml"),
|
||||
L("screen/bhm2"), // Never rendered.
|
||||
L("screen/bhm2") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhm2"), // Never rendered.
|
||||
L("screen/bhm2"), // Never rendered.
|
||||
L("screen/bmm"),
|
||||
L("screen/bmm"),
|
||||
L("screen/bht2"), // Never rendered.
|
||||
L("screen/bht2") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhb2"),
|
||||
L("screen/bhb2"), // Never rendered.
|
||||
L("screen/bmr"),
|
||||
L("screen/bmr"),
|
||||
L("screen/bhm2"), // Never rendered.
|
||||
L("screen/bhm2")
|
||||
)
|
||||
),
|
||||
// Right.
|
||||
Array(
|
||||
Array(
|
||||
L("screen/bht2"), // Never rendered.
|
||||
L("screen/bht2"),
|
||||
L("screen/bbl"),
|
||||
L("screen/bbl"),
|
||||
L("screen/bhb2"),
|
||||
L("screen/bhb2") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhm2"),
|
||||
L("screen/bhm2"), // Never rendered.
|
||||
L("screen/bbm"),
|
||||
L("screen/bbm"),
|
||||
L("screen/bhb2"),
|
||||
L("screen/bhb2") // Never rendered.
|
||||
),
|
||||
Array(
|
||||
L("screen/bhb2"),
|
||||
L("screen/bhb2"), // Never rendered.
|
||||
L("screen/bbr"),
|
||||
L("screen/bbr"),
|
||||
L("screen/bhb2"), // Never rendered.
|
||||
L("screen/bhb2")
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
// The hacks I do for namespacing...
|
||||
|
@ -6,6 +6,7 @@ import li.cil.oc.Settings
|
||||
import li.cil.oc.client.Textures
|
||||
import li.cil.oc.common.block
|
||||
import li.cil.oc.common.tileentity
|
||||
import li.cil.oc.util.Color
|
||||
import net.minecraft.block.Block
|
||||
import net.minecraft.block.state.IBlockState
|
||||
import net.minecraft.client.Minecraft
|
||||
@ -13,6 +14,7 @@ import net.minecraft.client.renderer.block.model.BakedQuad
|
||||
import net.minecraft.client.renderer.block.model.ItemCameraTransforms
|
||||
import net.minecraft.client.renderer.texture.TextureAtlasSprite
|
||||
import net.minecraft.client.resources.model.ModelResourceLocation
|
||||
import net.minecraft.item.EnumDyeColor
|
||||
import net.minecraft.util.EnumFacing
|
||||
import net.minecraft.util.RegistrySimple
|
||||
import net.minecraftforge.client.event.ModelBakeEvent
|
||||
@ -37,11 +39,9 @@ object ExtendedBlockModel {
|
||||
@SubscribeEvent
|
||||
def onModelBake(e: ModelBakeEvent): Unit = {
|
||||
val registry = e.modelRegistry.asInstanceOf[RegistrySimple]
|
||||
val screenPattern = "^" + Settings.resourceDomain + ":screen\\d#.*"
|
||||
registry.getKeys.collect {
|
||||
case location: ModelResourceLocation =>
|
||||
if (location.toString.startsWith(Settings.resourceDomain + ":screen1#")) {
|
||||
registry.putObject(location, ScreenRenderer)
|
||||
}
|
||||
case location: ModelResourceLocation if location.toString.matches(screenPattern) => registry.putObject(location, ScreenRenderer)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -89,64 +89,76 @@ class ScreenRenderer(val state: IExtendedBlockState) extends SmartBlockModelBase
|
||||
override def getFaceQuads(side: EnumFacing) = {
|
||||
state.getValue(block.Screen.Tile) match {
|
||||
case screen: tileentity.Screen =>
|
||||
// TODO Translate facing to "local" coordinate system of our default texture layout.
|
||||
val facing = screen.toLocal(side)
|
||||
|
||||
val textures = if (screen.width == 1 && screen.height == 1) {
|
||||
Textures.Block.Screen.Single
|
||||
}
|
||||
else if (screen.width == 1) {
|
||||
val (_, y) = screen.localPosition
|
||||
if (y == 0) Textures.Block.Screen.VerticalBottom
|
||||
else if (y == screen.height - 1) Textures.Block.Screen.VerticalTop
|
||||
else Textures.Block.Screen.VerticalMiddle
|
||||
}
|
||||
else if (screen.height == 1) {
|
||||
val (x, _) = screen.localPosition
|
||||
if (x == 0) Textures.Block.Screen.HorizontalRight
|
||||
else if (x == screen.width - 1) Textures.Block.Screen.HorizontalLeft
|
||||
else Textures.Block.Screen.HorizontalMiddle
|
||||
val (x, y) = screen.localPosition
|
||||
val pitch = if (screen.pitch == EnumFacing.NORTH) 0 else 1
|
||||
var rx = multiCoords(x, screen.width - 1)
|
||||
var ry = multiCoords(y, screen.height - 1)
|
||||
var rotation = 0
|
||||
|
||||
if (side == EnumFacing.UP) {
|
||||
rotation += screen.yaw.getHorizontalIndex
|
||||
ry = 2 - ry
|
||||
}
|
||||
else {
|
||||
val (x, y) = screen.localPosition
|
||||
// TODO Differentiate horizontal and vertical multiscreens.
|
||||
if (x == 0)
|
||||
if (y == 0) Textures.Block.Screen.MultiBottomRight
|
||||
else if (y == screen.height - 1) Textures.Block.Screen.MultiTopRight
|
||||
else Textures.Block.Screen.MultiMiddleRight
|
||||
else if (x == screen.width - 1)
|
||||
if (y == 0) Textures.Block.Screen.MultiBottomLeft
|
||||
else if (y == screen.height - 1) Textures.Block.Screen.MultiTopLeft
|
||||
else Textures.Block.Screen.MultiMiddleLeft
|
||||
else
|
||||
if (y == 0) Textures.Block.Screen.MultiBottomMiddle
|
||||
else if (y == screen.height - 1) Textures.Block.Screen.MultiTopMiddle
|
||||
else Textures.Block.Screen.MultiMiddleMiddle
|
||||
if (side == EnumFacing.DOWN) {
|
||||
if (screen.yaw.getAxis == EnumFacing.Axis.X) {
|
||||
rotation += 1
|
||||
rx = 2 - rx
|
||||
}
|
||||
if (screen.yaw.getAxisDirection.getOffset < 0)
|
||||
ry = 2 - ry
|
||||
}
|
||||
else if (screen.yaw.getAxisDirection.getOffset > 0 && pitch == 1)
|
||||
ry = 2 - ry
|
||||
if (screen.yaw == EnumFacing.NORTH || screen.yaw == EnumFacing.EAST)
|
||||
rx = 2 - rx
|
||||
}
|
||||
|
||||
List(new BakedQuad(makeQuad(side, Textures.Block.getSprite(textures(facing.ordinal()))), -1, side))
|
||||
val textures =
|
||||
if (screen.width == 1 && screen.height == 1)
|
||||
Textures.Block.Screen.Single
|
||||
else if (screen.width == 1)
|
||||
Textures.Block.Screen.Vertical(pitch)(ry)
|
||||
else if (screen.height == 1)
|
||||
Textures.Block.Screen.Horizontal(pitch)(rx)
|
||||
else
|
||||
Textures.Block.Screen.Multi(pitch)(ry)(rx)
|
||||
|
||||
List(new BakedQuad(makeQuad(side, Textures.Block.getSprite(textures(facing.ordinal())), screen.color, rotation), -1, side))
|
||||
case _ => super.getFaceQuads(side)
|
||||
}
|
||||
}
|
||||
|
||||
private def makeQuad(facing: EnumFacing, texture: TextureAtlasSprite) = {
|
||||
private def multiCoords(value: Int, high: Int) = if (value == 0) 2 else if (value == high) 0 else 1
|
||||
|
||||
private def makeQuad(facing: EnumFacing, texture: TextureAtlasSprite, color: EnumDyeColor, rotation: Int) = {
|
||||
val face = faces(facing.getIndex)
|
||||
face.map(data => {
|
||||
val verts = face.map(f => (f._1, f._2, f._3))
|
||||
val coords = face.map(f => (f._4, f._5))
|
||||
(verts, coords.drop(rotation) ++ coords.take(rotation)).zipped.
|
||||
map((v, c) => (v._1, v._2, v._3, c._1, c._2)).
|
||||
map(data => {
|
||||
val (x, y, z, u, v) = data
|
||||
rawData(x, y, z, texture, u, v)
|
||||
rawData(x, y, z, texture, u, v, Color.rgbValues(color))
|
||||
}).flatten
|
||||
}
|
||||
|
||||
// See FaceBakery#storeVertexData.
|
||||
private def rawData(x: Float, y: Float, z: Float, texture: TextureAtlasSprite, u: Float, v: Float) = {
|
||||
private def rawData(x: Float, y: Float, z: Float, texture: TextureAtlasSprite, u: Float, v: Float, color: Int) = {
|
||||
Array(
|
||||
java.lang.Float.floatToRawIntBits(x),
|
||||
java.lang.Float.floatToRawIntBits(y),
|
||||
java.lang.Float.floatToRawIntBits(z),
|
||||
0xFFFFFFFF,
|
||||
0xFF000000 | rgb2bgr(color),
|
||||
java.lang.Float.floatToRawIntBits(texture.getInterpolatedU(u)),
|
||||
java.lang.Float.floatToRawIntBits(texture.getInterpolatedV(v)),
|
||||
0
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
private def rgb2bgr(color: Int) = {
|
||||
((color & 0x0000FF) << 16) | (color & 0x00FF00) | ((color & 0xFF0000) >>> 16)
|
||||
}
|
||||
}
|
||||
|
@ -67,278 +67,6 @@ class Screen(val tier: Int) extends RedstoneAware with traits.OmniRotatable {
|
||||
|
||||
// ----------------------------------------------------------------------- //
|
||||
|
||||
// TODO remove
|
||||
// object Icons {
|
||||
// var b, b2, bbl, bbl2, bbm, bbm2, bbr, bbr2, bhb, bhb2, bhm, bhm2, bht, bht2, bml, bmm, bmr, btl, btm, btr, bvb, bvb2, bvm, bvt, f, f2, fbl, fbl2, fbm, fbm2, fbr, fbr2, fhb, fhb2, fhm, fhm2, fht, fht2, fml, fmm, fmr, ftl, ftm, ftr, fvb, fvb2, fvm, fvt = null: IIcon
|
||||
//
|
||||
// def fh = Array(fht, fhm, fhb)
|
||||
//
|
||||
// def fv = Array(fvt, fvm, fvb)
|
||||
//
|
||||
// def bh = Array(bht, bhm, bhb)
|
||||
//
|
||||
// def bv = Array(bvt, bvm, bvb)
|
||||
//
|
||||
// def fth = Array(ftl, ftm, ftr)
|
||||
//
|
||||
// def fmh = Array(fml, fmm, fmr)
|
||||
//
|
||||
// def fbh = Array(fbl, fbm, fbr)
|
||||
//
|
||||
// def bth = Array(btl, btm, btr)
|
||||
//
|
||||
// def bmh = Array(bml, bmm, bmr)
|
||||
//
|
||||
// def bbh = Array(bbl, bbm, bbr)
|
||||
//
|
||||
// def ftv = Array(ftl, fml, fbl)
|
||||
//
|
||||
// def fmv = Array(ftm, fmm, fbm)
|
||||
//
|
||||
// def fbv = Array(ftr, fmr, fbr)
|
||||
//
|
||||
// def btv = Array(btl, bml, bbl)
|
||||
//
|
||||
// def bmv = Array(btm, bmm, bbm)
|
||||
//
|
||||
// def bbv = Array(btr, bmr, bbr)
|
||||
//
|
||||
// def fh2 = Array(fht2, fhm2, fhb2)
|
||||
//
|
||||
// def fv2 = Array(fvt, fvm, fvb2)
|
||||
//
|
||||
// def bh2 = Array(bht2, bhm2, bhb2)
|
||||
//
|
||||
// def bv2 = Array(bvt, bvm, bvb2)
|
||||
//
|
||||
// def fbh2 = Array(fbl2, fbm2, fbr2)
|
||||
//
|
||||
// def bbh2 = Array(bbl2, bbm2, bbr2)
|
||||
//
|
||||
// def fud = Icons.fh2 ++ Icons.fv2 ++ Icons.fth ++ Icons.fmh ++ Icons.fbh2
|
||||
//
|
||||
// def bud = Icons.bh2.reverse ++ Icons.bv2 ++ Icons.bth.reverse ++ Icons.bmh.reverse ++ Icons.bbh2.reverse
|
||||
//
|
||||
// def fsn = Icons.fh ++ Icons.fv ++ Icons.fth ++ Icons.fmh ++ Icons.fbh
|
||||
//
|
||||
// def few = Icons.fv ++ Icons.fh ++ Icons.ftv ++ Icons.fmv ++ Icons.fbv
|
||||
//
|
||||
// def bsn = Icons.bh ++ Icons.bv ++ Icons.bth ++ Icons.bmh ++ Icons.bbh
|
||||
//
|
||||
// def bew = Icons.bv ++ Icons.bh ++ Icons.btv ++ Icons.bmv ++ Icons.bbv
|
||||
//
|
||||
// def sud = Array(Icons.bvt, Icons.bvm, Icons.bvb2)
|
||||
//
|
||||
// def sse = Array(Icons.bhb2, Icons.bhm2, Icons.bht2)
|
||||
//
|
||||
// def snw = Array(Icons.bht2, Icons.bhm2, Icons.bhb2)
|
||||
//
|
||||
// def th = Array(Icons.bhb, Icons.bhm, Icons.bht)
|
||||
//
|
||||
// def tv = Array(Icons.bvb, Icons.bvm, Icons.bvt)
|
||||
// }
|
||||
//
|
||||
// // This an ugly monstrosity, but it's still better than having to manually
|
||||
// // compute ambient occlusion in a custom block renderer to keep the lighting
|
||||
// // pretty... which would be even more grotesque.
|
||||
// override def getIcon(world: IBlockAccess, x: Int, y: Int, z: Int, worldSide: EnumFacing, localSide: EnumFacing) =
|
||||
// world.getTileEntity(x, y, z) match {
|
||||
// case screen: tileentity.Screen if screen.width > 1 || screen.height > 1 =>
|
||||
// val right = screen.width - 1
|
||||
// val bottom = screen.height - 1
|
||||
// val (px, py) = screen.localPosition
|
||||
// val (lx, ly) = screen.pitch match {
|
||||
// case EnumFacing.NORTH => (px, py)
|
||||
// case EnumFacing.UP => screen.yaw match {
|
||||
// case EnumFacing.SOUTH =>
|
||||
// (px, py)
|
||||
// case EnumFacing.NORTH =>
|
||||
// (right - px, bottom - py)
|
||||
// case EnumFacing.EAST =>
|
||||
// (right - px, py)
|
||||
// case EnumFacing.WEST =>
|
||||
// (px, bottom - py)
|
||||
// case _ => throw new AssertionError("yaw has invalid value")
|
||||
// }
|
||||
// case EnumFacing.DOWN => screen.yaw match {
|
||||
// case EnumFacing.SOUTH =>
|
||||
// (px, bottom - py)
|
||||
// case EnumFacing.NORTH =>
|
||||
// (right - px, py)
|
||||
// case EnumFacing.EAST =>
|
||||
// (right - px, bottom - py)
|
||||
// case EnumFacing.WEST =>
|
||||
// (px, py)
|
||||
// case _ => throw new AssertionError("yaw has invalid value")
|
||||
// }
|
||||
// case _ => throw new AssertionError("pitch has invalid value")
|
||||
// }
|
||||
// // See which face we're rendering. We can pretty much treat front and
|
||||
// // back the same, except with a different texture set. Same goes for
|
||||
// // left and right sides, as well as top and bottom sides.
|
||||
// localSide match {
|
||||
// case EnumFacing.SOUTH | EnumFacing.NORTH =>
|
||||
// val (ud, sn, ew) =
|
||||
// if (localSide == EnumFacing.SOUTH) (Icons.fud, Icons.fsn, Icons.few)
|
||||
// else (Icons.bud, Icons.bsn, Icons.bew)
|
||||
// val Array(ht, hm, hb, vt, vm, vb, tl, tm, tr, ml, mm, mr, bl, bm, br) = screen.pitch match {
|
||||
// case EnumFacing.NORTH => ud
|
||||
// case _ => screen.yaw match {
|
||||
// case EnumFacing.SOUTH | EnumFacing.NORTH => sn
|
||||
// case EnumFacing.EAST | EnumFacing.WEST => ew
|
||||
// case _ => throw new AssertionError("yaw has invalid value")
|
||||
// }
|
||||
// }
|
||||
// if (screen.height == 1) {
|
||||
// if (lx == 0) ht
|
||||
// else if (lx == right) hb
|
||||
// else hm
|
||||
// }
|
||||
// else if (screen.width == 1) {
|
||||
// if (ly == 0) vb
|
||||
// else if (ly == bottom) vt
|
||||
// else vm
|
||||
// }
|
||||
// else {
|
||||
// if (lx == 0) {
|
||||
// if (ly == 0) bl
|
||||
// else if (ly == bottom) tl
|
||||
// else ml
|
||||
// }
|
||||
// else if (lx == right) {
|
||||
// if (ly == 0) br
|
||||
// else if (ly == bottom) tr
|
||||
// else mr
|
||||
// }
|
||||
// else {
|
||||
// if (ly == 0) bm
|
||||
// else if (ly == bottom) tm
|
||||
// else mm
|
||||
// }
|
||||
// }
|
||||
// case EnumFacing.EAST | EnumFacing.WEST =>
|
||||
// val (ud, sn, ew) =
|
||||
// if (localSide == EnumFacing.EAST) (Icons.sud, Icons.sse, Icons.snw)
|
||||
// else (Icons.sud, Icons.snw, Icons.sse)
|
||||
// val Array(t, m, b) = screen.pitch match {
|
||||
// case EnumFacing.NORTH => ud
|
||||
// case _ => screen.yaw match {
|
||||
// case EnumFacing.SOUTH | EnumFacing.EAST => sn
|
||||
// case EnumFacing.NORTH | EnumFacing.WEST => ew
|
||||
// case _ => throw new AssertionError("yaw has invalid value")
|
||||
// }
|
||||
// }
|
||||
// if (screen.height == 1) {
|
||||
// Icons.b2
|
||||
// }
|
||||
// else {
|
||||
// if (ly == 0) b
|
||||
// else if (ly == bottom) t
|
||||
// else m
|
||||
// }
|
||||
// case EnumFacing.UP | EnumFacing.DOWN =>
|
||||
// val (sn, ew) =
|
||||
// if (localSide == EnumFacing.UP ^ screen.pitch == EnumFacing.DOWN) (Icons.snw, Icons.sse)
|
||||
// else (Icons.sse, Icons.snw)
|
||||
// val Array(t, m, b) = screen.pitch match {
|
||||
// case EnumFacing.NORTH => screen.yaw match {
|
||||
// case EnumFacing.SOUTH => Icons.th
|
||||
// case EnumFacing.NORTH => Icons.bh
|
||||
// case EnumFacing.EAST => Icons.bv
|
||||
// case EnumFacing.WEST => Icons.tv
|
||||
// case _ => throw new AssertionError("yaw has invalid value")
|
||||
// }
|
||||
// case _ => screen.yaw match {
|
||||
// case EnumFacing.SOUTH | EnumFacing.WEST => sn
|
||||
// case EnumFacing.NORTH | EnumFacing.EAST => ew
|
||||
// case _ => throw new AssertionError("yaw has invalid value")
|
||||
// }
|
||||
// }
|
||||
// if (screen.width == 1) {
|
||||
// if (screen.pitch == EnumFacing.NORTH) Icons.b
|
||||
// else Icons.b2
|
||||
// }
|
||||
// else {
|
||||
// if (lx == 0) b
|
||||
// else if (lx == right) t
|
||||
// else m
|
||||
// }
|
||||
// case _ => null
|
||||
// }
|
||||
// case screen: tileentity.Screen =>
|
||||
// val (f, b, t, s) = screen.pitch match {
|
||||
// case EnumFacing.NORTH => (Icons.f2, Icons.b2, Icons.b, Icons.b2)
|
||||
// case _ => (Icons.f, Icons.b, Icons.b2, Icons.b2)
|
||||
// }
|
||||
// localSide match {
|
||||
// case EnumFacing.SOUTH => f
|
||||
// case EnumFacing.NORTH => b
|
||||
// case EnumFacing.DOWN | EnumFacing.UP => t
|
||||
// case _ => s
|
||||
// }
|
||||
// case _ => getIcon(localSide, 0)
|
||||
// }
|
||||
//
|
||||
// override def getIcon(side: EnumFacing, metadata: Int) =
|
||||
// side match {
|
||||
// case EnumFacing.SOUTH => Icons.f2
|
||||
// case EnumFacing.DOWN | EnumFacing.UP => Icons.b
|
||||
// case _ => Icons.b2
|
||||
// }
|
||||
//
|
||||
// override def registerBlockIcons(iconRegister: IIconRegister) = {
|
||||
// Icons.b = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/b")
|
||||
// Icons.b2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/b2")
|
||||
// Icons.bbl = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bbl")
|
||||
// Icons.bbl2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bbl2")
|
||||
// Icons.bbm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bbm")
|
||||
// Icons.bbm2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bbm2")
|
||||
// Icons.bbr = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bbr")
|
||||
// Icons.bbr2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bbr2")
|
||||
// Icons.bhb = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bhb")
|
||||
// Icons.bhb2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bhb2")
|
||||
// Icons.bhm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bhm")
|
||||
// Icons.bhm2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bhm2")
|
||||
// Icons.bht = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bht")
|
||||
// Icons.bht2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bht2")
|
||||
// Icons.bml = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bml")
|
||||
// Icons.bmm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bmm")
|
||||
// Icons.bmr = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bmr")
|
||||
// Icons.btl = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/btl")
|
||||
// Icons.btm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/btm")
|
||||
// Icons.btr = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/btr")
|
||||
// Icons.bvb = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bvb")
|
||||
// Icons.bvb2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bvb2")
|
||||
// Icons.bvm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bvm")
|
||||
// Icons.bvt = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/bvt")
|
||||
// Icons.f = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/f")
|
||||
// Icons.f2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/f2")
|
||||
// Icons.fbl = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fbl")
|
||||
// Icons.fbl2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fbl2")
|
||||
// Icons.fbm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fbm")
|
||||
// Icons.fbm2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fbm2")
|
||||
// Icons.fbr = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fbr")
|
||||
// Icons.fbr2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fbr2")
|
||||
// Icons.fhb = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fhb")
|
||||
// Icons.fhb2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fhb2")
|
||||
// Icons.fhm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fhm")
|
||||
// Icons.fhm2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fhm2")
|
||||
// Icons.fht = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fht")
|
||||
// Icons.fht2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fht2")
|
||||
// Icons.fml = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fml")
|
||||
// Icons.fmm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fmm")
|
||||
// Icons.fmr = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fmr")
|
||||
// Icons.ftl = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/ftl")
|
||||
// Icons.ftm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/ftm")
|
||||
// Icons.ftr = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/ftr")
|
||||
// Icons.fvb = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fvb")
|
||||
// Icons.fvb2 = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fvb2")
|
||||
// Icons.fvm = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fvm")
|
||||
// Icons.fvt = iconRegister.getAtlasSprite(Settings.resourceDomain + ":screen/fvt")
|
||||
// }
|
||||
|
||||
// ----------------------------------------------------------------------- //
|
||||
|
||||
override def hasTileEntity(state: IBlockState) = true
|
||||
|
||||
override def createNewTileEntity(world: World, metadata: Int) = new tileentity.Screen(tier)
|
||||
|
Loading…
x
Reference in New Issue
Block a user