steam position modifier and animation speed properties#11269
Conversation
|
Please do not open and close change requests we loose information and it spams our notifications with extra items. It looked like you had messed up a rebase but that isn't unrecoverable. |
|
This new PR is not for a rebase fix, it's a complete rewrite and changes the implementation a substantial amount. |
|
Since it doesn't mention the old PR, can you please edit the PR description and state what you are doing, why and ideally add some screenshots/gifs? That makes it easier for us to review and makes for a good documentation afterwards. |
If this is a complete rewrite u could also have done that in the other PR by force pushing. |
|
Formatting is broken, can you please fix it? |
|
This requires fixing the object exporter before merging. |
|
Can you elaborate on that duncan? |
|
We can't merge until #11259 is fixed. I'm not expecting you @spacek531 to fix it but its more a warning to any reviewers or myself. |
d72aa53 to
6bb7b80
Compare
|
@spacek531 can you mark the issues that are dealt with as solved? There's also a formatting issue on the CI, would you please check? |
duncanspumpkin
left a comment
There was a problem hiding this comment.
This looks almost ready to go. I've a query on the steam generation but if you feel it is a better way of doing it I have no issue with changing it.
|
The old way required a number of variable swaps to compare the old frame index to the new one. Changing it to this method allowed me to remove 2 variables from the function, specifically ones with placeholder names. There are a few edge cases that considered when I changed the method, but they require sufficient hacks as to make code readability more important. Driving backwards or going so fast the animation plays backwards have the effect of changing smoke generation from even frames to odd frames in the old method, whereas the new method always generates smoke on even frames.
… On Apr 25, 2020, at 23:51, Duncan ***@***.***> wrote:
@duncanspumpkin commented on this pull request.
In src/openrct2/ride/Vehicle.cpp:
> @@ -7218,15 +7217,12 @@ void Vehicle::UpdateAdditionalAnimation()
{
case VEHICLE_ENTRY_ANIMATION_MINITURE_RAILWAY_LOCOMOTIVE: // loc_6D652B
*curVar_C8 += _vehicleVelocityF64E08;
- al = (*curVar_C8 >> 20) & 3;
- if (animation_frame != al)
- {
- ah = al;
- al = animation_frame;
- animation_frame = ah;
- al &= 0x02;
- ah &= 0x02;
- if (al != ah)
+ currentFrame = ((*curVar_C8 * vehicleEntry->animation_speed_multiplier) >> vehicleEntry->animation_speed_exponent)
+ & 3;
+ if (animation_frame != currentFrame)
+ {
+ animation_frame = currentFrame;
+ if ((currentFrame & 0x01) == 0) // every even frame create a steam particle
This is subtly different to the original. The original only shows new steam if the oldFrame and the newFrame have a mismatched second bit. This new version shows new steam if the newFrame is odd. Is this a conscious change that is being made or just for the sake of simplification. I would prefer we matched the original as much as possible but understand you might have made this change for a reason.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.
|
|
Okay that sounds reasonable. |
6e425c9 to
dd70e1a
Compare
e5f6d62 to
45d8b43
Compare
|
😄 feels like the end of an era |
- Feature: [#11269] Add properties for speed and length of vehicle animations. - Feature: [#15849] Objectives can now be set for up to 50000 guests. - Feature: [#18537] Add shift/control modifiers to window close buttons, closing all but the given window or all windows of the same type, respectively. - Feature: [#18732] [Plugin] API to get the guests thoughts. - Feature: [#18744] Cheat to allow using a regular path as a queue path. - Feature: [#19023] Add Canadian French translation. - Feature: [#19341] Add “All Scenery” tab to scenery window. - Feature: [#19378] Add command to combine CSG1i.DAT and CSG1.DAT. - Feature: [objects#226] Port RCT1 Corkscrew Coaster train. - Feature: [objects#229] Port RCT1 go karts with helmets. - Feature: [OpenMusic#20, OpenMusic#21] Added Blizzard and Extraterresterial ride music styles. - Improved: [#11473] Hot reload for plug-ins now works on macOS. - Improved: [#12466] RCT1 parks now use RCT1’s interest calculation algorithm. - Improved: [#14635] Scenery window now shows up to 255 scenery groups. - Improved: [#17288] Reorganise the order of shortcut keys in the Shortcut Keys window. - Improved: [#18706] Ability to view the list of contributors in-game. - Improved: [#18749] Ability to have 4 active awards for more than one month in a row. - Improved: [#18826] [Plugin] Added all actions and their documentation to plugin API. - Improved: [#18945] Languages can now fall back to other languages than English. - Improved: [#18970] Trying to load a non-park save will now display a context error. - Improved: [#18975] Add lift sprites for steep hills on the wooden roller coaster. - Improved: [#19044] Added special thanks to RMC and Wiegand to the About page. - Improved: [#19131] Track missing objects when selecting scenery groups in console. - Improved: [#19253] Queue junctions drawn properly when using regular paths as queue. Note: Requires using tile inspector to indicate railings can be used at T or X junctions. - Improved: [#19067] New Ride window now allows filtering similarly to Object Selection. - Improved: [#19272] Scenery window now allows filtering similarly to Object Selection. - Improved: [#19447] The control key now enables word jumping in text input fields. - Improved: [#19463] Added ‘W’ and ‘Y’ with circumflex to sprite font (for Welsh). - Improved: [#19549] Enable large address awareness for 32 bit Windows builds allowing to use 4 GiB of virtual memory. - Improved: [#19668] Decreased the minimum map size from 13 to 3. - Improved: [#19683] The delays for ride ratings to appear has been reduced drastically. - Improved: [#19697] “Show guest purchases” will now work in multiplayer. - Change: [#19018] Renamed actions to fit the naming scheme. - Change: [#19091] [Plugin] Add game action information to callback arguments of custom actions. - Change: [#19233] Reduce lift speed minimum and maximum values for “Classic Wooden Coaster”. - Removed: [#19520] Support for Windows Vista systems. - Fix: [#474] Mini golf window shows more players than there actually are (original bug). - Fix: [#592] Window scrollbar not able to navigate to the end of large lists. - Fix: [#7210] Land tile smoothing occurs with edge tiles (original bug). - Fix: [#17996] Finances window not cleared when starting some .park scenarios. - Fix: [#18260] Crash opening parks that have multiple tiles referencing the same banner entry. - Fix: [#18467] “Selected only” Object Selection filter is active in Track Designs Manager, and cannot be toggled. - Fix: [#18904] OpenRCT2 audio object accidentally exported in saves. - Fix: [#18905] Ride Construction window theme is not applied correctly. - Fix: [#18911] Mini Golf station does not draw correctly from all angles. - Fix: [#18971] New Game does not prompt for save before quitting. - Fix: [#18986] [Plugin] Sending remote scripts larger than 63KiB crashing all clients. - Fix: [#18994] Title music doesn’t start after enabling master volume. - Fix: [#19025] Park loan behaves inconsistently with non-round and out-of-bounds values. - Fix: [#19026] Park loan is clamped to a 32-bit integer. - Fix: [#19068] Guests may not join queues correctly. - Fix: [#19091] [Plugin] Remote plugins in multiplayer servers do not unload properly. - Fix: [#19112] Clearing the last character in the Object Selection filter does not properly reset it. - Fix: [#19112] Text boxes not updated with empty strings in Track List, Server List, and Start Server windows. - Fix: [#19114] [Plugin] ‘GameActionResult’ does not comply to API specification. - Fix: [#19136] SV6 saves with experimental RCT1 paths not imported correctly. - Fix: [#19243] .park scenarios don’t complete properly. - Fix: [#19250] MusicObjects do not free their preview images. - Fix: [#19292] Overflow in ‘totalRideValue’. - Fix: [#19339] Incorrect import of crashed particles from SV4. - Fix: [#19379] “No platforms” station style shows platforms on the Junior Roller Coaster. - Fix: [#19380] Startup crash when no sequences are installed and random sequences are enabled. - Fix: [#19391] String corruption caused by an improper buffer handling in ‘GfxWrapString’. - Fix: [#19434, #19509] Object types added by OpenRCT2 do not get removed when executing ‘remove_unused_objects’. - Fix: [#19475] Cannot increase loan when more than £1000 in debt. - Fix: [#19493] SV4 saves not importing the correct vehicle colours. - Fix: [#19517] Crash when peeps try to exit or enter hacked rides that have no waypoints specified. - Fix: [#19524] Staff counter shows incorrect values if there are more than 32767 staff members. - Fix: [#19574] Handle exits in null locations. - Fix: [#19641, #19643] Missing water tile in Infernal Views’ and Six Flags Holland’s river.
* Add speed and frame properties * add steam position modifier * copy code from OpenLoco * update sin and cos * add computation function * finalize locomotion code * fix formatting * refine code * refactor things slightly * manually fix formatting * use PascalCase and rename * fix copyright notice * fix name again * rename function, move outt of namespace * fix rebase issues * remove pitch table derived from physics * rename some stuff * flip vertical component sign to make sense * change json structure * create steam particles based on number of animation frames * fix formatting * add slope for spiral lift hill down * fix formatting again * parens around bitwise and * make animations separate functions * rename MultiDimCoaster to MultiDimension * use EnumValue method * rework multidim frame count * bump network to be safe * fix formatting * move array out of function * make table const * move struct into RideObject.cpp * try new method to fix numbers in multidim * implement ZehMatt modulo * add documentation to new function * include Yaw.hpp * rename src/ride/SteamPosition.hpp to src/math/Trigonometry.hpp * actually add src/math/Trigonometry.hpp * move ComputeSteamOffset to Vehicle.cpp * use static asserts on arrays * fix changelog grammar * add more static asserts
- Feature: [OpenRCT2#11269] Add properties for speed and length of vehicle animations. - Feature: [OpenRCT2#15849] Objectives can now be set for up to 50000 guests. - Feature: [OpenRCT2#18537] Add shift/control modifiers to window close buttons, closing all but the given window or all windows of the same type, respectively. - Feature: [OpenRCT2#18732] [Plugin] API to get the guests thoughts. - Feature: [OpenRCT2#18744] Cheat to allow using a regular path as a queue path. - Feature: [OpenRCT2#19023] Add Canadian French translation. - Feature: [OpenRCT2#19341] Add “All Scenery” tab to scenery window. - Feature: [OpenRCT2#19378] Add command to combine CSG1i.DAT and CSG1.DAT. - Feature: [objects#226] Port RCT1 Corkscrew Coaster train. - Feature: [objects#229] Port RCT1 go karts with helmets. - Feature: [OpenMusic#20, OpenMusic#21] Added Blizzard and Extraterresterial ride music styles. - Improved: [OpenRCT2#11473] Hot reload for plug-ins now works on macOS. - Improved: [OpenRCT2#12466] RCT1 parks now use RCT1’s interest calculation algorithm. - Improved: [OpenRCT2#14635] Scenery window now shows up to 255 scenery groups. - Improved: [OpenRCT2#17288] Reorganise the order of shortcut keys in the Shortcut Keys window. - Improved: [OpenRCT2#18706] Ability to view the list of contributors in-game. - Improved: [OpenRCT2#18749] Ability to have 4 active awards for more than one month in a row. - Improved: [OpenRCT2#18826] [Plugin] Added all actions and their documentation to plugin API. - Improved: [OpenRCT2#18945] Languages can now fall back to other languages than English. - Improved: [OpenRCT2#18970] Trying to load a non-park save will now display a context error. - Improved: [OpenRCT2#18975] Add lift sprites for steep hills on the wooden roller coaster. - Improved: [OpenRCT2#19044] Added special thanks to RMC and Wiegand to the About page. - Improved: [OpenRCT2#19131] Track missing objects when selecting scenery groups in console. - Improved: [OpenRCT2#19253] Queue junctions drawn properly when using regular paths as queue. Note: Requires using tile inspector to indicate railings can be used at T or X junctions. - Improved: [OpenRCT2#19067] New Ride window now allows filtering similarly to Object Selection. - Improved: [OpenRCT2#19272] Scenery window now allows filtering similarly to Object Selection. - Improved: [OpenRCT2#19447] The control key now enables word jumping in text input fields. - Improved: [OpenRCT2#19463] Added ‘W’ and ‘Y’ with circumflex to sprite font (for Welsh). - Improved: [OpenRCT2#19549] Enable large address awareness for 32 bit Windows builds allowing to use 4 GiB of virtual memory. - Improved: [OpenRCT2#19668] Decreased the minimum map size from 13 to 3. - Improved: [OpenRCT2#19683] The delays for ride ratings to appear has been reduced drastically. - Improved: [OpenRCT2#19697] “Show guest purchases” will now work in multiplayer. - Change: [OpenRCT2#19018] Renamed actions to fit the naming scheme. - Change: [OpenRCT2#19091] [Plugin] Add game action information to callback arguments of custom actions. - Change: [OpenRCT2#19233] Reduce lift speed minimum and maximum values for “Classic Wooden Coaster”. - Removed: [OpenRCT2#19520] Support for Windows Vista systems. - Fix: [OpenRCT2#474] Mini golf window shows more players than there actually are (original bug). - Fix: [OpenRCT2#592] Window scrollbar not able to navigate to the end of large lists. - Fix: [OpenRCT2#7210] Land tile smoothing occurs with edge tiles (original bug). - Fix: [OpenRCT2#17996] Finances window not cleared when starting some .park scenarios. - Fix: [OpenRCT2#18260] Crash opening parks that have multiple tiles referencing the same banner entry. - Fix: [OpenRCT2#18467] “Selected only” Object Selection filter is active in Track Designs Manager, and cannot be toggled. - Fix: [OpenRCT2#18904] OpenRCT2 audio object accidentally exported in saves. - Fix: [OpenRCT2#18905] Ride Construction window theme is not applied correctly. - Fix: [OpenRCT2#18911] Mini Golf station does not draw correctly from all angles. - Fix: [OpenRCT2#18971] New Game does not prompt for save before quitting. - Fix: [OpenRCT2#18986] [Plugin] Sending remote scripts larger than 63KiB crashing all clients. - Fix: [OpenRCT2#18994] Title music doesn’t start after enabling master volume. - Fix: [OpenRCT2#19025] Park loan behaves inconsistently with non-round and out-of-bounds values. - Fix: [OpenRCT2#19026] Park loan is clamped to a 32-bit integer. - Fix: [OpenRCT2#19068] Guests may not join queues correctly. - Fix: [OpenRCT2#19091] [Plugin] Remote plugins in multiplayer servers do not unload properly. - Fix: [OpenRCT2#19112] Clearing the last character in the Object Selection filter does not properly reset it. - Fix: [OpenRCT2#19112] Text boxes not updated with empty strings in Track List, Server List, and Start Server windows. - Fix: [OpenRCT2#19114] [Plugin] ‘GameActionResult’ does not comply to API specification. - Fix: [OpenRCT2#19136] SV6 saves with experimental RCT1 paths not imported correctly. - Fix: [OpenRCT2#19243] .park scenarios don’t complete properly. - Fix: [OpenRCT2#19250] MusicObjects do not free their preview images. - Fix: [OpenRCT2#19292] Overflow in ‘totalRideValue’. - Fix: [OpenRCT2#19339] Incorrect import of crashed particles from SV4. - Fix: [OpenRCT2#19379] “No platforms” station style shows platforms on the Junior Roller Coaster. - Fix: [OpenRCT2#19380] Startup crash when no sequences are installed and random sequences are enabled. - Fix: [OpenRCT2#19391] String corruption caused by an improper buffer handling in ‘GfxWrapString’. - Fix: [OpenRCT2#19434, OpenRCT2#19509] Object types added by OpenRCT2 do not get removed when executing ‘remove_unused_objects’. - Fix: [OpenRCT2#19475] Cannot increase loan when more than £1000 in debt. - Fix: [OpenRCT2#19493] SV4 saves not importing the correct vehicle colours. - Fix: [OpenRCT2#19517] Crash when peeps try to exit or enter hacked rides that have no waypoints specified. - Fix: [OpenRCT2#19524] Staff counter shows incorrect values if there are more than 32767 staff members. - Fix: [OpenRCT2#19574] Handle exits in null locations. - Fix: [OpenRCT2#19641, OpenRCT2#19643] Missing water tile in Infernal Views’ and Six Flags Holland’s river.
This PR is for custom rides.
Steam Position: moves the spawn point of steam effects forward/backward and up/down by multiplying the existing steam offsets by the specified values
Animation speed: changes the way vehicle animations (specifically, ones that are dependent on velocity of the vehicle) to a unified timing mechanism.