CrushedPixel
d31128fc11
Fix GuiReplayOverlay not resizing upon Gui Scale change (did it for you, Johni)
2015-08-22 16:35:18 +02:00
CrushedPixel
959a4c3ce1
Fixed GuiReplaySpeedSlider's Display String incorrectly resetting upon Window resize
2015-08-22 16:35:18 +02:00
CrushedPixel
6f35b175fd
Some more cleanup in MinecraftTicker
2015-08-22 16:35:17 +02:00
CrushedPixel
989dbd76e5
Remove unnecessary method calls in MinecraftTicker (mainly Spectator Mod and Item Pick related)
2015-08-22 16:35:17 +02:00
CrushedPixel
605526e524
Clean up unnecessary value assignment in GuiReplaySpeedSlider Constructor, which is overridden by calling the reset() method two statements later
2015-08-22 16:35:17 +02:00
CrushedPixel
fd5e351f82
The TickAndRenderListener already handles the Keybindings, no need to do so in GuiMouseInput
2015-08-22 16:35:17 +02:00
CrushedPixel
e4b52c62f8
In the TickAndRenderListenener, replace the tick() Method which listens to all TickEvents with a onRenderTick Method which listens only to RenderTickEvents. This way, Key and Mouse Inputs aren't fired more frequently while the Replay is not paused. (Camera Roll has the same speed now while paused and unpaused)
2015-08-22 16:35:17 +02:00
CrushedPixel
b63f19d082
Remove unnecessary calls to LWJGL Keyboard functions in KeyInputHandler
2015-08-22 16:35:17 +02:00
CrushedPixel
00b0c56935
Instead of counting all values larger than or equal 1000 as "Ambient Lighting Gamma", only count 1000 itself as "Ambient Lighting Gamma". So unless a Player manually sets his Gamma Value to 1000, the Brightness won't be reset to "Moody" anymore - before this change, every value larger than 1000 would be reset to "Moody" as well.
2015-08-18 21:19:44 +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
c95c2f0e4c
Manually unescape HTML Quote entities to be escaped quotes in the JSON to prevent MalformedJSONExceptions in the GsonApiClient
2015-08-16 18:30:17 +02:00
CrushedPixel
5d551a76d2
Apply a new ResourceLocation to each new CustomImageObject instead of sharing a ResourceLocation
2015-08-16 15:39: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
5cb4682ad9
Deep-Copies the CustomImageObjects from the original Object List in the GuiObjectManager to prevent the dirty check when closing the GUI from failing
2015-08-16 14:52:32 +02:00
CrushedPixel
46f13a200c
For some unknown reason, this combination of mc.toggleFullscreen() and the Swing File Chooser doesn't freeze the JVM on Windows when in Fullscreen
2015-08-16 12:11:06 +02:00
CrushedPixel
c7072dbef2
Removed potentially misleading information about Vanilla Shader Support in Default Rendering
2015-08-16 12:11:05 +02:00
CrushedPixel
1d61d6c85c
Correctly pause/slow down/speed up the World Border Animation using Mixin magic
2015-08-15 14:37:14 +02:00
CrushedPixel
fd9f4529ee
Correctly pause/speed up/slow down the End Portal Animation using Mixin magic
2015-08-15 14:32:34 +02:00
CrushedPixel
599aa2cf53
Redirect S19PacketEntityStatus to the Replay Player's entityID in ReplaySender
...
Removed unnecessary Event Listeners in RecordingHandler that injected S19PacketEntityStatus whenever the Player was damaged or died
2015-08-14 16:26:32 +02:00
CrushedPixel
130e45a33a
Remove the commented Donation Test Code
2015-08-14 16:26:32 +02:00
CrushedPixel
88cea2d86d
Add suspension error to language file
2015-08-12 22:27:11 +02:00
CrushedPixel
2d756bfc9a
Fix Transparency of Custom Image Objects
2015-08-12 22:27:11 +02:00
CrushedPixel
0ce09af088
Push/Pop Attributes in PathPreviewRenderer, fixing https://trello.com/c/mROgxEWF/
2015-08-12 18:20:31 +02:00
CrushedPixel
a9fb20fa18
Remove SafeEntityRenderer
2015-08-12 18:20:31 +02:00
CrushedPixel
0c55411f7c
Add ThankYou.txt containing all Kickstarter Backers >= $25
2015-08-12 11:49:20 +02:00
CrushedPixel
d214a05d76
Updated build.gradle for Version 1.0 #hype!!
...
Updated mcmod.info to finally contain more than "an example placeholder mod"
2015-08-12 11:32:03 +02:00
CrushedPixel
d8cd278399
Prevent NPE in GuiReplayListEntry that can occur when the API returns an invalid Thumbnail
2015-08-12 10:10:37 +02:00
CrushedPixel
de082c3230
Uses Mixin Magic to add BlockBreakAnimation Packets to the Replay when a Player breaks a block
2015-08-11 20:01:45 +02:00
CrushedPixel
063a26d4ab
Filter instances of S1BPacketEntityAttach that are referring to the Camera Entity
2015-08-11 17:17:55 +02:00
CrushedPixel
59592b938a
Added Disclaimer to Replay Editor indicating that bugs may occur
2015-08-11 15:15:44 +02:00
CrushedPixel
189aa18afb
Prevent NPE when removing the last Element from the "Connect Replays" list
2015-08-11 15:15:43 +02:00
CrushedPixel
c9ce092ae1
Disable "Modify Replay" Button in GuiReplayEditor
2015-08-11 15:15:43 +02:00
CrushedPixel
197500857f
Call fireValueChangeEvent() in GuiNumberInput when digits have been deleted
2015-08-11 13:37:27 +02:00
CrushedPixel
d98845deab
Disabled many Keybindings during Camera Paths
2015-08-09 13:06:57 +02:00
CrushedPixel
40aaf7fbef
When initially asked to Log in, rename "Cancel" to "Skip" button to indicate that the user doesn't have to log in in order to use the mod
2015-08-07 12:23:58 +02:00
CrushedPixel
6e07bde07c
Update the ApiClient#isVersionUpToDate method to inform the server about the Minecraft Version, which is required to determine whether a newer Mod Version for the given Minecraft Version is available
2015-08-06 13:16:12 +02:00
CrushedPixel
d4259c103f
Added Shortcut to toggle Interpolation ('O' key)
2015-08-05 13:03:53 +02:00
CrushedPixel
b32aaf5609
Initially set the GuiObjectManager's Keyframe Timeline's cursor position to the GuiReplayOverlay's Keyframe Timeline's cursor position
2015-08-04 17:26:00 +02:00
CrushedPixel
1d1193bd25
Do not send Sound Effect Packets while rendering, as they might blow your ear away afterwards
2015-08-04 17:04:15 +02:00
CrushedPixel
59624d21b5
mc.gameSettings.mapSoundLevels might be null, handle this case properly
2015-08-04 16:59:40 +02:00
CrushedPixel
59fe1bd493
Added a PNG Sequence Encoding Preset
2015-08-04 12:32:04 +02:00
CrushedPixel
7d2895af3a
Set all sound volume levels (except for master) to 0 before rendering a video to prevent all sounds the replay might produce from being played, but GUI interactions still play sounds
2015-08-03 16:25:40 +02:00
CrushedPixel
eb281b9df4
Added Disclaimer to GuiRegister telling users that registering means they agree with ReplayMod.com's Terms of Services
2015-08-02 13:56:34 +02:00
CrushedPixel
2eab1ddbdb
Disable resizing of the game window while rendering if FBOs are not enabled
2015-07-31 13:58:27 +02:00
CrushedPixel
34fe741cc4
Call Minecraft#updateDisplay in VideoRenderer if not in High Performance Mode, to resize the GuiVideoRenderer if user resized screen (requested by many users)
...
This has no side effects on the rendered video.
Change GuiVideoRenderer#initGui method to allow for resizing
2015-07-30 12:59:54 +02:00
CrushedPixel
7e99cfeb50
Allow for spaces in Replay Names in GuiRenameReplay and use proper variable names instead of copy-pasted SrgNames
2015-07-30 11:43:18 +02:00
CrushedPixel
7bc3574515
When setting the last camera position before a time jump, a boolean has to be passed indicating whether that position should be enforced or ignored if it's out of a reasonable distance from the player's position.
...
This is used by the GuiMarkerTimeline to ensure that jumping to Marker Keyframes actually results in the Marker Keyframe's Position.
The actual code handling Position jumping after Time jumping was moved to the ReplayHandler and is now also called when jumping using the "Please wait" Screen.
2015-07-30 11:29:45 +02:00
CrushedPixel
e0a0d9ef53
Fix CameraEntity#moveAbsolute(AdvancedPosition) to properly update head rotation and bounding box
2015-07-30 11:26:31 +02:00
CrushedPixel
8d8fa6a835
Be more reasonable in GuiKeyframeRepository with user inputs, not replacing the keyframeSetList's elements every time the Keyframe Preset's name changes and therefore not calling the Listener which set the nameInput's value every time. This leads to a smoother user experience regarding the nameInput Text Field.
2015-07-30 11:00:44 +02:00
CrushedPixel
62b2e04b85
The Camera Path Play/Pause button now tells the user where it's going to start (current cursor position or start)
2015-07-30 10:54:25 +02:00
CrushedPixel
d4e16ee07e
Pressing the chat button if a GuiMouseInput is already present closes this GuiMouseInput (easier toggle between mouse and camera mode)
2015-07-29 12:24:43 +02:00
CrushedPixel
dd68b1546d
The GuiRenderSettings loads their initial settings from the Replay Mod config
...
Upon rendering, the GuiRenderSettings saves the current RenderOptions to the Replay Mod config
2015-07-28 00:00:38 +02:00
CrushedPixel
1e51b43bdb
Added methods to RenderOptions to save/load a RenderOptions object from/to a Forge Configuration instance
...
Set default bitrate String to "10000K" instead of "10M", which is the same value but is simpler to parse for me
Set default of hideNameTags to false as it is in the GuiRenderSettings
2015-07-27 23:59:27 +02:00
CrushedPixel
0494b9cffe
Added a setFPS() method to GuiVideoFramerateSlider to programmatically change the FPS value
2015-07-27 23:58:08 +02:00
CrushedPixel
4a5f66cab9
Fix LegacyKeyframeSetAdapter swallowing spectatedEntityID values of non-legacy Keyframes
2015-07-26 12:38:41 +02:00
CrushedPixel
ee2b028ed8
If the cursor on the Keyframe Timeline is at or near the last keyframe, play from the beginning
2015-07-26 12:38:00 +02:00
CrushedPixel
4f69d9e22f
Added hover message in GuiUploadFile to tell the user why they can't upload a File
2015-07-25 15:15:59 +02:00
CrushedPixel
caf0807e8b
Only allow Alphanumerical characters and underscores when registering a new username
...
Use RegexUtils in GuiUploadFile
2015-07-25 14:53:03 +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
5427616ceb
Reworked ReplayProcess to get rid of own Interpolation instances (as these can be handled by the KeyframeLists)
...
Camera Paths are now started from the current cursor position, using Ctrl-click the path always starts from the beginning
2015-07-25 14:11:06 +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
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