44 constexpr auto k_eqIgnoreCase = [](std::string_view a, std::string_view b)
constexpr noexcept {
45 if (a.size() != b.size())
47 for (
size_t i = 0; i < a.size(); ++i) {
48 const char ca = a[i] >=
'A' && a[i] <=
'Z' ?
static_cast<char>(a[i] + 32) : a[i];
49 const char cb = b[i] >=
'A' && b[i] <=
'Z' ?
static_cast<char>(b[i] + 32) : b[i];
57 if (name.size() >= 4) {
58 const std::string_view prefix = name.substr(0, 4);
59 if (k_eqIgnoreCase(prefix,
"mat_"))
60 name = name.substr(4);
63 if (k_eqIgnoreCase(name,
"metal"))
65 if (k_eqIgnoreCase(name,
"concrete"))
67 if (k_eqIgnoreCase(name,
"flesh"))
69 if (k_eqIgnoreCase(name,
"wood"))
71 if (k_eqIgnoreCase(name,
"energy"))
SurfaceType
Surface material hit by a projectile / hitscan / contact.
Definition SurfaceType.hpp:28
@ Energy
Definition SurfaceType.hpp:33
@ Wood
Definition SurfaceType.hpp:32
@ Flesh
Definition SurfaceType.hpp:31
@ Concrete
Definition SurfaceType.hpp:30
@ Count
Definition SurfaceType.hpp:34
@ Metal
Definition SurfaceType.hpp:29
constexpr SurfaceType surfaceTypeFromMaterialName(std::string_view name) noexcept
Parse a Blender material name into a SurfaceType.
Definition SurfaceType.hpp:42
constexpr std::string_view surfaceTypeName(SurfaceType s) noexcept
Display name for a SurfaceType. Used in debug UI / logging.
Definition SurfaceType.hpp:77