Commit Graph
100 Commits
Author SHA1 Message Date
CrushedPixel bb05e3648d Cleaned up OpenGL calls in CustomObjectRenderer and PathPreviewRenderer and properly displays CustomImageObjects behind Path Preview Markers | https://trello.com/c/FaiMoTDK/ 2015-07-12 23:33:11 +02:00
CrushedPixel b4e72af48f Prevented NPEs if Asset linked to CustomImageObject is null 2015-07-12 23:32:04 +02:00
CrushedPixel b0429fcf44 Fixed NPE in GuiFileChooser if selected file is null 2015-07-12 22:23:33 +02:00
CrushedPixel ac3474f2bc The output file can now be specified in GuiRenderSettings 2015-07-12 22:13:18 +02:00
CrushedPixel ac79eef077 Added support for Save File Dialogs to GuiFileChooser 2015-07-12 22:12:51 +02:00
CrushedPixel 34e3e3c407 Sets a new CustomImageObject's default position to the player's position 2015-07-12 21:08:06 +02:00
CrushedPixel 75e1c17f1f Added constructor to Position which takes a BlockPos 2015-07-12 21:06:54 +02:00
CrushedPixel e9a73cb028 use List interface instead of ArrayList implementation in several places 2015-07-12 20:55:13 +02:00
CrushedPixel 06686d20a6 Added static reference to current VideoRenderer instance to allow CustomObjectRenderer to correctly interpolate Object Transformations while rendering 2015-07-12 18:59:19 +02:00
CrushedPixel cb912d7e54 Pass correct arguments to BoundingUtils.fitIntoBounds call in FrameRenderer to fix distorted preview 2015-07-12 18:58:43 +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
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
CrushedPixel a218c13b44 GuiElement interface's mouseClick method returns a boolean which is handled by ComposedElement to prevent mouse clicks on multiple elements at once
ComposedElement's entries are sorted so that GuiDropdown are always drawn on top
Modified thrown UnsupportedOperationExceptions in CustomImageObject to not be thrown if asset is null
2015-07-10 14:26:51 +02:00
CrushedPixel 8aec0a364a Revert "Doesn't use a Java 1.8 Method to sort KeyframeList's contents"
This reverts commit 7c342d8995fdcb103a9eb01e57efad15af66b427.
2015-07-10 14:26:51 +02:00
CrushedPixel 1c417877e6 Doesn't use a Java 1.8 Method to sort KeyframeList's contents 2015-07-10 14:26:50 +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 5828b04596 "The Commit that properly implements the disabling of Gui Elements"
Added enabled Field to DelegatingElement, which every instance can handle itself
Made isEnabled Field in GuiAdvancedTextField protected for subclasses to access
Made GuiDraggingNumberInput only draggable while enabled
Made GuiDropdown check enabled field before accepting mouse clicks
Properly tints GuiTexturedButton if disabled
2015-07-10 03:37:13 +02:00
CrushedPixel 4ebf6c5b21 GuiKeyframeRepository always loads the Presets from its current Data set (to respect removed/newly added presets) 2015-07-09 16:41:13 +02:00
CrushedPixel 609c731dc0 Got rid of the OpenEmbeddedChannel, an artifact of the ReplayMod's very beginning. Rest in Peace, old friend. 2015-07-09 16:30:42 +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 cd27ccd855 Undo replacements of "Timestamp" with "Value" in comments/javadoc in ReplaySender 2015-07-08 23:00:06 +02:00
CrushedPixel 2d19b17626 Finished Layout of GuiObjectManager 2015-07-08 16:54:14 +02:00
CrushedPixel 80a47a61c8 Made GuiDropdown a subclass of GuiAdvancedTextfield, updating the Constructor and removing the now redundant GuiConstants entries 2015-07-08 15:50:12 +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 54f35eca03 Made GuiNumberInput a subclass of GuiAdvancedTextField and removed unneccessary IDs from Constructor and GuiConstants 2015-07-08 11:54:47 +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 64628eaac3 call super in equals/hashCode functions of KeyframesModifyEvent using Lombok 2015-07-08 04:48:20 +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 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 40acb3f72d Created Method in ReplayFileAppender to queue all registed files starting with a specific string (e.g. folder name) for deletion 2015-07-07 20:12:19 +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 0b1d3d9001 Created AssetFileUtils to provide valid File Extensions for various ReplayAsset implementations. This class has to be updated if new ReplayAsset implementations are added. 2015-07-07 18:42:10 +02:00
CrushedPixel 5e70eece49 Fixed GuiAdvancedTextField being focusable while disabled. This behaviour was inherited from GuiTextField. 2015-07-07 17:23:22 +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 aa3a13b5a8 Updated GuiEntryList to extend GuiAdvancedTextField instead of GuiTextField 2015-07-07 17:02:39 +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
CrushedPixel 1b189c0dac Added setEnabled() method to GuiElement interface and implemented it everywhere
Made GuiFileChooser a child of GuiAdvancedButton instead of GuiButton
2015-07-07 16:55:49 +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 bf7b28d53c Fixed the "M" key being typed in a TextBox adding/removing marker keyframes 2015-07-06 16:39:40 +02:00
CrushedPixel 6225d3956a Uses Lombok @NoArgsConstructor annotation instead of manually creating empty constructor in SearchQuery.java 2015-07-06 13:54:47 +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
CrushedPixel 49e391555c Fix PathPreviewRenderer's broken Tessellator calls (the result was broken, but because the texture is symmetrical nobody noticed) 2015-07-06 00:27:57 +02:00
CrushedPixel a444d49d70 Doesn't allow rendering if Optifine is installed and shows error screen 2015-07-05 18:16:18 +02:00
CrushedPixel 6e470fb812 Deselects Items in List after deleting Replay File using ReplayViewer 2015-07-05 18:14:32 +02:00
CrushedPixel 5f76577eed Properly multi-threaded File Reloading in GuiReplayViewer | https://trello.com/c/shUBbD2z/ 2015-07-05 15:36:05 +02:00
CrushedPixel d62e74a6f7 updateCurrentList() Method in GuiReplayCenter properly checks for Thread.interrupted() to avoid long freeze screens when switching Tab 2015-07-05 01:51:38 +02:00
CrushedPixel 5883dbc9be Added Search Tab to Replay Center | https://trello.com/c/13VNghWz/ 2015-07-05 01:43:59 +02:00
CrushedPixel c7bb053566 Only load Replay Files once in Replay Viewer to prevent the loader Thread from clashing with itself 2015-07-04 22:24:09 +02:00
CrushedPixel 434238c61d Unescapes HTML Character Entities in API calls | https://trello.com/c/Bm2Rk57m/ 2015-07-04 21:50:57 +02:00
CrushedPixel 57f094dddb Prevents duplicates from being added when resizing the Replay Viewer 2015-07-04 21:41:56 +02:00
CrushedPixel da4857ad8e Properly resize Replay List in Replay Center when resizing the video | https://trello.com/c/AcXGDXYY/ 2015-07-04 21:41:25 +02:00
CrushedPixel 770c1da071 Only limit character count in GuiTextArea if it's positive 2015-07-04 21:40:44 +02:00
CrushedPixel 3813673ef6 Added a way to limit a GuiTextArea's maximum character count and used it in GuiUploadFile's Description Text Area
Set GuiUploadFile's Description Text Area's line and width limit to a high value for better results on the website | https://trello.com/c/YS9EyYPF/
2015-07-04 21:16:27 +02:00
CrushedPixel 0743b3e1ac Added Progress Bar and Cancel Button when downloading a Replay File from Replay Center (GuiReplayDownloading) | https://trello.com/c/1ZPhwmp8/ 2015-07-04 17:13:02 +02:00
CrushedPixel 22be6d193a Fixed https://trello.com/c/wwJ2XyGN/ | Jumping in time also moves cursor on Keyframe Timeline 2015-07-04 14:54:49 +02:00
CrushedPixel 7115805d45 Added ProgressFilter to allow for more accurate progress bar in GuiReplayEditingProcess and implemented it | https://trello.com/c/qXWxoTc1/ 2015-07-04 14:54:12 +02:00
CrushedPixel 9a30bd70d9 Only rewrites Marker Keyframes in Replay File if they actually changed | https://trello.com/c/tIRxc2lg/ 2015-07-03 13:04:39 +02:00
CrushedPixel ab51cad1fc Resets color before drawing Eye Icon in GuiReplayOverlay | https://trello.com/c/IxHVkYQ8/ 2015-07-03 12:31:14 +02:00
CrushedPixel d2cead161d Made GuiKeyframeRepository a lot slimmer (it's so sexy now *__*) 2015-07-03 12:25:56 +02:00
CrushedPixel 0bb335f692 Added Callback before clearing Keyframes | https://trello.com/c/ZzOk0ju1/ 2015-07-03 12:12:33 +02:00
CrushedPixel 5960632354 Added Clean Callback Setting to GuiReplaySettings 2015-07-03 11:59:27 +02:00
CrushedPixel b1bd3de770 Added clearKeyframesCallback Replay Setting to determine whether a confirmation screen will be opened before clearing Keyframes using 'c'
Removed unused Replay Settings and removed all warnings from ReplaySettings.java
2015-07-03 11:52:39 +02:00
CrushedPixel 789dba7b50 Cleaned up ReplaySettings code (added @Override annotations, removed non-static calls to static variable) 2015-07-03 11:45:42 +02:00
CrushedPixel a1941a8be5 Declared several variables in Method declaration final to make the code Java 1.6 compatible 2015-07-03 11:31:50 +02:00
CrushedPixel c5924dd570 Reworked GuiKeyframeRepository, resolving https://trello.com/c/rEuxk1ls/ 2015-07-03 01:34:53 +02:00
CrushedPixel 6a3104c6bc Moved "Main Menu" Button in Replay Center to the right side because it annoyed Hudeler | https://trello.com/c/wUiKfybu/ 2015-07-03 00:26:26 +02:00
CrushedPixel ff9e341c9a Added a way to customize the main Command | https://trello.com/c/PAFUGf6x/ 2015-07-03 00:08:19 +02:00
CrushedPixel 071a44e526 Uses ProgressUpdateListener interface in GuiUploadFile 2015-07-02 23:17:59 +02:00
CrushedPixel 8c81dd414e Added new Gui with Progress Bar when editing a Replay using the ReplayEditor | https://trello.com/c/uGFDgv6E/
Added ProgressUpdateListener interface for the use with ProgressBars
2015-07-02 23:08:09 +02:00
CrushedPixel 088bb00ab3 Fixed the GuiLoadingListEntry in the ReplayViewer List being removed at a completely wrong time | https://trello.com/c/O26k7DTC/ 2015-07-02 15:08:51 +02:00
CrushedPixel c811c81be1 Optimized Aspect Ratio Calculation in ReplayScreenshot to replace 1280/720 with 16/9 2015-07-02 14:40:48 +02:00
CrushedPixel 4a2c7df25f Only rewrite Replay Files once after Replay is closed, in order to prevent rewriting the Replay multiple times (e.g. if a Thumbnail gets added while viewing it and the Markers are added upon exiting). This also fixes the Windows File System not allowing the Replay Mod to delete the original .mcpr file because it thinks that it's still being edited.
Resolves https://trello.com/c/CmKfRKc0/
2015-07-02 14:40:17 +02:00
CrushedPixel e1c19d7537 Made custom command line arguments respect placeholders like %FPS% 2015-07-02 13:25:29 +02:00
CrushedPixel d5007692de Opens "Please wait" GUI Screen if Replay needs to be edited by ReplayFileAppender
Added ReplayExitEvent
2015-07-02 13:24:50 +02:00
CrushedPixel bfe721c00c Enabled Keyboard.enableRepeatEvents in GuiRenderSettings 2015-07-01 21:12:55 +02:00
CrushedPixel dc2c199d0e Created installation scripts for Windows and Unix to automatically set the ffmpeg PATH variables 2015-07-01 15:27:20 +02:00
CrushedPixel a189868390 Added Support for custom ffmpeg Command Line Arguments when Rendering a Video | https://trello.com/c/69CNoWuA/ 2015-07-01 13:28:41 +02:00
CrushedPixel 9da89c4f07 Finally gave up on trying to inject YouTube 360° Metadata into Videos and removed respective Checkbox in GuiRenderSettings 2015-06-30 18:10:33 +02:00
CrushedPixel 2ae5a95c6f RenderSettings: The Render Method Dropdown Listener calls the Y Resolution Input's moveCursorBy() Method to recalculate the aspect ratio if neccessary, resolving https://trello.com/c/unn8VGbf/ 2015-06-30 15:00:06 +02:00
CrushedPixel 45d69dff77 Created a Method to play Sounds directly from .wav files instead of using the buggy Minecraft Sound System and uses it in SoundHandler#playRenderSuccessSound(), fixing https://trello.com/c/d8hDHkc5/ 2015-06-30 14:49:07 +02:00
CrushedPixel 7f1d0f59bc Added Bitrate Input Field for GuiRenderSettings 2015-06-30 01:33:46 +02:00
CrushedPixel 5e8bfcbc63 If rendering crashes while initializing, an Error Screen telling the user to install ffmpeg is displayed | https://trello.com/c/EDDIqP0V/ 2015-06-30 01:33:46 +02:00
CrushedPixel 540588125b Allow Camera Tilt Reset while other Keys (e.g. Movement) are pressed 2015-06-29 21:25:00 +02:00
CrushedPixel 645edbb20e Prevent ArrayIndexOutOfBoundsException when loading a newly created Camera Path by loading it from the dirty version | https://trello.com/c/WPikP6ig/ 2015-06-29 16:04:20 +02:00
CrushedPixel e446a0cc6b Updated FileRating Holder class to fit updated get_ratings API call which now returns a boolean instead of numeric string 2015-06-29 16:02:34 +02:00
CrushedPixel 2d153a24dc Does not render Player's item/hand if Spectating a Spectator Mode Player 2015-06-29 15:45:46 +02:00
CrushedPixel 7c46259f54 Does not render Players at all if they're invisible (e.g. Spectator Mode) - resolving https://trello.com/c/Hy1NaAKu/
Does not render crosshair if hovering over invisible players
2015-06-29 15:44:01 +02:00
CrushedPixel fb12119e5c While Recording, only insert S19PacketEntityHeadLook for recording player if value actually changed | https://trello.com/c/9MZeTBgj/ 2015-06-29 15:35:12 +02:00
CrushedPixel f52ed6d92b Added a static helper class to determine whether an Entity can be spectated or not - this results in DRY code. While doing so, excluded mc.thePlayer from the spectateable Entities, resolving https://trello.com/c/anFRmsfM/ 2015-06-29 15:22:52 +02:00
CrushedPixel 45485b9367 Only displays Crosshair if hovered entity can be spectated | https://trello.com/c/CJBVrB2O/
Fixes background of lowest line of chat being opaque if Crosshair is rendered | https://trello.com/c/66veZRVH/
2015-06-29 15:07:23 +02:00
CrushedPixel a101d7a311 Only render Crosshair if hovered Entity can be spectated | https://trello.com/c/CJBVrB2O/ 2015-06-29 14:31:44 +02:00
CrushedPixel 66567c3834 Requires at least two Position one Time Keyframe for Camera Paths/Rendering | https://trello.com/c/qJZSno6o/ 2015-06-29 13:44:32 +02:00
CrushedPixel 9014396a69 Updated ChatMessageHandler to use Minecraft's Chat Component System instead of Strings with Color Codes | https://trello.com/c/jdl5t5Wj/ 2015-06-29 13:44:32 +02:00
CrushedPixel 36c38ddfd3 Rewrote Camera Movement to only respect previous motion direction | Fixes https://trello.com/c/y7nIqj47/ 2015-06-29 12:54:56 +02:00
CrushedPixel d6aadcaf94 Executes mc.refreshResources() in main thread to fix ConcurrentModificationExceptions | https://trello.com/c/4gBrdiyB/104 2015-06-29 12:30:15 +02:00
CrushedPixel 58d7018480 Implemented https://trello.com/c/zflHjAQm/109 | Make Spectating possible using left mouse button ("normal" Spectator Mode behaviour) 2015-06-29 12:25:48 +02:00