Thin Facades.

This commit is contained in:
AlgorithmX2
2014-01-30 18:49:27 -06:00
parent cedff21e7a
commit 1929579df0
2 changed files with 54 additions and 22 deletions
+33 -21
View File
@@ -28,6 +28,7 @@ public class FacadePart implements IFacadePart
public final ItemStack facade;
public final ForgeDirection side;
public int thickness = 2;
public FacadePart(ItemStack facade, ForgeDirection side) {
if ( facade == null )
@@ -105,9 +106,9 @@ public class FacadePart implements IFacadePart
instance.setTexture( myIcon );
if ( isBC() )
instance.setBounds( 6, 6, 10, 10, 10, 14 );
instance.setBounds( 6, 6, 10, 10, 10, 15 );
else
instance.setBounds( 7, 7, 10, 9, 9, 14 );
instance.setBounds( 7, 7, 10, 9, 9, 15 );
instance.renderBlock( x, y, z, renderer );
instance.setTexture( null );
@@ -131,7 +132,7 @@ public class FacadePart implements IFacadePart
}
renderer.uvRotateBottom = renderer.uvRotateEast = renderer.uvRotateNorth = renderer.uvRotateSouth = renderer.uvRotateTop = renderer.uvRotateWest = 0;
instance.setBounds( 0, 0, 14, 16, 16, 16 );
instance.setBounds( 0, 0, 16 - getFacadeThickness(), 16, 16, 16 );
instance.prepareBounds( renderer );
if ( renderer instanceof RenderBlocksWorkaround )
@@ -164,26 +165,26 @@ public class FacadePart implements IFacadePart
else if ( side == ForgeDirection.NORTH || side == ForgeDirection.SOUTH )
{
if ( fc.getFacade( ForgeDirection.UP ) != null )
renderer.renderMaxY -= 2.0 / 16.0;
renderer.renderMaxY -= getFacadeThickness() / 16.0;
if ( fc.getFacade( ForgeDirection.DOWN ) != null )
renderer.renderMinY += 2.0 / 16.0;
renderer.renderMinY += getFacadeThickness() / 16.0;
instance.renderBlockCurrentBounds( x, y, z, renderer );
}
else
{
if ( fc.getFacade( ForgeDirection.UP ) != null )
renderer.renderMaxY -= 2.0 / 16.0;
renderer.renderMaxY -= getFacadeThickness() / 16.0;
if ( fc.getFacade( ForgeDirection.DOWN ) != null )
renderer.renderMinY += 2.0 / 16.0;
renderer.renderMinY += getFacadeThickness() / 16.0;
if ( fc.getFacade( ForgeDirection.SOUTH ) != null )
renderer.renderMaxZ -= 2.0 / 16.0;
renderer.renderMaxZ -= getFacadeThickness() / 16.0;
if ( fc.getFacade( ForgeDirection.NORTH ) != null )
renderer.renderMinZ += 2.0 / 16.0;
renderer.renderMinZ += getFacadeThickness() / 16.0;
instance.renderBlockCurrentBounds( x, y, z, renderer );
}
@@ -200,10 +201,10 @@ public class FacadePart implements IFacadePart
else if ( side == ForgeDirection.NORTH || side == ForgeDirection.SOUTH )
{
if ( fc.getFacade( ForgeDirection.UP ) != null )
renderer.renderMaxY -= 2.0 / 16.0;
renderer.renderMaxY -= getFacadeThickness() / 16.0;
if ( fc.getFacade( ForgeDirection.DOWN ) != null )
renderer.renderMinY += 2.0 / 16.0;
renderer.renderMinY += getFacadeThickness() / 16.0;
renderSegmentBlockCurrentBounds( instance, x, y, z, renderer, busBounds.maxX, 0.0, 0.0, 1.0, 1.0, 1.0 );
renderSegmentBlockCurrentBounds( instance, x, y, z, renderer, 0.0, 0.0, 0.0, busBounds.minX, 1.0, 1.0 );
@@ -213,16 +214,16 @@ public class FacadePart implements IFacadePart
else
{
if ( fc.getFacade( ForgeDirection.UP ) != null )
renderer.renderMaxY -= 2.0 / 16.0;
renderer.renderMaxY -= getFacadeThickness() / 16.0;
if ( fc.getFacade( ForgeDirection.DOWN ) != null )
renderer.renderMinY += 2.0 / 16.0;
renderer.renderMinY += getFacadeThickness() / 16.0;
if ( fc.getFacade( ForgeDirection.SOUTH ) != null )
renderer.renderMaxZ -= 2.0 / 16.0;
renderer.renderMaxZ -= getFacadeThickness() / 16.0;
if ( fc.getFacade( ForgeDirection.NORTH ) != null )
renderer.renderMinZ += 2.0 / 16.0;
renderer.renderMinZ += getFacadeThickness() / 16.0;
renderSegmentBlockCurrentBounds( instance, x, y, z, renderer, 0.0, 0.0, busBounds.maxZ, 1.0, 1.0, 1.0 );
renderSegmentBlockCurrentBounds( instance, x, y, z, renderer, 0.0, 0.0, 0.0, 1.0, 1.0, busBounds.minZ );
@@ -345,23 +346,28 @@ public class FacadePart implements IFacadePart
return side;
}
public int getFacadeThickness()
{
return thickness;
}
@Override
public AxisAlignedBB getPrimaryBox()
{
switch (side)
{
case DOWN:
return AxisAlignedBB.getBoundingBox( 0.0, 0.0, 0.0, 1.0, 2.0 / 16.0, 1.0 );
return AxisAlignedBB.getBoundingBox( 0.0, 0.0, 0.0, 1.0, (getFacadeThickness()) / 16.0, 1.0 );
case EAST:
return AxisAlignedBB.getBoundingBox( 14.0 / 16.0, 0.0, 0.0, 1.0, 1.0, 1.0 );
return AxisAlignedBB.getBoundingBox( (16.0 - getFacadeThickness()) / 16.0, 0.0, 0.0, 1.0, 1.0, 1.0 );
case NORTH:
return AxisAlignedBB.getBoundingBox( 0.0, 0.0, 0.0, 1.0, 1.0, 2.0 / 16.0 );
return AxisAlignedBB.getBoundingBox( 0.0, 0.0, 0.0, 1.0, 1.0, (getFacadeThickness()) / 16.0 );
case SOUTH:
return AxisAlignedBB.getBoundingBox( 0.0, 0.0, 14.0 / 16.0, 1.0, 1.0, 1.0 );
return AxisAlignedBB.getBoundingBox( 0.0, 0.0, (16.0 - getFacadeThickness()) / 16.0, 1.0, 1.0, 1.0 );
case UP:
return AxisAlignedBB.getBoundingBox( 0.0, 14.0 / 16.0, 0.0, 1.0, 1.0, 1.0 );
return AxisAlignedBB.getBoundingBox( 0.0, (16.0 - getFacadeThickness()) / 16.0, 0.0, 1.0, 1.0, 1.0 );
case WEST:
return AxisAlignedBB.getBoundingBox( 0.0, 0.0, 0.0, 2.0 / 16.0, 1.0, 1.0 );
return AxisAlignedBB.getBoundingBox( 0.0, 0.0, 0.0, (getFacadeThickness()) / 16.0, 1.0, 1.0 );
default:
break;
@@ -392,4 +398,10 @@ public class FacadePart implements IFacadePart
{
return !(facade.getItem() instanceof IFacadeItem);
}
@Override
public void setThinFacades(boolean useThinFacades)
{
thickness = useThinFacades ? 1 : 2;
}
}