use openusd::Result;
use openusd::sdf;
use openusd::usd::Attribute;
use super::Gprim;
use super::tokens as tok;
pub trait PointBased: Gprim {
fn points_attr(&self) -> Attribute {
self.prim().attribute(tok::A_POINTS)
}
fn create_points_attr(&self) -> Result<Attribute> {
Ok(self
.prim()
.create_attribute(tok::A_POINTS, sdf::ValueTypeName::POINT3F_ARRAY)?
.set_custom(false)?)
}
fn normals_attr(&self) -> Attribute {
self.prim().attribute(tok::A_NORMALS)
}
fn create_normals_attr(&self) -> Result<Attribute> {
Ok(self
.prim()
.create_attribute(tok::A_NORMALS, sdf::ValueTypeName::NORMAL3F_ARRAY)?
.set_custom(false)?)
}
fn velocities_attr(&self) -> Attribute {
self.prim().attribute(tok::A_VELOCITIES)
}
fn create_velocities_attr(&self) -> Result<Attribute> {
Ok(self
.prim()
.create_attribute(tok::A_VELOCITIES, sdf::ValueTypeName::VECTOR3F_ARRAY)?
.set_custom(false)?)
}
fn accelerations_attr(&self) -> Attribute {
self.prim().attribute(tok::A_ACCELERATIONS)
}
fn create_accelerations_attr(&self) -> Result<Attribute> {
Ok(self
.prim()
.create_attribute(tok::A_ACCELERATIONS, sdf::ValueTypeName::VECTOR3F_ARRAY)?
.set_custom(false)?)
}
}