ObjectClipper tracks active mesh (incl. possible hollowing), remembers clipping plane position and can render the cut on demand
Hollowing gizmo uses the new infrastructure
The raycaster manages a MeshRaycaster object that the gizmo can ask to perform raycasts
If the hollowed mesh tracker is enabled and the hollowed mesh is newly calculated/invalidated, the raycaster automatically updates.
Search string are synchronized between Plater and Tabs.
List with options and filtered list are in Sidebar.
All options list on tabs and Plater use this data from Sidebar
Note: SearchComboBox.cpp(hpp) was renamed to Search.cpp(hpp)
+ invalidated its unused callbacks.
+ ImGui::Selectable function is copied to InGuiWrapper.cpp and a little beat modified to change a label text, when item is hovered
of trapeziodal blocks around. The number is hard coded to 64,
and 3x64 blocks are flushed everytime the queue grows over 4x64 blocks.
This time estimator is slightly more close to what the firmware does, which
keeps a fixed number of blocks and it recalculates all the blocks
every time a new block is added while the oldest block is pushed out
of the queue. Therefore this optimization shall produce negligible
differences to what the previous code produced.
wrappers around boost::format using C++17 variadic templates,
replacing the ugly and verbose
(boost::format("template") % arg1 % arg2).str()
syntax.
The wrappers also implictely convert input parameters including the template
from wxString to UTF8.
The new format wrapper has been applied at multiple places as a start,
also some double macros _(L()) with new single macro _L().
This implementation works with the 3DConnexion driver (sic!)
if PrusaSlicer.xml is stored into c:\Program Files\3Dconnexion\3DxWare\3DxWinCore64\Cfg\
The implementation is inspired with Blender, see code inside WITH_INPUT_NDOF blocks.