Commit Graph

145 Commits

Author SHA1 Message Date
johni0702
04df2ba3a0 Reset spectated entity when leaving replay 2015-09-02 16:44:56 +02:00
johni0702
6b6f6732d5 Add basic replay restriction system (no restrictions yet) 2015-08-30 15:54:48 +02:00
johni0702
a3d3c2dddc Fix spectating being quit on world change / respawn 2015-08-19 12:22:55 +02:00
johni0702
cd19a768a1 Add option for showing chat messages 2015-08-19 12:22:55 +02:00
johni0702
d1e55266e2 The fake player now has the same entity id as the recording player as assigned by the server
This fixes arrows bumping into recording player in replay
ReplaySender converts old replays on the fly
Do not insert PlayerListEntry as it's already contained in the replay
2015-08-19 12:22:55 +02:00
johni0702
d687748629 The camera entity is now thePlayer 2015-08-19 12:22:55 +02:00
johni0702
8e76d5677e Fix players staying invisible even though replay has ended 2015-08-16 21:04:51 +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
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
johni0702
ee6835c279 Fix sound level map becoming null 2015-08-13 09:52:04 +02:00
CrushedPixel
063a26d4ab Filter instances of S1BPacketEntityAttach that are referring to the Camera Entity 2015-08-11 17:17:55 +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
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
2eab1ddbdb Disable resizing of the game window while rendering if FBOs are not enabled 2015-07-31 13:58:27 +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
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
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
ff65ced4a8 Since ReplayHandler#addKeyframe selects the Keyframe, deselect it after loading a Path Preset 2015-07-23 13:21:26 +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
e80d71db93 Clearing Keyframes resets the Timeline Cursor Position 2015-07-23 12:34:44 +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
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
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
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
e9c87b5c8c Set selected Keyframe to null upon joining a Replay 2015-07-20 01:18:06 +02:00
johni0702
6422558028 General warning cleanup 2015-07-19 16:21:56 +02:00
johni0702
d7b8339f22 Fix infinite loop in exception handling 2015-07-18 16:37:11 +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
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
johni0702
71952e94dd Fix getCameraEntity not being thread safe (concurrent event registration) even though called from multiple threads 2015-07-17 11:48:55 +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
154f3e3c04 Do not show Clear Keyframe Callback if no Keyframes present 2015-07-17 01:25:13 +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
830087de36 ReplayHandler#spectateCamera() creates a new CameraEntity if the current instance is null 2015-07-16 14:59:37 +02:00
johni0702
752a972ed3 Throw ReportedException when catching an exception thrown during rendering 2015-07-16 14:48:21 +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
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
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
johni0702
d29cc85dc8 Fix NPE when loading a replay without marker keyframes 2015-07-13 12:21:18 +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
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
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