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
CrushedPixel
3a2c35cb22
Added Api Call checking if the Mod has the latest version and Message in Main Menu if not up-to-date
...
Removed unused GuiConstants Fields
2015-07-15 14:08:28 +02:00
CrushedPixel
1aa2c8e02b
Made Keyframes in GuiObjectManager draggable
2015-07-15 12:24:38 +02:00
CrushedPixel
62073d6351
In the GuiObjectManager, Keyframes can be deleted using the DELETE Key on the Keyboard
2015-07-15 12:20:24 +02:00
CrushedPixel
d057553223
Added "inclusive" parameter to getPreviousKeyframe() and getNextKeyframe() in KeyframeList to define whether the next/previous keyframe may have the same timestamp as the realTime parameter
...
Fixed a bug in KeyframeList#getPositionOnPath where a non-inclusive getPreviousKeyframe call resulted in an incorrect position value
2015-07-14 13:48:48 +02:00
CrushedPixel
3e77e72f5a
Sleepy me forgot to disable Path Previews while in Path
2015-07-14 12:08:23 +02:00
CrushedPixel
af305b4063
Play Camera Path button graphically didn't turn into pause button while playing
2015-07-14 12:08:07 +02:00
CrushedPixel
9953bdf357
Added support for legacy Spectator Keyframes in LegacyKeyframeSetAdapter
2015-07-14 12:07:35 +02:00
CrushedPixel
25f7b8dd0c
Access Vector3d's fields directly instead of using getter which for some reason fails the gradle build task
2015-07-14 04:31:32 +02:00
CrushedPixel
eb4f0fcc20
Added Preview for Camera's Position and look direction in Path Previews
...
Added getDestination() method to AdvancedPosition to calculate the destination based on a step size and the position's pitch/yaw
2015-07-14 04:25:19 +02:00
CrushedPixel
0ff40cc0f5
Fixed Custom Image Objects being rendered through blocks
2015-07-14 02:21:51 +02:00
CrushedPixel
534007b9c8
Executes JFileChooser activities in Swing Thread
...
If Minecraft is fullscreen, exit fullscreen when using GuiFileChooser
2015-07-14 02:07:24 +02:00
CrushedPixel
654c2200d5
Replaced AWT FileDialog with Swing JFileChooser in GuiFileChooser
2015-07-14 01:36:00 +02:00
CrushedPixel
0d7065d45d
Disabled remove button in GuiAssetManager if no element is selected in List
2015-07-14 01:01:35 +02:00
CrushedPixel
9cf3f426aa
Renamed setEnabled() method in GuiElementInterface to setElementEnabled() to workaround this Forge Bug: http://www.minecraftforge.net/forum/index.php/topic,32063
2015-07-14 00:25:17 +02:00
CrushedPixel
a58e06703c
Using the DELETE Key, selected Keyframes can now be removed
...
Added StaticKeybindings to provide non-changeable KeyBindings
2015-07-13 22:27:14 +02:00
CrushedPixel
0f024a9de9
Cleaned up ReplayHandler by unifying selectedKeyframe and selectedMarkerKeyframe into selectedKeyframe, thus only being able to select one Keyframe at once
2015-07-13 22:08:41 +02:00
CrushedPixel
a7590ce384
Rendering: Deletes destination File if it already exists to prevent ffmpeg from crashing | https://trello.com/c/Ozlp5Sts/
2015-07-13 21:07:29 +02:00
CrushedPixel
2297808e9d
In MinecraftTicker, only handle Key Input if no GUI is open as the GUI will invoke the same dispatchKeypresses() method itself
2015-07-13 16:08:21 +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
9d2c371398
GuiKeyframeTimeline now draws a red stroke between two time Keyframes if the second has a smaller timestamp value than the first | https://trello.com/c/a4xZs085/
2015-07-13 15:26:20 +02:00
CrushedPixel
3eca70fea4
Fixed blue stroke on GuiKeyframeTimeline possibly exceeding the Timeline's bounds | https://trello.com/c/IfTtmwso/
2015-07-13 15:18:32 +02:00
CrushedPixel
ff5481822a
Added support for Time Keyframes in GuiEditKeyframe | https://trello.com/c/h33v5cSQ/
2015-07-13 15:11:13 +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
39558701bf
Reworked GuiEditKeyframe to use ComposedElements
...
Made GuiArrowButton a subclass of GuiAdvancedButton
Added consistency to ReplayHandler by renaming getMarkers() to getMarkerKeyframes() and removing redundant methods which can be accessed via KeyframeList class
2015-07-13 02:03:19 +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
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