载入中...
搜索中...
未找到
AudioZone.cpp
浏览该文件的文档.
9bool finiteItem(const AudioZoneItem& v) { return std::isfinite(v.volume)&&std::isfinite(v.fadeInTime)&&
10 std::isfinite(v.fadeOutTime)&&std::isfinite(v.duration)&&v.volume>=0&&v.fadeInTime>=0&&v.fadeOutTime>=0&&v.duration>=0; }
11float unit(std::uint32_t seed) { seed=seed*1664525u+1013904223u; return float(seed>>8u)*(1.f/16777216.f); }
15 Diagnostic::error(DiagnosticCode::InvalidArgument,"audio-zone track values must be finite and non-negative","audio.zone"));
21Result<AudioZoneOutput> evaluateAudioZone(const AudioZoneProfile& p,AudioZoneState& state,float now,
23 if(!std::isfinite(now)||!std::isfinite(px)||!std::isfinite(py)||!std::isfinite(pz)||!std::isfinite(master)||
25 !std::isfinite(p.minimumBreakTime)||!std::isfinite(p.maximumBreakTime)||!std::isfinite(p.deactivationTime)||
26 now<0||master<0||p.radius<0||p.minimumBreakTime<0||p.maximumBreakTime<p.minimumBreakTime||p.deactivationTime<0)
28 Diagnostic::error(DiagnosticCode::InvalidArgument,"audio-zone inputs must be finite and ranges valid","audio.zone"));
33 if(next.phase!=AudioZonePhase::Active) { next.phase=AudioZonePhase::Active; next.deactivateAt=0; }
39 if(next.phase==AudioZonePhase::Active && p.itemCount()>0 && !next.playing && now>next.nextTrackStarts) {
42 const auto* item=p.itemAt(chosen); next.selectedTrack=chosen; next.playing=true; next.trackStarted=now;
62 Diagnostic::error(DiagnosticCode::InvalidArgument,"audio-zone output requires a source and finite non-negative volume","audio.zone"));
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
Caller-owned Pcg audio-zone configuration and track list.
Definition AudioZone.h:18
Result< int > addItem(const AudioZoneItem &item)
Add one validated track profile.
Definition AudioZone.cpp:13
A playable audio source (static buffer or streaming decoder). Not thread-safe for playback control ex...
Definition Source.h:30
Definition Audio.cpp:23
Result< AudioZoneOutput > evaluateAudioZone(const AudioZoneProfile &p, AudioZoneState &state, float now, float px, float py, float pz, float master, std::uint32_t seed)
Evaluate PcgAudioManager/PcgAudioZone for one explicit time and player observation.
Definition AudioZone.cpp:21
Result< void > applyAudioZoneOutput(Source *source, const AudioZoneOutput &output)
Apply one evaluated command to the caller-selected track Source without retaining it.
Definition AudioZone.cpp:59
@ BecomingInactive
@ Inactive
@ InvalidArgument
Commands to apply to a caller-owned audio Source.
Definition AudioZone.h:43