use crate::pcp;
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq)]
pub enum ResolveInfoSource {
#[default]
None,
Fallback,
Default,
TimeSamples,
ValueClips,
}
#[derive(Debug, Clone, Default, PartialEq)]
pub struct ResolveInfo {
pub(super) source: ResolveInfoSource,
pub(super) node: Option<pcp::ResolveNode>,
pub(super) value_is_blocked: bool,
pub(super) has_authored_opinion: bool,
}
impl ResolveInfo {
pub fn source(&self) -> ResolveInfoSource {
self.source
}
pub fn node(&self) -> Option<&pcp::ResolveNode> {
self.node.as_ref()
}
pub fn value_is_blocked(&self) -> bool {
self.value_is_blocked
}
pub fn has_authored_value(&self) -> bool {
matches!(
self.source,
ResolveInfoSource::Default | ResolveInfoSource::TimeSamples | ResolveInfoSource::ValueClips
)
}
pub fn has_authored_value_opinion(&self) -> bool {
self.has_authored_opinion
}
pub fn value_source_might_be_time_varying(&self) -> bool {
matches!(
self.source,
ResolveInfoSource::TimeSamples | ResolveInfoSource::ValueClips
)
}
}