use anyhow::Result;
use crate::sdf::Variability;
use crate::usd::{Attribute, Relationship, SchemaBase};
use super::tokens as tok;
pub trait RenderSettingsBase: SchemaBase {
fn resolution_attr(&self) -> Attribute {
self.prim().attribute(tok::A_RESOLUTION)
}
fn create_resolution_attr(&self) -> Result<Attribute> {
Ok(self
.prim()
.create_attribute(tok::A_RESOLUTION, "int2")?
.set_custom(false)?
.set_variability(Variability::Uniform)?)
}
fn pixel_aspect_ratio_attr(&self) -> Attribute {
self.prim().attribute(tok::A_PIXEL_ASPECT_RATIO)
}
fn create_pixel_aspect_ratio_attr(&self) -> Result<Attribute> {
Ok(self
.prim()
.create_attribute(tok::A_PIXEL_ASPECT_RATIO, "float")?
.set_custom(false)?
.set_variability(Variability::Uniform)?)
}
fn aspect_ratio_conform_policy_attr(&self) -> Attribute {
self.prim().attribute(tok::A_ASPECT_RATIO_CONFORM_POLICY)
}
fn create_aspect_ratio_conform_policy_attr(&self) -> Result<Attribute> {
Ok(self
.prim()
.create_attribute(tok::A_ASPECT_RATIO_CONFORM_POLICY, "token")?
.set_custom(false)?
.set_variability(Variability::Uniform)?)
}
fn data_window_ndc_attr(&self) -> Attribute {
self.prim().attribute(tok::A_DATA_WINDOW_NDC)
}
fn create_data_window_ndc_attr(&self) -> Result<Attribute> {
Ok(self
.prim()
.create_attribute(tok::A_DATA_WINDOW_NDC, "float4")?
.set_custom(false)?
.set_variability(Variability::Uniform)?)
}
fn instantaneous_shutter_attr(&self) -> Attribute {
self.prim().attribute(tok::A_INSTANTANEOUS_SHUTTER)
}
fn create_instantaneous_shutter_attr(&self) -> Result<Attribute> {
Ok(self
.prim()
.create_attribute(tok::A_INSTANTANEOUS_SHUTTER, "bool")?
.set_custom(false)?
.set_variability(Variability::Uniform)?)
}
fn disable_motion_blur_attr(&self) -> Attribute {
self.prim().attribute(tok::A_DISABLE_MOTION_BLUR)
}
fn create_disable_motion_blur_attr(&self) -> Result<Attribute> {
Ok(self
.prim()
.create_attribute(tok::A_DISABLE_MOTION_BLUR, "bool")?
.set_custom(false)?
.set_variability(Variability::Uniform)?)
}
fn disable_depth_of_field_attr(&self) -> Attribute {
self.prim().attribute(tok::A_DISABLE_DEPTH_OF_FIELD)
}
fn create_disable_depth_of_field_attr(&self) -> Result<Attribute> {
Ok(self
.prim()
.create_attribute(tok::A_DISABLE_DEPTH_OF_FIELD, "bool")?
.set_custom(false)?
.set_variability(Variability::Uniform)?)
}
fn camera_rel(&self) -> Relationship {
self.prim().relationship(tok::REL_CAMERA)
}
fn create_camera_rel(&self) -> Result<Relationship> {
Ok(self.prim().create_relationship(tok::REL_CAMERA)?.set_custom(false)?)
}
}