Gears now properly render

This commit is contained in:
Calclavia 2014-11-09 13:59:37 +08:00
parent 3d8f2551c7
commit f039d282e1
5 changed files with 18 additions and 13 deletions

View file

@ -53,7 +53,7 @@ import resonantinduction.mechanical.mech.turbine._
override def init()
{
//Mech content TODO no-load if mech content is not loaded
ItemRenderHandler.register(MechanicalContent.itemGear, RenderGear.INSTANCE)
ItemRenderHandler.register(MechanicalContent.itemGear, RenderGear)
ItemRenderHandler.register(MechanicalContent.itemGearShaft, RenderGearShaft.INSTANCE)
ItemRenderHandler.register(MechanicalContent.itemPipe, RenderPipe)
ItemRenderHandler.register(Item.getItemFromBlock(MechanicalContent.blockWaterTurbine), new RenderWaterTurbine)

View file

@ -17,6 +17,8 @@ import resonantinduction.mechanical.mech.grid.MechanicalNode
*/
class GearNode(parent: PartGear) extends MechanicalNode(parent: PartGear)
{
teethDisplacement = 0.01D
protected def gear: PartGear = getParent.asInstanceOf[PartGear]
/*

View file

@ -7,11 +7,12 @@ import net.minecraftforge.client.IItemRenderer
import net.minecraftforge.client.model.{AdvancedModelLoader, IModelCustom}
import net.minecraftforge.common.util.ForgeDirection
import org.lwjgl.opengl.GL11
import resonant.content.prefab.scal.render.ISimpleItemRenderer
import resonant.lib.render.RenderUtility
import resonantinduction.core.Reference
@SideOnly(Side.CLIENT)
object RenderGear
object RenderGear extends ISimpleItemRenderer
{
final val model: IModelCustom = AdvancedModelLoader.loadModel(new ResourceLocation(Reference.domain, Reference.modelPath + "gears.obj"))
@ -65,5 +66,4 @@ object RenderGear
GL11.glRotatef(90, 1, 0, 0)
renderGear(-1, itemStack.getItemDamage, false, 0)
}
}

View file

@ -17,7 +17,7 @@ class MechanicalGrid extends GridNode[MechanicalNode](classOf[MechanicalNode]) w
* A map marking out the relative spin directions of each node.
* Updated upon recache
*/
private val spinMap = mutable.WeakHashMap.empty[MechanicalNode, Boolean]
protected[grid] val spinMap = mutable.WeakHashMap.empty[MechanicalNode, Boolean]
/**
* The power of the mechanical grid

View file

@ -26,15 +26,19 @@ class MechanicalNode(parent: INodeProvider) extends NodeGrid[MechanicalNode](par
var load = 0.2
/**
* Angle calculations
*/
private var prevTime = 0L
private var prevAngle = 0D
protected var teethDisplacement = 0D
/**
* Events
*/
var onTorqueChanged: () => Unit = () => ()
var onVelocityChanged: () => Unit = () => ()
private var prevTime = 0L
private var prevAngle = 0D
/**
* An arbitrary angle value computed based on velocity
* @return The angle in radians
@ -44,19 +48,18 @@ class MechanicalNode(parent: INodeProvider) extends NodeGrid[MechanicalNode](par
val deltaTime = (System.currentTimeMillis() - prevTime) / 1000D
prevTime = System.currentTimeMillis()
prevAngle = (prevAngle + deltaTime * angularVelocity) % (2 * Math.PI)
return prevAngle
return prevAngle + (if (getMechanicalGrid != null && getMechanicalGrid.spinMap(this)) teethDisplacement else 0D)
}
override def getRadius(dir: ForgeDirection, `with`: TMechanicalNode): Double = 0.5
/**
* Called when one revolution is made.
*/
@deprecated
protected def revolve()
{
}
@deprecated
override def getRadius(dir: ForgeDirection, `with`: TMechanicalNode): Double = 0.5
override def rotate(from: AnyRef, torque: Double, angle: Double)
{
bufferTorque += torque