use crate::{
data::ObsObjectBuilder,
scenes::{ObsSceneItemRef, ObsSceneRef, SceneItemExtSceneTrait},
sources::ObsSourceTrait,
utils::ObsError,
};
pub trait ObsSourceBuilder: ObsObjectBuilder {
type T: ObsSourceTrait + Clone + 'static;
fn build(self) -> Result<Self::T, ObsError>
where
Self: Sized;
fn add_to_scene(self, scene: &mut ObsSceneRef) -> Result<ObsSceneItemRef<Self::T>, ObsError>
where
Self: Sized,
{
let source = self.build()?;
scene.add_source(source.clone())
}
}