Thin Facades.
This commit is contained in:
parent
cedff21e7a
commit
1929579df0
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -543,17 +543,37 @@ public class CableBusContainer implements AEMultiTile, ICableBusContainer
|
|||
if ( part != null )
|
||||
{
|
||||
setSide( s );
|
||||
BusCollisionHelper bch = new BusCollisionHelper( boxes, BusRenderHelper.instance.ax, BusRenderHelper.instance.ay, BusRenderHelper.instance.az );
|
||||
BusCollisionHelper bch = new BusCollisionHelper( boxes, BusRenderHelper.instance.ax, BusRenderHelper.instance.ay,
|
||||
BusRenderHelper.instance.az );
|
||||
part.getBoxes( bch );
|
||||
}
|
||||
}
|
||||
|
||||
boolean useThinFacades = false;
|
||||
double min = 2.0 / 16.0;
|
||||
double max = 14.0 / 16.0;
|
||||
|
||||
for (AxisAlignedBB bb : boxes)
|
||||
{
|
||||
int o = 0;
|
||||
o += bb.maxX > max ? 1 : 0;
|
||||
o += bb.maxY > max ? 1 : 0;
|
||||
o += bb.maxZ > max ? 1 : 0;
|
||||
o += bb.minX < min ? 1 : 0;
|
||||
o += bb.minY < min ? 1 : 0;
|
||||
o += bb.minZ < min ? 1 : 0;
|
||||
|
||||
if ( o >= 2 )
|
||||
useThinFacades = true;
|
||||
}
|
||||
|
||||
for (ForgeDirection s : ForgeDirection.VALID_DIRECTIONS)
|
||||
{
|
||||
IFacadePart fPart = fc.getFacade( s );
|
||||
if ( fPart != null )
|
||||
{
|
||||
AxisAlignedBB b = null;
|
||||
fPart.setThinFacades( useThinFacades );
|
||||
AxisAlignedBB pb = fPart.getPrimaryBox();
|
||||
for (AxisAlignedBB bb : boxes)
|
||||
{
|
||||
|
|
Loading…
Reference in a new issue