Files
ReplayModCinematic/src/main/java/eu/crushedpixel/replaymod/holders/Transformations.java
CrushedPixel 45f64faa77 Created CustomObjectRepository which can be serialized by Gson, storing all CustomImageObjects created
CustomObjectRepository is now being saved to and loaded from the ReplayFile
The CustomObjectRenderer uses the GuiObjectManager's timeline cursor position as interpolation timestamp for the CustomImageObjects which are drawn if a GuiObjectManager is open (instant preview)
KeyframeList's add() method now removes Keyframes with the same timestamp before adding the new Keyframe
Transformations class now holds default values to prevent NullPointerExceptions in methods calling getTransformationForTimestamp()
Added Javadoc to Transformation POJO
Created NumberValueChangeListener which can be applied to GuiNumberInput objects
Made step size customizable in GuiDraggingNumberInput
Changing a ReplayImageAssets image now notifies the CustomImageObjects linked to that asset
Modified RoundUtils to provide a round() method which uses the DecimalFormat class instead of Math.round which is unstable
2015-07-12 16:21:11 +02:00

62 lines
2.3 KiB
Java

package eu.crushedpixel.replaymod.holders;
import eu.crushedpixel.replaymod.interpolation.KeyframeList;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Transformations {
private Position defaultAnchor = new Position(0, 0, 0),
defaultPosition = new Position(0, 0, 0),
defaultOrientation = new Position(0, 0, 0),
defaultScale = new Position(100, 100, 100);
private NumberValue defaultOpacity = new NumberValue(100);
private KeyframeList<Position> anchorKeyframes = new KeyframeList<Position>();
private KeyframeList<Position> positionKeyframes = new KeyframeList<Position>();
private KeyframeList<Position> orientationKeyframes = new KeyframeList<Position>();
private KeyframeList<Position> scaleKeyframes = new KeyframeList<Position>();
private KeyframeList<NumberValue> opacityKeyframes = new KeyframeList<NumberValue>();
public KeyframeList getKeyframeListByID(int id) {
switch(id) {
case 0:
return anchorKeyframes;
case 1:
return positionKeyframes;
case 2:
return orientationKeyframes;
case 3:
return scaleKeyframes;
case 4:
return opacityKeyframes;
default:
return null;
}
}
public Transformation getTransformationForTimestamp(int timestamp) {
Position anchor = anchorKeyframes.getInterpolatedValueForTimestamp(timestamp, true);
if(anchor == null) anchor = defaultAnchor;
Position position = positionKeyframes.getInterpolatedValueForTimestamp(timestamp, true);
if(position == null) position = defaultPosition;
Position orientation = orientationKeyframes.getInterpolatedValueForTimestamp(timestamp, true);
if(orientation == null) orientation = defaultOrientation;
Position scale = scaleKeyframes.getInterpolatedValueForTimestamp(timestamp, true);
if(scale == null) scale = defaultScale;
NumberValue opacity = opacityKeyframes.getInterpolatedValueForTimestamp(timestamp, true);
if(opacity == null) opacity = defaultOpacity;
return new Transformation(anchor, position, orientation, scale, opacity.value);
}
}