16 std::filesystem::path
path;
19 [[nodiscard]]
bool isValid() const noexcept {
return !
name.empty(); }
20 explicit operator bool() const noexcept {
return isValid(); }
24 return a.path == b.path && a.name == b.name;
43 [[nodiscard]]
bool isValid() const noexcept {
return flow.isValid(); }
44 explicit operator bool() const noexcept {
return isValid(); }
48 return a.flow == b.flow && a.settingIndex == b.settingIndex && a.generation == b.generation;
60 struct hash<
Engine::Assets::AudioFlowHandle>
64 const size_t pathHash = hash<std::filesystem::path>{}( handle.path );
65 const size_t nameHash = hash<std::string>{}( handle.name );
66 return pathHash ^ ( nameHash + 0x9e3779b9u + ( pathHash << 6 ) + ( pathHash >> 2 ) );
Stable identity of an audio flow: the glTF asset path plus the flow name (unique within the asset)....
bool isValid() const noexcept
friend bool operator==(const AudioFlowHandle &a, const AudioFlowHandle &b) noexcept
std::filesystem::path path
glTF asset path the flow belongs to.
std::string name
Flow identity within the asset.
friend bool operator!=(const AudioFlowHandle &a, const AudioFlowHandle &b) noexcept
Stable handle to a named, runtime-controllable setting of a flow.
bool isValid() const noexcept
uint32_t settingIndex
Index into the flow's settings array.
friend bool operator!=(const FlowSettingHandle &a, const FlowSettingHandle &b) noexcept
friend bool operator==(const FlowSettingHandle &a, const FlowSettingHandle &b) noexcept
uint32_t generation
Reserved for store generation validation.
size_t operator()(const Engine::Assets::AudioFlowHandle &handle) const noexcept