Flat wires now have basic render
This commit is contained in:
parent
4598f78b60
commit
fc12296e5d
6 changed files with 73 additions and 73 deletions
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
|
|
|
@ -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?
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue