use UTF-8 in boost::filesystem
Use UTF-8 in stb_image
Use UTF-8 in GltfModel.cpp
Use UTF-8 in FileUtils::CopyFile
Fix typo in File_Utils.cpp
Use UTF-8 in output path
Use UTF-8 in Raw2Gltf
Fix typo in Raw2Gltf
Fix Raw2Gltf.hpp
Expose NativeToUTF8 in Fbx2Raw.cpp
Use UTF-8 in fbxTempDir
Use UTF-8 in TextureBuilder
These updates fix building the project on my up to date Linux box due to
missing cstdint headers on the older Draco versions it was pinned to,
and bumps Conan 1.x to the latest semver-compatible release, which also
introduces support for newer GCC compilers.
While at it, I've also bumped the GitHub Actions checkout version tag to
v4, from v3, and the runner image versions. The Ubuntu runner version
was purposefully not updated to avoid the risk of making binaries less
portable than before due to a bump in the `glibc` version that the
compiler will link to.
The FBX SDK is compiled against a regular libiconv on Windows on Linux (with symbols libconv_open() etc) but on Mac, they compiled it against Apple's modified libiconv, which renames those functions. Annoyingly this means we need to explicitly decline the Conan libiconv package, for that platform only.
With this, we are able to get rid of all the increasingly broken file
system utility code, and trust boost::filesystem to handle all the
cross-platform complexity.
The first version of this PR centred around C++17 & std::filesystem,
but support remains too elusive; it seems works out of the box in
Visual Studio (especially 2019), but is entirely missing from the Mac
dclang, and even with GCC 8.0 it requires an explicit '-l c++fs'.
Luckily the std:: version is almost exactly the boost:: version (not
surprising) so when the world's caught up, we can ditch Boost and go
all stdlib.
Setting up Conan requires a bit of work; we'll want to document the
details in the README.
Looks like I never did the required cleanup after my accidental commit back in August.
This deletes the materials classes that were obsoleted back then, and comments out the
large swathes of PhysicalMaterial code that's not currently doing anything (i.e. all the
materials properties that glTF can't currently represent.)
We want to move to auto-formatting all our code, and it just seemed impossible
to make cxxopts usage tidy under clang-format's dominion. While trying to work
out its quirks, I realised that CLI11 did everything I wanted much better, and
so we've switched.
We're also going to chuck the usage of ExternalProject_Add(), at least for the
simplest use cases such as single-header include files. We'll just commit them
directly; that's kind of the whole point.
The one discipline we'll maintain is that commits that involve third_party/
should be as self-contained as possible (without breaking the app).