Moved wind turbine render to Spatial
This commit is contained in:
parent
2cfdd91fea
commit
559977e434
|
@ -55,11 +55,9 @@ import resonantinduction.mechanical.mech.turbine._
|
|||
ItemRenderHandler.register(MechanicalContent.itemGearShaft, RenderGearShaft)
|
||||
ItemRenderHandler.register(MechanicalContent.itemPipe, RenderPipe)
|
||||
ItemRenderHandler.register(Item.getItemFromBlock(MechanicalContent.blockWaterTurbine), new RenderWaterTurbine)
|
||||
ItemRenderHandler.register(Item.getItemFromBlock(MechanicalContent.blockWindTurbine), new RenderWindTurbine)
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(classOf[TileMechanicalPiston], new RenderMechanicalPiston)
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(classOf[TileGrindingWheel], new RenderGrindingWheel)
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(classOf[TileWaterTurbine], new RenderWaterTurbine)
|
||||
ClientRegistry.bindTileEntitySpecialRenderer(classOf[TileWindTurbine], new RenderWindTurbine)
|
||||
|
||||
//Electrical content
|
||||
ItemRenderHandler.register(ElectricalContent.itemTransformer, RenderTransformer)
|
||||
|
|
|
@ -36,6 +36,7 @@ class TileMotor extends TileAdvanced(Material.iron) with TElectric with TSpatial
|
|||
|
||||
private var gearRatio = 0
|
||||
|
||||
textureName = "material_wood_surface"
|
||||
normalRender = false
|
||||
isOpaqueCube = false
|
||||
nodes.add(dcNode)
|
||||
|
|
|
@ -37,7 +37,7 @@ class MechanicalGrid extends GridNode[NodeMechanical](classOf[NodeMechanical]) w
|
|||
|
||||
getNodes.filter(n => n.bufferTorque != 0 && n.bufferAngularVelocity != 0).foreach(n => recurse(deltaTime, n.bufferTorque, n.bufferAngularVelocity, Seq(n)))
|
||||
|
||||
//UpdateTicker world enqueue
|
||||
// UpdateTicker.world.enqueue(resetNodes)
|
||||
resetNodes()
|
||||
}
|
||||
}
|
||||
|
|
|
@ -110,5 +110,5 @@ class NodeMechanical(parent: INodeProvider) extends NodeGrid[NodeMechanical](par
|
|||
*/
|
||||
override protected def getCompareClass = classOf[NodeMechanical]
|
||||
|
||||
override def toString = "NodeMechanical[Connections: " + connections.size() + " Torque: " + torque + " Angular Velocity:" + angularVelocity + "]"
|
||||
override def toString = "NodeMechanical[Connections: " + connections.size() + " Torque: " + torque + " Angular Velocity: " + angularVelocity + "]"
|
||||
}
|
|
@ -108,7 +108,7 @@ class TileGrindingWheel extends TileMechanical(Material.rock)
|
|||
*/
|
||||
def canWork: Boolean = counter >= requiredTorque
|
||||
|
||||
def doWork
|
||||
def doWork()
|
||||
{
|
||||
if (canWork)
|
||||
{
|
||||
|
@ -125,7 +125,7 @@ class TileGrindingWheel extends TileMechanical(Material.rock)
|
|||
grindingItem.getEntityItem.stackSize -= 1;
|
||||
if (grindingItem.getEntityItem.stackSize <= 0)
|
||||
{
|
||||
grindingItem.setDead
|
||||
grindingItem.setDead()
|
||||
TileGrindingWheel.grindingTimer.remove(grindingItem)
|
||||
grindingItem = null
|
||||
}
|
||||
|
|
|
@ -10,23 +10,20 @@ import net.minecraft.entity.item.EntityItem
|
|||
import net.minecraft.init.Blocks
|
||||
import net.minecraft.item.ItemStack
|
||||
import net.minecraft.util.{AxisAlignedBB, ResourceLocation}
|
||||
import net.minecraftforge.client.IItemRenderer
|
||||
import net.minecraftforge.client.model.{AdvancedModelLoader, IModelCustom}
|
||||
import net.minecraftforge.common.util.ForgeDirection
|
||||
import net.minecraftforge.fluids.IFluidBlock
|
||||
import org.lwjgl.opengl.GL11
|
||||
import org.lwjgl.opengl.GL11._
|
||||
import resonant.api.recipe.MachineRecipes
|
||||
import resonant.content.factory.resources.RecipeType
|
||||
import resonant.content.factory.resources.block.BlockFluidMixture
|
||||
import resonant.engine.ResonantEngine
|
||||
import resonant.lib.prefab.block.BlockFluidMixture
|
||||
import resonant.lib.render.RenderUtility
|
||||
import resonant.lib.transform.rotation.Quaternion
|
||||
import resonant.lib.transform.vector.Vector3
|
||||
import resonant.lib.utility.Timer
|
||||
import resonantinduction.core.Reference
|
||||
import resonantinduction.mechanical.mech.TileMechanical
|
||||
import resonant.api.grid.INode
|
||||
import resonant.lib.transform.rotation.Quaternion
|
||||
import resonant.lib.transform.vector.Vector3
|
||||
|
||||
import scala.collection.JavaConversions._
|
||||
|
||||
|
@ -182,7 +179,7 @@ class TileMixer extends TileMechanical(Material.iron)
|
|||
if (block.isInstanceOf[BlockFluidMixture])
|
||||
{
|
||||
val itemStack: ItemStack = entity.getEntityItem.copy
|
||||
if ((block.asInstanceOf[BlockFluidMixture]).mix(worldObj, mixPosition.xi, mixPosition.yi, mixPosition.zi, itemStack))
|
||||
if (block.asInstanceOf[BlockFluidMixture].mix(worldObj, mixPosition.xi, mixPosition.yi, mixPosition.zi, itemStack))
|
||||
{
|
||||
worldObj.notifyBlocksOfNeighborChange(mixPosition.xi, mixPosition.yi, mixPosition.zi, mixPosition.getBlock(worldObj))
|
||||
return true
|
||||
|
|
|
@ -1,88 +0,0 @@
|
|||
package resonantinduction.mechanical.mech.turbine
|
||||
|
||||
import cpw.mods.fml.relauncher.{Side, SideOnly}
|
||||
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer
|
||||
import net.minecraft.item.ItemStack
|
||||
import net.minecraft.tileentity.TileEntity
|
||||
import net.minecraft.util.ResourceLocation
|
||||
import net.minecraftforge.client.IItemRenderer
|
||||
import net.minecraftforge.client.model.{AdvancedModelLoader, IModelCustom}
|
||||
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 RenderWindTurbine
|
||||
{
|
||||
final val MODEL: IModelCustom = AdvancedModelLoader.loadModel(new ResourceLocation(Reference.domain, Reference.modelPath + "windTurbines.obj"))
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT) class RenderWindTurbine extends TileEntitySpecialRenderer with ISimpleItemRenderer
|
||||
{
|
||||
def renderTileEntityAt(t: TileEntity, x: Double, y: Double, z: Double, f: Float)
|
||||
{
|
||||
val tile: TileTurbine = t.asInstanceOf[TileTurbine]
|
||||
if (tile.getMultiBlock.isPrimary)
|
||||
{
|
||||
GL11.glPushMatrix
|
||||
GL11.glTranslatef(x.asInstanceOf[Float] + 0.5f, y.asInstanceOf[Float] + 0.5f, z.asInstanceOf[Float] + 0.5f)
|
||||
GL11.glPushMatrix
|
||||
RenderUtility.rotateBlockBasedOnDirectionUp(tile.getDirection)
|
||||
GL11.glTranslatef(0, 0.35f, 0)
|
||||
GL11.glRotatef(180, 1, 0, 0)
|
||||
GL11.glRotatef(Math.toDegrees(tile.mechanicalNode.angle).asInstanceOf[Float], 0, 1, 0)
|
||||
render(tile.tier, tile.multiBlockRadius, tile.getMultiBlock.isConstructed)
|
||||
GL11.glPopMatrix
|
||||
GL11.glPopMatrix
|
||||
}
|
||||
}
|
||||
|
||||
def renderInventoryItem(`type`: IItemRenderer.ItemRenderType, itemStack: ItemStack, data: AnyRef*)
|
||||
{
|
||||
GL11.glPushMatrix
|
||||
GL11.glTranslatef(0.5f, 0.5f, 0.5f)
|
||||
render(itemStack.getItemDamage, 1, false)
|
||||
GL11.glPopMatrix
|
||||
}
|
||||
|
||||
def render(tier: Int, size: Int, isConstructed: Boolean)
|
||||
{
|
||||
if (tier == 0)
|
||||
{
|
||||
RenderUtility.bind(Reference.blockTextureDirectory + "planks_oak.png")
|
||||
} else if (tier == 1)
|
||||
{
|
||||
RenderUtility.bind(Reference.blockTextureDirectory + "cobblestone.png")
|
||||
} else if (tier == 2)
|
||||
{
|
||||
RenderUtility.bind(Reference.blockTextureDirectory + "iron_block.png")
|
||||
|
||||
}
|
||||
if (isConstructed)
|
||||
{
|
||||
GL11.glScalef(0.3f, 1, 0.3f)
|
||||
GL11.glScalef(size * 2 + 1, Math.min(size, 2), size * 2 + 1)
|
||||
if (tier == 2)
|
||||
{
|
||||
GL11.glTranslatef(0, -0.11f, 0)
|
||||
RenderWindTurbine.MODEL.renderOnly("LargeMetalBlade")
|
||||
RenderWindTurbine.MODEL.renderOnly("LargeMetalHub")
|
||||
}
|
||||
else
|
||||
{
|
||||
RenderWindTurbine.MODEL.renderOnly("LargeBladeArm")
|
||||
GL11.glScalef(1f, 2f, 1f)
|
||||
GL11.glTranslatef(0, -0.05f, 0)
|
||||
RenderWindTurbine.MODEL.renderOnly("LargeHub")
|
||||
RenderUtility.bind(Reference.blockTextureDirectory + "wool_colored_white.png")
|
||||
RenderWindTurbine.MODEL.renderOnly("LargeBlade")
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
RenderWindTurbine.MODEL.renderOnly("SmallBlade")
|
||||
RenderUtility.bind(Reference.blockTextureDirectory + "log_oak.png")
|
||||
RenderWindTurbine.MODEL.renderOnly("SmallHub")
|
||||
}
|
||||
}
|
||||
}
|
|
@ -30,10 +30,10 @@ class TileTurbine extends TileMechanical(Material.wood) with IMultiBlockStructur
|
|||
private val multiBlock = new TurbineMBlockHandler(this)
|
||||
|
||||
//Constructor
|
||||
mechanicalNode = new NodeTurbine(this)
|
||||
normalRender = false
|
||||
isOpaqueCube = false
|
||||
setTextureName("material_wood_surface")
|
||||
mechanicalNode = new NodeTurbine(this)
|
||||
textureName = "material_wood_surface"
|
||||
rotationMask = 63
|
||||
|
||||
override def onRemove(block: Block, par1: Int)
|
||||
|
|
|
@ -2,18 +2,23 @@ package resonantinduction.mechanical.mech.turbine
|
|||
|
||||
import java.util.List
|
||||
|
||||
import cpw.mods.fml.relauncher.{SideOnly, Side}
|
||||
import net.minecraft.creativetab.CreativeTabs
|
||||
import net.minecraft.init.{Blocks, Items}
|
||||
import net.minecraft.item.{Item, ItemStack}
|
||||
import net.minecraft.util.ResourceLocation
|
||||
import net.minecraft.world.biome.{BiomeGenBase, BiomeGenOcean, BiomeGenPlains}
|
||||
import net.minecraftforge.client.model.AdvancedModelLoader
|
||||
import net.minecraftforge.common.util.ForgeDirection
|
||||
import net.minecraftforge.fluids.{Fluid, FluidStack, FluidTank, FluidTankInfo}
|
||||
import org.lwjgl.opengl.GL11
|
||||
import resonant.api.IBoilHandler
|
||||
import resonant.content.prefab.itemblock.ItemBlockMetadata
|
||||
import resonant.lib.render.RenderUtility
|
||||
import resonant.lib.transform.vector.Vector3
|
||||
import resonant.lib.utility.inventory.InventoryUtility
|
||||
import resonant.lib.wrapper.WrapList._
|
||||
import resonantinduction.core.Settings
|
||||
import resonantinduction.core.{Reference, Settings}
|
||||
|
||||
/**
|
||||
* The vertical wind turbine collects airflow.
|
||||
|
@ -22,6 +27,11 @@ import resonantinduction.core.Settings
|
|||
*
|
||||
* @author Calclavia
|
||||
*/
|
||||
object TileWindTurbine
|
||||
{
|
||||
@SideOnly(Side.CLIENT)
|
||||
val model = AdvancedModelLoader.loadModel(new ResourceLocation(Reference.domain, Reference.modelPath + "windTurbines.obj"))
|
||||
}
|
||||
class TileWindTurbine extends TileTurbine with IBoilHandler
|
||||
{
|
||||
/**
|
||||
|
@ -58,17 +68,15 @@ class TileWindTurbine extends TileTurbine with IBoilHandler
|
|||
//Only execute code in the primary block
|
||||
if (getDirection.offsetY == 0)
|
||||
{
|
||||
//This is a vertical wind turbine
|
||||
//This is a vertical wind turbine, generate from airflow
|
||||
if (ticks % 20 == 0)
|
||||
computePower()
|
||||
|
||||
getMultiBlock.get.mechanicalNode.rotate(windPower * multiBlockRadius / 20, windPower / multiBlockRadius / 20)
|
||||
}
|
||||
else
|
||||
{
|
||||
//This is a horizontal turbine
|
||||
getMultiBlock.get.mechanicalNode.rotate(if (gasTank.getFluid != null) gasTank.drain(gasTank.getFluidAmount, true).amount else 0 * 1000 * Settings.steamMultiplier, 10)
|
||||
}
|
||||
|
||||
//Generate from steam
|
||||
getMultiBlock.get.mechanicalNode.rotate(if (gasTank.getFluid != null) gasTank.drain(gasTank.getFluidAmount, true).amount else 0 * 1000 * Settings.steamMultiplier, 10)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -144,4 +152,73 @@ class TileWindTurbine extends TileTurbine with IBoilHandler
|
|||
override def canDrain(from: ForgeDirection, fluid: Fluid): Boolean = false
|
||||
|
||||
override def getTankInfo(from: ForgeDirection): Array[FluidTankInfo] = Array(gasTank.getInfo)
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
override def renderDynamic(pos: Vector3, frame: Float, pass: Int): Unit =
|
||||
{
|
||||
if (getMultiBlock.isPrimary)
|
||||
{
|
||||
GL11.glPushMatrix()
|
||||
GL11.glTranslated(pos.x + 0.5, pos.y + 0.5, pos.z + 0.5)
|
||||
GL11.glPushMatrix()
|
||||
RenderUtility.rotateBlockBasedOnDirectionUp(getDirection)
|
||||
GL11.glTranslatef(0, 0.35f, 0)
|
||||
GL11.glRotatef(180, 1, 0, 0)
|
||||
GL11.glRotatef(Math.toDegrees(mechanicalNode.angle).asInstanceOf[Float], 0, 1, 0)
|
||||
render(tier, multiBlockRadius, getMultiBlock.isConstructed)
|
||||
GL11.glPopMatrix()
|
||||
GL11.glPopMatrix()
|
||||
}
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
override def renderInventory(itemStack: ItemStack)
|
||||
{
|
||||
GL11.glPushMatrix()
|
||||
GL11.glTranslatef(0.5f, 0.5f, 0.5f)
|
||||
render(itemStack.getItemDamage, 1, false)
|
||||
GL11.glPopMatrix()
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
def render(tier: Int, size: Int, isConstructed: Boolean)
|
||||
{
|
||||
if (tier == 0)
|
||||
{
|
||||
RenderUtility.bind(Reference.blockTextureDirectory + "planks_oak.png")
|
||||
} else if (tier == 1)
|
||||
{
|
||||
RenderUtility.bind(Reference.blockTextureDirectory + "cobblestone.png")
|
||||
} else if (tier == 2)
|
||||
{
|
||||
RenderUtility.bind(Reference.blockTextureDirectory + "iron_block.png")
|
||||
|
||||
}
|
||||
if (isConstructed)
|
||||
{
|
||||
GL11.glScalef(0.3f, 1, 0.3f)
|
||||
GL11.glScalef(size * 2 + 1, Math.min(size, 2), size * 2 + 1)
|
||||
if (tier == 2)
|
||||
{
|
||||
GL11.glTranslatef(0, -0.11f, 0)
|
||||
TileWindTurbine.model.renderOnly("LargeMetalBlade")
|
||||
TileWindTurbine.model.renderOnly("LargeMetalHub")
|
||||
}
|
||||
else
|
||||
{
|
||||
TileWindTurbine.model.renderOnly("LargeBladeArm")
|
||||
GL11.glScalef(1f, 2f, 1f)
|
||||
GL11.glTranslatef(0, -0.05f, 0)
|
||||
TileWindTurbine.model.renderOnly("LargeHub")
|
||||
RenderUtility.bind(Reference.blockTextureDirectory + "wool_colored_white.png")
|
||||
TileWindTurbine.model.renderOnly("LargeBlade")
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
TileWindTurbine.model.renderOnly("SmallBlade")
|
||||
RenderUtility.bind(Reference.blockTextureDirectory + "log_oak.png")
|
||||
TileWindTurbine.model.renderOnly("SmallHub")
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Reference in a new issue