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
f91791ff9e
Keyframes are now live edited (to allow for better fine tweaking of camera paths)
2015-07-24 18:00:01 +02:00
CrushedPixel
7b67fb4242
Instead of ticking the world once (which updated entities and such), simply set the EntityRenderer's lightmapUpdateNeeded to true when updating Ambient Lighting
...
Properly handle manual Gamma changes in LightingHandler not to confuse users why their Brightness setting is being reset constantly
2015-07-24 14:35:28 +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
aae4af2062
Rework GuiVideoRenderer's Estimated Time Left to ignore the first frame (which took a long time to initialize) and be able to cope with multiple frames changing since the last update (Fast Rendering Mode) | https://trello.com/c/szQQycno/
2015-07-24 13:09:32 +02:00
CrushedPixel
853c8a45e0
ComposedElements properly draw overlays of their underlying Elements
2015-07-23 22:41:48 +02:00
CrushedPixel
a51ab0cd44
To prevent particle rotations from being interpolated by MC, set prevRotationPitch and prevRotationYaw as well
2015-07-23 19:41:49 +02:00
CrushedPixel
ff65ced4a8
Since ReplayHandler#addKeyframe selects the Keyframe, deselect it after loading a Path Preset
2015-07-23 13:21:26 +02:00
CrushedPixel
be8286ad9c
Center and free the Mouse cursor whenever a GuiReplayOverlay is opened
2015-07-23 13:20:39 +02:00
CrushedPixel
371d26aaff
Revert "The reason why the Mouse was not visible on my Mac after rendering was that the cursor was at some very odd position far far away from the actual MC window (in fullscreen)."
...
This reverts commit d46be20d72 .
2015-07-23 13:14:47 +02:00
CrushedPixel
13481416b7
Fixed a major bug in the Time Keyframe interpolation when rendering a video that caused the Replay to be restarted while rendering. This occurred whenever videoTime exactly matched a Time Keyframe's Position and was fixed by passing true to KeyframeList#getPreviousKeyframe and KeyframeList#getNextKeyframe, which therefore return the Keyframe itself if the timestamp matches.
2015-07-23 13:13:36 +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
eb57e7be2c
Since we can't determine the file extension without parsing the actual ffmpeg arguments, we don't manually delete the destination video file when rendering but instead tell FFmpeg to overwrite this file if it already exists using the -y parameter.
2015-07-23 13:09:56 +02:00
CrushedPixel
e80d71db93
Clearing Keyframes resets the Timeline Cursor Position
2015-07-23 12:34:44 +02:00
CrushedPixel
528ee52754
Added proper toString Method to TimestampValue for easier debugging
2015-07-23 12:34:30 +02:00
CrushedPixel
d46be20d72
The reason why the Mouse was not visible on my Mac after rendering was that the cursor was at some very odd position far far away from the actual MC window (in fullscreen).
...
To workaround this, set the Cursor Position to 0, 0 after playing a Camera Path. | https://trello.com/c/IHxYiBTE/
2015-07-23 01:12:15 +02:00
CrushedPixel
6e9a77098a
When clicking Time/Marker Keyframes, the time is now traveled with the "Please wait" screen
2015-07-22 23:13:21 +02:00
CrushedPixel
9d025cfae0
Synchronizing the Replay Timeline now respects the Speed Slider's value as a stretch factor. Shift key ignores that stretch value.
2015-07-21 23:58:56 +02:00
CrushedPixel
0a71266a05
Properly filters S2BPacketChangeGameState to include weather effects like rain or sky color change | https://trello.com/c/hE8Uck3m/
...
Do not show Titles and Chat in Replay | https://trello.com/c/SUPgAjf1/
2015-07-21 18:10:46 +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
CrushedPixel
ff6b09dcba
Adjust MARKER_DISTANCE value in GuiTimeline to avoid visual glitches
2015-07-21 03:44:33 +02:00
CrushedPixel
91399301f7
GuiReplayOverlay: The Keyframe Timeline should be zoomed in more initially
...
Do not reset Timeline whenever resetUI is called, only if "deep" reset
2015-07-21 03:44:11 +02:00
CrushedPixel
d3b07e6679
Do not restrict Camera Yaw Values in GuiEditKeyframe
2015-07-21 03:41:02 +02:00
CrushedPixel
931a58a6a9
Learn english, Johni!
2015-07-21 03:40:38 +02:00
CrushedPixel
be77bb5a7b
Added recalculate() method to KeyframeList to recalc the underlying Interpolation
...
Recalculate Keyframe Lists in ReplayHandler upon firing a KeyframesModifyEvent
2015-07-20 02:32:20 +02:00
CrushedPixel
30f0a4d6a9
Implemented expected behaviour in KeyframeList#getPreviousKeyframe and KeyframeList#getNextKeyframe
2015-07-20 02:03:53 +02:00
CrushedPixel
6201a7d13c
Created drawRotatedRectWithCustomSizedTexture method in OpenGLUtils
2015-07-20 02:03:23 +02:00
CrushedPixel
585482a542
GuiArrowButton now draws from Texture instead of awful calculations
2015-07-20 02:03:01 +02:00
CrushedPixel
a435d5a271
Make GuiAdvancedButton only perform actions when enabled
2015-07-20 02:01:00 +02:00
CrushedPixel
e9c87b5c8c
Set selected Keyframe to null upon joining a Replay
2015-07-20 01:18:06 +02:00
CrushedPixel
a9d7e0f794
Properly set previousCallLinear value in KeyframeList#getInterpolatedValueForPathPosition(), MASSIVELY increasing performance as the interpolation isn't recalculated all the time
2015-07-20 01:17:52 +02:00
CrushedPixel
d9e2c2a7c8
Only get Fields to Interpolate in Interpolation implementations if not done before -> massive performance increase
2015-07-20 01:16:53 +02:00
CrushedPixel
9b76bcadcb
Fixed NPE in GuiEditKeyframe caused by super.onInit() call being too late... Johni0702, did you even test that Gui? | https://trello.com/c/PmcdLgzV/
2015-07-20 01:16:09 +02:00
CrushedPixel
4dccf5b3b6
Only render Path Preview within Render Distance
2015-07-20 01:14:53 +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
CrushedPixel
c309929276
Fixed GuiReplaySpeedSlider and GuiVideoFramerateSlider overriding the wrong methods
2015-07-19 15:29:57 +02:00
CrushedPixel
d6c03644b8
Created GuiOutsideClickableElement interface for GuiElements that can be deselected/closed by clicking outside of them and properly forward mouse clicks to these elements
2015-07-19 14:42:12 +02:00
CrushedPixel
07fc3ceced
Rewrote GuiRenderSettings to use the semi-new Gui System and have three instead of two pages (Video Settings, Advanced Settings, Command Line Settings)
2015-07-19 13:27:37 +02:00
CrushedPixel
0dc4ddca08
Reduced Constructor sets GuiAdvancedTextField's height
2015-07-19 13:27:37 +02:00
CrushedPixel
5087de8cd5
GuiColorPicker#hoveringPicker only returns true if the GuiElement is enabled
2015-07-19 13:27:37 +02:00
CrushedPixel
51814e143b
Created dummy GuiOverlayElement interface for ComposedElement to determine which Elements to draw last
...
Added methods to retrieve position and size from a GuiElement
Added draw() method with option to override hovered boolean to GuiElement interface and implemented it. This is required for GuiAdvancedButtons which would be tinted blue (as if hovered) even though an overlying GuiElement (e.g. GuiDropdown) was hovered
2015-07-19 13:27:37 +02:00
CrushedPixel
33bed3e6a5
Made GuiReplaySpeedSlider a subclass of GuiAdvancedButton
2015-07-19 13:27:37 +02:00
CrushedPixel
23b77b2375
Right-Clicking a Position Keyframe teleports the Camera to that Keyframe's Position, Right-Clicking a Time Keyframe jumps to its Timestamp | https://trello.com/c/dL48nHyG/
...
DRYed closest Keyframe calculation on GuiKeyframeTimeline
DRYed closest Keyframe calculation on GuiMarkerTimeline
2015-07-19 13:27:37 +02:00
CrushedPixel
b4eb366688
Added more Constructors to GuiAdvancedTextField
2015-07-19 13:27:37 +02:00
CrushedPixel
b851632ffb
added getWidth() method to GuiString which returns the width of the drawn String (calculated using FontRenderer#getStringWidth())
2015-07-19 13:27:37 +02:00
CrushedPixel
3c7c1198cc
Made GuiColorPicker a subclass of GuiAdvancedButton and call pickerToggled() method from own click handler methods
2015-07-19 13:27:36 +02:00
CrushedPixel
5b167351b0
ComposedElement initially sorts its elements and respects their elements' y position if both are Dropdowns
2015-07-19 13:27:36 +02:00
CrushedPixel
3299986e18
Made GuiVideoFramerateSlider a subclass of GuiAdvancedButton and added missing @Override annotations
2015-07-19 13:27:36 +02:00
CrushedPixel
708201c456
Added CheckBoxListener for GuiAdvancedCheckBox
2015-07-19 13:27:36 +02:00
CrushedPixel
8f82ca5434
Implemented NoOverlay interface for some more GUIs
2015-07-17 16:21:23 +02:00
CrushedPixel
2f78dc5e27
Don't render indicators in GuiReplayOverlay if current screen implements NoOverlay
2015-07-17 16:21:02 +02:00
CrushedPixel
d5be3b8eb6
Fix typo in Renderer Descriptions (useable -> usable)
2015-07-17 16:20:38 +02:00
CrushedPixel
33ff72b878
Wait until world has loaded when previewing a Camera Path
...
Clean up unused fields and thus unnecessary methods in ReplayProcess
2015-07-17 14:35:58 +02:00
CrushedPixel
83b91b7d8e
CustomImageObject#getResourceLocation() should return null if it's not registered yet (thread safety)
2015-07-17 13:33:54 +02:00
CrushedPixel
edf2f9ce13
Undo removed ReplayHandler#spectateCamera() call which was inherited from ReplayHandler#setCameraEntity() call which was removed in commit ef39c74
2015-07-17 13:33:54 +02:00
CrushedPixel
a46a223070
Cleaned up OpenGL calls in CustomObjectRenderer and PathPreviewRenderer
2015-07-17 13:33:54 +02:00
CrushedPixel
d360ee5e2e
Moved Add and Remove Buttons in GuiObjectManager 5px upwards
2015-07-17 12:27:55 +02:00
CrushedPixel
7094a18106
Close Toolbar in GuiReplayOverlay when GuiMouseInput is closed
2015-07-17 12:16:10 +02:00
CrushedPixel
efd82861c2
Rename mislabeled TimestampUtils#getMinutesFromTimestamp Method to TimestampUtils#timestampToWholeMinutes
2015-07-17 12:16:09 +02:00
CrushedPixel
a55173ffc7
Marker Keyframes are initially selected after creating them and get properly deselected when removing them
2015-07-17 02:30:23 +02:00
CrushedPixel
0614b5e750
Prevent "Synchronize Timelines" feature from exceeding the Keyframe Timeline length
2015-07-17 02:25:51 +02:00
CrushedPixel
21938250f6
Keyframe Timeline Length is a Magic Constant
2015-07-17 02:25:29 +02:00
CrushedPixel
d708360c63
Render Camera Indicator in lower right corner if Path Preview is active
2015-07-17 02:12:40 +02:00
CrushedPixel
028b7ff7b7
Added consistency to naming of Keybindings
2015-07-17 01:26:41 +02:00
CrushedPixel
a7cf488d0b
Reorder custom Replay Mod Keybindings for better display in GuiReplayOverlay
2015-07-17 01:26:11 +02:00
CrushedPixel
0ae8e9583a
Add Toolbar to GuiReplayOverlay, showing all Keybindings as handy buttons
2015-07-17 01:25:50 +02:00
CrushedPixel
154f3e3c04
Do not show Clear Keyframe Callback if no Keyframes present
2015-07-17 01:25:13 +02:00
CrushedPixel
e0dec32b1d
Updated TimestampUtils#getMinutesFromTimestamp, allowing the returned value be higher than 60
2015-07-16 22:57:59 +02:00
CrushedPixel
238acf2eca
Initially validate inputs in GuiRenderSettings
2015-07-16 22:04:06 +02:00
CrushedPixel
9ba99d1794
Added restriction for Encoding Presets with the yuv420 setting (width and height have to be even numbers)
2015-07-16 21:56:29 +02:00
CrushedPixel
da82e3e1f2
Draw Elements in GuiRenderSettings in the correct order
2015-07-16 21:09:58 +02:00
CrushedPixel
af3ca17bcd
Fixed Encoding Presets to allow for whitespaces in the File Name
2015-07-16 21:09:58 +02:00
CrushedPixel
87b99d1f8f
Fixed min/max values for GuiNumberInputs in GuiEditKeyframe
2015-07-16 21:09:58 +02:00
CrushedPixel
bd1e8b4866
Fixed small mistake in localizaton
2015-07-16 21:09:58 +02:00
CrushedPixel
e29b6ec9a0
Use java.util.Arrays instead of scala.actors.threadpool.Arrays in GuiKeyframeRepository to prevent a crash at runtime
2015-07-16 20:20:57 +02:00
CrushedPixel
0c7e7a3e0c
removed unnecessary null check when calling ReplayHandler#getCameraEntity in ReplaySender
2015-07-16 19:41:24 +02:00
CrushedPixel
a19317ecdd
CameraEntity now registers itself. It doesn't need external code doing its job!
2015-07-16 17:45:52 +02:00
CrushedPixel
86bd646b35
Another commit to fix underlining in GuiReplayInstanceChooser... I'm so sorry Johni :(
2015-07-16 17:37:20 +02:00
CrushedPixel
531319a4d1
Added Checkbox to GuiRenderSettings to enable/disable Name Tag rendering
2015-07-16 17:28:33 +02:00
CrushedPixel
5634507ce7
GuiReplayInstanceChooser: Undid underlining the Replay File String and underline the Gui Title again
2015-07-16 16:46:07 +02:00
CrushedPixel
cbdaff9e41
Colors "Original" and "Modified" strings in GuiReplayInstanceChooser
2015-07-16 16:21:05 +02:00
CrushedPixel
de07811229
Created GuiReplayInstanceChooser which allows users to define whether they want to load their modified version of an online replay or load the original
2015-07-16 16:21:05 +02:00
CrushedPixel
7def1d97ef
Use Lombok for equals() and hashCode() methods in KeyframeSet
2015-07-16 15:04:04 +02:00
CrushedPixel
830087de36
ReplayHandler#spectateCamera() creates a new CameraEntity if the current instance is null
2015-07-16 14:59:37 +02:00
CrushedPixel
d25046d091
Fixed NPE in CustomObjectRenderer caused by mc.getRenderViewEntity() returning null
2015-07-16 14:45:26 +02:00
CrushedPixel
ef8dccf2cb
The ReplayFileAppender now saves downloaded files which were modified in the Replay Folder
2015-07-16 14:45:03 +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
ddc9ff9bcc
Re-added Lossless MKV Render Preset
2015-07-16 13:50:22 +02:00
CrushedPixel
9576e7b35c
Prevented NPE in TickAndRenderListener
2015-07-16 13:50:10 +02:00
CrushedPixel
5b78f82116
In GuiAssetManager, directly modify the ReplayHandler's Asset Repository instance, as ReplayImage#loadFromStream uses this instance to determine whether it has to notify Custom Image Objects about an image change
2015-07-16 13:37:15 +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
CrushedPixel
7790aee3cb
Replaced lossless encoding with high quality ( -qp 1 instead of -qp 0 ) because (quote ffmpeg.org): Most non-FFmpeg based players will not be able to decode lossless (but YouTube can), so if compatibility is an issue you should not use lossless.
2015-07-15 23:59:23 +02:00
CrushedPixel
57100735a4
Filed GuiFileChooser opening an "Open" dialog when a "Save" dialog should be opened
2015-07-15 23:57:58 +02:00
CrushedPixel
5816ff1f80
Fix GuiAdvancedButton drawing a Tooltip if the Hover Text String is empty
2015-07-15 23:57:30 +02:00
CrushedPixel
936f242b4c
Added Encoding Presets to GuiRenderSettings and removed Checkbox for Custom Resolution
2015-07-15 16:50:58 +02:00
CrushedPixel
13314e27da
Set latestModVersion to true by default so the user doesn't get an update notification if their internet failed
...
If in a dev environment, ApiClient#isVersionUpToDate always returns true
2015-07-15 14:45:00 +02:00