From 307c068db9effaf5311c734ff5ca559a8132a547 Mon Sep 17 00:00:00 2001 From: Glease <4586901+Glease@users.noreply.github.com> Date: Sat, 29 May 2021 19:10:15 +0800 Subject: [PATCH] Add convenient methods for fast IAlignmentLimits creation --- .../alignment/IAlignmentLimits.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/com/gtnewhorizon/structurelib/alignment/IAlignmentLimits.java b/src/main/java/com/gtnewhorizon/structurelib/alignment/IAlignmentLimits.java index 105b19d0..50eea865 100644 --- a/src/main/java/com/gtnewhorizon/structurelib/alignment/IAlignmentLimits.java +++ b/src/main/java/com/gtnewhorizon/structurelib/alignment/IAlignmentLimits.java @@ -23,9 +23,27 @@ public interface IAlignmentLimits { alignment.getFlip()); } + static IAlignmentLimits allowOnly(ExtendedFacing... allowedFacings) { + Builder builder = Builder.denyAll(); + for (ExtendedFacing allowedFacing : allowedFacings) { + builder.allow(allowedFacing); + } + return builder.build(); + } + + static IAlignmentLimits denyOnly(ExtendedFacing... allowedFacings) { + Builder builder = Builder.allowAll(); + for (ExtendedFacing allowedFacing : allowedFacings) { + builder.deny(allowedFacing); + } + return builder.build(); + } + class Builder { protected final boolean[] validStates = new boolean[STATES_COUNT]; + private Builder() {} + public static Builder allowAll() { Builder b = new Builder(); Arrays.fill(b.validStates, true);