There was a rare case when Old Model Manager's model base object list was not working correctly.
Testcase:
CreateObject pos=10;0 dir=1.5 type=LeggedTrainer selectable=1 team=1
CreateObject pos=-10;0 dir=0.25 type=LeggedTrainer selectable=1 team=2
Expected result (after fix): models are displayed correctly
Actual result (before fix): some legs are missing, instead of them giant surfaces are floating high above the model
The reason was is failing to find the element that was just created and added with `m_models.find(FileInfo(fileName, mirrored, team))`
This happened for objects that had mirrored body parts (at least Ants, Wasps and all Legged units were affected) in case they were assigned to several teams.
Everyone were missing some legs since the `modelManager->AddModelReference("ant6.mod", true, rank, m_object->GetTeam())`
Wasps were also usually missing some wings.
Some parts of the code used the fixed-size type uint32_t,
which is defined in stdint.h / cstdint - without including said
header file. With GCC13, the inter-header dependencies seem
to have changed and the file is no longer included transitively,
requiring an explicit include.
* Fix for invisible batteries (code by melex750)
* Updated vcpkg
* A workaround for sprintf define
* Added mpg123 to dependencies due to newer version of SndFile
* Removed CONFIG
* Another fix for dependencies
* Made additional dependencies optional
The last segment of the path is shortened to avoid going too close
and risk bumping into the object that it was meant to approach.
The same position could also be found by finding the roots of a second
order polynomial analytically but this solution is simple and sufficient.
This is a bit redundant because the current usage of goto
does not trigger it. It can be triggered by:
* increasing goalRadius
* decreasing NUMQUEUEBUCKETS
* decreasing BM_DIM_STEP
* increasing edge costs