pub struct SplineWidget {
pub points: Vec<Vec3>,
pub colour: [f32; 4],
pub line_width: f32,
pub handle_colour: [f32; 4],
pub resolution: u32,
/* private fields */
}Expand description
An interactive spline widget with N draggable Catmull-Rom control points.
Each frame call update() to advance state, then push polyline_item() into
fd.scene.polylines and handle_glyphs() into fd.scene.glyphs.
Fields§
§points: Vec<Vec3>Control point positions.
colour: [f32; 4]Colour of the spline curve.
line_width: f32Width of the spline curve in pixels.
handle_colour: [f32; 4]Colour of the control point handles.
resolution: u32Number of samples between each pair of adjacent control points.
Implementations§
Source§impl SplineWidget
impl SplineWidget
Sourcepub fn new(points: Vec<Vec3>) -> Self
pub fn new(points: Vec<Vec3>) -> Self
Create a new spline widget with the given control points.
Sourcepub fn hovered_point(&self) -> Option<usize>
pub fn hovered_point(&self) -> Option<usize>
Returns the index of the currently hovered control point, if any.
Sourcepub fn update(&mut self, ctx: &WidgetContext) -> WidgetResult
pub fn update(&mut self, ctx: &WidgetContext) -> WidgetResult
Advance widget state from cursor input. Call once per frame before pushing render items.
Sourcepub fn polyline_item(&self, id: u64) -> PolylineItem
pub fn polyline_item(&self, id: u64) -> PolylineItem
Build a PolylineItem with the sampled Catmull-Rom spline.
Sourcepub fn handle_glyphs(&self, id_base: u64, ctx: &WidgetContext) -> GlyphItem
pub fn handle_glyphs(&self, id_base: u64, ctx: &WidgetContext) -> GlyphItem
Build a GlyphItem with sphere handles for each control point.
Hovered and active handles are brightened via use_default_colour and default_colour.
For per-handle highlight, call with a separate GlyphItem for the active handle.
Sourcepub fn sampled_positions(&self) -> Vec<[f32; 3]>
pub fn sampled_positions(&self) -> Vec<[f32; 3]>
Evaluate the Catmull-Rom spline and return sampled world-space positions.
Auto Trait Implementations§
impl Freeze for SplineWidget
impl RefUnwindSafe for SplineWidget
impl Send for SplineWidget
impl Sync for SplineWidget
impl Unpin for SplineWidget
impl UnsafeUnpin for SplineWidget
impl UnwindSafe for SplineWidget
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>, which can then be
downcast into Box<dyn ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>, which can then be further
downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSend for T
impl<T> DowncastSend for T
Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
impl<SS, SP> SupersetOf<SS> for SPwhere
SS: SubsetOf<SP>,
Source§fn to_subset(&self) -> Option<SS>
fn to_subset(&self) -> Option<SS>
self from the equivalent element of its
superset. Read moreSource§fn is_in_subset(&self) -> bool
fn is_in_subset(&self) -> bool
self is actually part of its subset T (and can be converted to it).Source§fn to_subset_unchecked(&self) -> SS
fn to_subset_unchecked(&self) -> SS
self.to_subset but without any property checks. Always succeeds.Source§fn from_subset(element: &SS) -> SP
fn from_subset(element: &SS) -> SP
self to the equivalent element of its superset.