mirror of
https://github.com/Creators-of-Create/Create.git
synced 2025-02-20 17:15:34 +01:00
clean up nether portal carriage handling
This commit is contained in:
parent
d556f08876
commit
cbd0cf20da
3 changed files with 10 additions and 60 deletions
|
@ -16,8 +16,6 @@ import java.util.function.Function;
|
|||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.simibubi.create.foundation.command.DebugValueCommand;
|
||||
|
||||
import org.apache.commons.lang3.mutable.MutableDouble;
|
||||
|
||||
import com.simibubi.create.content.contraptions.components.structureMovement.Contraption;
|
||||
|
@ -327,7 +325,7 @@ public class Carriage {
|
|||
dce.positionAnchor = dimension.equals(leadingBogeyDim) ? leadingBogey.getAnchorPosition()
|
||||
: pivoted(dce, dimension, point,
|
||||
leading ? leadingWheelSpacing / 2 : bogeySpacing + trailingWheelSpacing / 2,
|
||||
leadingUpsideDown, trailingUpsideDown, leading);
|
||||
leadingUpsideDown, trailingUpsideDown);
|
||||
|
||||
boolean backAnchorFlip = trailingBogey.isUpsideDown() ^ leadingBogey.isUpsideDown();
|
||||
|
||||
|
@ -335,11 +333,11 @@ public class Carriage {
|
|||
dce.rotationAnchors.setFirst(dimension.equals(leadingBogeyDim) ? leadingBogey.getAnchorPosition()
|
||||
: pivoted(dce, dimension, point,
|
||||
leading ? leadingWheelSpacing / 2 : bogeySpacing + trailingWheelSpacing / 2,
|
||||
leadingUpsideDown, trailingUpsideDown, leading));
|
||||
leadingUpsideDown, trailingUpsideDown));
|
||||
dce.rotationAnchors.setSecond(dimension.equals(trailingBogeyDim) ? trailingBogey.getAnchorPosition(backAnchorFlip)
|
||||
: pivoted(dce, dimension, point,
|
||||
leading ? leadingWheelSpacing / 2 + bogeySpacing : trailingWheelSpacing / 2,
|
||||
leadingUpsideDown, trailingUpsideDown, leading));
|
||||
leadingUpsideDown, trailingUpsideDown));
|
||||
|
||||
} else {
|
||||
if (dimension.equals(otherDimension)) {
|
||||
|
@ -347,10 +345,10 @@ public class Carriage {
|
|||
} else {
|
||||
dce.rotationAnchors.setFirst(leadingBogey.points.getFirst() == point ? point.getPosition()
|
||||
: pivoted(dce, dimension, point, leadingWheelSpacing,
|
||||
leadingUpsideDown, trailingUpsideDown, leading));
|
||||
leadingUpsideDown, trailingUpsideDown));
|
||||
dce.rotationAnchors.setSecond(leadingBogey.points.getSecond() == point ? point.getPosition()
|
||||
: pivoted(dce, dimension, point, leadingWheelSpacing,
|
||||
leadingUpsideDown, trailingUpsideDown, leading));
|
||||
leadingUpsideDown, trailingUpsideDown));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -368,26 +366,16 @@ public class Carriage {
|
|||
}
|
||||
|
||||
private Vec3 pivoted(DimensionalCarriageEntity dce, ResourceKey<Level> dimension, TravellingPoint start,
|
||||
double offset, boolean leadingUpsideDown, boolean trailingUpsideDown, boolean isLeading) {
|
||||
double offset, boolean leadingUpsideDown, boolean trailingUpsideDown) {
|
||||
if (train.graph == null)
|
||||
return dce.pivot == null ? null : dce.pivot.getLocation();
|
||||
TrackNodeLocation pivot = dce.findPivot(dimension, start == getLeadingPoint());
|
||||
if (pivot == null)
|
||||
return null;
|
||||
boolean flipped = false;
|
||||
if (!leadingUpsideDown && trailingUpsideDown) { // nu // fixme this code sucks and needs to be better
|
||||
flipped = start != getLeadingPoint() && (leadingBogey().isUpsideDown() != trailingBogey().isUpsideDown());
|
||||
} else if (leadingUpsideDown && !trailingUpsideDown) { // un
|
||||
flipped = start != getLeadingPoint() && (leadingBogey().isUpsideDown() != trailingBogey().isUpsideDown());
|
||||
}
|
||||
boolean flipped = start != getLeadingPoint() && (leadingUpsideDown != trailingUpsideDown);
|
||||
Vec3 startVec = start.getPosition(flipped);
|
||||
Vec3 portalVec = pivot.getLocation()
|
||||
.add(0, DebugValueCommand.tmpPortalOffset(leadingUpsideDown, trailingUpsideDown, isLeading), 0);
|
||||
// same side - other side
|
||||
// n(ormal)-n(ormal)
|
||||
// u(pside down)-u(pside down) what about un ? not tested yet un doesn't work with + 1 or -1. HALP
|
||||
// 1 works for: nn n nu
|
||||
//-1 works for: uu u
|
||||
.add(0, leadingUpsideDown ? -1.0 : 1.0, 0);
|
||||
return VecHelper.lerp((float) (offset / startVec.distanceTo(portalVec)), startVec, portalVec);
|
||||
}
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ public class AllCommands {
|
|||
.then(CameraDistanceCommand.register())
|
||||
.then(CameraAngleCommand.register())
|
||||
.then(FlySpeedCommand.register())
|
||||
.then(DebugValueCommand.register())
|
||||
//.then(DebugValueCommand.register())
|
||||
//.then(KillTPSCommand.register())
|
||||
.build();
|
||||
|
||||
|
|
|
@ -23,7 +23,7 @@ import net.minecraft.world.level.block.entity.BlockEntity;
|
|||
import net.minecraft.world.level.block.entity.CommandBlockEntity;
|
||||
import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
public class DebugValueCommand { //fixme this is *very* temporary
|
||||
public class DebugValueCommand {
|
||||
|
||||
public static float value = 0;
|
||||
|
||||
|
@ -38,42 +38,4 @@ public class DebugValueCommand { //fixme this is *very* temporary
|
|||
}));
|
||||
|
||||
}
|
||||
|
||||
// same side - other side
|
||||
// n(ormal)-n(ormal)
|
||||
// u(pside down)-u(pside down)
|
||||
// nu works with special handling, now to get un to work!
|
||||
// 1 works for: nn n
|
||||
//-1 works for: uu u
|
||||
public static double tmpPortalOffset(boolean leadingUpsideDown, boolean trailingUpsideDown, boolean isLeading) {
|
||||
double portalOffset = 0.0;
|
||||
if (!leadingUpsideDown && !trailingUpsideDown) { // nn
|
||||
return 1.0;
|
||||
} else if (leadingUpsideDown && trailingUpsideDown) { // uu
|
||||
return -1.0;
|
||||
} else if (leadingUpsideDown && !trailingUpsideDown) { // un
|
||||
if (isLeading) {
|
||||
return -1.0;
|
||||
} else {
|
||||
return -1.0;
|
||||
}
|
||||
} else if (!leadingUpsideDown && trailingUpsideDown) { // nu
|
||||
if (isLeading) {
|
||||
return 1.0;
|
||||
} else {
|
||||
return 1.0;
|
||||
}
|
||||
}
|
||||
Create.LOGGER.error("Theoretically unreachable code just got reached. HALP me please");
|
||||
return 0.0; // this is actually unreachable but yay
|
||||
/*if (!leadingUpsideDown) { // leading up
|
||||
portalOffset = 1.0;
|
||||
} else if (trailingUpsideDown) { // leading down, trailing down
|
||||
portalOffset = -1.0;
|
||||
} else { // leading down, trailing up - ahh
|
||||
portalOffset = DebugValueCommand.value;
|
||||
}
|
||||
return portalOffset;*/
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue