Skip to content

Releases: BithreenGirlen/DxLibSpineViewer

v0.5.4

08 Apr 17:14

Choose a tag to compare

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.cpp which should not be implemented here.
  • 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 since 1.92.4.
  • 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

02 Apr 18:07

Choose a tag to compare

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::Vector to convert UTF-8 to UTF16.
  • 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

09 Mar 15:02

Choose a tag to compare

  • 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

23 Jan 05:39

Choose a tag to compare

Runtime changes

  • Delete rescale functions 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 MixAnimations to addAnimationTracks.
  • 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

30 Nov 00:41
d4fc81d

Choose a tag to compare

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 -> Font to 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.
  • R-pressed + L-drag to 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

12 Nov 00:39

Choose a tag to compare

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.
  • 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 GIF and MP4 is 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.
  • 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

01 Aug 02:57

Choose a tag to compare

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 GetMessage and BeginPaint on idle state, and switch to PeekMessage and GPU rendering on loaded.

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.
  • Use pre-compiled header to reduce compile time.

v0.4.6

25 Jul 02:37
043a0ef

Choose a tag to compare

Viewer changes

  • Call PeekMessage instead of GetMessage in 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, Listview has double-buffer, but ComboBox not 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.
  • Fix having skipped the first frame to record.
  • Truncate animation time to third place when exporting as JPG or PNG.
  • Prioritise using dedicated GPU.
  • Use constant delta time only under recording.

v0.4.5

22 Jul 05:10

Choose a tag to compare

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

17 Jul 09:53

Choose a tag to compare

Runtime changes

  • Define character conversion function used in texture loader only when it is Unicode Windows environment.
    • On MBCS Windows or other platform, conversion to wchar_t is not required.

Viewer changes

  • Add a prevention for unintended view-point moving just after clicking menu item.

Others

  • Rename some variables or functions in main_window to be clearer.