Commit Graph
100 Commits
Author SHA1 Message Date
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
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