Releases: BithreenGirlen/DxLibSpineViewer
Releases · BithreenGirlen/DxLibSpineViewer
v0.5.4
Runtime changes
- Calculate the default scale not based on the largetst resolution in configuration, but on the resolution currently in use.
- Delete code in
spine_player_c.cppwhich should not be implemented here.
- Delete code in
- Make public a function to get the whole bounding box.
- The effect tends to go far away from body or background slot, so it is up to caller to check whether it is appropriate or not.
Viewer changes
- Resume animation when to start recording.
- This is to prevent trying to record paused animation.
- Make imgui viewport top-level.
- This was default behaviour upto Dear-imgui
1.92.3, but has changed since1.92.4.
- This was default behaviour upto Dear-imgui
- Limit the window size to the resolution of monitor where it is on.
- To be consistent with the change in runtime side.
v0.5.3
Runtime changes
- Add function to set current animation time.
set_animation_time.mp4
- Unify the style of character code conversion in C and C++ runtime.
- C++ runtime now does not rely on
spine::Vectorto convert UTF-8 to UTF16.
- C++ runtime now does not rely on
- Add pause and visible state.
- The former is to set current animation time in viewer, and the latter is to count draw calls to render Spine.
Viewer changes
- Add input fields to set size/offset.
- Some Spines are adjuseted to fixed size frame and zoom instead of the whole bouding box or that of a specific slot.
- Null check in case the dll for defualt Spine runtime is missing when executable is launched.
v0.5.2
- Build Spine runtime for DxLib as dynamic libray.
- The built result is composed of one executable and dlls of runtime.
- This requires tricky techniques because DxLib is static library and linking to it should be avoided when building dynamic libray which depends on DxLib API/data type. So the way to build Spine viewer has been shifted from Visual Studio solution and project files to CMake.
- Detect Spine version and skeleton format (binary or JSON) from its header part.
- For this purpose, file loading is done by viewer part. Now, Spine runtime reads data via memory passed by viewer.
- Fromat selection combo-box has been deleted from setting dialogue.
v0.5.1
Runtime changes
- Delete
rescalefunctions because they can be achieved more flexibly by combining other functions. - Change nomenclature to conform to that of generic runtime.
- camelCase for non-static member functions.
- Rename
MixAnimationstoaddAnimationTracks. - Add functions for animation transition.
Viewer changes
- Separate identifiers of popup menu items from those of menu bar items.
- Add a feature to fit to a specific slot.
- This is intended to be used when effects are far away from body/background slot that the whole bounding box is much larger than that of the latter.
- This feature is available only in imgui version for now.
Demonstration
Fit to background slot
Fit.to.backgound.slot.mp4
v0.5
Runtime changes
- Add functions to calculate the bounding box of a slot.
- Make public the transform matrix to facilitate drawing the bounding-box outside.
Viewer changes
- Move manipulation dialogues into tab pages.
- Add ImGui version as well as Windows native-UI version.
Difference of ImGui version compared to native-UI version.
- Render Spine on render-texture instead of directly into screen.
- The recorder copies and stores this render-texture during recording, instead of copying the whole screen.
- Provide runtime manipulation based on ImGui, instead of CPU-driven native UIs.
- The manipulation/configuration formerly available on CPU-based dialogue are moved to ImGui window which can be called from file menu
Tool -> Show tool dialogue.- CPU-based UI is remained for file extensions setting, because these should be configured in prior to loading and rendering Spine.
- Another CPU-based UI is added for font setting because this should be managed outside of the immediate GUI rendering.
Tool -> Fontto open dialogue to specify the font file and size for ImGui.
- Also, window menu and context menu are remained native because the former should be accessible even if the Spine is yet to be loaded, and for the latter there is not so much reasons to migrate.
- The manipulation/configuration formerly available on CPU-based dialogue are moved to ImGui window which can be called from file menu
R-pressed + L-dragto move the main window regardless of its style, namely borderless or not.- Able to draw the bounding box of a slot.
Demonstration
Render the bounding of a slot
Slot.bounding.mp4
Set up font for ImGui
- In order for ImGui to render non-Ascii characters, it is required to set appropriate font.
font.setting.mp4
v0.4.8
Runtime changes
- Transform based on the size of render-target, instead of the size of window.
- Remove virtual
Redraw()from base spine player class.- This is for compatibility with other rendering libraries in which render-target cannot be obtained globally like SFML.
- Be able to set/reset the base size of Spine(s).
- By default, the size of Spine is derived from file specification. But some effects may be far away from the background or body slot that it is required to set base size so as to make them out of local coördinate.
- For Spine
2.1, changed size cannot be restored to the default one except reloading bacause of the lack of empty animation entry.
- For Spine
- By default, the size of Spine is derived from file specification. But some effects may be far away from the background or body slot that it is required to set base size so as to make them out of local coördinate.
- Avoid Clearing 0-th track for Spine
2.1.- Clearing 0-th track would result in the state of no tracks contrary to later runtimes in which at least one animation track named "empty" remains.
Viewer changes
- Add functions to export via graphic handle.
- Filepath manipulation for
GIFandMP4is moved from main class to recorder class. - These functions are not used in this version though, they are helpful when rendering into graphic handle created by
DxLib::MakeScreen()and exporting it.
- Filepath manipulation for
- Add class to construct menubar and context menu.
- Child menu items will not be expanded without clicking once Spine has been loaded because they are CPU-driven and there would be no events to cause them to be painted.
- Fix condition to set resizable window style.
- An intension was to forbid dragged resizing of window while video recording, but actually had been setting resizable style regardless of the former style once recording had finished.
Example to set base size
- Scaling will be performed accroding to the manually set frame.
Refit.frame.mp4
v0.4.7
Viewer changes
- Fix sequential
PNGs to have superfluous animation name. - Be able to export as sequential
JPGs. - Reduce burden on CPU when Spine is yet to be loaded.
- Call
GetMessageandBeginPainton idle state, and switch toPeekMessageand GPU rendering on loaded.
- Call
Build changes
- Use Spine generic runtimes as static library.
- There is no occasion to modify them, except
extensions.cpp/h, in terms of their license conditions. - Source files are kept for the sake of IntelliSense and debugging.
- There is no occasion to modify them, except
- Use pre-compiled header to reduce compile time.
v0.4.6
Viewer changes
- Call
PeekMessageinstead ofGetMessagein the loop.- This allows accurate recording in higher FPS.
- But this affects start up of CPU-based UIs which does not have double-buffer.
- For example,
Listviewhas double-buffer, butComboBoxnot and may result in blinking. - Furthermore, file dialogue should be manually updated after filter having been changed.
- But selecting
All files (*)filter would be rare case I suppose.
- But selecting
- For example,
- Fix having skipped the first frame to record.
- Truncate animation time to third place when exporting as
JPGorPNG. - Prioritise using dedicated GPU.
- Use constant delta time only under recording.
v0.4.5
Runtime changes
- Be able to handle slot exclusion by callback function.
Viewer changes
- Add a feature to exclude slot by partial name filter.
- This filter will be kept applied after folder navigation.
- Simplify recording setting.
- Always decide on output file type when starting recording regardless of its setting.
v0.4.4
Runtime changes
- Define character conversion function used in texture loader only when it is
UnicodeWindows environment.- On
MBCSWindows or other platform, conversion towchar_tis not required.
- On
Viewer changes
- Add a prevention for unintended view-point moving just after clicking menu item.
Others
- Rename some variables or functions in
main_windowto be clearer.