Flat wires now have basic render

This commit is contained in:
Calclavia 2014-09-16 11:33:38 +08:00
parent 4598f78b60
commit fc12296e5d
6 changed files with 73 additions and 73 deletions

View file

@ -36,7 +36,7 @@ trait TColorable extends TMultiPart with TPart
def sendColorUpdate() def sendColorUpdate()
{ {
tile.getWriteStream(this).writeByte(2).writeInt(this.colorID) //tile.getWriteStream(this).writeByte(2).writeInt(this.colorID)
} }
/** /**

View file

@ -51,7 +51,7 @@ trait TInsulatable extends TMultiPart with TPart
def sendInsulationUpdate() def sendInsulationUpdate()
{ {
tile.getWriteStream(this).writeByte(1).writeBoolean(this._insulated) // tile.getWriteStream(this).writeByte(1).writeBoolean(this._insulated)
} }
/** /**
@ -96,20 +96,20 @@ trait TInsulatable extends TMultiPart with TPart
drops += new ItemStack(insulationItem) drops += new ItemStack(insulationItem)
} }
override def readDesc(packet: MCDataInput)
{
insulated = packet.readBoolean
}
override def writeDesc(packet: MCDataOutput) override def writeDesc(packet: MCDataOutput)
{ {
packet.writeBoolean(insulated) packet.writeBoolean(insulated)
} }
override def readDesc(packet: MCDataInput)
{
_insulated = packet.readBoolean
}
def read(packet: MCDataInput, packetID: Int) def read(packet: MCDataInput, packetID: Int)
{ {
if (packetID == 1) if (packetID == 1)
insulated = packet.readBoolean _insulated = packet.readBoolean
} }
override def save(nbt: NBTTagCompound) override def save(nbt: NBTTagCompound)

View file

@ -10,9 +10,15 @@ import net.minecraftforge.oredict.OreDictionary
object ResonantUtil object ResonantUtil
{ {
val dyes = Array("dyeBlack", "dyeRed", "dyeGreen", "dyeBrown", "dyeBlue", "dyePurple", "dyeCyan", "dyeLightGray", "dyeGray", "dyePink", "dyeLime", "dyeYellow", "dyeLightBlue", "dyeMagenta", "dyeOrange", "dyeWhite") val dyes = Array("dyeBlack", "dyeRed", "dyeGreen", "dyeBrown", "dyeBlue", "dyePurple", "dyeCyan", "dyeLightGray", "dyeGray", "dyePink", "dyeLime", "dyeYellow", "dyeLightBlue", "dyeMagenta", "dyeOrange", "dyeWhite")
val dyeColors = Array[Int](1973019, 11743532, 3887386, 5320730, 2437522, 8073150, 2651799, 11250603, 4408131, 14188952, 4312372, 14602026, 6719955, 12801229, 15435844, 15790320)
def isDye(is: ItemStack): Int = def isDye(is: ItemStack): Int =
{ {
return (0 until dyes.size) find (i => OreDictionary.getOreID(is) != -1 && (OreDictionary.getOreName(OreDictionary.getOreID(is)) == dyes(i))) getOrElse (-1) return (0 until dyes.size) find (i => OreDictionary.getOreID(is) != -1 && (OreDictionary.getOreName(OreDictionary.getOreID(is)) == dyes(i))) getOrElse (-1)
} }
/**
* Gets the color hex code from the color's ID
*/
def getColorHex(id: Int): Int = dyeColors(id)
} }

View file

@ -7,11 +7,18 @@ import net.minecraft.nbt.NBTTagCompound
import net.minecraftforge.common.util.ForgeDirection import net.minecraftforge.common.util.ForgeDirection
import resonantinduction.core.prefab.part.connector._ import resonantinduction.core.prefab.part.connector._
import resonantinduction.electrical.ElectricalContent import resonantinduction.electrical.ElectricalContent
import universalelectricity.api.core.grid.{INode, INodeProvider} import universalelectricity.api.core.grid.INodeProvider
import universalelectricity.simulator.dc.DCNode import universalelectricity.simulator.dc.DCNode
/** /**
* Abstract class extended by both flat and framed wires to handle material, insulation, color and multipart node logic. * Abstract class extended by both flat and framed wires to handle material, insulation, color and multipart node logic.
*
* Packets:
* 0 - Desc
* 1 - Material
* 2 - Insulation
* 3 - Color
*
* @author Calclavia * @author Calclavia
*/ */
abstract class TWire extends TMultiPart with TNodePartConnector with TPart with TMaterial[WireMaterial] with TInsulatable with TColorable abstract class TWire extends TMultiPart with TNodePartConnector with TPart with TMaterial[WireMaterial] with TInsulatable with TColorable
@ -32,6 +39,13 @@ abstract class TWire extends TMultiPart with TNodePartConnector with TPart with
/** /**
* Packet Methods * Packet Methods
*/ */
override def writeDesc(packet: MCDataOutput)
{
super[TMaterial].writeDesc(packet)
super[TInsulatable].writeDesc(packet)
super[TColorable].writeDesc(packet)
}
override def readDesc(packet: MCDataInput) override def readDesc(packet: MCDataInput)
{ {
super[TMaterial].readDesc(packet) super[TMaterial].readDesc(packet)
@ -39,11 +53,15 @@ abstract class TWire extends TMultiPart with TNodePartConnector with TPart with
super[TColorable].readDesc(packet) super[TColorable].readDesc(packet)
} }
override def writeDesc(packet: MCDataOutput) override final def read(packet: MCDataInput)
{ {
super[TMaterial].writeDesc(packet) read(packet, packet.readUByte)
super[TInsulatable].writeDesc(packet) }
super[TColorable].writeDesc(packet)
override def read(packet: MCDataInput, packetID: Int)
{
super[TInsulatable].read(packet, packetID)
super[TColorable].read(packet, packetID)
} }
/** /**
@ -63,17 +81,6 @@ abstract class TWire extends TMultiPart with TNodePartConnector with TPart with
super[TColorable].save(nbt) super[TColorable].save(nbt)
} }
override def read(packet: MCDataInput)
{
read(packet, packet.readUByte)
}
override def read(packet: MCDataInput, packetID: Int): Unit =
{
super[TInsulatable].read(packet,packetID)
super[TColorable].read(packet,packetID)
}
/** /**
* Can this conductor connect with another potential wire object? * Can this conductor connect with another potential wire object?
*/ */

View file

@ -37,12 +37,15 @@ object PartFlatWire
{ {
var selectionBounds = Array.ofDim[Cuboid6](3, 6) var selectionBounds = Array.ofDim[Cuboid6](3, 6)
var occlusionBounds = Array.ofDim[Cuboid6](3, 6) var occlusionBounds = Array.ofDim[Cuboid6](3, 6)
init()
for (t <- 0 until 3) def init()
{ {
lazy val selection: Cuboid6 = new Cuboid6(0, 0, 0, 1, (t + 2) / 16D, 1).expand(-0.005) for (t <- 0 until 3)
lazy val occlusion: Cuboid6 = new Cuboid6(2 / 8D, 0, 2 / 8D, 6 / 8D, (t + 2) / 16D, 6 / 8D)
{ {
val selection = new Cuboid6(0, 0, 0, 1, (t + 2) / 16D, 1).expand(-0.005)
val occlusion = new Cuboid6(2 / 8D, 0, 2 / 8D, 6 / 8D, (t + 2) / 16D, 6 / 8D)
for (s <- 0 until 6) for (s <- 0 until 6)
{ {
selectionBounds(t)(s) = selection.copy.apply(Rotation.sideRotations(s).at(Vector3.center)) selectionBounds(t)(s) = selection.copy.apply(Rotation.sideRotations(s).at(Vector3.center))
@ -135,13 +138,6 @@ class PartFlatWire extends TWire with TFacePart with TNormalOcclusion
tag.setInteger("connMap", this.connMap) tag.setInteger("connMap", this.connMap)
} }
override def readDesc(packet: MCDataInput)
{
super.readDesc(packet)
side = packet.readByte
connMap = packet.readInt
}
override def writeDesc(packet: MCDataOutput) override def writeDesc(packet: MCDataOutput)
{ {
super.writeDesc(packet) super.writeDesc(packet)
@ -149,20 +145,27 @@ class PartFlatWire extends TWire with TFacePart with TNormalOcclusion
packet.writeInt(connMap) packet.writeInt(connMap)
} }
override def readDesc(packet: MCDataInput)
{
super.readDesc(packet)
side = packet.readByte
connMap = packet.readInt
}
override def read(packet: MCDataInput, packetID: Int) override def read(packet: MCDataInput, packetID: Int)
{ {
super.read(packet, packetID) super.read(packet, packetID)
/*
if (packetID == 0) if (packetID == 3)
{ {
connMap = packet.readInt connMap = packet.readInt
tile.markRender tile.markRender
} }*/
} }
def sendConnUpdate() def sendConnUpdate()
{ {
tile.getWriteStream(this).writeByte(0).writeInt(this.connMap) //tile.getWriteStream(this).writeByte(3).writeInt(this.connMap)
} }
/** /**
@ -201,7 +204,7 @@ class PartFlatWire extends TWire with TFacePart with TNormalOcclusion
super.onChunkLoad() super.onChunkLoad()
} }
override def onAdded override def onAdded()
{ {
super.onAdded() super.onAdded()
@ -221,7 +224,7 @@ class PartFlatWire extends TWire with TFacePart with TNormalOcclusion
super.onPartChanged(part) super.onPartChanged(part)
} }
override def onNeighborChanged override def onNeighborChanged()
{ {
if (!world.isRemote) if (!world.isRemote)
if (dropIfCantStay) if (dropIfCantStay)
@ -262,19 +265,13 @@ class PartFlatWire extends TWire with TFacePart with TNormalOcclusion
return 4 return 4
} }
def getSlotMask: Int = def getSlotMask: Int = 1 << side
{
return 1 << this.side
}
override def getSubParts: JIterable[IndexedCuboid6] = Seq(new IndexedCuboid6(0, PartFlatWire.selectionBounds(getThickness)(side))) override def getSubParts: JIterable[IndexedCuboid6] = Seq(new IndexedCuboid6(0, PartFlatWire.selectionBounds(getThickness)(side)))
def getOcclusionBoxes: JIterable[Cuboid6] = Seq(PartFlatWire.occlusionBounds(getThickness)(side)) def getOcclusionBoxes: JIterable[Cuboid6] = Seq(PartFlatWire.occlusionBounds(getThickness)(side))
def getThickness: Int = def getThickness: Int = if (insulated) 2 else 1
{
return if (insulated) 2 else 1
}
override def solid(arg0: Int) = false override def solid(arg0: Int) = false
@ -287,18 +284,6 @@ class PartFlatWire extends TWire with TFacePart with TNormalOcclusion
return RenderFlatWire.flatWireTexture return RenderFlatWire.flatWireTexture
} }
def getColour: Colour =
{
if (insulated)
{
val color: Colour = new ColourARGB(ItemDye.field_150922_c(colorID))
color.a = 255.asInstanceOf[Byte]
return color
}
return new ColourARGB(material.color)
}
def useStaticRenderer: Boolean = true def useStaticRenderer: Boolean = true
@SideOnly(Side.CLIENT) @SideOnly(Side.CLIENT)

View file

@ -8,9 +8,19 @@ import codechicken.lib.render._
import codechicken.lib.render.uv._ import codechicken.lib.render.uv._
import codechicken.lib.vec.{Cuboid6, Rotation, Transformation, Translation, Vector3} import codechicken.lib.vec.{Cuboid6, Rotation, Transformation, Translation, Vector3}
import net.minecraft.util.IIcon import net.minecraft.util.IIcon
import resonantinduction.core.util.ResonantUtil
object RenderFlatWire object RenderFlatWire
{ {
var flatWireTexture: IIcon = null
var reorientSide: Array[Int] = Array[Int](0, 3, 3, 0, 0, 3)
/**
* Array of all built models. These will be generated on demand.
*/
var wireModels: Array[CCModel] = new Array[CCModel](3 * 6 * 256)
var invModels: Array[CCModel] = new Array[CCModel](3)
val gen_inst = new WireModelGenerator
/** /**
* Puts verts into model m starting at index k * Puts verts into model m starting at index k
*/ */
@ -79,9 +89,9 @@ object RenderFlatWire
def render(wire: PartFlatWire, pos: Vector3) def render(wire: PartFlatWire, pos: Vector3)
{ {
val colorCode = wire.getColour.pack val colorCode = ResonantUtil.getColorHex(wire.getColor)
val operation = if (colorCode == -1) ColourMultiplier.instance(0xFFFFFF) else new ColourMultiplier(colorCode) val operation = if (colorCode == -1) ColourMultiplier.instance(0xFFFFFF) else new ColourMultiplier(colorCode)
val model: CCModel = getOrGenerateModel(modelKey(wire)) val model = getOrGenerateModel(modelKey(wire))
model.render(new Translation(pos), new IconTransformation(wire.getIcon), operation) model.render(new Translation(pos), new IconTransformation(wire.getIcon), operation)
} }
@ -128,14 +138,6 @@ object RenderFlatWire
} }
} }
var flatWireTexture: IIcon = null
var reorientSide: Array[Int] = Array[Int](0, 3, 3, 0, 0, 3)
/**
* Array of all built models. These will be generated on demand.
*/
var wireModels: Array[CCModel] = new Array[CCModel](3 * 6 * 256)
var invModels: Array[CCModel] = new Array[CCModel](3)
val gen_inst = new WireModelGenerator
class UVT(t: Transformation) extends UVTransformation class UVT(t: Transformation) extends UVTransformation
{ {