CrushedPixel
c4be5ec7e6
Change AdvancedPosition constructor to accept doubles for pitch and yaw, as the internal objects are doubles as well
2015-09-09 18:22:01 +02:00
CrushedPixel
eeded7a7fd
Spectator Keyframe segments using Shoulder Camera are rendered in a different color on the timeline
2015-09-06 18:35:15 +02:00
CrushedPixel
2ba7aec847
Added SpectatingMethod attribute to SpectatorData object, and more variables for the SHOULDER_CAM SpectatingMethod
2015-09-06 18:35:15 +02:00
CrushedPixel
eb8d9f5844
Fix comparison of Spectator Keyframe's Entity IDs using Integer objects, thus failing because of the use of ==
2015-09-04 19:13:17 +02:00
CrushedPixel
1e0f5de800
Correctly parse Keyframe Presets with the new Spectator Keyframes from JSON
2015-09-04 17:51:31 +02:00
CrushedPixel
2f522c68fe
Instead of using AdvancedPosition objects with a value for spectatedEntityID, use SpectatorData objects for Spectator Keyframes. This allows us to add more options to Spectator Keyframes.
2015-09-04 17:38:10 +02:00
CrushedPixel
f2752f2790
Custom Objects are now being saved with Path Presets instead of globally
2015-08-16 18:30:17 +02:00
CrushedPixel
0746004421
Places new CustomImageObjects at Camera's exact instead of Block Position
2015-08-16 15:37:21 +02:00
CrushedPixel
528ee52754
Added proper toString Method to TimestampValue for easier debugging
2015-07-23 12:34:30 +02:00
CrushedPixel
5bc26503a8
Remove unused Quaternion Interpolators. RIP, I definitely hat fun Slerping with you!
2015-07-21 11:49:26 +02:00
CrushedPixel
21b02e7e80
Added implementations for Quaternions to represent rotation values and Interpolators using the Slerp/Lerp algorithm
...
We might remove this later as it isn't used and requires the Apache Commons Math Library
2015-07-21 03:50:36 +02:00
CrushedPixel
f5a9723646
Added getLinearInterpolator() and getCubicInterpolator() methods to KeyframeValue interface to allow for specific Interpolators instead of the Generic Interpolators
...
Created InterpolationUtils class with a method to fix the Euler Rotation Break problem
Create AdvancedPositionSplineInterpolation and AdvancedPositionLinearInterpolation which always use the shortest possible paths between the Euler Rotation values of the Camera's Yaw and Roll
Remove Position Keyframe filtering when adding the Keyframe. This is now done by the AdvancedPositionInterpolation classes
2015-07-21 03:49:20 +02:00
johni0702
6422558028
General warning cleanup
2015-07-19 16:21:56 +02:00
CrushedPixel
7def1d97ef
Use Lombok for equals() and hashCode() methods in KeyframeSet
2015-07-16 15:04:04 +02:00
CrushedPixel
25f7b8dd0c
Access Vector3d's fields directly instead of using getter which for some reason fails the gradle build task
2015-07-14 04:31:32 +02:00
CrushedPixel
eb4f0fcc20
Added Preview for Camera's Position and look direction in Path Previews
...
Added getDestination() method to AdvancedPosition to calculate the destination based on a step size and the position's pitch/yaw
2015-07-14 04:25:19 +02:00
CrushedPixel
be3afc9e0e
Created LegacyKeyframeSetAdapter to properly deserialize old, non-generic PositionKeyframes and TimeKeyframes for Path Presets
2015-07-13 13:34:50 +02:00
CrushedPixel
f55f169d01
Removed MarkerKeyframe and replaced it with generic type of Keyframe using the new Marker POJO
2015-07-13 00:17:29 +02:00
CrushedPixel
75e1c17f1f
Added constructor to Position which takes a BlockPos
2015-07-12 21:06:54 +02:00
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
CrushedPixel
28f7d77800
GuiObjectManager now allows users to set Keyframes for Transformations
...
Fixed a bug in KeyframeList#getClosestKeyframeForTimestamp that made it only work with AdvancedPosition Keyframes
2015-07-11 14:26:43 +02:00
johni0702
3fb0d87824
Fix constructor of AdvancedPosition not storing advanced data
2015-07-10 14:54:11 +02:00
CrushedPixel
ef39c7466d
Renamed the commonly used Position POJO into AdvancedPosition, as it also hold pitch, yaw and roll
...
Made GuiDropdown only accept instances of GuiEntryListEntry to avoid unneccessary toString() methods returning the name
Added GuiEntryListValueEntry which holds a Value and a Name to be displayed
Continued work on GuiObjectManager
2015-07-10 04:27:15 +02:00
CrushedPixel
30ebfe96bd
Allowed GuiTimeline instances to have any height (instead of fixed 22px height) and updated draw() method accordingly
...
Added HSV noise to GuiTimeline's textures to somewhat hide the repeating body texture
Implemented GuiTimeline in GuiObjectManager's GuiObjectKeyframeTimeline
Added asInt() method to TimestampValue, to avoid int casts of value field
2015-07-10 03:37:13 +02:00
CrushedPixel
16b74d9824
Included Path Interpolation methods in KeyframeList and uses it in PathPreviewRenderer
...
Created newInstance() method in KeyframeValue interface
2015-07-08 23:55:48 +02:00
CrushedPixel
8a973fa3e9
Created @Interpolate annotation for Interpolators to know which fields to interpolate (instead of all public fields)
2015-07-08 11:43:58 +02:00
CrushedPixel
901b175efe
Created GuiMarkerTimeline to display Markers again
...
Created helper methods in ReplayHandler to provide information about MarkerKeyframes
2015-07-08 04:46:44 +02:00
CrushedPixel
5100b63964
Warning, GIGANTIC COMMIT!
...
Replaced Keyframe subclasses with Generic Types of Keyframe and replaced all instanceof calls
Replaced implementations of Linear and Spline interpolation to interpolate any Object that extends KeyframeValue and contains at least one public double Field. I'll need this for Keyframe interpolation in CustomImageObject Transformations
Made MarkerKeyframe *no* subclass of Keyframe to avoid conflicts with PositionKeyframe in instanceof checks for Keyframe#getValue
Created KeyframeList which extends ArrayList to provide some helping functions which DRY up the ReplayHandler
Split up ReplayHandler's keyframeList into timeKeyframeList and positionKeyframeList
2015-07-08 04:13:24 +02:00
CrushedPixel
cf2a8adb4c
Removed backVisible field from CustomImageObject
...
Updated new instance creations of GuiEntryListEntry whose constructor changed in last commit
2015-07-07 17:04:01 +02:00
CrushedPixel
9a0c5366e1
Updated ExtendedPosition to include a scale value and added it to GuiAssetAdder (which will be renamed soon)
2015-07-07 17:00:35 +02:00
johni0702
ddeb27be6f
Call super methods in equals and hashCode in ExtendedPosition
2015-07-07 14:39:08 +02:00
CrushedPixel
948803571d
GuiAssetAdder now allows to add/remove/edit Assets in a Replay. These Assets are not being saved yet.
2015-07-06 16:39:40 +02:00
CrushedPixel
a5eadd2d01
Created GuiEntryListEntry interface for GuiEntryList contained classes to avoid toString() methods from having to be abused
...
Created GuiFileChooser and according Listeners
Added (non-functional) GuiAssetAdder for CustomImageObjects
2015-07-06 13:44:50 +02:00
CrushedPixel
013d5963ff
Created CustomObjectRenderer to allow for BufferedImages to be rendered at a given Position. This supports Zoom and Rotation on all 3 axes.
2015-07-06 00:28:57 +02:00
johni0702
a058497727
Fix all warnings
...
Add and make use of Lombok
Remove Mojang API
Remove ZipFileUtils
Remove StreamTools in favor of Apache IOUtils
Keyframe should be abstract all derivatives final
Replace clone in Keyframe with copy
Move some constants from GuiReplaySetttings to GuiConstants
2015-06-29 21:45:37 +02:00
johni0702
3122c0a71e
Reduce object creation during rendering of path preview
...
Skip sqrt when comparing distances
2015-06-29 21:39:40 +02:00
CrushedPixel
3df1bdcfc8
Added PathPreviewRenderer to draw a Preview of the current Camera Path into the World
...
Added KeyframesModifyEvent to be dispatched whenever the ReplayHandler's Keyframe List is changed
Refactored Event package
Reworked Settings GUI
2015-06-15 14:41:20 +02:00
CrushedPixel
8570664edc
Fixed possible NPEs if Keyframes in List being null
2015-06-12 23:28:10 +02:00
CrushedPixel
8ef7e768d6
Got rid of cancerous Cloneable interface and fixed possible NPE when cloning a Position Keyframe
2015-06-12 23:27:43 +02:00
CrushedPixel
05cc37adcc
Marker names are now being displayed when hovering over them
...
Marker names are now editable in GuiEditKeyframe
2015-06-10 16:44:29 +02:00
CrushedPixel
b2ad52d5b6
Markers are now subclasses of Keyframe
...
Markers can now be moved and jumped to on the Replay Timeline
2015-06-09 22:55:20 +02:00
CrushedPixel
d30ef19c89
Added Event Markers to Replay, which allow players to quickly mark important events while recording (M key by default)
...
Added Event Marker Indicators to be displayed on GuiTimeline
2015-06-09 16:08:06 +02:00
CrushedPixel
01f80294aa
Spectator Keyframes are now colored blue, and the timespan during which an Entity is spectated is tinted
2015-06-03 14:20:32 +02:00
johni0702
4c5e084edc
Use UUIDs instead of entity ids for storing invisible players
2015-06-01 14:35:44 +02:00
CrushedPixel
fe036d72d8
Added Spectator Keyframes and handles them properly in both normal and rendered Replay Paths
2015-05-31 13:54:34 +02:00
CrushedPixel
cbbc50a37a
Renamed "Camera Tilt" to "Camera Roll" (new naming convention!)
...
Changed Camera Roll to use Degree Values
Started adding Timeline Position Editing to GuiEditKeyframe
2015-05-22 17:06:36 +02:00
CrushedPixel
9396687802
Keyframes are now moveable by dragging them on the real timeline
2015-05-22 00:01:50 +02:00
CrushedPixel
fa187ae0e5
Added Option to save Player Visibility Settings in Replay
2015-05-20 23:56:34 +02:00
CrushedPixel
4754ecc6bf
Started creating GuiEditKeyframe
...
Therefore, added support for floating point numbers in GuiNumberInput
2015-05-20 16:40:54 +02:00
CrushedPixel
5fda527cb0
Made Camera Paths take the shortest way between two head rotation values (instead of spinning unnecessarily often)
2015-05-09 16:57:16 +02:00