Moved PartFace and PartGear Cuboid boxes to CuboidShapes singleton
This commit is contained in:
parent
236ee36f9b
commit
2529dda2c5
3 changed files with 31 additions and 39 deletions
|
@ -1,20 +1,42 @@
|
||||||
package resonantinduction.core.prefab.part
|
package resonantinduction.core.prefab.part
|
||||||
|
|
||||||
import codechicken.lib.raytracer.IndexedCuboid6
|
import codechicken.lib.raytracer.IndexedCuboid6
|
||||||
import codechicken.lib.vec.Cuboid6
|
import codechicken.lib.vec.{Vector3, Rotation, Cuboid6}
|
||||||
|
|
||||||
/** Reference sheet for commonly created cuboid shape sets.
|
/** Reference sheet for commonly created cuboid shape sets.
|
||||||
* Created by robert on 10/18/2014.
|
* Created by robert on 10/18/2014.
|
||||||
*/
|
*/
|
||||||
final object CuboidShapes
|
final object CuboidShapes
|
||||||
{
|
{
|
||||||
|
/** 0.3 box shaped centered wire */
|
||||||
lazy val WIRE_SEGMENTS = getNewWireSegments()
|
lazy val WIRE_SEGMENTS = getNewWireSegments()
|
||||||
|
/** 0.4 box shaped wire designed to be used for insulation */
|
||||||
lazy val WIRE_INSULATION = getNewWireInsulationSegments()
|
lazy val WIRE_INSULATION = getNewWireInsulationSegments()
|
||||||
|
/** Center segment of wire */
|
||||||
lazy val WIRE_CENTER: IndexedCuboid6 = new IndexedCuboid6(7, new Cuboid6(0.375, 0.375, 0.375, 0.625, 0.625, 0.625))
|
lazy val WIRE_CENTER: IndexedCuboid6 = new IndexedCuboid6(7, new Cuboid6(0.375, 0.375, 0.375, 0.625, 0.625, 0.625))
|
||||||
|
/** 1/8th thick panel box can be used for anything flat */
|
||||||
|
lazy val PANEL = getNewPanelSegments()
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates then returns a new set of wire segments that are .3 in size
|
* Generates then returns a new set of panel segments that are .125m in size
|
||||||
|
* @return 6 part matrix
|
||||||
|
*/
|
||||||
|
def getNewPanelSegments() : Array[Array[Cuboid6]] =
|
||||||
|
{
|
||||||
|
val segments = Array.ofDim[Cuboid6](6, 2);
|
||||||
|
segments(0)(0) = new Cuboid6(1 / 8D, 0, 0, 7 / 8D, 1 / 8D, 1)
|
||||||
|
segments(0)(1) = new Cuboid6(0, 0, 1 / 8D, 1, 1 / 8D, 7 / 8D)
|
||||||
|
|
||||||
|
for (s <- 1 until 6)
|
||||||
|
{
|
||||||
|
val t = Rotation.sideRotations(s).at(Vector3.center)
|
||||||
|
segments(s)(0) = segments(0)(0).copy().apply(t)
|
||||||
|
segments(s)(1) = segments(0)(1).copy().apply(t)
|
||||||
|
}
|
||||||
|
return segments
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Generates then returns a new set of wire segments that are .3m in size
|
||||||
* @return 7 part array
|
* @return 7 part array
|
||||||
*/
|
*/
|
||||||
def getNewWireSegments() : Array[IndexedCuboid6] =
|
def getNewWireSegments() : Array[IndexedCuboid6] =
|
||||||
|
@ -31,7 +53,7 @@ final object CuboidShapes
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generates then returns a new set of insulation segments that are .4 in size
|
* Generates then returns a new set of insulation segments that are .4m in size
|
||||||
* @return 7 part array
|
* @return 7 part array
|
||||||
*/
|
*/
|
||||||
def getNewWireInsulationSegments() : Array[IndexedCuboid6] =
|
def getNewWireInsulationSegments() : Array[IndexedCuboid6] =
|
||||||
|
|
|
@ -4,7 +4,7 @@ import java.lang.{Iterable => JIterable}
|
||||||
import java.util.{ArrayList, List}
|
import java.util.{ArrayList, List}
|
||||||
|
|
||||||
import codechicken.lib.data.{MCDataInput, MCDataOutput}
|
import codechicken.lib.data.{MCDataInput, MCDataOutput}
|
||||||
import codechicken.lib.vec.{Cuboid6, Rotation, Vector3}
|
import codechicken.lib.vec.{Cuboid6, Rotation}
|
||||||
import codechicken.microblock.FaceMicroClass
|
import codechicken.microblock.FaceMicroClass
|
||||||
import codechicken.multipart._
|
import codechicken.multipart._
|
||||||
import net.minecraft.item.ItemStack
|
import net.minecraft.item.ItemStack
|
||||||
|
@ -19,21 +19,6 @@ import scala.collection.convert.wrapAll._
|
||||||
* A part that acts as a face
|
* A part that acts as a face
|
||||||
* @author Calclavia
|
* @author Calclavia
|
||||||
*/
|
*/
|
||||||
object PartFace
|
|
||||||
{
|
|
||||||
val bounds = Array.ofDim[Cuboid6](6, 2)
|
|
||||||
|
|
||||||
bounds(0)(0) = new Cuboid6(1 / 8D, 0, 0, 7 / 8D, 1 / 8D, 1)
|
|
||||||
bounds(0)(1) = new Cuboid6(0, 0, 1 / 8D, 1, 1 / 8D, 7 / 8D)
|
|
||||||
|
|
||||||
for (s <- 1 until 6)
|
|
||||||
{
|
|
||||||
val t = Rotation.sideRotations(s).at(Vector3.center)
|
|
||||||
bounds(s)(0) = bounds(0)(0).copy().apply(t)
|
|
||||||
bounds(s)(1) = bounds(0)(1).copy().apply(t)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
abstract class PartFace extends PartAbstract with TCuboidPart with JNormalOcclusion with TFacePart
|
abstract class PartFace extends PartAbstract with TCuboidPart with JNormalOcclusion with TFacePart
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -71,7 +56,7 @@ abstract class PartFace extends PartAbstract with TCuboidPart with JNormalOcclus
|
||||||
|
|
||||||
override def solid(arg0: Int): Boolean = true
|
override def solid(arg0: Int): Boolean = true
|
||||||
|
|
||||||
override def getOcclusionBoxes: JIterable[Cuboid6] = PartFace.bounds(placementSide.ordinal).toList
|
override def getOcclusionBoxes: JIterable[Cuboid6] = CuboidShapes.PANEL(placementSide.ordinal).toList
|
||||||
|
|
||||||
override def occlusionTest(npart: TMultiPart): Boolean = NormalOcclusionTest.apply(this, npart)
|
override def occlusionTest(npart: TMultiPart): Boolean = NormalOcclusionTest.apply(this, npart)
|
||||||
|
|
||||||
|
|
|
@ -2,7 +2,7 @@ package resonantinduction.mechanical.mech.gear
|
||||||
|
|
||||||
import java.util
|
import java.util
|
||||||
|
|
||||||
import codechicken.lib.vec.{Cuboid6, Rotation, Transformation, Vector3}
|
import codechicken.lib.vec.{Cuboid6, Vector3}
|
||||||
import codechicken.microblock.FaceMicroClass
|
import codechicken.microblock.FaceMicroClass
|
||||||
import codechicken.multipart.ControlKeyModifer
|
import codechicken.multipart.ControlKeyModifer
|
||||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||||
|
@ -15,6 +15,7 @@ import net.minecraftforge.common.util.ForgeDirection
|
||||||
import resonant.lib.multiblock.reference.IMultiBlockStructure
|
import resonant.lib.multiblock.reference.IMultiBlockStructure
|
||||||
import resonant.lib.utility.WrenchUtility
|
import resonant.lib.utility.WrenchUtility
|
||||||
import resonantinduction.core.Reference
|
import resonantinduction.core.Reference
|
||||||
|
import resonantinduction.core.prefab.part.CuboidShapes
|
||||||
import resonantinduction.mechanical.MechanicalContent
|
import resonantinduction.mechanical.MechanicalContent
|
||||||
import resonantinduction.mechanical.mech.PartMechanical
|
import resonantinduction.mechanical.mech.PartMechanical
|
||||||
import universalelectricity.api.core.grid.INode
|
import universalelectricity.api.core.grid.INode
|
||||||
|
@ -23,22 +24,6 @@ import universalelectricity.core.transform.vector.VectorWorld
|
||||||
/** We assume all the force acting on the gear is 90 degrees.
|
/** We assume all the force acting on the gear is 90 degrees.
|
||||||
*
|
*
|
||||||
* @author Calclavia */
|
* @author Calclavia */
|
||||||
object PartGear
|
|
||||||
{
|
|
||||||
var oBoxes: Array[Array[Cuboid6]] = new Array[Array[Cuboid6]](6)
|
|
||||||
|
|
||||||
oBoxes(0)(0) = new Cuboid6(1 / 8D, 0, 0, 7 / 8D, 1 / 8D, 1)
|
|
||||||
oBoxes(0)(1) = new Cuboid6(0, 0, 1 / 8D, 1, 1 / 8D, 7 / 8D)
|
|
||||||
|
|
||||||
for(s <- 1 until 6)
|
|
||||||
{
|
|
||||||
val t: Transformation = Rotation.sideRotations(s).at(Vector3.center)
|
|
||||||
oBoxes(s)(0) = oBoxes(0)(0).copy.apply(t)
|
|
||||||
oBoxes(s)(1) = oBoxes(0)(1).copy.apply(t)
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
class PartGear extends PartMechanical with IMultiBlockStructure[PartGear]
|
class PartGear extends PartMechanical with IMultiBlockStructure[PartGear]
|
||||||
{
|
{
|
||||||
var isClockwiseCrank: Boolean = true
|
var isClockwiseCrank: Boolean = true
|
||||||
|
@ -191,7 +176,7 @@ class PartGear extends PartMechanical with IMultiBlockStructure[PartGear]
|
||||||
def getOcclusionBoxes: java.lang.Iterable[Cuboid6] =
|
def getOcclusionBoxes: java.lang.Iterable[Cuboid6] =
|
||||||
{
|
{
|
||||||
val list: java.util.List[Cuboid6] = new util.ArrayList[Cuboid6];
|
val list: java.util.List[Cuboid6] = new util.ArrayList[Cuboid6];
|
||||||
for (v <- PartGear.oBoxes(this.placementSide.ordinal))
|
for (v <- CuboidShapes.PANEL(this.placementSide.ordinal))
|
||||||
{
|
{
|
||||||
list.add(v)
|
list.add(v)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue