Add smooth-movement plugin - #5875
Conversation
| @@ -0,0 +1,1314 @@ | |||
| // SPDX-License-Identifier: MIT | |||
There was a problem hiding this comment.
From our license statement
The core, plugins, scripts, and other DFHack code all use the ZLib license unless noted otherwise. By contributing to DFHack, authors release the contributed work under this license.
Please relicense under ZLib so I don't have to add an additional line to our licenses statement for this plugin
| std::set<std::pair<int32_t, int32_t>> previous_coverage; | ||
| uint64_t visual_context_revision = 0; | ||
| const void *previous_viewport = nullptr; | ||
| std::array<int32_t, 12> previous_view_signature{}; |
There was a problem hiding this comment.
why is this an array? looking elsewhere, it looks like each of these 12 elements has a fixed, established meaning, which means this should be a proper compound of some sort
| decltype(&SDL_SetRenderDrawColor) set_render_draw_color = nullptr; | ||
|
|
||
| visual_animation_managerst animation_manager; | ||
| std::set<std::pair<int32_t, int32_t>> previous_coverage; |
There was a problem hiding this comment.
why is this not a tile_coveragest?
| SDL_Texture *texture; | ||
| bool mirrored = false; | ||
| int32_t mirror_shift = 0; | ||
| std::set<std::pair<int32_t, int32_t>> coverage; |
There was a problem hiding this comment.
this should also be a tile_coveragest
| int8_t center_y; | ||
| }; | ||
|
|
||
| constexpr std::array visual_layer_descriptors = { |
There was a problem hiding this comment.
where are the magic numbers here coming from?
|
A general comment as this is a pervasive issue and I do not wish to pepper the review with dozens if not hundreds of comments: there are a lot of operations in here that work on (x,y) coordinate pairs that involve effectively duplicated code. DFHack has a 2d coordinate type I've made some other specific comments but this should not be considered a full review. |
This will be a substantial refactor. I will look into it and the others comments as well. |
|
Camera feature was not working properly and introduced a mouse click bug so I opted to remove it. |
Summary
Adds the
smooth-movementplugin to DFHack. It provides smooth visual interpolation for creatures, items, vehicles, and related overlays in the fortress viewport.Notes
I closed the previous PR in favor of this version, which preserves the original code structure that was already reviewed by humans in the standalone repository.
Standalone repository: https://github.com/notliad/df-smooth-movement
Testing
smooth-movementplugin through the DFHack build system.smooth-movement-test.