Commit Graph

59 Commits

Author SHA1 Message Date
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