1
0
mirror of https://github.com/SquidDev-CC/CC-Tweaked synced 2024-10-02 08:50:47 +00:00

Cache the tool's transformation matrix

This commit is contained in:
Jonathan Coates 2021-08-08 12:28:25 +01:00
parent 5082947331
commit 39f3cf8cbe
No known key found for this signature in database
GPG Key ID: B9E431FF07C98D06

View File

@ -48,6 +48,9 @@ import java.util.function.Function;
public class TurtleTool extends AbstractTurtleUpgrade
{
private static final TransformationMatrix leftTransform = getMatrixFor( -0.40625f );
private static final TransformationMatrix rightTransform = getMatrixFor( 0.40625f );
protected final ItemStack item;
public TurtleTool( ResourceLocation id, String adjective, Item item )
@ -91,14 +94,7 @@ public class TurtleTool extends AbstractTurtleUpgrade
@OnlyIn( Dist.CLIENT )
public TransformedModel getModel( ITurtleAccess turtle, @Nonnull TurtleSide side )
{
float xOffset = side == TurtleSide.LEFT ? -0.40625f : 0.40625f;
Matrix4f transform = new Matrix4f( new float[] {
0.0f, 0.0f, -1.0f, 1.0f + xOffset,
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, -1.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
} );
return TransformedModel.of( getCraftingItem(), new TransformationMatrix( transform ) );
return TransformedModel.of( getCraftingItem(), side == TurtleSide.LEFT ? leftTransform : rightTransform );
}
@Nonnull
@ -293,4 +289,14 @@ public class TurtleTool extends AbstractTurtleUpgrade
Direction direction = tile.isRemoved() ? null : turtle.getDirection().getOpposite();
DropConsumer.clearAndDrop( turtle.getWorld(), turtle.getPosition(), direction );
}
private static TransformationMatrix getMatrixFor( float offset )
{
return new TransformationMatrix( new Matrix4f( new float[] {
0.0f, 0.0f, -1.0f, 1.0f + offset,
1.0f, 0.0f, 0.0f, 0.0f,
0.0f, -1.0f, 0.0f, 1.0f,
0.0f, 0.0f, 0.0f, 1.0f,
} ) );
}
}