Rebalance the maximum and default SpectatorDataThirdPersonInfo#shoulderCamSmoothness values (+1 squashed commit)

Squashed commits:
[d1374a7] Information about the shoulder camera's position are now stored in a separate, interpolateable Object instead of directly in the SpectatorData Object
This commit is contained in:
CrushedPixel
2015-09-09 23:23:33 +02:00
parent d839204855
commit 7196bc03bd
3 changed files with 58 additions and 29 deletions

View File

@@ -442,10 +442,10 @@ public abstract class GuiEditKeyframe<T extends KeyframeValue> extends GuiScreen
shoulderYawString = new GuiString(0, 0, Color.WHITE, I18n.format("replaymod.gui.editkeyframe.spec.method.shoulder.yaw"));
shoulderSmoothnessString = new GuiString(0, 0, Color.WHITE, I18n.format("replaymod.gui.editkeyframe.spec.method.shoulder.smoothness"));
shoulderDistanceInput = new GuiDraggingNumberInput(fontRendererObj, 0, 0, 0, 0d, 30d, data.getShoulderCamDistance(), true, "", 0.1);
shoulderPitchOffsetInput = new GuiDraggingNumberInput(fontRendererObj, 0, 0, 0, -90d, 90d, (double)data.getShoulderCamPitchOffset(), false, "°", 1);
shoulderYawOffsetInput = new GuiDraggingNumberInput(fontRendererObj, 0, 0, 0, null, null, (double)data.getShoulderCamYawOffset(), false, "°", 1);
shoulderSmoothnessInput = new GuiDraggingNumberInput(fontRendererObj, 0, 0, 0, 0.1d, 1d, data.getShoulderCamSmoothness()/1000d, true, "", 0.1);
shoulderDistanceInput = new GuiDraggingNumberInput(fontRendererObj, 0, 0, 0, 0d, 30d, data.getThirdPersonInfo().shoulderCamDistance, true, "", 0.1);
shoulderPitchOffsetInput = new GuiDraggingNumberInput(fontRendererObj, 0, 0, 0, -90d, 90d, data.getThirdPersonInfo().shoulderCamPitchOffset, false, "°", 1);
shoulderYawOffsetInput = new GuiDraggingNumberInput(fontRendererObj, 0, 0, 0, null, null, data.getThirdPersonInfo().shoulderCamYawOffset, false, "°", 1);
shoulderSmoothnessInput = new GuiDraggingNumberInput(fontRendererObj, 0, 0, 0, 0.1d, 3d, data.getThirdPersonInfo().shoulderCamSmoothness, true, "", 0.1);
shoulderCamSettings = new ComposedElement(
shoulderDistanceString, shoulderDistanceInput,
@@ -486,10 +486,10 @@ public abstract class GuiEditKeyframe<T extends KeyframeValue> extends GuiScreen
public void onGuiClosed() {
SpectatorData data = (SpectatorData)keyframe.getValue();
data.setSpectatingMethod(SpectatorData.SpectatingMethod.values()[perspectiveButton.getValue()]);
data.setShoulderCamDistance(shoulderDistanceInput.getPreciseValue());
data.setShoulderCamPitchOffset(shoulderPitchOffsetInput.getIntValue());
data.setShoulderCamYawOffset(shoulderYawOffsetInput.getIntValue());
data.setShoulderCamSmoothness((int)(shoulderSmoothnessInput.getPreciseValue()*1000));
data.getThirdPersonInfo().shoulderCamDistance = shoulderDistanceInput.getPreciseValue();
data.getThirdPersonInfo().shoulderCamPitchOffset = shoulderPitchOffsetInput.getIntValue();
data.getThirdPersonInfo().shoulderCamYawOffset = shoulderYawOffsetInput.getIntValue();
data.getThirdPersonInfo().shoulderCamSmoothness = shoulderSmoothnessInput.getPreciseValue();
super.onGuiClosed();
}
}

View File

@@ -18,27 +18,7 @@ public class SpectatorData extends AdvancedPosition {
private SpectatingMethod spectatingMethod = SpectatingMethod.FIRST_PERSON;
//these fields are only relevant for SpectatingMethod.SHOULDER_CAM
/**
* The shoulder camera's distance (in blocks) to the player
*/
private double shoulderCamDistance = 3;
/**
* The shoulder camera's pitch offset in degrees, value between -90 and 90
*/
private float shoulderCamPitchOffset = 0;
/**
* The shoulder camera's rotation around the player in degrees
*/
private float shoulderCamYawOffset = 0;
/**
* The distance between the automatically calculated position keyframes in milliseconds
*/
private int shoulderCamSmoothness = 500;
private SpectatorDataThirdPersonInfo thirdPersonInfo = new SpectatorDataThirdPersonInfo();
public int getSpectatedEntityID() {
if(spectatedEntityID == null) throw new IllegalStateException();

View File

@@ -0,0 +1,49 @@
package eu.crushedpixel.replaymod.holders;
import eu.crushedpixel.replaymod.interpolation.*;
import lombok.AllArgsConstructor;
import lombok.NoArgsConstructor;
@AllArgsConstructor
@NoArgsConstructor
public class SpectatorDataThirdPersonInfo implements KeyframeValue {
/**
* The shoulder camera's distance (in blocks) to the player
*/
@Interpolate
public double shoulderCamDistance = 3;
/**
* The shoulder camera's pitch offset in degrees, value between -90 and 90
*/
@Interpolate
public double shoulderCamPitchOffset = 0;
/**
* The shoulder camera's rotation around the player in degrees
*/
@Interpolate
public double shoulderCamYawOffset = 0;
/**
* The distance between the automatically calculated position keyframes in seconds
*/
@Interpolate
public double shoulderCamSmoothness = 1;
@Override
public KeyframeValue newInstance() {
return new SpectatorDataThirdPersonInfo();
}
@Override
public Interpolation getLinearInterpolator() {
return new GenericLinearInterpolation<SpectatorDataThirdPersonInfo>();
}
@Override
public Interpolation getCubicInterpolator() {
return new GenericSplineInterpolation<SpectatorDataThirdPersonInfo>();
}
}