Commit Graph

71 Commits

Author SHA1 Message Date
CrushedPixel
4a5f66cab9 Fix LegacyKeyframeSetAdapter swallowing spectatedEntityID values of non-legacy Keyframes 2015-07-26 12:38:41 +02:00
CrushedPixel
efbf9bd3b9 Created RegexUtils class to provide commonly used Patterns for User input validation 2015-07-25 14:52:25 +02:00
CrushedPixel
3b93df30e5 Use a round method that does NOT crash when the computer's language uses commas as delimiter for floating point numbers (yes, German computers had a crash there) 2015-07-24 18:02:37 +02:00
CrushedPixel
bdd9d1da33 Replacing FileSystems call with File.getCanonicalFile in ReplayFileIO (which I should've used from the beginning) 2015-07-24 14:01:16 +02:00
CrushedPixel
4f94e41b9a Do not use Java 1.7 only File#toPath() method in ReplayFileIO#makeFolderFromPath 2015-07-24 13:26:30 +02:00
CrushedPixel
6547595318 ReplayFileIO#makeFolderFromPath removes dots (.) from file path to not confuse Windows File Systems. before: /eclipse/./replay_videos/, after: /eclipse/replay_videos/ 2015-07-23 13:11:01 +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
CrushedPixel
931a58a6a9 Learn english, Johni! 2015-07-21 03:40:38 +02:00
CrushedPixel
6201a7d13c Created drawRotatedRectWithCustomSizedTexture method in OpenGLUtils 2015-07-20 02:03:23 +02:00
CrushedPixel
702e02db65 Made calculation of Markers on GuiTimeline dynamic
Changed Real Timeline's Length to 30 minutes (request by multiple users)
2015-07-19 23:27:22 +02:00
johni0702
6422558028 General warning cleanup 2015-07-19 16:21:56 +02:00
CrushedPixel
efd82861c2 Rename mislabeled TimestampUtils#getMinutesFromTimestamp Method to TimestampUtils#timestampToWholeMinutes 2015-07-17 12:16:09 +02:00
CrushedPixel
e0dec32b1d Updated TimestampUtils#getMinutesFromTimestamp, allowing the returned value be higher than 60 2015-07-16 22:57:59 +02:00
johni0702
56efc8c5ec Use RGB instead of ARGB for export and therefore speed up OpenGL to output conversion process 2015-07-16 18:14:14 +02:00
johni0702
6a5b6fdac5 Add PBOs and PBO support for default rendering 2015-07-16 16:23:30 +02:00
CrushedPixel
d2921eaf54 Created getNextFreeFile method in ReplayFileIO to provide the next free file with a filename like FILENAME_X.EXTENSION 2015-07-16 14:43:58 +02:00
CrushedPixel
d1ffa877b0 Load download Folder from ReplayFileIO in DownloadedFileHandler
DRY code in ReplayFileIO to retreive and create directories from config
2015-07-16 14:01:46 +02:00
CrushedPixel
d45fcb8a34 Only register changes in ReplayFileAppender if something changed - this applies to GuiKeyframeRepository, GuiObjectManager, GuiPlayerOverview, GuiAssetManager
Added equals method to ReplayImageAsset which is based on the BufferedImage's hash code (which is calculated only once)
2015-07-16 13:37:15 +02:00
johni0702
7fd429e25f Rework rendering pipeline to make better use of multithreading
Move OpenGL frame to ARGB conversion to processing threads
Move video exporting to processing threads
Skip creation of BufferedImage and instead use ByteBuffer with ARGB content directly
2015-07-15 14:23:43 +02:00
CrushedPixel
9953bdf357 Added support for legacy Spectator Keyframes in LegacyKeyframeSetAdapter 2015-07-14 12:07:35 +02:00
CrushedPixel
3f12019288 Created CameraPathValidator to validate Camera Paths before playing them and uses its static validateCameraPath() method whenever a Camera Path is to be started
Camera Paths can't start if negative movement through time would be required
2015-07-13 15:47:57 +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
66c595eb04 Marker Keyframes are now being saved in a KeyframeList in the ReplayHandler
Made MarkerKeyframes names editable in GuiEditKeyframe
Shows "Unnamed Marker" if Marker name is empty
2015-07-13 01:21:48 +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
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
6a6873c3d7 Added ReflectionUtils helper class to find Fields with @Interpolate annotation in superclasses (Interpolators didn't account for Fields in AdvancedPosition inherited by Position) 2015-07-12 03:33:15 +02:00
johni0702
109a025a1e Only use java 6 methods 2015-07-10 14:54:11 +02:00
CrushedPixel
e26e09a264 Made GuiDraggingNumberInput fully functional
Linked GuiObjectManager to new Keybinding
Renamed RoundUtils#round to RoundUtils#round2Decimals for easier understanding
2015-07-08 12:13:23 +02:00
CrushedPixel
89cc6938f8 Reworked AssetRepository to link every Asset to a UUID
UUIDs are now being stored in the Replay File and loaded
2015-07-07 20:14:40 +02:00
CrushedPixel
e22b37babe Created ReplayAsset interface and AssetRepository class which can contain such ReplayAssets. ReplayAssets allow users to add custom Files (so far only images, might be extended by .obj files) to the Replay which will later be used for CustomImageObjects.
Created GuiReplayManager to allow users to manage their assets.
Created BoundingUtils class to provide a simple method to fit an image into given bounds. This implementation fixes https://trello.com/c/WTnicWkJ/
2015-07-07 18:45:48 +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
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
f19fc0ab36 Use ffmpeg for video exporting (default webm)
Remove monte media lib
2015-06-29 13:02:41 +02:00
CrushedPixel
cb6f3426f4 Prevented NPE in StringUtils#splitStringInMultipleRows 2015-06-18 15:52:01 +02:00
johni0702
f1327dbdc1 Add method to TooltipRenderer which accepts Color instead of ARGB int 2015-06-10 18:48:48 +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
9c01db6fe1 Localized SecondsToString method in DurationUtils
Added compact SecondsToShortString method to DurationUtils
2015-06-04 16:14:45 +02:00
johni0702
dd46027a3a Fix java 1.6 compatibility 2015-06-03 23:30:48 +02:00
johni0702
d171ff4346 Allow custom resolution for all video rendering modes
Remove tiled rendering
Choose different rendering strategy based on video size and framebuffer support
Make size of video writer queue configurable via system properties
2015-06-03 21:20:03 +02:00
CrushedPixel
6152104df3 Added Option to hide Server IP when uploading a Replay File 2015-06-03 20:33:26 +02:00
CrushedPixel
de78c1116e The ReplayFileAppender now changes Replay Files in one go (on Windows machines) if there is already a File to be added 2015-06-02 20:36:29 +02:00
CrushedPixel
2331634af9 Changed GuiRenderSettings to have "Advanced" settings
Added GuiColorPicker and implemented it for Greenscreen color choosing
2015-06-02 02:41:20 +02:00
johni0702
db030cf174 Fix NPE if there is no player info for a player entity 2015-06-01 23:58:50 +02:00
CrushedPixel
a2da85e9f0 Added Render Time and Time Left display to GuiVideoRenderer 2015-06-01 16:31:17 +02:00
CrushedPixel
2918e163d2 Added Eyecon as indicator that Ambient Lighting is enabled
Added ShutdownHook to Lighting Handler to prevent high Brightness Values from being saved
2015-06-01 13:57:42 +02:00
johni0702
bb773570e9 Add extensions to paths and visibility in replay files (preserves backwards compatibility) 2015-06-01 13:37:04 +02:00
CrushedPixel
39fe6dec4e Added TooltipRenderer to mimic Item Tooltip Rendering for hover texts and replaced some error/info messages to use the TooltipRenderer 2015-05-31 17:13:21 +02:00
johni0702
37d31408bd Save resource packs to replay file and use those during replay 2015-05-29 12:16:28 +02:00
johni0702
9f3a97f65c Cleanup, relocate and split up GuiReplayOverlay
Merge gui resources into one texture
2015-05-26 01:08:22 +02:00