From 352301bae0bae1c846c6ddb4c2be4767c131a7de Mon Sep 17 00:00:00 2001 From: kl-botsu Date: Mon, 2 Sep 2024 17:38:14 +0000 Subject: [PATCH] =?UTF-8?q?Deploying=20to=20gh-pages=20from=20@=20khonsula?= =?UTF-8?q?bs/FunnyBones@89448006ae71c01de7e1fe0ea957bcb32e42ddd6=20?= =?UTF-8?q?=F0=9F=9A=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main/FunnyBones/all.html | 2 +- main/FunnyBones/enum.Mode.html | 2 +- main/FunnyBones/fn.add_bones_to_skeleton.html | 2 +- main/FunnyBones/fn.bone_editor.html | 4 +- main/FunnyBones/fn.bone_property_editor.html | 4 +- main/FunnyBones/fn.bones_editor.html | 4 +- main/FunnyBones/fn.main.html | 2 +- main/FunnyBones/fn.skeleton_editor.html | 4 +- main/FunnyBones/index.html | 4 +- main/FunnyBones/sidebar-items.js | 2 +- main/FunnyBones/struct.ChangeAggregator.html | 71 ------- main/FunnyBones/struct.EditingSkeleton.html | 10 +- main/FunnyBones/struct.SkeletalBone.html | 6 +- main/funnybones/all.html | 2 +- .../animation/enum.BoneProperty.html | 2 +- .../animation/enum.JointProperty.html | 2 +- .../animation/enum.PropertyUpdate.html | 2 +- main/funnybones/animation/enum.Target.html | 2 +- main/funnybones/animation/enum.Value.html | 2 +- main/funnybones/animation/index.html | 2 +- .../animation/struct.Animation.html | 8 +- main/funnybones/animation/struct.Frame.html | 2 +- .../funnybones/animation/struct.Keyframe.html | 2 +- .../animation/struct.RunningAnimation.html | 2 +- .../funnybones/animation/struct.Timeline.html | 8 +- main/funnybones/cushy/index.html | 2 +- .../enum.SkeletonMutation.html | 6 +- .../cushy/skeleton_canvas/enum.Target.html | 2 +- .../cushy/skeleton_canvas/index.html | 2 +- .../struct.SkeletonCanvas.html | 2 +- main/funnybones/enum.BoneEnd.html | 14 +- main/funnybones/enum.BoneKind.html | 18 +- main/funnybones/index.html | 4 +- main/funnybones/sidebar-items.js | 2 +- main/funnybones/struct.Angle.html | 42 +--- main/funnybones/struct.Bone.html | 30 +-- main/funnybones/struct.BoneAxis.html | 14 +- main/funnybones/struct.BoneId.html | 22 +-- main/funnybones/struct.Coordinate.html | 10 +- main/funnybones/struct.Joint.html | 20 +- main/funnybones/struct.JointId.html | 18 +- main/funnybones/struct.LabeledBoneKind.html | 4 +- main/funnybones/struct.Rotation.html | 106 ++++++++++ main/funnybones/struct.Skeleton.html | 40 ++-- main/funnybones/struct.Vector.html | 16 +- main/help.html | 2 +- main/search-index.js | 4 +- .../FunnyBones/FunnyBones-desc-0-.js | 2 +- .../funnybones/funnybones-desc-0-.js | 2 +- main/settings.html | 2 +- main/src/FunnyBones/funnybones.rs.html | 160 +++++++-------- main/src/funnybones/animation.rs.html | 12 +- main/src/funnybones/cushy.rs.html | 36 +++- .../funnybones/cushy/skeleton_canvas.rs.html | 6 +- main/src/funnybones/lib.rs.html | 184 ++++++++++++------ main/src/funnybones/serde.rs.html | 10 +- main/trait.impl/core/clone/trait.Clone.js | 4 +- main/trait.impl/core/cmp/trait.PartialEq.js | 4 +- main/trait.impl/core/cmp/trait.PartialOrd.js | 4 +- main/trait.impl/core/convert/trait.From.js | 4 +- main/trait.impl/core/default/trait.Default.js | 4 +- main/trait.impl/core/fmt/trait.Debug.js | 4 +- main/trait.impl/core/fmt/trait.Display.js | 4 +- main/trait.impl/core/marker/trait.Copy.js | 4 +- main/trait.impl/core/marker/trait.Freeze.js | 4 +- main/trait.impl/core/marker/trait.Send.js | 4 +- .../core/marker/trait.StructuralPartialEq.js | 4 +- main/trait.impl/core/marker/trait.Sync.js | 4 +- main/trait.impl/core/marker/trait.Unpin.js | 4 +- main/trait.impl/core/ops/arith/trait.Add.js | 4 +- .../core/ops/arith/trait.AddAssign.js | 4 +- main/trait.impl/core/ops/arith/trait.Neg.js | 4 +- main/trait.impl/core/ops/arith/trait.Sub.js | 4 +- .../core/ops/arith/trait.SubAssign.js | 4 +- .../panic/unwind_safe/trait.RefUnwindSafe.js | 4 +- .../panic/unwind_safe/trait.UnwindSafe.js | 4 +- .../animation/trait.LinearInterpolate.js | 4 +- .../cushy/animation/trait.PercentBetween.js | 4 +- main/trait.impl/serde/de/trait.Deserialize.js | 4 +- main/trait.impl/serde/ser/trait.Serialize.js | 4 +- 80 files changed, 554 insertions(+), 489 deletions(-) delete mode 100644 main/FunnyBones/struct.ChangeAggregator.html create mode 100644 main/funnybones/struct.Rotation.html diff --git a/main/FunnyBones/all.html b/main/FunnyBones/all.html index c2357f7..d98eecf 100644 --- a/main/FunnyBones/all.html +++ b/main/FunnyBones/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/main/FunnyBones/enum.Mode.html b/main/FunnyBones/enum.Mode.html index ab218dd..aa94fc3 100644 --- a/main/FunnyBones/enum.Mode.html +++ b/main/FunnyBones/enum.Mode.html @@ -1,4 +1,4 @@ -Mode in FunnyBones - Rust

Enum FunnyBones::Mode

source ·
pub(crate) enum Mode {
+Mode in FunnyBones - Rust

Enum FunnyBones::Mode

source ·
pub(crate) enum Mode {
     Bones,
     Animation,
 }

Variants§

§

Bones

§

Animation

Trait Implementations§

source§

impl Clone for Mode

source§

fn clone(&self) -> Mode

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Mode

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Mode

source§

fn default() -> Mode

Returns the “default value” for a type. Read more
source§

impl PartialEq for Mode

source§

fn eq(&self, other: &Mode) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, diff --git a/main/FunnyBones/fn.add_bones_to_skeleton.html b/main/FunnyBones/fn.add_bones_to_skeleton.html index a656673..f394ecf 100644 --- a/main/FunnyBones/fn.add_bones_to_skeleton.html +++ b/main/FunnyBones/fn.add_bones_to_skeleton.html @@ -1,4 +1,4 @@ -add_bones_to_skeleton in FunnyBones - Rust

Function FunnyBones::add_bones_to_skeleton

source ·
pub(crate) fn add_bones_to_skeleton(
+add_bones_to_skeleton in FunnyBones - Rust

Function FunnyBones::add_bones_to_skeleton

source ·
pub(crate) fn add_bones_to_skeleton(
     connected_to: BoneAxis,
     bones: &Dynamic<Vec<SkeletalBone>>,
     skeleton: &mut Skeleton,
diff --git a/main/FunnyBones/fn.bone_editor.html b/main/FunnyBones/fn.bone_editor.html
index db8cd74..ff9e041 100644
--- a/main/FunnyBones/fn.bone_editor.html
+++ b/main/FunnyBones/fn.bone_editor.html
@@ -1,4 +1,4 @@
-bone_editor in FunnyBones - Rust

Function FunnyBones::bone_editor

source ·
pub(crate) fn bone_editor(
+bone_editor in FunnyBones - Rust

Function FunnyBones::bone_editor

source ·
pub(crate) fn bone_editor(
     bone: SkeletalBone,
-    watcher: &ChangeAggregator,
+    watcher: &Watcher,
 ) -> impl MakeWidget
\ No newline at end of file diff --git a/main/FunnyBones/fn.bone_property_editor.html b/main/FunnyBones/fn.bone_property_editor.html index e0996c3..f78671f 100644 --- a/main/FunnyBones/fn.bone_property_editor.html +++ b/main/FunnyBones/fn.bone_property_editor.html @@ -1,5 +1,5 @@ -bone_property_editor in FunnyBones - Rust

Function FunnyBones::bone_property_editor

source ·
pub(crate) fn bone_property_editor(
+bone_property_editor in FunnyBones - Rust

Function FunnyBones::bone_property_editor

source ·
pub(crate) fn bone_property_editor(
     bone: SkeletalBone,
-    watcher: &ChangeAggregator,
+    watcher: &Watcher,
     is_root: bool,
 ) -> impl MakeWidget
\ No newline at end of file diff --git a/main/FunnyBones/fn.bones_editor.html b/main/FunnyBones/fn.bones_editor.html index 70cbda0..40be57c 100644 --- a/main/FunnyBones/fn.bones_editor.html +++ b/main/FunnyBones/fn.bones_editor.html @@ -1,5 +1,5 @@ -bones_editor in FunnyBones - Rust

Function FunnyBones::bones_editor

source ·
pub(crate) fn bones_editor(
+bones_editor in FunnyBones - Rust

Function FunnyBones::bones_editor

source ·
pub(crate) fn bones_editor(
     label: &str,
     bones: &Dynamic<Vec<SkeletalBone>>,
-    watcher: &ChangeAggregator,
+    watcher: &Watcher,
 ) -> impl MakeWidget
\ No newline at end of file diff --git a/main/FunnyBones/fn.main.html b/main/FunnyBones/fn.main.html index 85884b9..134ab8f 100644 --- a/main/FunnyBones/fn.main.html +++ b/main/FunnyBones/fn.main.html @@ -1 +1 @@ -main in FunnyBones - Rust

Function FunnyBones::main

source ·
pub(crate) fn main() -> Result
\ No newline at end of file +main in FunnyBones - Rust

Function FunnyBones::main

source ·
pub(crate) fn main() -> Result
\ No newline at end of file diff --git a/main/FunnyBones/fn.skeleton_editor.html b/main/FunnyBones/fn.skeleton_editor.html index 03769a0..54288a5 100644 --- a/main/FunnyBones/fn.skeleton_editor.html +++ b/main/FunnyBones/fn.skeleton_editor.html @@ -1,4 +1,4 @@ -skeleton_editor in FunnyBones - Rust

Function FunnyBones::skeleton_editor

source ·
pub(crate) fn skeleton_editor(
+skeleton_editor in FunnyBones - Rust

Function FunnyBones::skeleton_editor

source ·
pub(crate) fn skeleton_editor(
     skeleton: &EditingSkeleton,
-    watcher: &ChangeAggregator,
+    watcher: &Watcher,
 ) -> impl MakeWidget
\ No newline at end of file diff --git a/main/FunnyBones/index.html b/main/FunnyBones/index.html index 7d3118f..7cc6a0e 100644 --- a/main/FunnyBones/index.html +++ b/main/FunnyBones/index.html @@ -1,2 +1,2 @@ -FunnyBones - Rust

Crate FunnyBones

source ·
Expand description

The FunnyBones 2D Animation Editor.

-

Structs§

Enums§

Functions§

\ No newline at end of file +FunnyBones - Rust

Crate FunnyBones

source ·
Expand description

The FunnyBones 2D Animation Editor.

+

Structs§

Enums§

Functions§

\ No newline at end of file diff --git a/main/FunnyBones/sidebar-items.js b/main/FunnyBones/sidebar-items.js index a7528c1..d5991e3 100644 --- a/main/FunnyBones/sidebar-items.js +++ b/main/FunnyBones/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["Mode"],"fn":["add_bones_to_skeleton","bone_editor","bone_property_editor","bones_editor","main","skeleton_editor"],"struct":["ChangeAggregator","EditingSkeleton","SkeletalBone"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["Mode"],"fn":["add_bones_to_skeleton","bone_editor","bone_property_editor","bones_editor","main","skeleton_editor"],"struct":["EditingSkeleton","SkeletalBone"]}; \ No newline at end of file diff --git a/main/FunnyBones/struct.ChangeAggregator.html b/main/FunnyBones/struct.ChangeAggregator.html deleted file mode 100644 index c4ea3ba..0000000 --- a/main/FunnyBones/struct.ChangeAggregator.html +++ /dev/null @@ -1,71 +0,0 @@ -ChangeAggregator in FunnyBones - Rust

Struct FunnyBones::ChangeAggregator

source ·
pub(crate) struct ChangeAggregator(pub(crate) Dynamic<usize>);

Tuple Fields§

§0: Dynamic<usize>

Implementations§

source§

impl ChangeAggregator

source

pub fn new<F, T>(when_changed: F) -> (Self, Dynamic<T>)
where - F: FnMut() -> T + Send + 'static, - T: PartialEq + Send + 'static,

source

pub fn watch<T>(&self, other: &Dynamic<T>)
where - T: Send + 'static,

Trait Implementations§

source§

impl Clone for ChangeAggregator

source§

fn clone(&self) -> ChangeAggregator

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ChangeAggregator

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where - T: Real + Zero + Arithmetics + Clone, - Swp: WhitePoint<T>, - Dwp: WhitePoint<T>, - D: AdaptFrom<S, Swp, Dwp, T>,

source§

fn adapt_into_using<M>(self, method: M) -> D
where - M: TransformMatrix<T>,

Convert the source color to the destination color using the specified -method.
source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford -method by default.
source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T, C> ArraysFrom<C> for T
where - C: IntoArrays<T>,

source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
source§

impl<T, C> ArraysInto<C> for T
where - C: FromArrays<T>,

source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where - T: FromCam16Unclamped<WpParam, U>,

source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_into_unclamped( - self, - parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, -) -> T

Converts self into C, using the provided parameters.
§

impl<A> Cast for A

§

fn cast<To>(self) -> To
where - To: CastFrom<A>,

Casts self to the To type. This may be a lossy operation.
§

impl<A> CastFrom<A> for A

§

fn from_cast(from: A) -> A

Returns from as Self.
§

impl<A, B> CastInto<A> for B
where - A: CastFrom<B>,

§

fn cast_into(self) -> A

Returns self as To.
source§

impl<T> CloneToUninit for T
where - T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T, C> ComponentsFrom<C> for T
where - C: IntoComponents<T>,

source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where - T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can -then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be -further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot -generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot -generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where - T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be -further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T> FromAngle<T> for T

source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
source§

impl<T, U> FromStimulus<U> for T
where - U: IntoStimulus<T>,

source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, -rounding and clamping.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an -Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an -Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

-

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> IntoAngle<U> for T
where - U: FromAngle<T>,

source§

fn into_angle(self) -> U

Performs a conversion into T.
source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where - T: Cam16FromUnclamped<WpParam, U>,

source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
source§

fn into_cam16_unclamped( - self, - parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, -) -> T

Converts self into C, using the provided parameters.
source§

impl<T, U> IntoColor<U> for T
where - U: FromColor<T>,

source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
source§

impl<T, U> IntoColorUnclamped<U> for T
where - U: FromColorUnclamped<T>,

source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where - F: FnOnce(&Self) -> bool,

Converts 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 more
§

impl<T> IntoReadOnly<T> for T

§

fn into_read_only(self) -> ReadOnly<T>

Returns self as a ReadOnly.
source§

impl<T> IntoStimulus<T> for T

source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, -rounding and clamping.
§

impl<T> IntoValue<Option<T>> for T

§

fn into_value(self) -> Value<Option<T>>

Returns this type as a [Value].
§

impl<T> IntoValue<T> for T

§

fn into_value(self) -> Value<T>

Returns this type as a [Value].
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, C> TryComponentsInto<C> for T
where - C: TryFromComponents<T>,

source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of -colors. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T, U> TryIntoColor<U> for T
where - U: TryFromColor<T>,

source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined -range, otherwise an OutOfBounds error is returned which contains -the unclamped color. Read more
source§

impl<C, U> UintsFrom<C> for U
where - C: IntoUints<U>,

source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
source§

impl<C, U> UintsInto<C> for U
where - C: FromUints<U>,

source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where - S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
§

impl<T> WasmNotSend for T
where - T: Send,

§

impl<T> WasmNotSendSync for T
where - T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where - T: Sync,

\ No newline at end of file diff --git a/main/FunnyBones/struct.EditingSkeleton.html b/main/FunnyBones/struct.EditingSkeleton.html index c702fd9..a280655 100644 --- a/main/FunnyBones/struct.EditingSkeleton.html +++ b/main/FunnyBones/struct.EditingSkeleton.html @@ -1,14 +1,14 @@ -EditingSkeleton in FunnyBones - Rust

Struct FunnyBones::EditingSkeleton

source ·
pub(crate) struct EditingSkeleton {
+EditingSkeleton in FunnyBones - Rust

Struct FunnyBones::EditingSkeleton

source ·
pub(crate) struct EditingSkeleton {
     pub(crate) root: SkeletalBone,
     pub(crate) a_bones: Dynamic<Vec<SkeletalBone>>,
-}

Fields§

§root: SkeletalBone§a_bones: Dynamic<Vec<SkeletalBone>>

Implementations§

source§

impl EditingSkeleton

source

pub(crate) fn find_bone(&self, id: BoneId) -> Option<SkeletalBone>

source

pub(crate) fn find_bone_in( +}

Fields§

§root: SkeletalBone§a_bones: Dynamic<Vec<SkeletalBone>>

Implementations§

source§

impl EditingSkeleton

source

pub(crate) fn find_bone(&self, id: BoneId) -> Option<SkeletalBone>

source

pub(crate) fn find_bone_in( bones: &Dynamic<Vec<SkeletalBone>>, index: usize, -) -> ControlFlow<SkeletalBone, usize>

source

pub(crate) fn find_joint(&self, id: JointId) -> Option<SkeletalBone>

source

pub(crate) fn find_joint_in( +) -> ControlFlow<SkeletalBone, usize>

source

pub(crate) fn find_joint(&self, id: JointId) -> Option<SkeletalBone>

source

pub(crate) fn find_joint_in( bones: &Dynamic<Vec<SkeletalBone>>, index: usize, -) -> ControlFlow<SkeletalBone, usize>

Trait Implementations§

source§

impl Clone for EditingSkeleton

source§

fn clone(&self) -> EditingSkeleton

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EditingSkeleton

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EditingSkeleton

source§

fn default() -> EditingSkeleton

Returns the “default value” for a type. Read more
source§

impl PartialEq for EditingSkeleton

source§

fn eq(&self, other: &EditingSkeleton) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl StructuralPartialEq for EditingSkeleton

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S

Trait Implementations§

source§

impl Clone for EditingSkeleton

source§

fn clone(&self) -> EditingSkeleton

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for EditingSkeleton

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for EditingSkeleton

source§

fn default() -> EditingSkeleton

Returns the “default value” for a type. Read more
source§

impl PartialEq for EditingSkeleton

source§

fn eq(&self, other: &EditingSkeleton) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl StructuralPartialEq for EditingSkeleton

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/FunnyBones/struct.SkeletalBone.html b/main/FunnyBones/struct.SkeletalBone.html index 4d55a19..682592e 100644 --- a/main/FunnyBones/struct.SkeletalBone.html +++ b/main/FunnyBones/struct.SkeletalBone.html @@ -1,4 +1,4 @@ -SkeletalBone in FunnyBones - Rust

Struct FunnyBones::SkeletalBone

source ·
pub(crate) struct SkeletalBone {
+SkeletalBone in FunnyBones - Rust

Struct FunnyBones::SkeletalBone

source ·
pub(crate) struct SkeletalBone {
     pub(crate) label: Dynamic<String>,
     pub(crate) joint_label: Dynamic<String>,
     pub(crate) joint_angle: Dynamic<Angle>,
@@ -8,8 +8,8 @@
     pub(crate) inverse: Dynamic<bool>,
     pub(crate) desired_length: Dynamic<f32>,
     pub(crate) connected_bones: Dynamic<Vec<SkeletalBone>>,
-}

Fields§

§label: Dynamic<String>§joint_label: Dynamic<String>§joint_angle: Dynamic<Angle>§length: Dynamic<f32>§jointed: Dynamic<bool>§joint_ratio: Dynamic<ZeroToOne>§inverse: Dynamic<bool>§desired_length: Dynamic<f32>§connected_bones: Dynamic<Vec<SkeletalBone>>

Implementations§

Trait Implementations§

source§

impl Clone for SkeletalBone

source§

fn clone(&self) -> SkeletalBone

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SkeletalBone

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for SkeletalBone

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for SkeletalBone

source§

fn eq(&self, other: &SkeletalBone) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl StructuralPartialEq for SkeletalBone

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where +}

Fields§

§label: Dynamic<String>§joint_label: Dynamic<String>§joint_angle: Dynamic<Angle>§length: Dynamic<f32>§jointed: Dynamic<bool>§joint_ratio: Dynamic<ZeroToOne>§inverse: Dynamic<bool>§desired_length: Dynamic<f32>§connected_bones: Dynamic<Vec<SkeletalBone>>

Implementations§

Trait Implementations§

source§

impl Clone for SkeletalBone

source§

fn clone(&self) -> SkeletalBone

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SkeletalBone

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for SkeletalBone

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl PartialEq for SkeletalBone

source§

fn eq(&self, other: &SkeletalBone) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl StructuralPartialEq for SkeletalBone

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/funnybones/all.html b/main/funnybones/all.html index 543016b..f9c96f5 100644 --- a/main/funnybones/all.html +++ b/main/funnybones/all.html @@ -1 +1 @@ -List of all items in this crate
\ No newline at end of file +List of all items in this crate
\ No newline at end of file diff --git a/main/funnybones/animation/enum.BoneProperty.html b/main/funnybones/animation/enum.BoneProperty.html index 13966de..05e0163 100644 --- a/main/funnybones/animation/enum.BoneProperty.html +++ b/main/funnybones/animation/enum.BoneProperty.html @@ -1,4 +1,4 @@ -BoneProperty in funnybones::animation - Rust

Enum funnybones::animation::BoneProperty

source ·
pub enum BoneProperty {
+BoneProperty in funnybones::animation - Rust

Enum funnybones::animation::BoneProperty

source ·
pub enum BoneProperty {
     Target,
     Inverse,
 }

Variants§

§

Target

§

Inverse

Implementations§

source§

impl BoneProperty

source

pub fn get(&self, bone: &Bone) -> Value

source

pub fn update(&self, value: Value, bone: &mut Bone)

Trait Implementations§

source§

impl Clone for BoneProperty

source§

fn clone(&self) -> BoneProperty

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BoneProperty

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for BoneProperty

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where diff --git a/main/funnybones/animation/enum.JointProperty.html b/main/funnybones/animation/enum.JointProperty.html index 9c9bbf0..ae56d97 100644 --- a/main/funnybones/animation/enum.JointProperty.html +++ b/main/funnybones/animation/enum.JointProperty.html @@ -1,4 +1,4 @@ -JointProperty in funnybones::animation - Rust

Enum funnybones::animation::JointProperty

source ·
pub enum JointProperty {
+JointProperty in funnybones::animation - Rust

Enum funnybones::animation::JointProperty

source ·
pub enum JointProperty {
     Angle,
 }

Variants§

§

Angle

Implementations§

source§

impl JointProperty

source

pub fn get(&self, joint: &Joint) -> Value

source

pub fn update(&self, value: Value, joint: &mut Joint)

Trait Implementations§

source§

impl Clone for JointProperty

source§

fn clone(&self) -> JointProperty

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for JointProperty

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for JointProperty

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl PartialEq for JointProperty

source§

fn eq(&self, other: &JointProperty) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, diff --git a/main/funnybones/animation/enum.PropertyUpdate.html b/main/funnybones/animation/enum.PropertyUpdate.html index df77b31..b620ffa 100644 --- a/main/funnybones/animation/enum.PropertyUpdate.html +++ b/main/funnybones/animation/enum.PropertyUpdate.html @@ -1,4 +1,4 @@ -PropertyUpdate in funnybones::animation - Rust

Enum funnybones::animation::PropertyUpdate

source ·
pub enum PropertyUpdate {
+PropertyUpdate in funnybones::animation - Rust

Enum funnybones::animation::PropertyUpdate

source ·
pub enum PropertyUpdate {
     ChangeTo(Value),
     Add(Value),
 }

Variants§

§

ChangeTo(Value)

§

Add(Value)

Implementations§

source§

impl PropertyUpdate

source

pub fn target(&self, initial: Value) -> Value

Trait Implementations§

source§

impl Clone for PropertyUpdate

source§

fn clone(&self) -> PropertyUpdate

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for PropertyUpdate

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for PropertyUpdate

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where diff --git a/main/funnybones/animation/enum.Target.html b/main/funnybones/animation/enum.Target.html index 6cfcb98..48af289 100644 --- a/main/funnybones/animation/enum.Target.html +++ b/main/funnybones/animation/enum.Target.html @@ -1,4 +1,4 @@ -Target in funnybones::animation - Rust

Enum funnybones::animation::Target

source ·
pub enum Target {
+Target in funnybones::animation - Rust

Enum funnybones::animation::Target

source ·
pub enum Target {
     Bone {
         bone: BoneId,
         property: BoneProperty,
diff --git a/main/funnybones/animation/enum.Value.html b/main/funnybones/animation/enum.Value.html
index daeb34d..52d47eb 100644
--- a/main/funnybones/animation/enum.Value.html
+++ b/main/funnybones/animation/enum.Value.html
@@ -1,4 +1,4 @@
-Value in funnybones::animation - Rust

Enum funnybones::animation::Value

source ·
pub enum Value {
+Value in funnybones::animation - Rust

Enum funnybones::animation::Value

source ·
pub enum Value {
     Invalid,
     Number(f32),
     Vector(Vector),
diff --git a/main/funnybones/animation/index.html b/main/funnybones/animation/index.html
index eb51010..3c92a12 100644
--- a/main/funnybones/animation/index.html
+++ b/main/funnybones/animation/index.html
@@ -1 +1 @@
-funnybones::animation - Rust
\ No newline at end of file +funnybones::animation - Rust
\ No newline at end of file diff --git a/main/funnybones/animation/struct.Animation.html b/main/funnybones/animation/struct.Animation.html index 073cdd7..96e8f43 100644 --- a/main/funnybones/animation/struct.Animation.html +++ b/main/funnybones/animation/struct.Animation.html @@ -1,4 +1,4 @@ -Animation in funnybones::animation - Rust

Struct funnybones::animation::Animation

source ·
pub struct Animation(/* private fields */);

Implementations§

source§

impl Animation

source

pub fn push(&mut self, timeline: Timeline)

source

pub fn with(self, timeline: Timeline) -> Self

source

pub fn remove(&mut self, timeline_index: usize) -> Timeline

source

pub fn insert(&mut self, index: usize, timeline: Timeline)

source

pub fn with_variable(self, name: impl Into<String>, value: f32) -> Self

source

pub fn set_variable<'a>(&mut self, name: impl Into<Cow<'a, str>>, value: f32)

source

pub fn variable(&self, name: &str) -> Option<f32>

source

pub fn start(&self) -> RunningAnimation

Methods from Deref<Target = [Timeline]>§

source

pub fn as_str(&self) -> &str

🔬This is a nightly-only experimental API. (ascii_char)

Views this slice of ASCII characters as a UTF-8 str.

+Animation in funnybones::animation - Rust

Struct funnybones::animation::Animation

source ·
pub struct Animation(/* private fields */);

Implementations§

source§

impl Animation

source

pub fn push(&mut self, timeline: Timeline)

source

pub fn with(self, timeline: Timeline) -> Self

source

pub fn remove(&mut self, timeline_index: usize) -> Timeline

source

pub fn insert(&mut self, index: usize, timeline: Timeline)

source

pub fn with_variable(self, name: impl Into<String>, value: f32) -> Self

source

pub fn set_variable<'a>(&mut self, name: impl Into<Cow<'a, str>>, value: f32)

source

pub fn variable(&self, name: &str) -> Option<f32>

source

pub fn start(&self) -> RunningAnimation

Methods from Deref<Target = [Timeline]>§

source

pub fn as_str(&self) -> &str

🔬This is a nightly-only experimental API. (ascii_char)

Views this slice of ASCII characters as a UTF-8 str.

source

pub fn as_bytes(&self) -> &[u8]

🔬This is a nightly-only experimental API. (ascii_char)

Views this slice of ASCII characters as a slice of u8 bytes.

1.23.0 · source

pub fn is_ascii(&self) -> bool

Checks if all bytes in this slice are within the ASCII range.

source

pub fn as_ascii(&self) -> Option<&[AsciiChar]>

🔬This is a nightly-only experimental API. (ascii_char)

If this slice is_ascii, returns it as a slice of @@ -1897,7 +1897,7 @@

§Panics
supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like LANES == 3.

-
1.82.0 · source

pub fn is_sorted(&self) -> bool
where +

1.83.0 · source

pub fn is_sorted(&self) -> bool
where T: PartialOrd,

Checks if the elements of this slice are sorted.

That is, for each element a and its following element b, a <= b must hold. If the slice yields exactly zero or one element, true is returned.

@@ -1912,7 +1912,7 @@
§Examplesassert!([0].is_sorted()); assert!(empty.is_sorted()); assert!(![0.0, 1.0, f32::NAN].is_sorted());
-

1.82.0 · source

pub fn is_sorted_by<'a, F>(&'a self, compare: F) -> bool
where +

1.83.0 · source

pub fn is_sorted_by<'a, F>(&'a self, compare: F) -> bool
where F: FnMut(&'a T, &'a T) -> bool,

Checks if the elements of this slice are sorted using the given comparator function.

Instead of using PartialOrd::partial_cmp, this function uses the given compare function to determine whether two elements are to be considered in sorted order.

@@ -1926,7 +1926,7 @@
§Exampleslet empty: [i32; 0] = []; assert!(empty.is_sorted_by(|a, b| false)); assert!(empty.is_sorted_by(|a, b| true));
-
1.82.0 · source

pub fn is_sorted_by_key<'a, F, K>(&'a self, f: F) -> bool
where +

1.83.0 · source

pub fn is_sorted_by_key<'a, F, K>(&'a self, f: F) -> bool
where F: FnMut(&'a T) -> K, K: PartialOrd,

Checks if the elements of this slice are sorted using the given key extraction function.

Instead of comparing the slice’s elements directly, this function compares the keys of the diff --git a/main/funnybones/animation/struct.Frame.html b/main/funnybones/animation/struct.Frame.html index cfd9d6e..07c3b74 100644 --- a/main/funnybones/animation/struct.Frame.html +++ b/main/funnybones/animation/struct.Frame.html @@ -1,4 +1,4 @@ -Frame in funnybones::animation - Rust

Struct funnybones::animation::Frame

source ·
pub struct Frame(/* private fields */);

Implementations§

source§

impl Frame

source

pub const MAX: Self = _

source

pub const MIN: Self = _

source

pub const ZERO: Self = Self::MIN

Trait Implementations§

source§

impl Clone for Frame

source§

fn clone(&self) -> Frame

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Frame

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Frame

source§

fn default() -> Frame

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Frame

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where +Frame in funnybones::animation - Rust

Struct funnybones::animation::Frame

source ·
pub struct Frame(/* private fields */);

Implementations§

source§

impl Frame

source

pub const MAX: Self = _

source

pub const MIN: Self = _

source

pub const ZERO: Self = Self::MIN

Trait Implementations§

source§

impl Clone for Frame

source§

fn clone(&self) -> Frame

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Frame

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Frame

source§

fn default() -> Frame

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Frame

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl From<Frame> for Duration

source§

fn from(value: Frame) -> Self

Converts to this type from the input type.
source§

impl From<Frame> for f32

source§

fn from(value: Frame) -> Self

Converts to this type from the input type.
source§

impl From<Frame> for u32

source§

fn from(value: Frame) -> Self

Converts to this type from the input type.
source§

impl From<u32> for Frame

source§

fn from(value: u32) -> Self

Converts to this type from the input type.
source§

impl Ord for Frame

source§

fn cmp(&self, other: &Frame) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where diff --git a/main/funnybones/animation/struct.Keyframe.html b/main/funnybones/animation/struct.Keyframe.html index a8c3677..9a8995a 100644 --- a/main/funnybones/animation/struct.Keyframe.html +++ b/main/funnybones/animation/struct.Keyframe.html @@ -1,4 +1,4 @@ -Keyframe in funnybones::animation - Rust

Struct funnybones::animation::Keyframe

source ·
pub struct Keyframe {
+Keyframe in funnybones::animation - Rust

Struct funnybones::animation::Keyframe

source ·
pub struct Keyframe {
     pub update: PropertyUpdate,
     pub easing: StandardEasing,
     /* private fields */
diff --git a/main/funnybones/animation/struct.RunningAnimation.html b/main/funnybones/animation/struct.RunningAnimation.html
index 8eef120..bc821f5 100644
--- a/main/funnybones/animation/struct.RunningAnimation.html
+++ b/main/funnybones/animation/struct.RunningAnimation.html
@@ -1,4 +1,4 @@
-RunningAnimation in funnybones::animation - Rust

Struct funnybones::animation::RunningAnimation

source ·
pub struct RunningAnimation { /* private fields */ }

Implementations§

source§

impl RunningAnimation

source

pub fn looping(self) -> Self

source

pub fn update(&mut self, elapsed: Duration, skeleton: &mut Skeleton) -> bool

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where +RunningAnimation in funnybones::animation - Rust

Struct funnybones::animation::RunningAnimation

source ·
pub struct RunningAnimation { /* private fields */ }

Implementations§

source§

impl RunningAnimation

source

pub fn looping(self) -> Self

source

pub fn update(&mut self, elapsed: Duration, skeleton: &mut Skeleton) -> bool

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/funnybones/animation/struct.Timeline.html b/main/funnybones/animation/struct.Timeline.html index 847d582..a840106 100644 --- a/main/funnybones/animation/struct.Timeline.html +++ b/main/funnybones/animation/struct.Timeline.html @@ -1,4 +1,4 @@ -Timeline in funnybones::animation - Rust

Struct funnybones::animation::Timeline

source ·
pub struct Timeline { /* private fields */ }

Implementations§

source§

impl Timeline

source

pub fn new(target: Target) -> Self

source

pub fn with_frame(self, frame: Keyframe) -> Self

source

pub fn insert_frame(&mut self, frame: Keyframe)

source

pub fn set_frame_offset(&mut self, index: usize, new_offset: Frame)

Methods from Deref<Target = [Keyframe]>§

source

pub fn as_str(&self) -> &str

🔬This is a nightly-only experimental API. (ascii_char)

Views this slice of ASCII characters as a UTF-8 str.

+Timeline in funnybones::animation - Rust

Struct funnybones::animation::Timeline

source ·
pub struct Timeline { /* private fields */ }

Implementations§

source§

impl Timeline

source

pub fn new(target: Target) -> Self

source

pub fn with_frame(self, frame: Keyframe) -> Self

source

pub fn insert_frame(&mut self, frame: Keyframe)

source

pub fn set_frame_offset(&mut self, index: usize, new_offset: Frame)

Methods from Deref<Target = [Keyframe]>§

source

pub fn as_str(&self) -> &str

🔬This is a nightly-only experimental API. (ascii_char)

Views this slice of ASCII characters as a UTF-8 str.

source

pub fn as_bytes(&self) -> &[u8]

🔬This is a nightly-only experimental API. (ascii_char)

Views this slice of ASCII characters as a slice of u8 bytes.

1.23.0 · source

pub fn is_ascii(&self) -> bool

Checks if all bytes in this slice are within the ASCII range.

source

pub fn as_ascii(&self) -> Option<&[AsciiChar]>

🔬This is a nightly-only experimental API. (ascii_char)

If this slice is_ascii, returns it as a slice of @@ -1897,7 +1897,7 @@

§Panics
supported. It’s possible that, in the future, those restrictions might be lifted in a way that would make it possible to see panics from this method for something like LANES == 3.

-
1.82.0 · source

pub fn is_sorted(&self) -> bool
where +

1.83.0 · source

pub fn is_sorted(&self) -> bool
where T: PartialOrd,

Checks if the elements of this slice are sorted.

That is, for each element a and its following element b, a <= b must hold. If the slice yields exactly zero or one element, true is returned.

@@ -1912,7 +1912,7 @@
§Examplesassert!([0].is_sorted()); assert!(empty.is_sorted()); assert!(![0.0, 1.0, f32::NAN].is_sorted());

-

1.82.0 · source

pub fn is_sorted_by<'a, F>(&'a self, compare: F) -> bool
where +

1.83.0 · source

pub fn is_sorted_by<'a, F>(&'a self, compare: F) -> bool
where F: FnMut(&'a T, &'a T) -> bool,

Checks if the elements of this slice are sorted using the given comparator function.

Instead of using PartialOrd::partial_cmp, this function uses the given compare function to determine whether two elements are to be considered in sorted order.

@@ -1926,7 +1926,7 @@
§Exampleslet empty: [i32; 0] = []; assert!(empty.is_sorted_by(|a, b| false)); assert!(empty.is_sorted_by(|a, b| true));

-

1.82.0 · source

pub fn is_sorted_by_key<'a, F, K>(&'a self, f: F) -> bool
where +

1.83.0 · source

pub fn is_sorted_by_key<'a, F, K>(&'a self, f: F) -> bool
where F: FnMut(&'a T) -> K, K: PartialOrd,

Checks if the elements of this slice are sorted using the given key extraction function.

Instead of comparing the slice’s elements directly, this function compares the keys of the diff --git a/main/funnybones/cushy/index.html b/main/funnybones/cushy/index.html index 46d12dc..dffa797 100644 --- a/main/funnybones/cushy/index.html +++ b/main/funnybones/cushy/index.html @@ -1,2 +1,2 @@ -funnybones::cushy - Rust

Module funnybones::cushy

source ·
Expand description

Widgets for editing and rendering skeletons.

+funnybones::cushy - Rust

Module funnybones::cushy

source ·
Expand description

Widgets for editing and rendering skeletons.

Modules§

\ No newline at end of file diff --git a/main/funnybones/cushy/skeleton_canvas/enum.SkeletonMutation.html b/main/funnybones/cushy/skeleton_canvas/enum.SkeletonMutation.html index 4646618..a87bd36 100644 --- a/main/funnybones/cushy/skeleton_canvas/enum.SkeletonMutation.html +++ b/main/funnybones/cushy/skeleton_canvas/enum.SkeletonMutation.html @@ -1,13 +1,13 @@ -SkeletonMutation in funnybones::cushy::skeleton_canvas - Rust
pub enum SkeletonMutation {
+SkeletonMutation in funnybones::cushy::skeleton_canvas - Rust
pub enum SkeletonMutation {
     SetDesiredEnd {
         bone: BoneId,
         end: Vector,
     },
     SetJointRotation {
         joint: JointId,
-        rotation: Angle,
+        rotation: Rotation,
     },
-}

Variants§

§

SetDesiredEnd

Fields

§bone: BoneId
§

SetJointRotation

Fields

§joint: JointId
§rotation: Angle

Trait Implementations§

source§

impl Clone for SkeletonMutation

source§

fn clone(&self) -> SkeletonMutation

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SkeletonMutation

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for SkeletonMutation

source§

fn eq(&self, other: &SkeletonMutation) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +}

Variants§

§

SetDesiredEnd

Fields

§bone: BoneId
§

SetJointRotation

Fields

§joint: JointId
§rotation: Rotation

Trait Implementations§

source§

impl Clone for SkeletonMutation

source§

fn clone(&self) -> SkeletonMutation

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for SkeletonMutation

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for SkeletonMutation

source§

fn eq(&self, other: &SkeletonMutation) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for SkeletonMutation

source§

impl StructuralPartialEq for SkeletonMutation

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, diff --git a/main/funnybones/cushy/skeleton_canvas/enum.Target.html b/main/funnybones/cushy/skeleton_canvas/enum.Target.html index ff4611c..3d10dc8 100644 --- a/main/funnybones/cushy/skeleton_canvas/enum.Target.html +++ b/main/funnybones/cushy/skeleton_canvas/enum.Target.html @@ -1,4 +1,4 @@ -Target in funnybones::cushy::skeleton_canvas - Rust

Enum funnybones::cushy::skeleton_canvas::Target

source ·
pub enum Target {
+Target in funnybones::cushy::skeleton_canvas - Rust

Enum funnybones::cushy::skeleton_canvas::Target

source ·
pub enum Target {
     Joint(JointId),
     DesiredEnd(BoneId),
 }

Variants§

§

Joint(JointId)

§

DesiredEnd(BoneId)

Trait Implementations§

source§

impl Clone for Target

source§

fn clone(&self) -> Target

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Target

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for Target

source§

fn eq(&self, other: &Target) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, diff --git a/main/funnybones/cushy/skeleton_canvas/index.html b/main/funnybones/cushy/skeleton_canvas/index.html index e28b179..ac9cdf4 100644 --- a/main/funnybones/cushy/skeleton_canvas/index.html +++ b/main/funnybones/cushy/skeleton_canvas/index.html @@ -1 +1 @@ -funnybones::cushy::skeleton_canvas - Rust
\ No newline at end of file +funnybones::cushy::skeleton_canvas - Rust
\ No newline at end of file diff --git a/main/funnybones/cushy/skeleton_canvas/struct.SkeletonCanvas.html b/main/funnybones/cushy/skeleton_canvas/struct.SkeletonCanvas.html index 474f429..45d5fa5 100644 --- a/main/funnybones/cushy/skeleton_canvas/struct.SkeletonCanvas.html +++ b/main/funnybones/cushy/skeleton_canvas/struct.SkeletonCanvas.html @@ -1,4 +1,4 @@ -SkeletonCanvas in funnybones::cushy::skeleton_canvas - Rust

Struct funnybones::cushy::skeleton_canvas::SkeletonCanvas

source ·
pub struct SkeletonCanvas { /* private fields */ }

Implementations§

source§

impl SkeletonCanvas

source

pub fn new(skeleton: Dynamic<Skeleton>) -> Self

source

pub fn maximum_scale(&self) -> &Dynamic<f32>

source

pub fn minimum_scale(&self) -> &Dynamic<f32>

source

pub fn scale(&self) -> &Dynamic<f32>

source

pub fn on_mutate<F>(self, on_mutate: F) -> Self
where +SkeletonCanvas in funnybones::cushy::skeleton_canvas - Rust

Struct funnybones::cushy::skeleton_canvas::SkeletonCanvas

source ·
pub struct SkeletonCanvas { /* private fields */ }

Implementations§

source§

impl SkeletonCanvas

source

pub fn new(skeleton: Dynamic<Skeleton>) -> Self

source

pub fn maximum_scale(&self) -> &Dynamic<f32>

source

pub fn minimum_scale(&self) -> &Dynamic<f32>

source

pub fn scale(&self) -> &Dynamic<f32>

source

pub fn on_mutate<F>(self, on_mutate: F) -> Self
where F: FnMut(SkeletonMutation) + Send + 'static,

Trait Implementations§

source§

impl Debug for SkeletonCanvas

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Widget for SkeletonCanvas

source§

fn redraw(&mut self, context: &mut GraphicsContext<'_, '_, '_, '_>)

Redraw the contents of this widget.
source§

fn layout( &mut self, available_space: Size<ConstraintLimit>, diff --git a/main/funnybones/enum.BoneEnd.html b/main/funnybones/enum.BoneEnd.html index b4da717..c6d71ed 100644 --- a/main/funnybones/enum.BoneEnd.html +++ b/main/funnybones/enum.BoneEnd.html @@ -1,16 +1,16 @@ -BoneEnd in funnybones - Rust

Enum funnybones::BoneEnd

source ·
pub enum BoneEnd {
+BoneEnd in funnybones - Rust

Enum funnybones::BoneEnd

source ·
pub enum BoneEnd {
     A,
     B,
 }
Expand description

A specific end of a Bone.

Variants§

§

A

The first end of a bone.

§

B

The second end of a bone.

-

Implementations§

source§

impl BoneEnd

source

pub const fn inverse(self) -> Self

Returns the opposite end of self.

-

Trait Implementations§

source§

impl Clone for BoneEnd

source§

fn clone(&self) -> BoneEnd

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BoneEnd

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for BoneEnd

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for BoneEnd

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Implementations§

source§

impl BoneEnd

source

pub const fn inverse(self) -> Self

Returns the opposite end of self.

+

Trait Implementations§

source§

impl Clone for BoneEnd

source§

fn clone(&self) -> BoneEnd

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BoneEnd

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for BoneEnd

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for BoneEnd

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for BoneEnd

source§

fn eq(&self, other: &BoneEnd) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Serialize for BoneEnd

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for BoneEnd

source§

impl Eq for BoneEnd

source§

impl StructuralPartialEq for BoneEnd

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for BoneEnd

source§

fn eq(&self, other: &BoneEnd) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Serialize for BoneEnd

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for BoneEnd

source§

impl Eq for BoneEnd

source§

impl StructuralPartialEq for BoneEnd

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/funnybones/enum.BoneKind.html b/main/funnybones/enum.BoneKind.html index 3005adb..937ff66 100644 --- a/main/funnybones/enum.BoneKind.html +++ b/main/funnybones/enum.BoneKind.html @@ -1,4 +1,4 @@ -BoneKind in funnybones - Rust

Enum funnybones::BoneKind

source ·
pub enum BoneKind {
+BoneKind in funnybones - Rust

Enum funnybones::BoneKind

source ·
pub enum BoneKind {
     Rigid {
         length: f32,
     },
@@ -18,15 +18,15 @@
 skeleton.

§inverse: bool

The bend of the simulated joint always goes in one of two directions. This boolean toggles which direction the bend goes in.

-

Implementations§

source§

impl BoneKind

source

pub fn with_label(self, label: impl Into<String>) -> LabeledBoneKind

Attaches a label to this bone when pushed into a skeleton.

-
source

pub fn full_length(&self) -> f32

Returns the full length of this bone.

-
source

pub fn is_inverse(&self) -> bool

Returns true if this is a jointed bone that bends inversely.

-
source

pub fn set_inverse(&mut self, new_inverse: bool)

Sets whether to bend inversely.

+

Implementations§

source§

impl BoneKind

source

pub fn with_label(self, label: impl Into<String>) -> LabeledBoneKind

Attaches a label to this bone when pushed into a skeleton.

+
source

pub fn full_length(&self) -> f32

Returns the full length of this bone.

+
source

pub fn is_inverse(&self) -> bool

Returns true if this is a jointed bone that bends inversely.

+
source

pub fn set_inverse(&mut self, new_inverse: bool)

Sets whether to bend inversely.

This function only affects a jointed bone kind.

-

Trait Implementations§

source§

impl Clone for BoneKind

source§

fn clone(&self) -> BoneKind

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BoneKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for BoneKind

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl From<BoneKind> for LabeledBoneKind

source§

fn from(kind: BoneKind) -> Self

Converts to this type from the input type.
source§

impl PartialEq for BoneKind

source§

fn eq(&self, other: &BoneKind) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Serialize for BoneKind

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for BoneKind

source§

impl StructuralPartialEq for BoneKind

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where +

Trait Implementations§

source§

impl Clone for BoneKind

source§

fn clone(&self) -> BoneKind

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BoneKind

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for BoneKind

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl From<BoneKind> for LabeledBoneKind

source§

fn from(kind: BoneKind) -> Self

Converts to this type from the input type.
source§

impl PartialEq for BoneKind

source§

fn eq(&self, other: &BoneKind) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Serialize for BoneKind

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for BoneKind

source§

impl StructuralPartialEq for BoneKind

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/funnybones/index.html b/main/funnybones/index.html index 862a366..aebca7f 100644 --- a/main/funnybones/index.html +++ b/main/funnybones/index.html @@ -1,4 +1,4 @@ -funnybones - Rust

Crate funnybones

source ·
Expand description
+funnybones - Rust

Crate funnybones

source ·
Expand description

FunnyBones is considered experimental and unsupported crate version @@ -94,4 +94,4 @@

MIT License or the Apache License 2.0.

To learn more about contributing, please see CONTRIBUTING.md.

-

Modules§

Structs§

Enums§

\ No newline at end of file +

Modules§

Structs§

Enums§

\ No newline at end of file diff --git a/main/funnybones/sidebar-items.js b/main/funnybones/sidebar-items.js index cc49ffd..1083812 100644 --- a/main/funnybones/sidebar-items.js +++ b/main/funnybones/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["BoneEnd","BoneKind"],"mod":["animation","cushy"],"struct":["Angle","Bone","BoneAxis","BoneId","Coordinate","Joint","JointId","LabeledBoneKind","Skeleton","Vector"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["BoneEnd","BoneKind"],"mod":["animation","cushy"],"struct":["Angle","Bone","BoneAxis","BoneId","Coordinate","Joint","JointId","LabeledBoneKind","Rotation","Skeleton","Vector"]}; \ No newline at end of file diff --git a/main/funnybones/struct.Angle.html b/main/funnybones/struct.Angle.html index dfdc773..2158c24 100644 --- a/main/funnybones/struct.Angle.html +++ b/main/funnybones/struct.Angle.html @@ -1,23 +1,13 @@ -Angle in funnybones - Rust

Struct funnybones::Angle

source ·
pub struct Angle { /* private fields */ }
Expand description

A value representing a direction.

-

Implementations§

source§

impl Angle

source

pub const MIN: Self = _

The minimum rotation represented by this type.

-
source

pub const MAX: Self = _

The maximum rotation represented by this type.

-
source

pub fn radians(radians: f32) -> Self

Returns a rotation representing the given radians.

-
source

pub fn degrees(degrees: f32) -> Self

Returns a rotation representing the given degrees.

-
source

pub fn to_degrees(self) -> f32

Returns this rotation represented in degrees.

-

This value will always be greater than or equal to 0 and will always be -less than 360.0.

-
source

pub const fn to_radians(self) -> f32

Returns this rotation represented in radians.

-

This value will always be greater than or equal to 0 and will always be -less than .

-
source

pub fn cos(self) -> f32

Returns the cosine of this angle.

-
source

pub fn sin(self) -> f32

Returns the sine of this angle.

-

Trait Implementations§

source§

impl Add<Angle> for Vector

source§

type Output = Vector

The resulting type after applying the + operator.
source§

fn add(self, rhs: Angle) -> Self::Output

Performs the + operation. Read more
source§

impl Add for Angle

source§

type Output = Angle

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
source§

impl AddAssign for Angle

source§

fn add_assign(&mut self, rhs: Self)

Performs the += operation. Read more
source§

impl Clone for Angle

source§

fn clone(&self) -> Angle

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Angle

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Angle

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Angle

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Angle

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl LinearInterpolate for Angle

source§

fn lerp(&self, target: &Self, percent: f32) -> Self

Interpolate linearly between self and target using percent.
source§

impl Neg for Angle

source§

type Output = Angle

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl PartialEq for Angle

source§

fn eq(&self, other: &Angle) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +Angle in funnybones - Rust

Struct funnybones::Angle

source ·
pub struct Angle(/* private fields */);
Expand description

A value representing a rotation between 0. and .

+

Implementations§

source§

impl Angle

source

pub const MIN: Self = _

The minimum rotation represented by this type.

+
source

pub const MAX: Self = _

The maximum rotation represented by this type.

+
source

pub fn radians(radians: f32) -> Self

Returns an angle representing the given radians.

+
source

pub fn degrees(degrees: f32) -> Self

Returns an angle representing the given degrees.

+

Trait Implementations§

source§

impl Clone for Angle

source§

fn clone(&self) -> Angle

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Angle

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Angle

source§

fn default() -> Angle

Returns the “default value” for a type. Read more
source§

impl From<Angle> for Rotation

source§

fn from(value: Angle) -> Self

Converts to this type from the input type.
source§

impl From<Rotation> for Angle

source§

fn from(value: Rotation) -> Self

Converts to this type from the input type.
source§

impl LinearInterpolate for Angle

source§

fn lerp(&self, target: &Self, percent: f32) -> Self

Interpolate linearly between self and target using percent.
source§

impl PartialEq for Angle

source§

fn eq(&self, other: &Angle) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl PartialOrd for Angle

source§

fn partial_cmp(&self, other: &Angle) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
source§

impl PercentBetween for Angle

source§

fn percent_between(&self, min: &Self, max: &Self) -> ZeroToOne

Return the percentage that self is between min and max.
source§

impl Ranged for Angle

source§

const MIN: Self = Self::MIN

The minimum value for this type.
source§

const MAX: Self = Self::MAX

The maximum value for this type.
source§

impl Serialize for Angle

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub<Angle> for Vector

source§

type Output = Vector

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Angle) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for Angle

source§

type Output = Angle

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign for Angle

source§

fn sub_assign(&mut self, rhs: Self)

Performs the -= operation. Read more
source§

impl Copy for Angle

source§

impl StructuralPartialEq for Angle

Auto Trait Implementations§

§

impl Freeze for Angle

§

impl RefUnwindSafe for Angle

§

impl Send for Angle

§

impl Sync for Angle

§

impl Unpin for Angle

§

impl UnwindSafe for Angle

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where +the >= operator. Read more

source§

impl PercentBetween for Angle

source§

fn percent_between(&self, min: &Self, max: &Self) -> ZeroToOne

Return the percentage that self is between min and max.
source§

impl Ranged for Angle

source§

const MIN: Self = Self::MIN

The minimum value for this type.
source§

const MAX: Self = Self::MAX

The maximum value for this type.
source§

impl Copy for Angle

source§

impl StructuralPartialEq for Angle

Auto Trait Implementations§

§

impl Freeze for Angle

§

impl RefUnwindSafe for Angle

§

impl Send for Angle

§

impl Sync for Angle

§

impl Unpin for Angle

§

impl UnwindSafe for Angle

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, @@ -44,16 +34,7 @@ generate &Any’s vtable from &Trait’s.

§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be -further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<T> DynamicDisplay for T
where - T: Display,

§

fn fmt( - &self, - _context: &WidgetContext<'_>, - f: &mut Formatter<'_>, -) -> Result<(), Error>

Format self with any needed information from context.
§

fn as_display<'display, 'ctx>( - &'display self, - context: &'display WidgetContext<'ctx>, -) -> DynamicDisplayer<'display, 'ctx>
where - Self: Sized,

Returns a type that implements Display.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T> FromAngle<T> for T

source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an @@ -95,9 +76,7 @@ min_or_value: <T as SliderValue>::Value, _max: Option<<T as SliderValue>::Value>, ) -> T

Constructs a value from its start and end components.
source§

impl<T> ToOwned for T
where - T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> ToSmolStr for T
where - T: Display + ?Sized,

§

fn to_smolstr(&self) -> SmolStr

source§

impl<T> ToString for T
where - T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, C> TryComponentsInto<C> for T
where + T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where @@ -109,8 +88,7 @@ C: FromUints<U>,

source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a [WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a -[WithDispatch] wrapper. Read more
source§

impl<T> DeserializeOwned for T
where - T: for<'de> Deserialize<'de>,

§

impl<T> WasmNotSend for T
where +[WithDispatch] wrapper. Read more

§

impl<T> WasmNotSend for T
where T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where T: Sync,

\ No newline at end of file diff --git a/main/funnybones/struct.Bone.html b/main/funnybones/struct.Bone.html index 8c927a6..f85ae89 100644 --- a/main/funnybones/struct.Bone.html +++ b/main/funnybones/struct.Bone.html @@ -1,23 +1,23 @@ -Bone in funnybones - Rust

Struct funnybones::Bone

source ·
pub struct Bone { /* private fields */ }
Expand description

A bone in a Skeleton.

-

Implementations§

source§

impl Bone

source

pub const fn id(&self) -> BoneId

Returns the unique id of this bone.

-
source

pub const fn is_root(&self) -> bool

Returns true if this bone is the root of the skeleton.

-
source

pub const fn kind(&self) -> &BoneKind

Returns the kind of this bone.

-
source

pub fn kind_mut(&mut self) -> &mut BoneKind

Returns an exclusive reference to the kind of this bone.

-
source

pub fn set_desired_end(&mut self, end: Option<Vector>)

Sets a relative position to aim the end of this bone towards.

+Bone in funnybones - Rust

Struct funnybones::Bone

source ·
pub struct Bone { /* private fields */ }
Expand description

A bone in a Skeleton.

+

Implementations§

source§

impl Bone

source

pub const fn id(&self) -> BoneId

Returns the unique id of this bone.

+
source

pub const fn is_root(&self) -> bool

Returns true if this bone is the root of the skeleton.

+
source

pub const fn kind(&self) -> &BoneKind

Returns the kind of this bone.

+
source

pub fn kind_mut(&mut self) -> &mut BoneKind

Returns an exclusive reference to the kind of this bone.

+
source

pub fn set_desired_end(&mut self, end: Option<Vector>)

Sets a relative position to aim the end of this bone towards.

The end of the bone that is aimed is the end that is furthest from the root of the skeleton.

This setting only impacts BoneKind::Jointed bones.

-
source

pub const fn desired_end(&self) -> Option<Vector>

Returns the location this bone is being aimed towards.

-
source

pub const fn entry_angle(&self) -> Angle

Returns the angle of the previous bone segment connecting to this bone.

-
source

pub const fn start(&self) -> Coordinate

Returns the solved start position of this bone.

-
source

pub const fn end(&self) -> Coordinate

Returns the solved end position of this bone.

-
source

pub fn final_vector(&self) -> Vector

Returns a vector representing the final segment in this bone.

-
source

pub const fn solved_joint(&self) -> Option<Coordinate>

If this is a BoneKind::Jointed bone, returns the solved position of +

source

pub const fn desired_end(&self) -> Option<Vector>

Returns the location this bone is being aimed towards.

+
source

pub const fn entry_angle(&self) -> Rotation

Returns the angle of the previous bone segment connecting to this bone.

+
source

pub const fn start(&self) -> Coordinate

Returns the solved start position of this bone.

+
source

pub const fn end(&self) -> Coordinate

Returns the solved end position of this bone.

+
source

pub fn final_vector(&self) -> Vector

Returns a vector representing the final segment in this bone.

+
source

pub const fn solved_joint(&self) -> Option<Coordinate>

If this is a BoneKind::Jointed bone, returns the solved position of the joint.

-
source

pub fn label(&self) -> &str

Returns the label this bone was created with.

-

Trait Implementations§

source§

impl Debug for Bone

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for Bone

source§

fn eq(&self, other: &Bone) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +
source

pub fn label(&self) -> &str

Returns the label this bone was created with.

+

Trait Implementations§

source§

impl Debug for Bone

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for Bone

source§

fn eq(&self, other: &Bone) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for Bone

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where - S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StructuralPartialEq for Bone

Auto Trait Implementations§

§

impl Freeze for Bone

§

impl RefUnwindSafe for Bone

§

impl Send for Bone

§

impl Sync for Bone

§

impl Unpin for Bone

§

impl UnwindSafe for Bone

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where + S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StructuralPartialEq for Bone

Auto Trait Implementations§

§

impl Freeze for Bone

§

impl RefUnwindSafe for Bone

§

impl Send for Bone

§

impl Sync for Bone

§

impl Unpin for Bone

§

impl UnwindSafe for Bone

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/funnybones/struct.BoneAxis.html b/main/funnybones/struct.BoneAxis.html index 2061be8..672a03d 100644 --- a/main/funnybones/struct.BoneAxis.html +++ b/main/funnybones/struct.BoneAxis.html @@ -1,16 +1,16 @@ -BoneAxis in funnybones - Rust

Struct funnybones::BoneAxis

source ·
pub struct BoneAxis {
+BoneAxis in funnybones - Rust

Struct funnybones::BoneAxis

source ·
pub struct BoneAxis {
     pub bone: BoneId,
     pub end: BoneEnd,
 }
Expand description

A specific end of a specific bone.

Fields§

§bone: BoneId

The unique id of the bone of this axis.

§end: BoneEnd

The end of the bone being referenced.

-

Implementations§

source§

impl BoneAxis

source

pub const fn inverse(self) -> Self

Returns the opposite axis on the same bone.

-

Trait Implementations§

source§

impl Clone for BoneAxis

source§

fn clone(&self) -> BoneAxis

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BoneAxis

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for BoneAxis

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for BoneAxis

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +

Implementations§

source§

impl BoneAxis

source

pub const fn inverse(self) -> Self

Returns the opposite axis on the same bone.

+

Trait Implementations§

source§

impl Clone for BoneAxis

source§

fn clone(&self) -> BoneAxis

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BoneAxis

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for BoneAxis

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for BoneAxis

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for BoneAxis

source§

fn eq(&self, other: &BoneAxis) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Serialize for BoneAxis

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for BoneAxis

source§

impl Eq for BoneAxis

source§

impl StructuralPartialEq for BoneAxis

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl PartialEq for BoneAxis

source§

fn eq(&self, other: &BoneAxis) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Serialize for BoneAxis

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for BoneAxis

source§

impl Eq for BoneAxis

source§

impl StructuralPartialEq for BoneAxis

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/funnybones/struct.BoneId.html b/main/funnybones/struct.BoneId.html index 93b50d5..6dd7dbb 100644 --- a/main/funnybones/struct.BoneId.html +++ b/main/funnybones/struct.BoneId.html @@ -1,19 +1,19 @@ -BoneId in funnybones - Rust

Struct funnybones::BoneId

source ·
pub struct BoneId(/* private fields */);
Expand description

The unique ID of a Bone in a Skeleton.

-

Implementations§

source§

impl BoneId

source

pub const fn axis_a(self) -> BoneAxis

Returns the first axis of this bone.

-
source

pub const fn axis_b(self) -> BoneAxis

Returns the second axis of this bone.

-
source

pub fn index(self) -> usize

Returns the index of this bone within the skeleton.

-

Trait Implementations§

source§

impl Clone for BoneId

source§

fn clone(&self) -> BoneId

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BoneId

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for BoneId

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for BoneId

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +BoneId in funnybones - Rust

Struct funnybones::BoneId

source ·
pub struct BoneId(/* private fields */);
Expand description

The unique ID of a Bone in a Skeleton.

+

Implementations§

source§

impl BoneId

source

pub const fn axis_a(self) -> BoneAxis

Returns the first axis of this bone.

+
source

pub const fn axis_b(self) -> BoneAxis

Returns the second axis of this bone.

+
source

pub fn index(self) -> usize

Returns the index of this bone within the skeleton.

+

Trait Implementations§

source§

impl Clone for BoneId

source§

fn clone(&self) -> BoneId

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for BoneId

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for BoneId

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for BoneId

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Index<BoneId> for Skeleton

source§

type Output = Bone

The returned type after indexing.
source§

fn index(&self, index: BoneId) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl IndexMut<BoneId> for Skeleton

source§

fn index_mut(&mut self, index: BoneId) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
source§

impl Ord for BoneId

source§

fn cmp(&self, other: &BoneId) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Index<BoneId> for Skeleton

source§

type Output = Bone

The returned type after indexing.
source§

fn index(&self, index: BoneId) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl IndexMut<BoneId> for Skeleton

source§

fn index_mut(&mut self, index: BoneId) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
source§

impl Ord for BoneId

source§

fn cmp(&self, other: &BoneId) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where - Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for BoneId

source§

fn eq(&self, other: &BoneId) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl PartialOrd for BoneId

source§

fn partial_cmp(&self, other: &BoneId) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for BoneId

source§

fn eq(&self, other: &BoneId) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialOrd for BoneId

source§

fn partial_cmp(&self, other: &BoneId) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
source§

impl Serialize for BoneId

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for BoneId

source§

impl Eq for BoneId

source§

impl StructuralPartialEq for BoneId

Auto Trait Implementations§

§

impl Freeze for BoneId

§

impl RefUnwindSafe for BoneId

§

impl Send for BoneId

§

impl Sync for BoneId

§

impl Unpin for BoneId

§

impl UnwindSafe for BoneId

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where +the >= operator. Read more

source§

impl Serialize for BoneId

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for BoneId

source§

impl Eq for BoneId

source§

impl StructuralPartialEq for BoneId

Auto Trait Implementations§

§

impl Freeze for BoneId

§

impl RefUnwindSafe for BoneId

§

impl Send for BoneId

§

impl Sync for BoneId

§

impl Unpin for BoneId

§

impl UnwindSafe for BoneId

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/funnybones/struct.Coordinate.html b/main/funnybones/struct.Coordinate.html index 077c79d..82cf695 100644 --- a/main/funnybones/struct.Coordinate.html +++ b/main/funnybones/struct.Coordinate.html @@ -1,4 +1,4 @@ -Coordinate in funnybones - Rust

Struct funnybones::Coordinate

source ·
pub struct Coordinate {
+Coordinate in funnybones - Rust

Struct funnybones::Coordinate

source ·
pub struct Coordinate {
     pub x: f32,
     pub y: f32,
 }
Expand description

A two dimensionsional offset/measurement.

@@ -7,16 +7,16 @@

Implementations§

source§

impl Coordinate

source

pub const fn new(x: f32, y: f32) -> Self

Returns a new vector from the x and y values.

source

pub fn magnitude(&self) -> f32

Returns the magnitude of this vector.

source

pub fn map(self, f: impl FnMut(f32) -> f32) -> Self

Returns the result of mapping x and y to f.

-
source

pub fn as_rotation(self) -> Angle

Returns the angle formed a line passing through 0,0 towards this vector.

+
source

pub fn as_rotation(self) -> Rotation

Returns the angle formed a line passing through 0,0 towards this vector.

source

pub fn vector_to(self, other: Coordinate) -> Vector

Returns a vector pointing from self to other.

-

Trait Implementations§

source§

impl Add<Vector> for Coordinate

source§

type Output = Coordinate

The resulting type after applying the + operator.
source§

fn add(self, rhs: Vector) -> Self::Output

Performs the + operation. Read more
source§

impl Add for Coordinate

source§

type Output = Coordinate

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
source§

impl Clone for Coordinate

source§

fn clone(&self) -> Coordinate

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Coordinate

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Coordinate

source§

fn default() -> Coordinate

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Coordinate

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Div<f32> for Coordinate

source§

type Output = Coordinate

The resulting type after applying the / operator.
source§

fn div(self, rhs: f32) -> Self::Output

Performs the / operation. Read more
source§

impl From<Coordinate> for Vector

source§

fn from(pt: Coordinate) -> Self

Converts to this type from the input type.
source§

impl From<Vector> for Coordinate

source§

fn from(vec: Vector) -> Self

Converts to this type from the input type.
source§

impl FromComponents<f32> for Coordinate

source§

fn from_components(components: (f32, f32)) -> Self

Returns a new instance from the 2d vector components provided.
§

fn from_vec<Type>(other: Type) -> Self
where +

Trait Implementations§

source§

impl Add<Vector> for Coordinate

source§

type Output = Coordinate

The resulting type after applying the + operator.
source§

fn add(self, rhs: Vector) -> Self::Output

Performs the + operation. Read more
source§

impl Add for Coordinate

source§

type Output = Coordinate

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
source§

impl Clone for Coordinate

source§

fn clone(&self) -> Coordinate

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Coordinate

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Coordinate

source§

fn default() -> Coordinate

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Coordinate

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Div<f32> for Coordinate

source§

type Output = Coordinate

The resulting type after applying the / operator.
source§

fn div(self, rhs: f32) -> Self::Output

Performs the / operation. Read more
source§

impl From<Coordinate> for Vector

source§

fn from(pt: Coordinate) -> Self

Converts to this type from the input type.
source§

impl From<Vector> for Coordinate

source§

fn from(vec: Vector) -> Self

Converts to this type from the input type.
source§

impl FromComponents<f32> for Coordinate

source§

fn from_components(components: (f32, f32)) -> Self

Returns a new instance from the 2d vector components provided.
§

fn from_vec<Type>(other: Type) -> Self
where Type: IntoComponents<Unit>,

Converts this type to another type using [FromComponents] and [IntoComponents].
source§

impl IntoComponents<f32> for Coordinate

source§

fn into_components(self) -> (f32, f32)

Extracts this type’s 2d vector components.
§

fn to_vec<Type>(self) -> Type
where Type: FromComponents<Unit>,

Converts this type to another type using [FromComponents] and [IntoComponents].
source§

impl Mul<f32> for Coordinate

source§

type Output = Coordinate

The resulting type after applying the * operator.
source§

fn mul(self, rhs: f32) -> Self::Output

Performs the * operation. Read more
source§

impl PartialEq for Coordinate

source§

fn eq(&self, other: &Coordinate) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for Coordinate

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub<Vector> for Coordinate

source§

type Output = Coordinate

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Vector) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for Coordinate

source§

type Output = Coordinate

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl Copy for Coordinate

source§

impl StructuralPartialEq for Coordinate

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub<Vector> for Coordinate

source§

type Output = Coordinate

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Vector) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for Coordinate

source§

type Output = Coordinate

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl Copy for Coordinate

source§

impl StructuralPartialEq for Coordinate

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/funnybones/struct.Joint.html b/main/funnybones/struct.Joint.html index 65540f1..3fe4f0b 100644 --- a/main/funnybones/struct.Joint.html +++ b/main/funnybones/struct.Joint.html @@ -1,20 +1,20 @@ -Joint in funnybones - Rust

Struct funnybones::Joint

source ·
pub struct Joint { /* private fields */ }
Expand description

A connection between two bones.

-

Implementations§

source§

impl Joint

source

pub const fn id(&self) -> JointId

Returns the unique id of this joint.

-
source

pub const fn new(angle: Angle, bone_a: BoneAxis, bone_b: BoneAxis) -> Self

Returns a new joint formed by joining bone_a and bone_b at angle.

-
source

pub fn with_label(self, label: impl Into<String>) -> Self

Labels this joint and returns self.

-
source

pub fn label(&self) -> &str

Returns the label of this joint.

-
source

pub fn other_axis(&self, axis: BoneAxis) -> BoneAxis

Given axis is one of the two connections in this joint, return the +Joint in funnybones - Rust

Struct funnybones::Joint

source ·
pub struct Joint { /* private fields */ }
Expand description

A connection between two bones.

+

Implementations§

source§

impl Joint

source

pub const fn id(&self) -> JointId

Returns the unique id of this joint.

+
source

pub const fn new(angle: Rotation, bone_a: BoneAxis, bone_b: BoneAxis) -> Self

Returns a new joint formed by joining bone_a and bone_b at angle.

+
source

pub fn with_label(self, label: impl Into<String>) -> Self

Labels this joint and returns self.

+
source

pub fn label(&self) -> &str

Returns the label of this joint.

+
source

pub fn other_axis(&self, axis: BoneAxis) -> BoneAxis

Given axis is one of the two connections in this joint, return the other axis.

§Panics

This function has a debug assertion that ensures that axis is one of the bones in this joint.

-
source

pub fn set_angle(&mut self, angle: Angle)

Sets the angle to form between these joints.

+
source

pub fn set_angle(&mut self, angle: Rotation)

Sets the angle to form between these joints.

This setting is ignored if the bone furthest from the root of the joint is a BoneKind::Jointed bone.

-
source

pub const fn angle(&self) -> Angle

Returns the rotation of this joint.

-

Trait Implementations§

source§

impl Debug for Joint

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for Joint

source§

fn eq(&self, other: &Joint) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +
source

pub const fn angle(&self) -> Rotation

Returns the rotation of this joint.

+

Trait Implementations§

source§

impl Debug for Joint

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl PartialEq for Joint

source§

fn eq(&self, other: &Joint) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for Joint

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where - S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StructuralPartialEq for Joint

Auto Trait Implementations§

§

impl Freeze for Joint

§

impl RefUnwindSafe for Joint

§

impl Send for Joint

§

impl Sync for Joint

§

impl Unpin for Joint

§

impl UnwindSafe for Joint

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where + S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StructuralPartialEq for Joint

Auto Trait Implementations§

§

impl Freeze for Joint

§

impl RefUnwindSafe for Joint

§

impl Send for Joint

§

impl Sync for Joint

§

impl Unpin for Joint

§

impl UnwindSafe for Joint

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/funnybones/struct.JointId.html b/main/funnybones/struct.JointId.html index c8562f4..51ea37c 100644 --- a/main/funnybones/struct.JointId.html +++ b/main/funnybones/struct.JointId.html @@ -1,17 +1,17 @@ -JointId in funnybones - Rust

Struct funnybones::JointId

source ·
pub struct JointId(/* private fields */);
Expand description

The unique ID of a Joint in a Skeleton.

-

Implementations§

source§

impl JointId

source

pub fn index(self) -> usize

Returns the index of this joint within the skeleton.

-

Trait Implementations§

source§

impl Clone for JointId

source§

fn clone(&self) -> JointId

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for JointId

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for JointId

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for JointId

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where +JointId in funnybones - Rust

Struct funnybones::JointId

source ·
pub struct JointId(/* private fields */);
Expand description

The unique ID of a Joint in a Skeleton.

+

Implementations§

source§

impl JointId

source

pub fn index(self) -> usize

Returns the index of this joint within the skeleton.

+

Trait Implementations§

source§

impl Clone for JointId

source§

fn clone(&self) -> JointId

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for JointId

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for JointId

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Hash for JointId

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Index<JointId> for Skeleton

source§

type Output = Joint

The returned type after indexing.
source§

fn index(&self, index: JointId) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl IndexMut<JointId> for Skeleton

source§

fn index_mut(&mut self, index: JointId) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
source§

impl Ord for JointId

source§

fn cmp(&self, other: &JointId) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl Index<JointId> for Skeleton

source§

type Output = Joint

The returned type after indexing.
source§

fn index(&self, index: JointId) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl IndexMut<JointId> for Skeleton

source§

fn index_mut(&mut self, index: JointId) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
source§

impl Ord for JointId

source§

fn cmp(&self, other: &JointId) -> Ordering

This method returns an Ordering between self and other. Read more
1.21.0 · source§

fn max(self, other: Self) -> Self
where Self: Sized,

Compares and returns the maximum of two values. Read more
1.21.0 · source§

fn min(self, other: Self) -> Self
where Self: Sized,

Compares and returns the minimum of two values. Read more
1.50.0 · source§

fn clamp(self, min: Self, max: Self) -> Self
where - Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for JointId

source§

fn eq(&self, other: &JointId) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl PartialOrd for JointId

source§

fn partial_cmp(&self, other: &JointId) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the + Self: Sized + PartialOrd,

Restrict a value to a certain interval. Read more
source§

impl PartialEq for JointId

source§

fn eq(&self, other: &JointId) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialOrd for JointId

source§

fn partial_cmp(&self, other: &JointId) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the <= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by -the >= operator. Read more
source§

impl Serialize for JointId

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for JointId

source§

impl Eq for JointId

source§

impl StructuralPartialEq for JointId

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where +the >= operator. Read more

source§

impl Serialize for JointId

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for JointId

source§

impl Eq for JointId

source§

impl StructuralPartialEq for JointId

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/funnybones/struct.LabeledBoneKind.html b/main/funnybones/struct.LabeledBoneKind.html index 49fe9ba..0580af9 100644 --- a/main/funnybones/struct.LabeledBoneKind.html +++ b/main/funnybones/struct.LabeledBoneKind.html @@ -1,10 +1,10 @@ -LabeledBoneKind in funnybones - Rust

Struct funnybones::LabeledBoneKind

source ·
pub struct LabeledBoneKind {
+LabeledBoneKind in funnybones - Rust

Struct funnybones::LabeledBoneKind

source ·
pub struct LabeledBoneKind {
     pub kind: BoneKind,
     pub label: String,
 }
Expand description

A BoneKind with an associated label.

Fields§

§kind: BoneKind

The bone to create.

§label: String

The label of the bone.

-

Trait Implementations§

source§

impl From<BoneKind> for LabeledBoneKind

source§

fn from(kind: BoneKind) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where +

Trait Implementations§

source§

impl From<BoneKind> for LabeledBoneKind

source§

fn from(kind: BoneKind) -> Self

Converts to this type from the input type.

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/funnybones/struct.Rotation.html b/main/funnybones/struct.Rotation.html new file mode 100644 index 0000000..2d0d971 --- /dev/null +++ b/main/funnybones/struct.Rotation.html @@ -0,0 +1,106 @@ +Rotation in funnybones - Rust

Struct funnybones::Rotation

source ·
pub struct Rotation { /* private fields */ }
Expand description

A value representing a rotation in 2d space.

+

Implementations§

source§

impl Rotation

source

pub const fn radians(radians: f32) -> Self

Returns a rotation representing the given radians.

+
source

pub fn degrees(degrees: f32) -> Self

Returns a rotation representing the given degrees.

+
source

pub fn to_degrees(self) -> f32

Returns this rotation represented in degrees.

+
source

pub const fn to_radians(self) -> f32

Returns this rotation represented in radians.

+
source

pub fn clamped(self) -> Self

Returns this angle constrained between 0 and .

+
source

pub fn cos(self) -> f32

Returns the cosine of this angle.

+
source

pub fn sin(self) -> f32

Returns the sine of this angle.

+

Trait Implementations§

source§

impl Add<Rotation> for Vector

source§

type Output = Vector

The resulting type after applying the + operator.
source§

fn add(self, rhs: Rotation) -> Self::Output

Performs the + operation. Read more
source§

impl Add for Rotation

source§

type Output = Rotation

The resulting type after applying the + operator.
source§

fn add(self, rhs: Self) -> Self::Output

Performs the + operation. Read more
source§

impl AddAssign for Rotation

source§

fn add_assign(&mut self, rhs: Self)

Performs the += operation. Read more
source§

impl Clone for Rotation

source§

fn clone(&self) -> Rotation

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Rotation

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Rotation

source§

fn default() -> Self

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Rotation

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for Rotation

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl From<Angle> for Rotation

source§

fn from(value: Angle) -> Self

Converts to this type from the input type.
source§

impl From<Rotation> for Angle

source§

fn from(value: Rotation) -> Self

Converts to this type from the input type.
source§

impl LinearInterpolate for Rotation

source§

fn lerp(&self, target: &Self, percent: f32) -> Self

Interpolate linearly between self and target using percent.
source§

impl Neg for Rotation

source§

type Output = Rotation

The resulting type after applying the - operator.
source§

fn neg(self) -> Self::Output

Performs the unary - operation. Read more
source§

impl PartialEq for Rotation

source§

fn eq(&self, other: &Rotation) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl PartialOrd for Rotation

source§

fn partial_cmp(&self, other: &Rotation) -> Option<Ordering>

This method returns an ordering between self and other values if one exists. Read more
1.0.0 · source§

fn lt(&self, other: &Rhs) -> bool

Tests less than (for self and other) and is used by the < operator. Read more
1.0.0 · source§

fn le(&self, other: &Rhs) -> bool

Tests less than or equal to (for self and other) and is used by the +<= operator. Read more
1.0.0 · source§

fn gt(&self, other: &Rhs) -> bool

Tests greater than (for self and other) and is used by the > +operator. Read more
1.0.0 · source§

fn ge(&self, other: &Rhs) -> bool

Tests greater than or equal to (for self and other) and is used by +the >= operator. Read more
source§

impl PercentBetween for Rotation

source§

fn percent_between(&self, min: &Self, max: &Self) -> ZeroToOne

Return the percentage that self is between min and max.
source§

impl Serialize for Rotation

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub<Rotation> for Vector

source§

type Output = Vector

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Rotation) -> Self::Output

Performs the - operation. Read more
source§

impl Sub for Rotation

source§

type Output = Rotation

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Self) -> Self::Output

Performs the - operation. Read more
source§

impl SubAssign for Rotation

source§

fn sub_assign(&mut self, rhs: Self)

Performs the -= operation. Read more
source§

impl Copy for Rotation

source§

impl StructuralPartialEq for Rotation

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where + T: Real + Zero + Arithmetics + Clone, + Swp: WhitePoint<T>, + Dwp: WhitePoint<T>, + D: AdaptFrom<S, Swp, Dwp, T>,

source§

fn adapt_into_using<M>(self, method: M) -> D
where + M: TransformMatrix<T>,

Convert the source color to the destination color using the specified +method.
source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford +method by default.
source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T, C> ArraysFrom<C> for T
where + C: IntoArrays<T>,

source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
source§

impl<T, C> ArraysInto<C> for T
where + C: FromArrays<T>,

source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where + T: FromCam16Unclamped<WpParam, U>,

source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
source§

fn cam16_into_unclamped( + self, + parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, +) -> T

Converts self into C, using the provided parameters.
§

impl<A> Cast for A

§

fn cast<To>(self) -> To
where + To: CastFrom<A>,

Casts self to the To type. This may be a lossy operation.
§

impl<A> CastFrom<A> for A

§

fn from_cast(from: A) -> A

Returns from as Self.
§

impl<A, B> CastInto<A> for B
where + A: CastFrom<B>,

§

fn cast_into(self) -> A

Returns self as To.
source§

impl<T> CloneToUninit for T
where + T: Clone,

source§

unsafe fn clone_to_uninit(&self, dst: *mut T)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dst. Read more
source§

impl<T, C> ComponentsFrom<C> for T
where + C: IntoComponents<T>,

source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
§

impl<T> Downcast<T> for T

§

fn downcast(&self) -> &T

§

impl<T> Downcast for T
where + T: Any,

§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can +then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.
§

fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>

Convert Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be +further downcast into Rc<ConcreteType> where ConcreteType implements Trait.
§

fn as_any(&self) -> &(dyn Any + 'static)

Convert &Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot +generate &Any’s vtable from &Trait’s.
§

fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)

Convert &mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot +generate &mut Any’s vtable from &mut Trait’s.
§

impl<T> DowncastSync for T
where + T: Any + Send + Sync,

§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Send + Sync>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be +further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
§

impl<T> DynamicDisplay for T
where + T: Display,

§

fn fmt( + &self, + _context: &WidgetContext<'_>, + f: &mut Formatter<'_>, +) -> Result<(), Error>

Format self with any needed information from context.
§

fn as_display<'display, 'ctx>( + &'display self, + context: &'display WidgetContext<'ctx>, +) -> DynamicDisplayer<'display, 'ctx>
where + Self: Sized,

Returns a type that implements Display.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T> FromAngle<T> for T

source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
source§

impl<T, U> FromStimulus<U> for T
where + U: IntoStimulus<T>,

source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, +rounding and clamping.
§

impl<T> Instrument for T

§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided [Span], returning an +Instrumented wrapper. Read more
§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an +Instrumented wrapper. Read more
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

+
source§

impl<T, U> IntoAngle<U> for T
where + U: FromAngle<T>,

source§

fn into_angle(self) -> U

Performs a conversion into T.
source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where + T: Cam16FromUnclamped<WpParam, U>,

source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
source§

fn into_cam16_unclamped( + self, + parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, +) -> T

Converts self into C, using the provided parameters.
source§

impl<T, U> IntoColor<U> for T
where + U: FromColor<T>,

source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
source§

impl<T, U> IntoColorUnclamped<U> for T
where + U: FromColorUnclamped<T>,

source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
§

impl<Unit> IntoComponents<Unit> for Unit
where + Unit: Copy,

§

fn into_components(self) -> (Unit, Unit)

Extracts this type’s 2d vector components.
§

fn to_vec<Type>(self) -> Type
where + Type: FromComponents<Unit>,

Converts this type to another type using [FromComponents] and +[IntoComponents].
source§

impl<T> IntoEither for T

source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts 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 more
source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where + F: FnOnce(&Self) -> bool,

Converts 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 more
§

impl<T> IntoReadOnly<T> for T

§

fn into_read_only(self) -> ReadOnly<T>

Returns self as a ReadOnly.
source§

impl<T> IntoStimulus<T> for T

source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, +rounding and clamping.
§

impl<T> IntoValue<Option<T>> for T

§

fn into_value(self) -> Value<Option<T>>

Returns this type as a [Value].
§

impl<T> IntoValue<T> for T

§

fn into_value(self) -> Value<T>

Returns this type as a [Value].
§

impl<T> Pointable for T

§

const ALIGN: usize = _

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<R, P> ReadPrimitive<R> for P
where + R: Read + ReadEndian<P>, + P: Default,

source§

fn read_from_little_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_little_endian().
source§

fn read_from_big_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_big_endian().
source§

fn read_from_native_endian(read: &mut R) -> Result<Self, Error>

Read this value from the supplied reader. Same as ReadEndian::read_from_native_endian().
§

impl<T> SliderValue for T
where + T: Clone + Debug + PartialOrd + LinearInterpolate + PercentBetween + Send + 'static,

§

type Value = T

The component value for the slider.
§

const RANGED: bool = false

When true, this type is expected to represent two values: start and an +end.
§

fn into_parts( + self, +) -> (<T as SliderValue>::Value, Option<<T as SliderValue>::Value>)

Returns this value split into its start and end components.
§

fn from_parts( + min_or_value: <T as SliderValue>::Value, + _max: Option<<T as SliderValue>::Value>, +) -> T

Constructs a value from its start and end components.
source§

impl<T> ToOwned for T
where + T: Clone,

source§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
§

impl<T> ToSmolStr for T
where + T: Display + ?Sized,

§

fn to_smolstr(&self) -> SmolStr

source§

impl<T> ToString for T
where + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, C> TryComponentsInto<C> for T
where + C: TryFromComponents<T>,

source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of +colors. Read more
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

source§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T, U> TryIntoColor<U> for T
where + U: TryFromColor<T>,

source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined +range, otherwise an OutOfBounds error is returned which contains +the unclamped color. Read more
source§

impl<C, U> UintsFrom<C> for U
where + C: IntoUints<U>,

source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
source§

impl<C, U> UintsInto<C> for U
where + C: FromUints<U>,

source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.
§

impl<T> Upcast<T> for T

§

fn upcast(&self) -> Option<&T>

§

impl<T> WithSubscriber for T

§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where + S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a +[WithDispatch] wrapper. Read more
source§

impl<T> DeserializeOwned for T
where + T: for<'de> Deserialize<'de>,

§

impl<T> WasmNotSend for T
where + T: Send,

§

impl<T> WasmNotSendSync for T
where + T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where + T: Sync,

\ No newline at end of file diff --git a/main/funnybones/struct.Skeleton.html b/main/funnybones/struct.Skeleton.html index baff325..c6bec00 100644 --- a/main/funnybones/struct.Skeleton.html +++ b/main/funnybones/struct.Skeleton.html @@ -1,32 +1,32 @@ -Skeleton in funnybones - Rust

Struct funnybones::Skeleton

source ·
pub struct Skeleton { /* private fields */ }
Expand description

A collection of Bones. connected by Joints.

-

Implementations§

source§

impl Skeleton

source

pub fn push_bone(&mut self, bone: impl Into<LabeledBoneKind>) -> BoneId

Creates a new Bone into the skeleton. Returns the unique id of the +Skeleton in funnybones - Rust

Struct funnybones::Skeleton

source ·
pub struct Skeleton { /* private fields */ }
Expand description

A collection of Bones. connected by Joints.

+

Implementations§

source§

impl Skeleton

source

pub fn push_bone(&mut self, bone: impl Into<LabeledBoneKind>) -> BoneId

Creates a new Bone into the skeleton. Returns the unique id of the created bone.

The first bone pushed is considered the root of the skeleton. All other bones must be connected to the root directly or indirectly through Joints.

-
source

pub fn bones(&self) -> &[Bone]

Returns the list of bones in this skeleton.

-
source

pub fn joints(&self) -> &[Joint]

Returns the list of joints in this skeleton.

-
source

pub fn bone(&self, id: BoneId) -> Option<&Bone>

Returns the bone for a given id, or none if not found.

-
source

pub fn bone_mut(&mut self, id: BoneId) -> Option<&mut Bone>

Returns an exclusive reference to the bone for a given id, or none if +

source

pub fn bones(&self) -> &[Bone]

Returns the list of bones in this skeleton.

+
source

pub fn joints(&self) -> &[Joint]

Returns the list of joints in this skeleton.

+
source

pub fn bone(&self, id: BoneId) -> Option<&Bone>

Returns the bone for a given id, or none if not found.

+
source

pub fn bone_mut(&mut self, id: BoneId) -> Option<&mut Bone>

Returns an exclusive reference to the bone for a given id, or none if not found.

-
source

pub fn joint(&self, id: JointId) -> Option<&Joint>

Returns the joint for a given id, or none if not found.

-
source

pub fn joint_mut(&mut self, id: JointId) -> Option<&mut Joint>

Returns an exclusive reference to the joint for a given id, or none if +

source

pub fn joint(&self, id: JointId) -> Option<&Joint>

Returns the joint for a given id, or none if not found.

+
source

pub fn joint_mut(&mut self, id: JointId) -> Option<&mut Joint>

Returns an exclusive reference to the joint for a given id, or none if not found.

-
source

pub fn connections_to(&self, axis: BoneAxis) -> Option<&[JointId]>

Returns a list of joints connected to a specific bone axis.

-
source

pub fn push_joint(&mut self, joint: Joint) -> JointId

Creates a new Joint in the skeleton, connecting two bones together +

source

pub fn connections_to(&self, axis: BoneAxis) -> Option<&[JointId]>

Returns a list of joints connected to a specific bone axis.

+
source

pub fn push_joint(&mut self, joint: Joint) -> JointId

Creates a new Joint in the skeleton, connecting two bones together by their axis. Returns the unique id of the created joint.

-
source

pub fn find_joint_by_label(&self, label: &str) -> Option<JointId>

Finds an existing Joint by its label.

-
source

pub fn find_bone_by_label(&self, label: &str) -> Option<BoneId>

Finds an existing Bone by its label.

-
source

pub fn set_translation(&mut self, translation: Coordinate)

Sets a translation to be applied to the entire skeleton.

-
source

pub fn translation(&self) -> Coordinate

Returns the translation applied to the entire skeleton.

-
source

pub fn set_rotation(&mut self, rotation: Angle)

Sets a base rotation to apply to the entire skeleton.

-
source

pub const fn rotation(&self) -> Angle

Returns the base rotation being applied to the entire skeleton.

-
source

pub fn solve(&mut self)

Updates the solved positions of all bones in this skeleton that are +

source

pub fn find_joint_by_label(&self, label: &str) -> Option<JointId>

Finds an existing Joint by its label.

+
source

pub fn find_bone_by_label(&self, label: &str) -> Option<BoneId>

Finds an existing Bone by its label.

+
source

pub fn set_translation(&mut self, translation: Coordinate)

Sets a translation to be applied to the entire skeleton.

+
source

pub fn translation(&self) -> Coordinate

Returns the translation applied to the entire skeleton.

+
source

pub fn set_rotation(&mut self, rotation: Rotation)

Sets a base rotation to apply to the entire skeleton.

+
source

pub const fn rotation(&self) -> Rotation

Returns the base rotation being applied to the entire skeleton.

+
source

pub fn solve(&mut self)

Updates the solved positions of all bones in this skeleton that are connected either directly or indirectly to the root bone via Joints.

-

Trait Implementations§

source§

impl Debug for Skeleton

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Skeleton

source§

fn default() -> Skeleton

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Skeleton

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where - D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Index<BoneId> for Skeleton

source§

type Output = Bone

The returned type after indexing.
source§

fn index(&self, index: BoneId) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl Index<JointId> for Skeleton

source§

type Output = Joint

The returned type after indexing.
source§

fn index(&self, index: JointId) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl IndexMut<BoneId> for Skeleton

source§

fn index_mut(&mut self, index: BoneId) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
source§

impl IndexMut<JointId> for Skeleton

source§

fn index_mut(&mut self, index: JointId) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
source§

impl PartialEq for Skeleton

source§

fn eq(&self, other: &Skeleton) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +

Trait Implementations§

source§

impl Debug for Skeleton

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Skeleton

source§

fn default() -> Skeleton

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Skeleton

source§

fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
where + D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Index<BoneId> for Skeleton

source§

type Output = Bone

The returned type after indexing.
source§

fn index(&self, index: BoneId) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl Index<JointId> for Skeleton

source§

type Output = Joint

The returned type after indexing.
source§

fn index(&self, index: JointId) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl IndexMut<BoneId> for Skeleton

source§

fn index_mut(&mut self, index: BoneId) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
source§

impl IndexMut<JointId> for Skeleton

source§

fn index_mut(&mut self, index: JointId) -> &mut Self::Output

Performs the mutable indexing (container[index]) operation. Read more
source§

impl PartialEq for Skeleton

source§

fn eq(&self, other: &Skeleton) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Serialize for Skeleton

source§

fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
where - S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StructuralPartialEq for Skeleton

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where + S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl StructuralPartialEq for Skeleton

Auto Trait Implementations§

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/funnybones/struct.Vector.html b/main/funnybones/struct.Vector.html index dbee033..20082e5 100644 --- a/main/funnybones/struct.Vector.html +++ b/main/funnybones/struct.Vector.html @@ -1,14 +1,14 @@ -Vector in funnybones - Rust

Struct funnybones::Vector

source ·
pub struct Vector {
+Vector in funnybones - Rust

Struct funnybones::Vector

source ·
pub struct Vector {
     pub magnitude: f32,
-    pub direction: Angle,
+    pub direction: Rotation,
 }
Expand description

A 2D Euclidean vector.

Fields§

§magnitude: f32

The length of the vector.

-
§direction: Angle

The direction the vector is heading.

-

Implementations§

source§

impl Vector

source

pub const fn new(magnitude: f32, direction: Angle) -> Self

Returns a new vector for the given magnitude and direction.

-

Trait Implementations§

source§

impl Add<Angle> for Vector

source§

type Output = Vector

The resulting type after applying the + operator.
source§

fn add(self, rhs: Angle) -> Self::Output

Performs the + operation. Read more
source§

impl Add<Vector> for Coordinate

source§

type Output = Coordinate

The resulting type after applying the + operator.
source§

fn add(self, rhs: Vector) -> Self::Output

Performs the + operation. Read more
source§

impl Add for Vector

source§

type Output = Vector

The resulting type after applying the + operator.
source§

fn add(self, rhs: Vector) -> Self::Output

Performs the + operation. Read more
source§

impl Clone for Vector

source§

fn clone(&self) -> Vector

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Vector

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Vector

source§

fn default() -> Vector

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Vector

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl From<Coordinate> for Vector

source§

fn from(pt: Coordinate) -> Self

Converts to this type from the input type.
source§

impl From<Vector> for Coordinate

source§

fn from(vec: Vector) -> Self

Converts to this type from the input type.
source§

impl From<Vector> for Value

source§

fn from(value: Vector) -> Self

Converts to this type from the input type.
source§

impl LinearInterpolate for Vector

source§

fn lerp(&self, target: &Self, percent: f32) -> Self

Interpolate linearly between self and target using percent.
source§

impl PartialEq for Vector

source§

fn eq(&self, other: &Vector) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, -and should not be overridden without very good reason.
source§

impl Serialize for Vector

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub<Angle> for Vector

source§

type Output = Vector

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Angle) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<Vector> for Coordinate

source§

type Output = Coordinate

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Vector) -> Self::Output

Performs the - operation. Read more
source§

impl Copy for Vector

source§

impl StructuralPartialEq for Vector

Auto Trait Implementations§

§

impl Freeze for Vector

§

impl RefUnwindSafe for Vector

§

impl Send for Vector

§

impl Sync for Vector

§

impl Unpin for Vector

§

impl UnwindSafe for Vector

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where +
§direction: Rotation

The direction the vector is heading.

+

Implementations§

source§

impl Vector

source

pub const fn new(magnitude: f32, direction: Rotation) -> Self

Returns a new vector for the given magnitude and direction.

+

Trait Implementations§

source§

impl Add<Rotation> for Vector

source§

type Output = Vector

The resulting type after applying the + operator.
source§

fn add(self, rhs: Rotation) -> Self::Output

Performs the + operation. Read more
source§

impl Add<Vector> for Coordinate

source§

type Output = Coordinate

The resulting type after applying the + operator.
source§

fn add(self, rhs: Vector) -> Self::Output

Performs the + operation. Read more
source§

impl Add for Vector

source§

type Output = Vector

The resulting type after applying the + operator.
source§

fn add(self, rhs: Vector) -> Self::Output

Performs the + operation. Read more
source§

impl Clone for Vector

source§

fn clone(&self) -> Vector

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Vector

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Default for Vector

source§

fn default() -> Vector

Returns the “default value” for a type. Read more
source§

impl<'de> Deserialize<'de> for Vector

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>
where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl From<Coordinate> for Vector

source§

fn from(pt: Coordinate) -> Self

Converts to this type from the input type.
source§

impl From<Vector> for Coordinate

source§

fn from(vec: Vector) -> Self

Converts to this type from the input type.
source§

impl From<Vector> for Value

source§

fn from(value: Vector) -> Self

Converts to this type from the input type.
source§

impl LinearInterpolate for Vector

source§

fn lerp(&self, target: &Self, percent: f32) -> Self

Interpolate linearly between self and target using percent.
source§

impl PartialEq for Vector

source§

fn eq(&self, other: &Vector) -> bool

Tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

Tests for !=. The default implementation is almost always sufficient, +and should not be overridden without very good reason.
source§

impl Serialize for Vector

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Sub<Rotation> for Vector

source§

type Output = Vector

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Rotation) -> Self::Output

Performs the - operation. Read more
source§

impl Sub<Vector> for Coordinate

source§

type Output = Coordinate

The resulting type after applying the - operator.
source§

fn sub(self, rhs: Vector) -> Self::Output

Performs the - operation. Read more
source§

impl Copy for Vector

source§

impl StructuralPartialEq for Vector

Auto Trait Implementations§

§

impl Freeze for Vector

§

impl RefUnwindSafe for Vector

§

impl Send for Vector

§

impl Sync for Vector

§

impl Unpin for Vector

§

impl UnwindSafe for Vector

Blanket Implementations§

source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where T: Real + Zero + Arithmetics + Clone, Swp: WhitePoint<T>, Dwp: WhitePoint<T>, diff --git a/main/help.html b/main/help.html index db74359..68c752e 100644 --- a/main/help.html +++ b/main/help.html @@ -1 +1 @@ -Help

Rustdoc help

Back
\ No newline at end of file +Help

Rustdoc help

Back
\ No newline at end of file diff --git a/main/search-index.js b/main/search-index.js index 0905cf6..6371ee9 100644 --- a/main/search-index.js +++ b/main/search-index.js @@ -1,4 +1,4 @@ -var searchIndex = new Map(JSON.parse('[["FunnyBones",{"t":"PPFFGFONNNNHNNNNNNNNNNNNNNNNNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOHNOHNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Animation","Bones","ChangeAggregator","EditingSkeleton","Mode","SkeletalBone","a_bones","adapt_into_using","","","","add_bones_to_skeleton","arrays_from","","","","arrays_into","","","","as_any","","","","as_any_mut","","","","as_bone_kind","bone_editor","bone_property_editor","bones_editor","borrow","","","","borrow_mut","","","","cam16_into_unclamped","","","","cast","","","","cast_into","","","","clone","","","","clone_into","","","","clone_to_uninit","","","","components_from","","","","connected_bones","default","","","deref","","","","deref_mut","","","","desired_length","downcast","","","","drop","","","","eq","","","equivalent","","","find_bone","find_bone_in","find_joint","find_joint_in","fmt","","","","from","","","","from_angle","","","","from_cast","","","","from_stimulus","","","","init","","","","into","","","","into_angle","","","","into_any","","","","into_any_arc","","","","into_any_rc","","","","into_cam16_unclamped","","","","into_color","","","","into_color_unclamped","","","","into_components","into_read_only","","","","into_stimulus","","","","into_value","","","","","","","","inverse","joint_angle","joint_label","joint_ratio","jointed","label","length","main","new","root","skeleton_editor","to_owned","","","","try_components_into","","","","try_from","","","","try_into","","","","try_into_color","","","","type_id","","","","uints_from","","","","uints_into","","","","upcast","","","","watch"],"q":[[0,"FunnyBones"],[220,"palette::chromatic_adaptation"],[221,"funnybones"],[222,"alloc::vec"],[223,"cushy::value"],[224,"core::any"],[225,"cushy::widget"],[226,"palette::cam16::parameters"],[227,"intentional::cast"],[228,"core::option"],[229,"core::ops::control_flow"],[230,"core::fmt"],[231,"alloc::boxed"],[232,"alloc::sync"],[233,"alloc::rc"],[234,"cushy"],[235,"core::cmp"],[236,"core::marker"],[237,"core::ops::function"],[238,"core::result"],[239,"palette::convert::try_from_into_color"]],"i":"Bh0````Bj1Al1f`31203120312031200```312031203120312031203120312031203120032031203120031203120320333222231203120312031203120312031203120312031203120312031203120331203120331122000000000`12`3120312031203120312031203120312031201","f":"```````{eg{}{{b{c}}}{}}000{{d{l{{j{{h{f}}}}}}{l{nA`}}}Ab}{ce{}{}}000{{}c{}}000{l{{l{Ad}}}}000{{{l{n}}}{{l{nAd}}}}000{{{l{f}}}{{Aj{AfAh}}}}{{f{l{Al}}}{{`{An}}}}{{f{l{Al}}B`}{{`{An}}}}{{{l{Bb}}{l{{j{{h{f}}}}}}{l{Al}}}{{`{An}}}}{l{{l{c}}}{}}000{{{l{n}}}{{l{nc}}}{}}000{{{Bd{c}}}e{}{}}000{{}e{}{{Bf{c}}}}000::::{{{l{Bh}}}Bh}{{{l{Al}}}Al}{{{l{Bj}}}Bj}{{{l{f}}}f}{{l{l{nc}}}Ab{}}000{lAb}000{ce{}{}}000`{{}Bh}{{}Bj}{{}f}{Bl{{l{c}}}{}}000{Bl{{l{nc}}}{}}000`????{BlAb}000{{{l{Bh}}{l{Bh}}}B`}{{{l{Bj}}{l{Bj}}}B`}{{{l{f}}{l{f}}}B`}{{l{l{c}}}B`{}}00{{{l{Bj}}Bn}{{C`{f}}}}{{{l{{j{{h{f}}}}}}Bl}{{Cb{fBl}}}}{{{l{Bj}}Cd}{{C`{f}}}}1{{{l{Bh}}{l{nCf}}}Ch}{{{l{Al}}{l{nCf}}}Ch}{{{l{Bj}}{l{nCf}}}Ch}{{{l{f}}{l{nCf}}}Ch}{cc{}}00000000000{ce{}{}}000{{}Bl}000{{}c{}}0000000{{{Cj{c}}}{{Cj{Ad}}}{}}000{{{Cl{c}}}{{Cl{Ad}}}{}}000{{{Cn{c}}}{{Cn{Ad}}}{}}000{{{Bd{c}}}e{}{}}00044444444{{}{{Aj{cc}}}{}}{{}{{D`{c}}}{}}0006666{{}{{Db{{C`{c}}}}}{}}{{}{{Db{c}}}{}}011001```````{{}Dd}{e{{Aj{Al{j{c}}}}}{DfDh}{{Dl{}{{Dj{c}}}}Dh}}`{{{l{Bj}}{l{Al}}}{{`{An}}}}{lc{}}000{{}{{Dn{c}}}{}}000{c{{Dn{e}}}{}{}}0001111{{}{{Dn{c{E`{c}}}}}{}}000{lEb}000{ce{}{}}000{{}c{}}000{l{{C`{{l{c}}}}}{}}000{{{l{Al}}{l{{j{c}}}}}AbDh}","D":"Ab","p":[[10,"TransformMatrix",220],[5,"BoneAxis",221],[5,"SkeletalBone",0],[5,"Vec",222],[5,"Dynamic",223],[1,"reference"],[0,"mut"],[5,"Skeleton",221],[1,"unit"],[10,"Any",224],[5,"LabeledBoneKind",221],[5,"Vector",221],[1,"tuple"],[5,"ChangeAggregator",0],[10,"MakeWidget",225],[1,"bool"],[1,"str"],[5,"BakedParameters",226],[10,"CastFrom",227],[6,"Mode",0],[5,"EditingSkeleton",0],[1,"usize"],[5,"BoneId",221],[6,"Option",228],[6,"ControlFlow",229],[5,"JointId",221],[5,"Formatter",230],[8,"Result",230],[5,"Box",231],[5,"Arc",232],[5,"Rc",233],[6,"ReadOnly",223],[6,"Value",223],[8,"Result",234],[10,"PartialEq",235],[10,"Send",236],[17,"Output"],[10,"FnMut",237],[6,"Result",238],[5,"OutOfBounds",239],[5,"TypeId",224]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAANMAAwABAGYAbAAPAIAAXAA="}],["funnybones",{"t":"PFPFFGFGFFFPFTTPFFNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNONNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOPPFPGPPFPPPGFTTPGFGPFGPTNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNOOOOCPPPPFGGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOO","n":["A","Angle","B","Bone","BoneAxis","BoneEnd","BoneId","BoneKind","Coordinate","Joint","JointId","Jointed","LabeledBoneKind","MAX","MIN","Rigid","Skeleton","Vector","adapt_into_using","","","","","","","","","","","","add","","","","","add_assign","angle","animation","arrays_from","","","","","","","","","","","","arrays_into","","","","","","","","","","","","as_any","","","","","","","","","","","","as_any_mut","","","","","","","","","","","","as_rotation","axis_a","axis_b","bone","","bone_mut","bones","borrow","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","cam16_into_unclamped","","","","","","","","","","","","cast","","","","","","","","","","","","cast_into","","","","","","","","","","","","clone","","","","","","","","clone_into","","","","","","","","clone_to_uninit","","","","","","","","cmp","","compare","","","","components_from","","","","","","","","","","","","connections_to","cos","cushy","default","","","","degrees","deref","","","","","","","","","","","","deref_mut","","","","","","","","","","","","deserialize","","","","","","","","","desired_end","direction","div","downcast","","","","","","","","","","","","drop","","","","","","","","","","","","end","","entry_angle","eq","","","","","","","","","","","equivalent","","","","","","","","","","","","final_vector","find_bone_by_label","find_joint_by_label","fmt","","","","","","","","","","","","","from","","","","","","","","","","","","","","","from_angle","","","","","","","","","","","","from_cast","","","","","","","","","","","","from_components","from_parts","from_stimulus","","","","","","","","","","","","full_length","hash","","","","id","","index","","","","index_mut","","init","","","","","","","","","","","","into","","","","","","","","","","","","into_angle","","","","","","","","","","","","into_any","","","","","","","","","","","","into_any_arc","","","","","","","","","","","","into_any_rc","","","","","","","","","","","","into_cam16_unclamped","","","","","","","","","","","","into_color","","","","","","","","","","","","into_color_unclamped","","","","","","","","","","","","into_components","","","","","","","","","into_parts","into_read_only","","","","","","","","","","","","into_stimulus","","","","","","","","","","","","into_value","","","","","","","","","","","","","","","","","","","","","","","","inverse","","is_inverse","is_root","joint","joint_mut","joints","kind","","kind_mut","label","","","lerp","","magnitude","","map","mul","neg","new","","","other_axis","partial_cmp","","","percent_between","push_bone","push_joint","radians","rotation","serialize","","","","","","","","","","","set_angle","set_desired_end","set_inverse","set_rotation","set_translation","sin","solve","solved_joint","start","sub","","","","sub_assign","to_degrees","to_owned","","","","","","","","to_progress","to_radians","to_smolstr","to_string","translation","try_components_into","","","","","","","","","","","","try_from","","","","","","","","","","","","try_into","","","","","","","","","","","","try_into_color","","","","","","","","","","","","type_id","","","","","","","","","","","","uints_from","","","","","","","","","","","","uints_into","","","","","","","","","","","","upcast","","","","","","","","","","","","vector_to","with_label","","x","y","end_length","inverse","length","start_length","Add","Angle","Animation","Bone","BoneProperty","Bool","ChangeTo","Frame","Invalid","Inverse","Joint","JointProperty","Keyframe","MAX","MIN","Number","PropertyUpdate","RunningAnimation","Target","","Timeline","Value","Vector","ZERO","adapt_into_using","","","","","","","","","","add","arrays_from","","","","","","","","","","arrays_into","","","","","","","","","","as_any","","","","","","","","","","as_any_mut","","","","","","","","","","borrow","","","","","","","","","","borrow_mut","","","","","","","","","","cam16_into_unclamped","","","","","","","","","","cast","","","","","","","","","","cast_into","","","","","","","","","","clone","","","","","","","","","clone_into","","","","","","","","","clone_to_uninit","","","","","","","","","cmp","compare","","components_from","","","","","","","","","","default","","deref","","","","","","","","","","","","deref_mut","","","","","","","","","","","","deserialize","","","","","","","","downcast","","","","","","","","","","drop","","","","","","","","","","easing","eq","","","","","","","","","equivalent","","","fmt","","","","","","","","","from","","","","","","","","","","","","","","from_angle","","","","","","","","","","from_cast","","","","","","","","","","from_stimulus","","","","","","","","","","get","","","init","","","","","","","","","","insert","insert_frame","into","","","","","","","","","","into_angle","","","","","","","","","","into_any","","","","","","","","","","into_any_arc","","","","","","","","","","into_any_rc","","","","","","","","","","into_cam16_unclamped","","","","","","","","","","into_color","","","","","","","","","","into_color_unclamped","","","","","","","","","","into_components","","","","into_read_only","","","","","","","","","","into_stimulus","","","","","","","","","","into_value","","","","","","","","","","","","","","","","","","","","looping","new","","partial_cmp","push","remove","serialize","","","","","","","","set_frame_offset","set_variable","start","sub","target","to_owned","","","","","","","","","try_components_into","","","","","","","","","","try_from","","","","","","","","","","","try_into","","","","","","","","","","try_into_color","","","","","","","","","","type_id","","","","","","","","","","uints_from","","","","","","","","","","uints_into","","","","","","","","","","upcast","","","","","","","","","","update","","","","","variable","with","with_easing","with_frame","with_variable","bone","joint","property","","skeleton_canvas","DesiredEnd","Joint","SetDesiredEnd","SetJointRotation","SkeletonCanvas","SkeletonMutation","Target","adapt_into_using","","","arrays_from","","","arrays_into","","","as_any","","","as_any_mut","","","borrow","","","borrow_mut","","","cam16_into_unclamped","","","cast","","","cast_into","","","clone","","clone_into","","clone_to_uninit","","components_from","","","deref","","","deref_mut","","","downcast","","","drop","","","eq","","equivalent","","","fmt","","","from","","","from_angle","","","from_cast","","","from_stimulus","","","hit_test","hover","init","","","into","","","into_angle","","","into_any","","","into_any_arc","","into_any_rc","","","into_cam16_unclamped","","","into_color","","","into_color_unclamped","","","into_components","","into_read_only","","","into_stimulus","","","into_value","","","","","","layout","make_widget","make_with_tag","maximum_scale","minimum_scale","mouse_down","mouse_drag","mouse_up","mouse_wheel","new","on_mutate","open","redraw","run","run_in","scale","to_owned","","try_components_into","","","try_from","","","try_into","","","try_into_color","","","type_id","","","uints_from","","","uints_into","","","unhover","upcast","","","bone","end","joint","rotation"],"q":[[0,"funnybones"],[709,"funnybones::BoneKind"],[713,"funnybones::animation"],[1256,"funnybones::animation::Target"],[1260,"funnybones::cushy"],[1261,"funnybones::cushy::skeleton_canvas"],[1424,"funnybones::cushy::skeleton_canvas::SkeletonMutation"],[1428,"palette::chromatic_adaptation"],[1429,"core::any"],[1430,"core::option"],[1431,"palette::cam16::parameters"],[1432,"intentional::cast"],[1433,"core::cmp"],[1434,"core::result"],[1435,"serde::de"],[1436,"core::fmt"],[1437,"cushy::context"],[1438,"core::hash"],[1439,"alloc::boxed"],[1440,"alloc::sync"],[1441,"alloc::rc"],[1442,"cushy::value"],[1443,"core::ops::function"],[1444,"cushy::animation"],[1445,"core::convert"],[1446,"serde::ser"],[1447,"core::ops::range"],[1448,"cushy::widgets::progress"],[1449,"smol_str"],[1450,"alloc::string"],[1451,"palette::convert::try_from_into_color"],[1452,"alloc::borrow"],[1453,"core::time"],[1454,"easing_function::easings"],[1455,"figures::units"],[1456,"figures::point"],[1457,"cursor_icon"],[1458,"cushy"],[1459,"figures::size"],[1460,"cushy::widget"],[1461,"cushy::window"],[1462,"winit::event"],[1463,"core::marker"],[1464,"winit::error"],[1465,"cushy::app"]],"i":"Bh`0````````Bd`h01``D`d2f4AhAfAjA`AdBf;7796692`8796:543210;8796:543210;8796:543210;8796:543210;71154558796:543210;8796:543210;8796:543210;8796:543210;8796:543210;796:410;796:410;796:410;1011008796:543210;59`796598796:543210;8796:543210;796:5410;3678796:543210;8796:543210;343796:543210;444111000;;;35579996:543210;8877966:543210;8796:543210;8796:543210;798796:543210;:410;325510558796:543210;8796:543210;8796:543210;8796:543210;8796:543210;8796:543210;8796:543210;8796:543210;8796:543210;7796:410;98796:543210;8796:543210;88779966::554433221100;;4;:35553833289676779762291095595796:543210;23:559533779699796:410;999958796:543210;8796:543210;8796:543210;8796:543210;8796:543210;8796:543210;8796:543210;8796:543210;7:277Kf0Kh1GdGb`Fn`Ff3`0G`2``Gf02```1``20GjFhFjFl75869463210758694321075869432107586943210758694321075869432107586943210758694321075869432107586942107586942107586942107586944443210758694243221107586943221107586941075869432107586943210758694021075869444421075869432107586666944321075869432107586943210758694758321075869421321075869432107586943210758694321075869432107586943210758694321075869432107586940694321075869432107586943322110077558866994431042210758694122492107586943210758694321075869443210758694321075869432107586943210758694321075869432107586943758022012KjKl10`Hb0Hd0```Hf21021021021021021021021021021212121021021021021021212220210210210210210002102102102121021021021021210210210022110000000000000000210210210210210210210210021Kn0L`0","f":"``````````````````{eg{}{{b{c}}}{}}00000000000{{dd}c{}}{{df}c{}}{{hh}c{}}{{ff}c{}}{{fh}c{}}{{{l{jh}}h}n}{{{l{A`}}}h}`{ce{}{}}00000000000{{}c{}}00000000000{l{{l{Ab}}}}00000000000{{{l{j}}}{{l{jAb}}}}00000000000{dh}{AdAf}0{{{l{Ah}}Ad}{{Al{{l{Aj}}}}}}`{{{l{jAh}}Ad}{{Al{{l{jAj}}}}}}{{{l{Ah}}}{{l{{An{Aj}}}}}}{l{{l{c}}}{}}00000000000{{{l{j}}}{{l{jc}}}{}}00000000000{{{B`{c}}}e{}{}}00000000000{{}e{}{{Bb{c}}}}00000000000;;;;;;;;;;;;{{{l{d}}}d}{{{l{h}}}h}{{{l{f}}}f}{{{l{Bd}}}Bd}{{{l{Af}}}Af}{{{l{Ad}}}Ad}{{{l{Bf}}}Bf}{{{l{Bh}}}Bh}{{l{l{jc}}}n{}}0000000{ln}0000000{{{l{Ad}}{l{Ad}}}Bj}{{{l{Bf}}{l{Bf}}}Bj}{{l{l{c}}}Bj{}}000{ce{}{}}00000000000{{{l{Ah}}Af}{{Al{{l{{An{Bf}}}}}}}}{hBl}`{{}d}{{}h}{{}f}{{}Ah}{Blh}{Bn{{l{c}}}{}}00000000000{Bn{{l{jc}}}{}}00000000000{c{{C`{d}}}Cb}{c{{C`{h}}}Cb}{c{{C`{f}}}Cb}{c{{C`{Bd}}}Cb}{c{{C`{Ah}}}Cb}{c{{C`{Af}}}Cb}{c{{C`{Ad}}}Cb}{c{{C`{Bf}}}Cb}{c{{C`{Bh}}}Cb}{{{l{Aj}}}{{Al{f}}}}`{{dBl}c{}}{l{{l{c}}}{}}00000000000{Bnn}00000000000{{{l{Aj}}}d}`{{{l{Aj}}}h}{{{l{d}}{l{d}}}Cd}{{{l{h}}{l{h}}}Cd}{{{l{f}}{l{f}}}Cd}{{{l{Bd}}{l{Bd}}}Cd}{{{l{Ah}}{l{Ah}}}Cd}{{{l{Af}}{l{Af}}}Cd}{{{l{Aj}}{l{Aj}}}Cd}{{{l{A`}}{l{A`}}}Cd}{{{l{Ad}}{l{Ad}}}Cd}{{{l{Bf}}{l{Bf}}}Cd}{{{l{Bh}}{l{Bh}}}Cd}{{l{l{c}}}Cd{}}00000000000{{{l{Aj}}}f}{{{l{Ah}}{l{Cf}}}{{Al{Ad}}}}{{{l{Ah}}{l{Cf}}}{{Al{Bf}}}}{{{l{d}}{l{jCh}}}Cj}{{l{l{Cl}}{l{jCh}}}{{C`{nCn}}}}{{{l{h}}{l{jCh}}}Cj}0{{{l{f}}{l{jCh}}}Cj}{{{l{Bd}}{l{jCh}}}Cj}{{{l{Ah}}{l{jCh}}}Cj}{{{l{Af}}{l{jCh}}}Cj}{{{l{Aj}}{l{jCh}}}Cj}{{{l{A`}}{l{jCh}}}Cj}{{{l{Ad}}{l{jCh}}}Cj}{{{l{Bf}}{l{jCh}}}Cj}{{{l{Bh}}{l{jCh}}}Cj}{BdD`}{cc{}}{fd}111{df}22222222222222222222222222222222{{{Db{BlBl}}}d}{Alc{}}{ce{}{}}00000000000{{{l{Bd}}}Bl}{{{l{Af}}{l{jc}}}nDd}{{{l{Ad}}{l{jc}}}nDd}{{{l{Bf}}{l{jc}}}nDd}{{{l{Bh}}{l{jc}}}nDd}{{{l{Aj}}}Ad}{{{l{A`}}}Bf}{{{l{Ah}}Bf}{{l{c}}}{}}{{{l{Ah}}Ad}{{l{c}}}{}}{AdBn}{BfBn}{{{l{jAh}}Bf}{{l{jc}}}{}}{{{l{jAh}}Ad}{{l{jc}}}{}}{{}Bn}00000000000{{}c{}}00000000000000000000000{{{Df{c}}}{{Df{Ab}}}{}}00000000000{{{Dh{c}}}{{Dh{Ab}}}{}}00000000000{{{Dj{c}}}{{Dj{Ab}}}{}}00000000000{{{B`{c}}}e{}{}}00000000000444444444444444444444444{{}{{Db{cc}}}{}}{d{{Db{BlBl}}}}1111111{{}{{Db{Al}}}}{{}{{Dl{c}}}{}}00000000000888888888888{{}{{Dn{c}}}{}}{{}{{Dn{{Al{c}}}}}{}}0101100101011001101010{AfAf}{BhBh}{{{l{Bd}}}Cd}{{{l{Aj}}}Cd}{{{l{Ah}}Bf}{{Al{{l{A`}}}}}}{{{l{jAh}}Bf}{{Al{{l{jA`}}}}}}{{{l{Ah}}}{{l{{An{A`}}}}}}{{{l{Aj}}}{{l{Bd}}}}`{{{l{jAj}}}{{l{jBd}}}}{{{l{Aj}}}{{l{Cf}}}}{{{l{A`}}}{{l{Cf}}}}`{{{l{h}}{l{h}}Bl}h}{{{l{f}}{l{f}}Bl}f}{{{l{d}}}Bl}`{{dc}d{{Eb{Bl}{{E`{Bl}}}}}}{{dBl}c{}}{hc{}}{{BlBl}d}{{Blh}f}{{hAfAf}A`}{{{l{A`}}Af}Af}{{{l{h}}{l{h}}}{{Al{Bj}}}}{{{l{Ad}}{l{Ad}}}{{Al{Bj}}}}{{{l{Bf}}{l{Bf}}}{{Al{Bj}}}}{{{l{h}}{l{h}}{l{h}}}Ed}{{{l{jAh}}c}Ad{{Ef{D`}}}}{{{l{jAh}}A`}Bf}{Blh}{{{l{Ah}}}h}{{{l{d}}c}C`Eh}{{{l{h}}c}C`Eh}{{{l{f}}c}C`Eh}{{{l{Bd}}c}C`Eh}{{{l{Ah}}c}C`Eh}{{{l{Af}}c}C`Eh}{{{l{Aj}}c}C`Eh}{{{l{A`}}c}C`Eh}{{{l{Ad}}c}C`Eh}{{{l{Bf}}c}C`Eh}{{{l{Bh}}c}C`Eh}{{{l{jA`}}h}n}{{{l{jAj}}{Al{f}}}n}{{{l{jBd}}Cd}n}{{{l{jAh}}h}n}{{{l{jAh}}d}n}{hBl}{{{l{jAh}}}n}{{{l{Aj}}}{{Al{d}}}}{{{l{Aj}}}d}{{dd}c{}}{{df}c{}}{{hh}c{}}{{fh}c{}}{{{l{jh}}h}n}8{lc{}}0000000{{l{Al{{Ej{l}}}}}El}:{lEn}{lF`}{{{l{Ah}}}d}{{}{{C`{c}}}{}}00000000000{c{{C`{e}}}{}{}}00000000000111111111111{{}{{C`{c{Fb{c}}}}}{}}00000000000{lFd}00000000000{ce{}{}}00000000000{{}c{}}00000000000{l{{Al{{l{c}}}}}{}}00000000000{{dd}f}{{Bdc}D`{{Ef{F`}}}}{{A`c}A`{{Ef{F`}}}}``````````````````````````````{eg{}{{b{c}}}{}}000000000{{FfFf}c{}}77777777776666666666{l{{l{Ab}}}}000000000{{{l{j}}}{{l{jAb}}}}000000000{l{{l{c}}}{}}000000000{{{l{j}}}{{l{jc}}}{}}000000000{{{B`{c}}}e{}{}}000000000{{}e{}{{Bb{c}}}}000000000<<<<<<<<<<{{{l{Fh}}}Fh}{{{l{Fj}}}Fj}{{{l{Fl}}}Fl}{{{l{Fn}}}Fn}{{{l{G`}}}G`}{{{l{Gb}}}Gb}{{{l{Ff}}}Ff}{{{l{Gd}}}Gd}{{{l{Gf}}}Gf}{{l{l{jc}}}n{}}00000000{ln}00000000{{{l{Gf}}{l{Gf}}}Bj}{{l{l{c}}}Bj{}}0{ce{}{}}000000000{{}Fh}{{}Gf}{Bn{{l{c}}}{}}{{{l{Fh}}}{{l{c}}}{}}11{{{l{Fj}}}{{l{c}}}{}}2222222{Bn{{l{jc}}}{}}0{{{l{jFh}}}{{l{jc}}}{}}{{{l{jFj}}}{{l{jc}}}{}}22222222{c{{C`{Fj}}}Cb}{c{{C`{Fl}}}Cb}{c{{C`{Fn}}}Cb}{c{{C`{G`}}}Cb}{c{{C`{Gb}}}Cb}{c{{C`{Ff}}}Cb}{c{{C`{Gd}}}Cb}{c{{C`{Gf}}}Cb}{l{{l{c}}}{}}000000000{Bnn}000000000`{{{l{Fh}}{l{Fh}}}Cd}{{{l{Fj}}{l{Fj}}}Cd}{{{l{Fl}}{l{Fl}}}Cd}{{{l{Fn}}{l{Fn}}}Cd}{{{l{G`}}{l{G`}}}Cd}{{{l{Gb}}{l{Gb}}}Cd}{{{l{Ff}}{l{Ff}}}Cd}{{{l{Gd}}{l{Gd}}}Cd}{{{l{Gf}}{l{Gf}}}Cd}{{l{l{c}}}Cd{}}00{{{l{Fh}}{l{jCh}}}Cj}{{{l{Fj}}{l{jCh}}}Cj}{{{l{Fl}}{l{jCh}}}Cj}{{{l{Fn}}{l{jCh}}}Cj}{{{l{G`}}{l{jCh}}}Cj}{{{l{Gb}}{l{jCh}}}Cj}{{{l{Ff}}{l{jCh}}}Cj}{{{l{Gd}}{l{jCh}}}Cj}{{{l{Gf}}{l{jCh}}}Cj}{cc{}}0000000{CdFf}{BlFf}{fFf}3{GhGf}444444444444444444444{ce{}{}}000000000{{{l{Fn}}{l{Ah}}}Ff}{{{l{G`}}{l{Aj}}}Ff}{{{l{Gb}}{l{A`}}}Ff}{{}Bn}000000000{{{l{jFh}}BnFj}n}{{{l{jFj}}Fl}n}{{}c{}}0000000000000000000{{{Df{c}}}{{Df{Ab}}}{}}000000000{{{Dh{c}}}{{Dh{Ab}}}{}}000000000{{{Dj{c}}}{{Dj{Ab}}}{}}000000000{{{B`{c}}}e{}{}}00000000044444444444444444444{{}{{Db{cc}}}{}}000{{}{{Dl{c}}}{}}0000000006666666666{{}{{Dn{c}}}{}}{{}{{Dn{{Al{c}}}}}{}}011001100101010110{GjGj}{FnFj}{{GfGd}Fl}{{{l{Gf}}{l{Gf}}}{{Al{Bj}}}}{{{l{jFh}}Fj}n}{{{l{jFh}}Bn}Fj}{{{l{Fj}}c}C`Eh}{{{l{Fl}}c}C`Eh}{{{l{Fn}}c}C`Eh}{{{l{G`}}c}C`Eh}{{{l{Gb}}c}C`Eh}{{{l{Ff}}c}C`Eh}{{{l{Gd}}c}C`Eh}{{{l{Gf}}c}C`Eh}{{{l{jFj}}BnGf}n}{{{l{jFh}}cBl}n{{Ef{{Gl{Cf}}}}}}{{{l{Fh}}}Gj}{{GfGf}c{}}{{{l{Gd}}Ff}Ff}{lc{}}00000000{{}{{C`{c}}}{}}000000000{c{{C`{e}}}{}{}}000000000{Gn{{C`{Gfc}}}{}}2222222222{{}{{C`{c{Fb{c}}}}}{}}000000000{lFd}000000000{ce{}{}}000000000{{}c{}}000000000{l{{Al{{l{c}}}}}{}}000000000{{{l{jGj}}Gn{l{jAh}}}Cd}{{{l{Fn}}Ff{l{jAh}}}n}{{{l{G`}}Ff{l{jAj}}}n}{{{l{Gb}}Ff{l{jA`}}}n}`{{{l{Fh}}{l{Cf}}}{{Al{Bl}}}}{{FhFj}Fh}{{FlH`}Fl}{{FjFl}Fj}{{FhcBl}Fh{{Ef{F`}}}}````````````{eg{}{{b{c}}}{}}00<<<;;;{l{{l{Ab}}}}00{{{l{j}}}{{l{jAb}}}}00{l{{l{c}}}{}}00{{{l{j}}}{{l{jc}}}{}}00{{{B`{c}}}e{}{}}00{{}e{}{{Bb{c}}}}00{{}c{}}00{{{l{Hb}}}Hb}{{{l{Hd}}}Hd}{{l{l{jc}}}n{}}0{ln}0{ce{}{}}00{Bn{{l{c}}}{}}00{Bn{{l{jc}}}{}}00;;;{Bnn}00{{{l{Hb}}{l{Hb}}}Cd}{{{l{Hd}}{l{Hd}}}Cd}{{l{l{c}}}Cd{}}00{{{l{Hf}}{l{jCh}}}Cj}{{{l{Hb}}{l{jCh}}}Cj}{{{l{Hd}}{l{jCh}}}Cj}{cc{}}00000000:::{{{l{jHf}}{Hj{Hh}}{l{jHl}}}Cd}{{{l{jHf}}{Hj{Hh}}{l{jHl}}}{{Al{Hn}}}}{{}Bn}00{{}c{}}00000{{{Df{c}}}{{Df{Ab}}}{}}00{{{Dh{c}}}{{Dh{Ab}}}{}}0{{{Dj{c}}}{{Dj{Ab}}}{}}00{{{B`{c}}}e{}{}}00444444{{}{{Db{cc}}}{}}0{{}{{Dl{c}}}{}}00666{{}{{Dn{{Al{c}}}}}{}}{{}{{Dn{c}}}{}}1001{{{l{jHf}}{Ib{I`}}{l{jId}}}{{Ib{If}}}}{{}Ih}{IjIh}{{{l{Hf}}}{{l{{Il{Bl}}}}}}0{{{l{jHf}}{Hj{Hh}}InJ`{l{jHl}}}Jb}{{{l{jHf}}{Hj{Hh}}InJ`{l{jHl}}}n}{{{l{jHf}}{Al{{Hj{Hh}}}}InJ`{l{jHl}}}n}{{{l{jHf}}InJdJf{l{jHl}}}Jb}{{{Il{Ah}}}Hf}{{Hfc}Hf{{Eb{Hd}}Jh}}{{{l{jc}}}{{C`{{Al{Jj}}Jl}}}{JnK`}}{{{l{jHf}}{l{jKb}}}n}{{}{{C`{nJl}}}}{Kd{{C`{nJl}}}}:{lc{}}0{{}{{C`{c}}}{}}00{c{{C`{e}}}{}{}}00111{{}{{C`{c{Fb{c}}}}}{}}00{lFd}00{ce{}{}}00{{}c{}}00{{{l{jHf}}{l{jHl}}}n}{l{{Al{{l{c}}}}}{}}00````","D":"AAf","p":[[10,"TransformMatrix",1428],[5,"Coordinate",0],[5,"Vector",0],[5,"Angle",0],[0,"mut"],[1,"reference"],[1,"unit"],[5,"Joint",0],[10,"Any",1429],[5,"BoneId",0],[5,"BoneAxis",0],[5,"Skeleton",0],[5,"Bone",0],[6,"Option",1430],[1,"slice"],[5,"BakedParameters",1431],[10,"CastFrom",1432],[6,"BoneKind",0],[5,"JointId",0],[6,"BoneEnd",0],[6,"Ordering",1433],[1,"f32"],[1,"usize"],[6,"Result",1434],[10,"Deserializer",1435],[1,"bool"],[1,"str"],[5,"Formatter",1436],[8,"Result",1436],[5,"WidgetContext",1437],[5,"Error",1436],[5,"LabeledBoneKind",0],[1,"tuple"],[10,"Hasher",1438],[5,"Box",1439],[5,"Arc",1440],[5,"Rc",1441],[6,"ReadOnly",1442],[6,"Value",1442],[17,"Output"],[10,"FnMut",1443],[5,"ZeroToOne",1444],[10,"Into",1445],[10,"Serializer",1446],[5,"RangeInclusive",1447],[6,"Progress",1448],[5,"SmolStr",1449],[5,"String",1450],[5,"OutOfBounds",1451],[5,"TypeId",1429],[6,"Value",713],[5,"Animation",713],[5,"Timeline",713],[5,"Keyframe",713],[6,"Target",713],[6,"BoneProperty",713],[6,"JointProperty",713],[6,"PropertyUpdate",713],[5,"Frame",713],[1,"u32"],[5,"RunningAnimation",713],[6,"Cow",1452],[5,"Duration",1453],[6,"StandardEasing",1454],[6,"Target",1261],[6,"SkeletonMutation",1261],[5,"SkeletonCanvas",1261],[5,"Px",1455],[5,"Point",1456],[5,"EventContext",1437],[6,"CursorIcon",1457],[6,"ConstraintLimit",1458],[5,"Size",1459],[5,"LayoutContext",1437],[5,"UPx",1455],[5,"WidgetInstance",1460],[5,"WidgetTag",1460],[5,"Dynamic",1442],[6,"DeviceId",1461],[6,"MouseButton",1462],[8,"EventHandling",1460],[6,"MouseScrollDelta",1462],[6,"TouchPhase",1462],[10,"Send",1463],[5,"WindowHandle",1461],[6,"EventLoopError",1464],[10,"Application",1465],[10,"Sized",1463],[5,"GraphicsContext",1437],[5,"PendingApp",1465],[15,"Jointed",709],[15,"Rigid",709],[15,"Bone",1256],[15,"Joint",1256],[15,"SetDesiredEnd",1424],[15,"SetJointRotation",1424]],"r":[],"b":[[30,"impl-Add-for-Coordinate"],[31,"impl-Add%3CVector%3E-for-Coordinate"],[33,"impl-Add-for-Vector"],[34,"impl-Add%3CAngle%3E-for-Vector"],[294,"impl-Display-for-Angle"],[295,"impl-Debug-for-Angle"],[365,"impl-Index%3CJointId%3E-for-Skeleton"],[366,"impl-Index%3CBoneId%3E-for-Skeleton"],[369,"impl-IndexMut%3CJointId%3E-for-Skeleton"],[370,"impl-IndexMut%3CBoneId%3E-for-Skeleton"],[589,"impl-Sub-for-Coordinate"],[590,"impl-Sub%3CVector%3E-for-Coordinate"],[962,"impl-From%3Cbool%3E-for-Value"],[963,"impl-From%3Cf32%3E-for-Value"],[964,"impl-From%3CVector%3E-for-Value"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAAkFHgATABEAJgAwAF4AZQDHAAMAzAAgAO8AGAALARYAJQENADQBAAA4AQAAQQElAGgBAwBuAQEAcgENAIwBjQAnAgEALAIBADICAwA6AgoATgIEAFQCCABeAgEAYQJfAMoC8ADDAwIAxwMAAMkDLAAABC8BMwUNAEQFUAA="}]]')); +var searchIndex = new Map(JSON.parse('[["FunnyBones",{"t":"PPFGFONNNHNNNNNNNNNNNNNHHHNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOOHOHNNNNNNNNNNNNNNNNNNNNNNNNNNN","n":["Animation","Bones","EditingSkeleton","Mode","SkeletalBone","a_bones","adapt_into_using","","","add_bones_to_skeleton","arrays_from","","","arrays_into","","","as_any","","","as_any_mut","","","as_bone_kind","bone_editor","bone_property_editor","bones_editor","borrow","","","borrow_mut","","","cam16_into_unclamped","","","cast","","","cast_into","","","clone","","","clone_into","","","clone_to_uninit","","","components_from","","","connected_bones","default","","","deref","","","deref_mut","","","desired_length","downcast","","","drop","","","eq","","","equivalent","","","find_bone","find_bone_in","find_joint","find_joint_in","fmt","","","from","","","from_angle","","","from_cast","","","from_stimulus","","","init","","","into","","","into_angle","","","into_any","","","into_any_arc","","","into_any_rc","","","into_cam16_unclamped","","","into_color","","","into_color_unclamped","","","into_components","into_read_only","","","into_stimulus","","","into_value","","","","","","inverse","joint_angle","joint_label","joint_ratio","jointed","label","length","main","root","skeleton_editor","to_owned","","","try_components_into","","","try_from","","","try_into","","","try_into_color","","","type_id","","","uints_from","","","uints_into","","","upcast","",""],"q":[[0,"FunnyBones"],[172,"palette::chromatic_adaptation"],[173,"funnybones"],[174,"alloc::vec"],[175,"cushy::value"],[176,"core::any"],[177,"cushy::widget"],[178,"palette::cam16::parameters"],[179,"intentional::cast"],[180,"core::option"],[181,"core::ops::control_flow"],[182,"core::fmt"],[183,"alloc::boxed"],[184,"alloc::sync"],[185,"alloc::rc"],[186,"cushy"],[187,"core::result"],[188,"palette::convert::try_from_into_color"]],"i":"Bh0```Bj10f`2102102102100```21021021021021021021021021002102102100210210210222111121021021021021021021021021021021021021021022102102211000000000`1`210210210210210210210210210","f":"``````{eg{}{{b{c}}}{}}00{{d{l{{j{{h{f}}}}}}{l{nA`}}}Ab}{ce{}{}}00{{}c{}}00{l{{l{Ad}}}}00{{{l{n}}}{{l{nAd}}}}00{{{l{f}}}{{Aj{AfAh}}}}{{f{l{Al}}}{{`{An}}}}{{f{l{Al}}B`}{{`{An}}}}{{{l{Bb}}{l{{j{{h{f}}}}}}{l{Al}}}{{`{An}}}}{l{{l{c}}}{}}00{{{l{n}}}{{l{nc}}}{}}00{{{Bd{c}}}e{}{}}00{{}e{}{{Bf{c}}}}00:::{{{l{Bh}}}Bh}{{{l{Bj}}}Bj}{{{l{f}}}f}{{l{l{nc}}}Ab{}}00{lAb}00{ce{}{}}00`{{}Bh}{{}Bj}{{}f}{Bl{{l{c}}}{}}00{Bl{{l{nc}}}{}}00`>>>{BlAb}00{{{l{Bh}}{l{Bh}}}B`}{{{l{Bj}}{l{Bj}}}B`}{{{l{f}}{l{f}}}B`}{{l{l{c}}}B`{}}00{{{l{Bj}}Bn}{{C`{f}}}}{{{l{{j{{h{f}}}}}}Bl}{{Cb{fBl}}}}{{{l{Bj}}Cd}{{C`{f}}}}1{{{l{Bh}}{l{nCf}}}Ch}{{{l{Bj}}{l{nCf}}}Ch}{{{l{f}}{l{nCf}}}Ch}{cc{}}00000000{ce{}{}}00{{}Bl}00{{}c{}}00000{{{Cj{c}}}{{Cj{Ad}}}{}}00{{{Cl{c}}}{{Cl{Ad}}}{}}00{{{Cn{c}}}{{Cn{Ad}}}{}}00{{{Bd{c}}}e{}{}}00444444{{}{{Aj{cc}}}{}}{{}{{D`{c}}}{}}00666{{}{{Db{c}}}{}}{{}{{Db{{C`{c}}}}}{}}0110```````{{}Dd}`{{{l{Bj}}{l{Al}}}{{`{An}}}}{lc{}}00{{}{{Df{c}}}{}}00{c{{Df{e}}}{}{}}00111{{}{{Df{c{Dh{c}}}}}{}}00{lDj}00{ce{}{}}00{{}c{}}00{l{{C`{{l{c}}}}}{}}00","D":"n","p":[[10,"TransformMatrix",172],[5,"BoneAxis",173],[5,"SkeletalBone",0],[5,"Vec",174],[5,"Dynamic",175],[1,"reference"],[0,"mut"],[5,"Skeleton",173],[1,"unit"],[10,"Any",176],[5,"LabeledBoneKind",173],[5,"Vector",173],[1,"tuple"],[5,"Watcher",175],[10,"MakeWidget",177],[1,"bool"],[1,"str"],[5,"BakedParameters",178],[10,"CastFrom",179],[6,"Mode",0],[5,"EditingSkeleton",0],[1,"usize"],[5,"BoneId",173],[6,"Option",180],[6,"ControlFlow",181],[5,"JointId",173],[5,"Formatter",182],[8,"Result",182],[5,"Box",183],[5,"Arc",184],[5,"Rc",185],[6,"ReadOnly",175],[6,"Value",175],[8,"Result",186],[6,"Result",187],[5,"OutOfBounds",188],[5,"TypeId",176]],"r":[],"b":[],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAKUAAwABAFIAVwALAGYARgA="}],["funnybones",{"t":"PFPFFGFGFFFPFTTPFFFNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNONNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOOOOPPFPGPPFPPPGFTTPGFGPFGPTNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNOOOOCPPPPFGGNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOOOO","n":["A","Angle","B","Bone","BoneAxis","BoneEnd","BoneId","BoneKind","Coordinate","Joint","JointId","Jointed","LabeledBoneKind","MAX","MIN","Rigid","Rotation","Skeleton","Vector","adapt_into_using","","","","","","","","","","","","","add","","","","","add_assign","angle","animation","arrays_from","","","","","","","","","","","","","arrays_into","","","","","","","","","","","","","as_any","","","","","","","","","","","","","as_any_mut","","","","","","","","","","","","","as_rotation","axis_a","axis_b","bone","","bone_mut","bones","borrow","","","","","","","","","","","","","borrow_mut","","","","","","","","","","","","","cam16_into_unclamped","","","","","","","","","","","","","cast","","","","","","","","","","","","","cast_into","","","","","","","","","","","","","clamped","clone","","","","","","","","","clone_into","","","","","","","","","clone_to_uninit","","","","","","","","","cmp","","compare","","","","components_from","","","","","","","","","","","","","connections_to","cos","cushy","default","","","","","degrees","","deref","","","","","","","","","","","","","deref_mut","","","","","","","","","","","","","deserialize","","","","","","","","","desired_end","direction","div","downcast","","","","","","","","","","","","","drop","","","","","","","","","","","","","end","","entry_angle","eq","","","","","","","","","","","","equivalent","","","","","","","","","","","","final_vector","find_bone_by_label","find_joint_by_label","fmt","","","","","","","","","","","","","","from","","","","","","","","","","","","","","","","","","from_angle","","","","","","","","","","","","","from_cast","","","","","","","","","","","","","from_components","from_parts","","from_stimulus","","","","","","","","","","","","","full_length","hash","","","","id","","index","","","","index_mut","","init","","","","","","","","","","","","","into","","","","","","","","","","","","","into_angle","","","","","","","","","","","","","into_any","","","","","","","","","","","","","into_any_arc","","","","","","","","","","","","","into_any_rc","","","","","","","","","","","","","into_cam16_unclamped","","","","","","","","","","","","","into_color","","","","","","","","","","","","","into_color_unclamped","","","","","","","","","","","","","into_components","","","","","","","","","","into_parts","","into_read_only","","","","","","","","","","","","","into_stimulus","","","","","","","","","","","","","into_value","","","","","","","","","","","","","","","","","","","","","","","","","","inverse","","is_inverse","is_root","joint","joint_mut","joints","kind","","kind_mut","label","","","lerp","","","magnitude","","map","mul","neg","new","","","other_axis","partial_cmp","","","","percent_between","","push_bone","push_joint","radians","","rotation","serialize","","","","","","","","","","","set_angle","set_desired_end","set_inverse","set_rotation","set_translation","sin","solve","solved_joint","start","sub","","","","sub_assign","to_degrees","to_owned","","","","","","","","","to_progress","to_radians","to_smolstr","to_string","translation","try_components_into","","","","","","","","","","","","","try_from","","","","","","","","","","","","","try_into","","","","","","","","","","","","","try_into_color","","","","","","","","","","","","","type_id","","","","","","","","","","","","","uints_from","","","","","","","","","","","","","uints_into","","","","","","","","","","","","","upcast","","","","","","","","","","","","","vector_to","with_label","","x","y","end_length","inverse","length","start_length","Add","Angle","Animation","Bone","BoneProperty","Bool","ChangeTo","Frame","Invalid","Inverse","Joint","JointProperty","Keyframe","MAX","MIN","Number","PropertyUpdate","RunningAnimation","Target","","Timeline","Value","Vector","ZERO","adapt_into_using","","","","","","","","","","add","arrays_from","","","","","","","","","","arrays_into","","","","","","","","","","as_any","","","","","","","","","","as_any_mut","","","","","","","","","","borrow","","","","","","","","","","borrow_mut","","","","","","","","","","cam16_into_unclamped","","","","","","","","","","cast","","","","","","","","","","cast_into","","","","","","","","","","clone","","","","","","","","","clone_into","","","","","","","","","clone_to_uninit","","","","","","","","","cmp","compare","","components_from","","","","","","","","","","default","","deref","","","","","","","","","","","","deref_mut","","","","","","","","","","","","deserialize","","","","","","","","downcast","","","","","","","","","","drop","","","","","","","","","","easing","eq","","","","","","","","","equivalent","","","fmt","","","","","","","","","from","","","","","","","","","","","","","","from_angle","","","","","","","","","","from_cast","","","","","","","","","","from_stimulus","","","","","","","","","","get","","","init","","","","","","","","","","insert","insert_frame","into","","","","","","","","","","into_angle","","","","","","","","","","into_any","","","","","","","","","","into_any_arc","","","","","","","","","","into_any_rc","","","","","","","","","","into_cam16_unclamped","","","","","","","","","","into_color","","","","","","","","","","into_color_unclamped","","","","","","","","","","into_components","","","","into_read_only","","","","","","","","","","into_stimulus","","","","","","","","","","into_value","","","","","","","","","","","","","","","","","","","","looping","new","","partial_cmp","push","remove","serialize","","","","","","","","set_frame_offset","set_variable","start","sub","target","to_owned","","","","","","","","","try_components_into","","","","","","","","","","try_from","","","","","","","","","","","try_into","","","","","","","","","","try_into_color","","","","","","","","","","type_id","","","","","","","","","","uints_from","","","","","","","","","","uints_into","","","","","","","","","","upcast","","","","","","","","","","update","","","","","variable","with","with_easing","with_frame","with_variable","bone","joint","property","","skeleton_canvas","DesiredEnd","Joint","SetDesiredEnd","SetJointRotation","SkeletonCanvas","SkeletonMutation","Target","adapt_into_using","","","arrays_from","","","arrays_into","","","as_any","","","as_any_mut","","","borrow","","","borrow_mut","","","cam16_into_unclamped","","","cast","","","cast_into","","","clone","","clone_into","","clone_to_uninit","","components_from","","","deref","","","deref_mut","","","downcast","","","drop","","","eq","","equivalent","","","fmt","","","from","","","from_angle","","","from_cast","","","from_stimulus","","","hit_test","hover","init","","","into","","","into_angle","","","into_any","","","into_any_arc","","into_any_rc","","","into_cam16_unclamped","","","into_color","","","into_color_unclamped","","","into_components","","into_read_only","","","into_stimulus","","","into_value","","","","","","layout","make_widget","make_with_tag","maximum_scale","minimum_scale","mouse_down","mouse_drag","mouse_up","mouse_wheel","new","on_mutate","open","redraw","run","run_in","scale","to_owned","","try_components_into","","","try_from","","","try_into","","","try_into_color","","","type_id","","","uints_from","","","uints_into","","","unhover","upcast","","","bone","end","joint","rotation"],"q":[[0,"funnybones"],[768,"funnybones::BoneKind"],[772,"funnybones::animation"],[1315,"funnybones::animation::Target"],[1319,"funnybones::cushy"],[1320,"funnybones::cushy::skeleton_canvas"],[1483,"funnybones::cushy::skeleton_canvas::SkeletonMutation"],[1487,"palette::chromatic_adaptation"],[1488,"core::any"],[1489,"core::option"],[1490,"palette::cam16::parameters"],[1491,"intentional::cast"],[1492,"core::cmp"],[1493,"core::result"],[1494,"serde::de"],[1495,"core::fmt"],[1496,"cushy::context"],[1497,"core::hash"],[1498,"alloc::boxed"],[1499,"alloc::sync"],[1500,"alloc::rc"],[1501,"cushy::value"],[1502,"core::ops::function"],[1503,"cushy::animation"],[1504,"core::convert"],[1505,"serde::ser"],[1506,"core::ops::range"],[1507,"cushy::widgets::progress"],[1508,"smol_str"],[1509,"alloc::string"],[1510,"palette::convert::try_from_into_color"],[1511,"alloc::borrow"],[1512,"core::time"],[1513,"easing_function::easings"],[1514,"figures::units"],[1515,"figures::point"],[1516,"cursor_icon"],[1517,"cushy"],[1518,"figures::size"],[1519,"cushy::widget"],[1520,"cushy::window"],[1521,"winit::event"],[1522,"core::marker"],[1523,"winit::error"],[1524,"cushy::app"]],"i":"Bj`0````````Bf`Bd01```Dbd2hf5AhAfAjA`AdBh<8876672`98:76;543210<98:76;543210<98:76;543210<98:76;543210<811545598:76;543210<98:76;543210<98:76;543210<98:76;543210<98:76;543210<78:76;410<8:76;410<8:76;410<10110098:76;543210<57`8:765:798:76;543210<98:76;543210<876;5410<36898:76;543210<98:76;543210<3438:76;543210<444111000<<<3558:7776;543210<9988::7766;543210<98:76;543210<98:76;543210<8:798:76;543210<;410<3255105598:76;543210<98:76;543210<98:76;543210<98:76;543210<98:76;543210<98:76;543210<98:76;543210<98:76;543210<98:76;543210<88:76;410<:798:76;543210<98:76;543210<9988::7766;;554433221100<<4<;3555393329:76868878622:710:755:75876;543210<23;5575338876778:76;410<:777598:76;543210<98:76;543210<98:76;543210<98:76;543210<98:76;543210<98:76;543210<98:76;543210<98:76;543210<8;288Kh0Kj1GfGd`G``Fh3`0Gb2``Gh02```1``20GlFjFlFn75869463210758694321075869432107586943210758694321075869432107586943210758694321075869432107586942107586942107586942107586944443210758694243221107586943221107586941075869432107586943210758694021075869444421075869432107586666944321075869432107586943210758694758321075869421321075869432107586943210758694321075869432107586943210758694321075869432107586940694321075869432107586943322110077558866994431042210758694122492107586943210758694321075869443210758694321075869432107586943210758694321075869432107586943758022012KlKn10`Hd0Hf0```Hh21021021021021021021021021021212121021021021021021212220210210210210210002102102102121021021021021210210210022110000000000000000210210210210210210210210021L`0Lb0","f":"```````````````````{eg{}{{b{c}}}{}}000000000000{{dd}c{}}{{df}c{}}{{hh}c{}}{{fh}c{}}{{ff}c{}}{{{l{jh}}h}n}{{{l{A`}}}h}`{ce{}{}}000000000000{{}c{}}000000000000{l{{l{Ab}}}}000000000000{{{l{j}}}{{l{jAb}}}}000000000000{dh}{AdAf}0{{{l{Ah}}Ad}{{Al{{l{Aj}}}}}}`{{{l{jAh}}Ad}{{Al{{l{jAj}}}}}}{{{l{Ah}}}{{l{{An{Aj}}}}}}{l{{l{c}}}{}}000000000000{{{l{j}}}{{l{jc}}}{}}000000000000{{{B`{c}}}e{}{}}000000000000{{}e{}{{Bb{c}}}}000000000000;;;;;;;;;;;;;{hh}{{{l{d}}}d}{{{l{Bd}}}Bd}{{{l{h}}}h}{{{l{f}}}f}{{{l{Bf}}}Bf}{{{l{Af}}}Af}{{{l{Ad}}}Ad}{{{l{Bh}}}Bh}{{{l{Bj}}}Bj}{{l{l{jc}}}n{}}00000000{ln}00000000{{{l{Ad}}{l{Ad}}}Bl}{{{l{Bh}}{l{Bh}}}Bl}{{l{l{c}}}Bl{}}000{ce{}{}}000000000000{{{l{Ah}}Af}{{Al{{l{{An{Bh}}}}}}}}{hBn}`{{}d}{{}Bd}{{}h}{{}f}{{}Ah}{BnBd}{Bnh}{C`{{l{c}}}{}}000000000000{C`{{l{jc}}}{}}000000000000{c{{Cb{d}}}Cd}{c{{Cb{h}}}Cd}{c{{Cb{f}}}Cd}{c{{Cb{Bf}}}Cd}{c{{Cb{Ah}}}Cd}{c{{Cb{Af}}}Cd}{c{{Cb{Ad}}}Cd}{c{{Cb{Bh}}}Cd}{c{{Cb{Bj}}}Cd}{{{l{Aj}}}{{Al{f}}}}`{{dBn}c{}}{l{{l{c}}}{}}000000000000{C`n}000000000000{{{l{Aj}}}d}`{{{l{Aj}}}h}{{{l{d}}{l{d}}}Cf}{{{l{Bd}}{l{Bd}}}Cf}{{{l{h}}{l{h}}}Cf}{{{l{f}}{l{f}}}Cf}{{{l{Bf}}{l{Bf}}}Cf}{{{l{Ah}}{l{Ah}}}Cf}{{{l{Af}}{l{Af}}}Cf}{{{l{Aj}}{l{Aj}}}Cf}{{{l{A`}}{l{A`}}}Cf}{{{l{Ad}}{l{Ad}}}Cf}{{{l{Bh}}{l{Bh}}}Cf}{{{l{Bj}}{l{Bj}}}Cf}{{l{l{c}}}Cf{}}00000000000{{{l{Aj}}}f}{{{l{Ah}}{l{Ch}}}{{Al{Ad}}}}{{{l{Ah}}{l{Ch}}}{{Al{Bh}}}}{{{l{d}}{l{jCj}}}Cl}{{{l{Bd}}{l{jCj}}}Cl}{{l{l{Cn}}{l{jCj}}}{{Cb{nD`}}}}{{{l{h}}{l{jCj}}}Cl}0{{{l{f}}{l{jCj}}}Cl}{{{l{Bf}}{l{jCj}}}Cl}{{{l{Ah}}{l{jCj}}}Cl}{{{l{Af}}{l{jCj}}}Cl}{{{l{Aj}}{l{jCj}}}Cl}{{{l{A`}}{l{jCj}}}Cl}{{{l{Ad}}{l{jCj}}}Cl}{{{l{Bh}}{l{jCj}}}Cl}{{{l{Bj}}{l{jCj}}}Cl}{cc{}}{BfDb}{fd}2{hBd}3{Bdh}4{df}55555555555555555555555555555555555{{{Dd{BnBn}}}d}{Alc{}}0{ce{}{}}000000000000{{{l{Bf}}}Bn}{{{l{Af}}{l{jc}}}nDf}{{{l{Ad}}{l{jc}}}nDf}{{{l{Bh}}{l{jc}}}nDf}{{{l{Bj}}{l{jc}}}nDf}{{{l{Aj}}}Ad}{{{l{A`}}}Bh}{{{l{Ah}}Bh}{{l{c}}}{}}{{{l{Ah}}Ad}{{l{c}}}{}}{AdC`}{BhC`}{{{l{jAh}}Ad}{{l{jc}}}{}}{{{l{jAh}}Bh}{{l{jc}}}{}}{{}C`}000000000000{{}c{}}0000000000000000000000000{{{Dh{c}}}{{Dh{Ab}}}{}}000000000000{{{Dj{c}}}{{Dj{Ab}}}{}}000000000000{{{Dl{c}}}{{Dl{Ab}}}{}}000000000000{{{B`{c}}}e{}{}}00000000000044444444444444444444444444{{}{{Dd{cc}}}{}}{d{{Dd{BnBn}}}}11111111{{}{{Dd{Al}}}}0{{}{{Dn{c}}}{}}0000000000008888888888888{{}{{E`{{Al{c}}}}}{}}{{}{{E`{c}}}{}}100101100101011001011001{AfAf}{BjBj}{{{l{Bf}}}Cf}{{{l{Aj}}}Cf}{{{l{Ah}}Bh}{{Al{{l{A`}}}}}}{{{l{jAh}}Bh}{{Al{{l{jA`}}}}}}{{{l{Ah}}}{{l{{An{A`}}}}}}{{{l{Aj}}}{{l{Bf}}}}`{{{l{jAj}}}{{l{jBf}}}}{{{l{Aj}}}{{l{Ch}}}}{{{l{A`}}}{{l{Ch}}}}`{{{l{Bd}}{l{Bd}}Bn}Bd}{{{l{h}}{l{h}}Bn}h}{{{l{f}}{l{f}}Bn}f}{{{l{d}}}Bn}`{{dc}d{{Ed{Bn}{{Eb{Bn}}}}}}{{dBn}c{}}{hc{}}{{BnBn}d}{{Bnh}f}{{hAfAf}A`}{{{l{A`}}Af}Af}{{{l{Bd}}{l{Bd}}}{{Al{Bl}}}}{{{l{h}}{l{h}}}{{Al{Bl}}}}{{{l{Ad}}{l{Ad}}}{{Al{Bl}}}}{{{l{Bh}}{l{Bh}}}{{Al{Bl}}}}{{{l{Bd}}{l{Bd}}{l{Bd}}}Ef}{{{l{h}}{l{h}}{l{h}}}Ef}{{{l{jAh}}c}Ad{{Eh{Db}}}}{{{l{jAh}}A`}Bh}{BnBd}{Bnh}{{{l{Ah}}}h}{{{l{d}}c}CbEj}{{{l{h}}c}CbEj}{{{l{f}}c}CbEj}{{{l{Bf}}c}CbEj}{{{l{Ah}}c}CbEj}{{{l{Af}}c}CbEj}{{{l{Aj}}c}CbEj}{{{l{A`}}c}CbEj}{{{l{Ad}}c}CbEj}{{{l{Bh}}c}CbEj}{{{l{Bj}}c}CbEj}{{{l{jA`}}h}n}{{{l{jAj}}{Al{f}}}n}{{{l{jBf}}Cf}n}{{{l{jAh}}h}n}{{{l{jAh}}d}n}{hBn}{{{l{jAh}}}n}{{{l{Aj}}}{{Al{d}}}}{{{l{Aj}}}d}{{dd}c{}}{{df}c{}}{{hh}c{}}{{fh}c{}}{{{l{jh}}h}n}8{lc{}}00000000{{l{Al{{El{l}}}}}En}:{lF`}{lFb}{{{l{Ah}}}d}{{}{{Cb{c}}}{}}000000000000{c{{Cb{e}}}{}{}}0000000000001111111111111{{}{{Cb{c{Fd{c}}}}}{}}000000000000{lFf}000000000000{ce{}{}}000000000000{{}c{}}000000000000{l{{Al{{l{c}}}}}{}}000000000000{{dd}f}{{Bfc}Db{{Eh{Fb}}}}{{A`c}A`{{Eh{Fb}}}}``````````````````````````````{eg{}{{b{c}}}{}}000000000{{FhFh}c{}}77777777776666666666{l{{l{Ab}}}}000000000{{{l{j}}}{{l{jAb}}}}000000000{l{{l{c}}}{}}000000000{{{l{j}}}{{l{jc}}}{}}000000000{{{B`{c}}}e{}{}}000000000{{}e{}{{Bb{c}}}}000000000<<<<<<<<<<{{{l{Fj}}}Fj}{{{l{Fl}}}Fl}{{{l{Fn}}}Fn}{{{l{G`}}}G`}{{{l{Gb}}}Gb}{{{l{Gd}}}Gd}{{{l{Fh}}}Fh}{{{l{Gf}}}Gf}{{{l{Gh}}}Gh}{{l{l{jc}}}n{}}00000000{ln}00000000{{{l{Gh}}{l{Gh}}}Bl}{{l{l{c}}}Bl{}}0{ce{}{}}000000000{{}Fj}{{}Gh}{C`{{l{c}}}{}}0{{{l{Fj}}}{{l{c}}}{}}1{{{l{Fl}}}{{l{c}}}{}}2222222{C`{{l{jc}}}{}}0{{{l{jFj}}}{{l{jc}}}{}}1{{{l{jFl}}}{{l{jc}}}{}}2222222{c{{Cb{Fl}}}Cd}{c{{Cb{Fn}}}Cd}{c{{Cb{G`}}}Cd}{c{{Cb{Gb}}}Cd}{c{{Cb{Gd}}}Cd}{c{{Cb{Fh}}}Cd}{c{{Cb{Gf}}}Cd}{c{{Cb{Gh}}}Cd}{l{{l{c}}}{}}000000000{C`n}000000000`{{{l{Fj}}{l{Fj}}}Cf}{{{l{Fl}}{l{Fl}}}Cf}{{{l{Fn}}{l{Fn}}}Cf}{{{l{G`}}{l{G`}}}Cf}{{{l{Gb}}{l{Gb}}}Cf}{{{l{Gd}}{l{Gd}}}Cf}{{{l{Fh}}{l{Fh}}}Cf}{{{l{Gf}}{l{Gf}}}Cf}{{{l{Gh}}{l{Gh}}}Cf}{{l{l{c}}}Cf{}}00{{{l{Fj}}{l{jCj}}}Cl}{{{l{Fl}}{l{jCj}}}Cl}{{{l{Fn}}{l{jCj}}}Cl}{{{l{G`}}{l{jCj}}}Cl}{{{l{Gb}}{l{jCj}}}Cl}{{{l{Gd}}{l{jCj}}}Cl}{{{l{Fh}}{l{jCj}}}Cl}{{{l{Gf}}{l{jCj}}}Cl}{{{l{Gh}}{l{jCj}}}Cl}{cc{}}000000{CfFh}1{fFh}{BnFh}3{GjGh}444444444444444444444{ce{}{}}000000000{{{l{G`}}{l{Ah}}}Fh}{{{l{Gb}}{l{Aj}}}Fh}{{{l{Gd}}{l{A`}}}Fh}{{}C`}000000000{{{l{jFj}}C`Fl}n}{{{l{jFl}}Fn}n}{{}c{}}0000000000000000000{{{Dh{c}}}{{Dh{Ab}}}{}}000000000{{{Dj{c}}}{{Dj{Ab}}}{}}000000000{{{Dl{c}}}{{Dl{Ab}}}{}}000000000{{{B`{c}}}e{}{}}00000000044444444444444444444{{}{{Dd{cc}}}{}}000{{}{{Dn{c}}}{}}0000000006666666666{{}{{E`{c}}}{}}{{}{{E`{{Al{c}}}}}{}}100110101010011010{GlGl}{G`Fl}{{GhGf}Fn}{{{l{Gh}}{l{Gh}}}{{Al{Bl}}}}{{{l{jFj}}Fl}n}{{{l{jFj}}C`}Fl}{{{l{Fl}}c}CbEj}{{{l{Fn}}c}CbEj}{{{l{G`}}c}CbEj}{{{l{Gb}}c}CbEj}{{{l{Gd}}c}CbEj}{{{l{Fh}}c}CbEj}{{{l{Gf}}c}CbEj}{{{l{Gh}}c}CbEj}{{{l{jFl}}C`Gh}n}{{{l{jFj}}cBn}n{{Eh{{Gn{Ch}}}}}}{{{l{Fj}}}Gl}{{GhGh}c{}}{{{l{Gf}}Fh}Fh}{lc{}}00000000{{}{{Cb{c}}}{}}000000000{c{{Cb{e}}}{}{}}000000000{H`{{Cb{Ghc}}}{}}2222222222{{}{{Cb{c{Fd{c}}}}}{}}000000000{lFf}000000000{ce{}{}}000000000{{}c{}}000000000{l{{Al{{l{c}}}}}{}}000000000{{{l{jGl}}H`{l{jAh}}}Cf}{{{l{G`}}Fh{l{jAh}}}n}{{{l{Gb}}Fh{l{jAj}}}n}{{{l{Gd}}Fh{l{jA`}}}n}`{{{l{Fj}}{l{Ch}}}{{Al{Bn}}}}{{FjFl}Fj}{{FnHb}Fn}{{FlFn}Fl}{{FjcBn}Fj{{Eh{Fb}}}}````````````{eg{}{{b{c}}}{}}00<<<;;;{l{{l{Ab}}}}00{{{l{j}}}{{l{jAb}}}}00{l{{l{c}}}{}}00{{{l{j}}}{{l{jc}}}{}}00{{{B`{c}}}e{}{}}00{{}e{}{{Bb{c}}}}00{{}c{}}00{{{l{Hd}}}Hd}{{{l{Hf}}}Hf}{{l{l{jc}}}n{}}0{ln}0{ce{}{}}00{C`{{l{c}}}{}}00{C`{{l{jc}}}{}}00;;;{C`n}00{{{l{Hd}}{l{Hd}}}Cf}{{{l{Hf}}{l{Hf}}}Cf}{{l{l{c}}}Cf{}}00{{{l{Hh}}{l{jCj}}}Cl}{{{l{Hd}}{l{jCj}}}Cl}{{{l{Hf}}{l{jCj}}}Cl}{cc{}}00000000:::{{{l{jHh}}{Hl{Hj}}{l{jHn}}}Cf}{{{l{jHh}}{Hl{Hj}}{l{jHn}}}{{Al{I`}}}}{{}C`}00{{}c{}}00000{{{Dh{c}}}{{Dh{Ab}}}{}}00{{{Dj{c}}}{{Dj{Ab}}}{}}0{{{Dl{c}}}{{Dl{Ab}}}{}}00{{{B`{c}}}e{}{}}00444444{{}{{Dd{cc}}}{}}0{{}{{Dn{c}}}{}}00666{{}{{E`{c}}}{}}{{}{{E`{{Al{c}}}}}{}}1010{{{l{jHh}}{Id{Ib}}{l{jIf}}}{{Id{Ih}}}}{{}Ij}{IlIj}{{{l{Hh}}}{{l{{In{Bn}}}}}}0{{{l{jHh}}{Hl{Hj}}J`Jb{l{jHn}}}Jd}{{{l{jHh}}{Hl{Hj}}J`Jb{l{jHn}}}n}{{{l{jHh}}{Al{{Hl{Hj}}}}J`Jb{l{jHn}}}n}{{{l{jHh}}J`JfJh{l{jHn}}}Jd}{{{In{Ah}}}Hh}{{Hhc}Hh{{Ed{Hf}}Jj}}{{{l{jc}}}{{Cb{{Al{Jl}}Jn}}}{K`Kb}}{{{l{jHh}}{l{jKd}}}n}{{}{{Cb{nJn}}}}{Kf{{Cb{nJn}}}}:{lc{}}0{{}{{Cb{c}}}{}}00{c{{Cb{e}}}{}{}}00111{{}{{Cb{c{Fd{c}}}}}{}}00{lFf}00{ce{}{}}00{{}c{}}00{{{l{jHh}}{l{jHn}}}n}{l{{Al{{l{c}}}}}{}}00````","D":"ABb","p":[[10,"TransformMatrix",1487],[5,"Coordinate",0],[5,"Vector",0],[5,"Rotation",0],[0,"mut"],[1,"reference"],[1,"unit"],[5,"Joint",0],[10,"Any",1488],[5,"BoneId",0],[5,"BoneAxis",0],[5,"Skeleton",0],[5,"Bone",0],[6,"Option",1489],[1,"slice"],[5,"BakedParameters",1490],[10,"CastFrom",1491],[5,"Angle",0],[6,"BoneKind",0],[5,"JointId",0],[6,"BoneEnd",0],[6,"Ordering",1492],[1,"f32"],[1,"usize"],[6,"Result",1493],[10,"Deserializer",1494],[1,"bool"],[1,"str"],[5,"Formatter",1495],[8,"Result",1495],[5,"WidgetContext",1496],[5,"Error",1495],[5,"LabeledBoneKind",0],[1,"tuple"],[10,"Hasher",1497],[5,"Box",1498],[5,"Arc",1499],[5,"Rc",1500],[6,"ReadOnly",1501],[6,"Value",1501],[17,"Output"],[10,"FnMut",1502],[5,"ZeroToOne",1503],[10,"Into",1504],[10,"Serializer",1505],[5,"RangeInclusive",1506],[6,"Progress",1507],[5,"SmolStr",1508],[5,"String",1509],[5,"OutOfBounds",1510],[5,"TypeId",1488],[6,"Value",772],[5,"Animation",772],[5,"Timeline",772],[5,"Keyframe",772],[6,"Target",772],[6,"BoneProperty",772],[6,"JointProperty",772],[6,"PropertyUpdate",772],[5,"Frame",772],[1,"u32"],[5,"RunningAnimation",772],[6,"Cow",1511],[5,"Duration",1512],[6,"StandardEasing",1513],[6,"Target",1320],[6,"SkeletonMutation",1320],[5,"SkeletonCanvas",1320],[5,"Px",1514],[5,"Point",1515],[5,"EventContext",1496],[6,"CursorIcon",1516],[6,"ConstraintLimit",1517],[5,"Size",1518],[5,"LayoutContext",1496],[5,"UPx",1514],[5,"WidgetInstance",1519],[5,"WidgetTag",1519],[5,"Dynamic",1501],[6,"DeviceId",1520],[6,"MouseButton",1521],[8,"EventHandling",1519],[6,"MouseScrollDelta",1521],[6,"TouchPhase",1521],[10,"Send",1522],[5,"WindowHandle",1520],[6,"EventLoopError",1523],[10,"Application",1524],[10,"Sized",1522],[5,"GraphicsContext",1496],[5,"PendingApp",1524],[15,"Jointed",768],[15,"Rigid",768],[15,"Bone",1315],[15,"Joint",1315],[15,"SetDesiredEnd",1483],[15,"SetJointRotation",1483]],"r":[],"b":[[32,"impl-Add-for-Coordinate"],[33,"impl-Add%3CVector%3E-for-Coordinate"],[35,"impl-Add%3CRotation%3E-for-Vector"],[36,"impl-Add-for-Vector"],[318,"impl-Debug-for-Rotation"],[319,"impl-Display-for-Rotation"],[396,"impl-Index%3CJointId%3E-for-Skeleton"],[397,"impl-Index%3CBoneId%3E-for-Skeleton"],[400,"impl-IndexMut%3CBoneId%3E-for-Skeleton"],[401,"impl-IndexMut%3CJointId%3E-for-Skeleton"],[639,"impl-Sub-for-Coordinate"],[640,"impl-Sub%3CVector%3E-for-Coordinate"],[1020,"impl-From%3Cbool%3E-for-Value"],[1022,"impl-From%3CVector%3E-for-Value"],[1023,"impl-From%3Cf32%3E-for-Value"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAAD4FIgAUABIAKAA0AGQAQACmAC0A1wAEAN4AIgADARoAIQEXADwBDQBLAQEATgEAAFABAABSAQAAXAEpAIcBAwCNAQEAkQEOAK0BmgBVAgIAWwIBAGECBQBsAgoAgAIEAIYCCQCRAgEAlAJnAAUD8AD9AwAA/wMBAAIEAAAEBCwAOwQvAW4FDQB/BVAA"}]]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); -//{"start":39,"fragment_lengths":[4398,20584]} \ No newline at end of file +//{"start":39,"fragment_lengths":[3842,21154]} \ No newline at end of file diff --git a/main/search.desc/FunnyBones/FunnyBones-desc-0-.js b/main/search.desc/FunnyBones/FunnyBones-desc-0-.js index 7960dd8..5f59c71 100644 --- a/main/search.desc/FunnyBones/FunnyBones-desc-0-.js +++ b/main/search.desc/FunnyBones/FunnyBones-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("FunnyBones", 0, "The FunnyBones 2D Animation Editor.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).") \ No newline at end of file +searchState.loadedDescShard("FunnyBones", 0, "The FunnyBones 2D Animation Editor.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).") \ No newline at end of file diff --git a/main/search.desc/funnybones/funnybones-desc-0-.js b/main/search.desc/funnybones/funnybones-desc-0-.js index d5af929..e0c74ff 100644 --- a/main/search.desc/funnybones/funnybones-desc-0-.js +++ b/main/search.desc/funnybones/funnybones-desc-0-.js @@ -1 +1 @@ -searchState.loadedDescShard("funnybones", 0, "FunnyBones is considered experimental and unsupported …\nThe first end of a bone.\nA value representing a direction.\nThe second end of a bone.\nA bone in a Skeleton.\nA specific end of a specific bone.\nA specific end of a Bone.\nThe unique ID of a Bone in a Skeleton.\nA representation of a bone structure inside of a Skeleton.\nA two dimensionsional offset/measurement.\nA connection between two bones.\nThe unique ID of a Joint in a Skeleton.\nTwo bones connected with a joint that automatically …\nA BoneKind with an associated label.\nThe maximum rotation represented by this type.\nThe minimum rotation represented by this type.\nA single bone of a fixed length.\nA collection of Bones. connected by Joints.\nA 2D Euclidean vector.\nReturns the rotation of this joint.\nReturns the angle formed a line passing through 0,0 …\nReturns the first axis of this bone.\nReturns the second axis of this bone.\nReturns the bone for a given id, or none if not found.\nThe unique id of the bone of this axis.\nReturns an exclusive reference to the bone for a given id, …\nReturns the list of bones in this skeleton.\nReturns a list of joints connected to a specific bone axis.\nReturns the cosine of this angle.\nWidgets for editing and rendering skeletons.\nReturns a rotation representing the given degrees.\nReturns the location this bone is being aimed towards.\nThe direction the vector is heading.\nReturns the solved end position of this bone.\nThe end of the bone being referenced.\nReturns the angle of the previous bone segment connecting …\nReturns a vector representing the final segment in this …\nFinds an existing Bone by its label.\nFinds an existing Joint by its label.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the full length of this bone.\nReturns the unique id of this bone.\nReturns the unique id of this joint.\nReturns the index of this bone within the skeleton.\nReturns the index of this joint within the skeleton.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the opposite axis on the same bone.\nReturns the opposite end of self.\nReturns true if this is a jointed bone that bends …\nReturns true if this bone is the root of the skeleton.\nReturns the joint for a given id, or none if not found.\nReturns an exclusive reference to the joint for a given …\nReturns the list of joints in this skeleton.\nReturns the kind of this bone.\nThe bone to create.\nReturns an exclusive reference to the kind of this bone.\nReturns the label this bone was created with.\nReturns the label of this joint.\nThe label of the bone.\nReturns the magnitude of this vector.\nThe length of the vector.\nReturns the result of mapping x and y to f.\nReturns a new vector from the x and y values.\nReturns a new vector for the given magnitude and direction.\nReturns a new joint formed by joining bone_a and bone_b at …\nGiven axis is one of the two connections in this joint, …\nCreates a new Bone into the skeleton. Returns the unique …\nCreates a new Joint in the skeleton, connecting two bones …\nReturns a rotation representing the given radians.\nReturns the base rotation being applied to the entire …\nSets the angle to form between these joints.\nSets a relative position to aim the end of this bone …\nSets whether to bend inversely.\nSets a base rotation to apply to the entire skeleton.\nSets a translation to be applied to the entire skeleton.\nReturns the sine of this angle.\nUpdates the solved positions of all bones in this skeleton …\nIf this is a BoneKind::Jointed bone, returns the solved …\nReturns the solved start position of this bone.\nReturns this rotation represented in degrees.\nReturns this rotation represented in radians.\nReturns the translation applied to the entire skeleton.\nReturns a vector pointing from self to other.\nAttaches a label to this bone when pushed into a skeleton.\nLabels this joint and returns self.\nThe x-axis component of this vector.\nThe y-axis component of this vector.\nThe length of the bone connected furthes from the root of …\nThe bend of the simulated joint always goes in one of two …\nThe length of the bone.\nThe length of the bone connected closest to the root of the\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).") \ No newline at end of file +searchState.loadedDescShard("funnybones", 0, "FunnyBones is considered experimental and unsupported …\nThe first end of a bone.\nA value representing a rotation between 0. and .\nThe second end of a bone.\nA bone in a Skeleton.\nA specific end of a specific bone.\nA specific end of a Bone.\nThe unique ID of a Bone in a Skeleton.\nA representation of a bone structure inside of a Skeleton.\nA two dimensionsional offset/measurement.\nA connection between two bones.\nThe unique ID of a Joint in a Skeleton.\nTwo bones connected with a joint that automatically …\nA BoneKind with an associated label.\nThe maximum rotation represented by this type.\nThe minimum rotation represented by this type.\nA single bone of a fixed length.\nA value representing a rotation in 2d space.\nA collection of Bones. connected by Joints.\nA 2D Euclidean vector.\nReturns the rotation of this joint.\nReturns the angle formed a line passing through 0,0 …\nReturns the first axis of this bone.\nReturns the second axis of this bone.\nReturns the bone for a given id, or none if not found.\nThe unique id of the bone of this axis.\nReturns an exclusive reference to the bone for a given id, …\nReturns the list of bones in this skeleton.\nReturns this angle constrained between 0 and .\nReturns a list of joints connected to a specific bone axis.\nReturns the cosine of this angle.\nWidgets for editing and rendering skeletons.\nReturns an angle representing the given degrees.\nReturns a rotation representing the given degrees.\nReturns the location this bone is being aimed towards.\nThe direction the vector is heading.\nReturns the solved end position of this bone.\nThe end of the bone being referenced.\nReturns the angle of the previous bone segment connecting …\nReturns a vector representing the final segment in this …\nFinds an existing Bone by its label.\nFinds an existing Joint by its label.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the full length of this bone.\nReturns the unique id of this bone.\nReturns the unique id of this joint.\nReturns the index of this bone within the skeleton.\nReturns the index of this joint within the skeleton.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the opposite axis on the same bone.\nReturns the opposite end of self.\nReturns true if this is a jointed bone that bends …\nReturns true if this bone is the root of the skeleton.\nReturns the joint for a given id, or none if not found.\nReturns an exclusive reference to the joint for a given …\nReturns the list of joints in this skeleton.\nReturns the kind of this bone.\nThe bone to create.\nReturns an exclusive reference to the kind of this bone.\nReturns the label this bone was created with.\nReturns the label of this joint.\nThe label of the bone.\nReturns the magnitude of this vector.\nThe length of the vector.\nReturns the result of mapping x and y to f.\nReturns a new vector from the x and y values.\nReturns a new vector for the given magnitude and direction.\nReturns a new joint formed by joining bone_a and bone_b at …\nGiven axis is one of the two connections in this joint, …\nCreates a new Bone into the skeleton. Returns the unique …\nCreates a new Joint in the skeleton, connecting two bones …\nReturns an angle representing the given radians.\nReturns a rotation representing the given radians.\nReturns the base rotation being applied to the entire …\nSets the angle to form between these joints.\nSets a relative position to aim the end of this bone …\nSets whether to bend inversely.\nSets a base rotation to apply to the entire skeleton.\nSets a translation to be applied to the entire skeleton.\nReturns the sine of this angle.\nUpdates the solved positions of all bones in this skeleton …\nIf this is a BoneKind::Jointed bone, returns the solved …\nReturns the solved start position of this bone.\nReturns this rotation represented in degrees.\nReturns this rotation represented in radians.\nReturns the translation applied to the entire skeleton.\nReturns a vector pointing from self to other.\nAttaches a label to this bone when pushed into a skeleton.\nLabels this joint and returns self.\nThe x-axis component of this vector.\nThe y-axis component of this vector.\nThe length of the bone connected furthes from the root of …\nThe bend of the simulated joint always goes in one of two …\nThe length of the bone.\nThe length of the bone connected closest to the root of the\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).") \ No newline at end of file diff --git a/main/settings.html b/main/settings.html index 467bab8..13adb4c 100644 --- a/main/settings.html +++ b/main/settings.html @@ -1 +1 @@ -Settings

Rustdoc settings

Back
\ No newline at end of file +Settings

Rustdoc settings

Back
\ No newline at end of file diff --git a/main/src/FunnyBones/funnybones.rs.html b/main/src/FunnyBones/funnybones.rs.html index 26eec0d..7a5cc56 100644 --- a/main/src/FunnyBones/funnybones.rs.html +++ b/main/src/FunnyBones/funnybones.rs.html @@ -1,4 +1,4 @@ -funnybones.rs - source
1
+funnybones.rs - source
1
 2
 3
 4
@@ -419,34 +419,20 @@
 419
 420
 421
-422
-423
-424
-425
-426
-427
-428
-429
-430
-431
-432
-433
-434
-435
 
//! The FunnyBones 2D Animation Editor.
 
 use std::ops::ControlFlow;
 
 use cushy::{
     animation::ZeroToOne,
-    value::{Destination, Dynamic, DynamicRead, Source, Switchable},
+    value::{Destination, Dynamic, DynamicRead, Source, Switchable, Watcher},
     widget::{MakeWidget, WidgetList},
     widgets::{checkbox::Checkable, input::InputValue, slider::Slidable, Space},
     Run,
 };
 use funnybones::{
     cushy::skeleton_canvas::{SkeletonCanvas, SkeletonMutation},
-    Angle, BoneAxis, BoneId, BoneKind, Joint, JointId, LabeledBoneKind, Skeleton, Vector,
+    Angle, BoneAxis, BoneId, BoneKind, Joint, JointId, LabeledBoneKind, Rotation, Skeleton, Vector,
 };
 
 #[derive(Default, Eq, PartialEq, Debug, Clone, Copy)]
@@ -456,35 +442,6 @@
     Animation,
 }
 
-#[derive(Debug, Clone)]
-struct ChangeAggregator(Dynamic<usize>);
-
-impl ChangeAggregator {
-    pub fn new<F, T>(mut when_changed: F) -> (Self, Dynamic<T>)
-    where
-        F: FnMut() -> T + Send + 'static,
-        T: PartialEq + Send + 'static,
-    {
-        let counter = Dynamic::new(0);
-        let result = counter.map_each(move |_| when_changed());
-
-        (Self(counter), result)
-    }
-
-    pub fn watch<T>(&self, other: &Dynamic<T>)
-    where
-        T: Send + 'static,
-    {
-        let counter = self.0.clone();
-        other
-            .for_each_subsequent_generational(move |guard| {
-                drop(guard);
-                *counter.lock() += 1;
-            })
-            .persist();
-    }
-}
-
 fn add_bones_to_skeleton(
     connected_to: BoneAxis,
     bones: &Dynamic<Vec<SkeletalBone>>,
@@ -493,11 +450,15 @@
     let bones = bones.read();
     for bone in &*bones {
         let (kind, vector) = bone.as_bone_kind();
+        let angle = if let BoneKind::Jointed { .. } = &kind.kind {
+            Rotation::default()
+        } else {
+            bone.joint_angle.get().into()
+        };
         let new_bone = skeleton.push_bone(kind);
         skeleton[new_bone].set_desired_end(Some(vector));
         skeleton.push_joint(
-            Joint::new(bone.joint_angle.get(), connected_to, new_bone.axis_a())
-                .with_label(bone.joint_label.get()),
+            Joint::new(angle, connected_to, new_bone.axis_a()).with_label(bone.joint_label.get()),
         );
         add_bones_to_skeleton(new_bone.axis_b(), &bone.connected_bones, skeleton);
     }
@@ -505,12 +466,15 @@
 
 fn main() -> cushy::Result {
     let editing_skeleton = EditingSkeleton::default();
-    let (watcher, skeleton) = ChangeAggregator::new({
+    let watcher = Watcher::default();
+    let skeleton = watcher.map_changed({
         let editing_skeleton = editing_skeleton.clone();
         move || {
             let mut skeleton = Skeleton::default();
+            skeleton.set_rotation(editing_skeleton.root.joint_angle.get().into());
             let (kind, _vector) = editing_skeleton.root.as_bone_kind();
             let root = skeleton.push_bone(kind);
+
             add_bones_to_skeleton(
                 root.axis_b(),
                 &editing_skeleton.root.connected_bones,
@@ -528,13 +492,13 @@
             SkeletonMutation::SetDesiredEnd { bone, end } => {
                 let bone = editing_skeleton.find_bone(bone).expect("missing bone");
                 bone.desired_length.set(end.magnitude);
-                bone.joint_angle.set(end.direction);
+                bone.joint_angle.set(end.direction.into());
             }
             SkeletonMutation::SetJointRotation { joint, rotation } => editing_skeleton
                 .find_joint(joint)
                 .expect("missing joint")
                 .joint_angle
-                .set(rotation),
+                .set(rotation.into()),
         }
     });
     let zoom = canvas
@@ -670,7 +634,7 @@
 
         (
             kind.with_label(self.label.get()),
-            Vector::new(vector_length, self.joint_angle.get()),
+            Vector::new(vector_length, self.joint_angle.get().into()),
         )
     }
 }
@@ -679,7 +643,7 @@
     fn default() -> Self {
         Self {
             joint_label: Dynamic::default(),
-            joint_angle: Dynamic::new(Angle::degrees(90.)),
+            joint_angle: Dynamic::default(),
             label: Dynamic::default(),
             length: Dynamic::new(1.),
             jointed: Dynamic::default(),
@@ -691,7 +655,7 @@
     }
 }
 
-fn skeleton_editor(skeleton: &EditingSkeleton, watcher: &ChangeAggregator) -> impl MakeWidget {
+fn skeleton_editor(skeleton: &EditingSkeleton, watcher: &Watcher) -> impl MakeWidget {
     bone_property_editor(skeleton.root.clone(), watcher, true)
         .and(bones_editor(
             "Upper Root Bones",
@@ -707,7 +671,7 @@
 fn bones_editor(
     label: &str,
     bones: &Dynamic<Vec<SkeletalBone>>,
-    watcher: &ChangeAggregator,
+    watcher: &Watcher,
 ) -> impl MakeWidget {
     watcher.watch(bones);
     let bone_editors = Dynamic::new(
@@ -737,7 +701,7 @@
         .collapsed(collapsed)
         .contain()
 }
-fn bone_editor(bone: SkeletalBone, watcher: &ChangeAggregator) -> impl MakeWidget {
+fn bone_editor(bone: SkeletalBone, watcher: &Watcher) -> impl MakeWidget {
     let bones = bones_editor("Connected Bones", &bone.connected_bones, watcher);
     bone_property_editor(bone, watcher, false)
         .and(bones)
@@ -745,11 +709,7 @@
 }
 
 #[allow(clippy::too_many_lines)]
-fn bone_property_editor(
-    bone: SkeletalBone,
-    watcher: &ChangeAggregator,
-    is_root: bool,
-) -> impl MakeWidget {
+fn bone_property_editor(bone: SkeletalBone, watcher: &Watcher, is_root: bool) -> impl MakeWidget {
     watcher.watch(&bone.joint_label);
     watcher.watch(&bone.inverse);
     watcher.watch(&bone.jointed);
@@ -759,6 +719,8 @@
     watcher.watch(&bone.joint_ratio);
     watcher.watch(&bone.desired_length);
 
+    let columns_wide = 3 + u8::from(!is_root);
+
     bone.jointed
         .for_each_cloned({
             let mut was_jointed = bone.jointed.get();
@@ -795,56 +757,66 @@
 
     let rotation = bone.joint_angle.slider();
 
-    let joint_row = "Second Bone Segment Length"
-        .align_left()
-        .and(bone.joint_ratio.slider().with_enabled(bone.jointed.clone()))
+    let joint_angle = if is_root { "Rotation" } else { "Joint Angle" }
+        .align_left()
+        .and(rotation.clone())
         .into_rows()
-        .fit_horizontally()
-        .align_top()
         .expand()
+        .make_widget();
+
+    let joint_row = joint_angle
+        .clone()
+        .and(
+            "Midpoint"
+                .align_left()
+                .and(bone.joint_ratio.slider().with_enabled(bone.jointed.clone()))
+                .into_rows()
+                .fit_horizontally()
+                .align_top()
+                .expand(),
+        )
         .and(
             bone.inverse
                 .into_checkbox("Inverse")
                 .with_enabled(bone.jointed.clone())
                 .fit_horizontally(),
         )
-        .and(Space::clear().expand_weighted(2))
+        .and(Space::clear().expand_weighted(columns_wide - 3))
         .into_columns()
         .make_widget();
 
-    let non_joint_row = "Joint Angle"
-        .align_left()
-        .and(rotation)
-        .into_rows()
-        .expand()
-        .and(Space::clear().expand_weighted(4))
+    let non_joint_row = joint_angle
+        .and(Space::clear().expand_weighted(columns_wide - 1))
         .into_columns()
         .make_widget();
 
-    let second_row = if is_root {
-        joint_row
-            .collapse_vertically(bone.jointed.map_each_cloned(|j| !j))
-            .make_widget()
+    let second_row = bone
+        .jointed
+        .clone()
+        .switcher(move |jointed, _| {
+            if *jointed {
+                joint_row.clone()
+            } else {
+                non_joint_row.clone()
+            }
+        })
+        .make_widget();
+
+    let first_row = if is_root {
+        WidgetList::new()
     } else {
-        bone.jointed
-            .clone()
-            .switcher(move |jointed, _| {
-                if *jointed {
-                    joint_row.clone()
-                } else {
-                    non_joint_row.clone()
-                }
-            })
-            .make_widget()
+        WidgetList::new().and(
+            "Joint Name"
+                .align_left()
+                .and(joint_label_editor)
+                .into_rows()
+                .fit_horizontally()
+                .align_top()
+                .expand(),
+        )
     };
 
-    "Joint Name"
-        .align_left()
-        .and(joint_label_editor)
-        .into_rows()
-        .fit_horizontally()
-        .align_top()
-        .expand()
+    first_row
         .and(
             "Bone Name"
                 .align_left()
diff --git a/main/src/funnybones/animation.rs.html b/main/src/funnybones/animation.rs.html
index 5811319..00e2d64 100644
--- a/main/src/funnybones/animation.rs.html
+++ b/main/src/funnybones/animation.rs.html
@@ -1,4 +1,4 @@
-animation.rs - source
1
+animation.rs - source
1
 2
 3
 4
@@ -653,7 +653,7 @@
 
 use easing_function::easings::StandardEasing;
 
-use crate::{Angle, Bone, BoneId, Coordinate, Joint, JointId, Skeleton, Vector};
+use crate::{Rotation, Bone, BoneId, Coordinate, Joint, JointId, Skeleton, Vector};
 
 #[derive(Default, Debug, PartialEq, Clone)]
 pub struct Animation(Arc<AnimationData>);
@@ -900,7 +900,7 @@
         match self {
             BoneProperty::Target => Value::Vector(
                 bone.desired_end()
-                    .unwrap_or_else(|| Vector::new(bone.kind().full_length(), Angle::default())),
+                    .unwrap_or_else(|| Vector::new(bone.kind().full_length(), Rotation::default())),
             ),
             // BoneProperty::Scale => ,
             BoneProperty::Inverse => Value::Bool(bone.kind().is_inverse()),
@@ -945,7 +945,7 @@
                 let Value::Number(value) = value else {
                     return;
                 };
-                joint.set_angle(Angle::radians(value));
+                joint.set_angle(Rotation::radians(value));
             }
         }
     }
@@ -1208,7 +1208,7 @@
     }
 }
 
-impl Lerp for Angle {
+impl Lerp for Rotation {
     fn lerp(self, target: Self, percent: f32) -> Self {
         let delta_neg = self.radians - target.radians;
         let delta_pos = target.radians - self.radians;
@@ -1255,7 +1255,7 @@
     let mut skeleton = Skeleton::default();
     let root = skeleton.push_bone(BoneKind::Rigid { length: 1. });
     let arm = skeleton.push_bone(BoneKind::Rigid { length: 1. });
-    let joint = skeleton.push_joint(Joint::new(Angle::default(), root.axis_b(), arm.axis_a()));
+    let joint = skeleton.push_joint(Joint::new(Rotation::default(), root.axis_b(), arm.axis_a()));
 
     let animation = Animation::default().with(
         Timeline::new(Target::Joint {
diff --git a/main/src/funnybones/cushy.rs.html b/main/src/funnybones/cushy.rs.html
index 6bd2438..72f4eef 100644
--- a/main/src/funnybones/cushy.rs.html
+++ b/main/src/funnybones/cushy.rs.html
@@ -1,4 +1,4 @@
-cushy.rs - source
1
+cushy.rs - source
1
 2
 3
 4
@@ -48,24 +48,36 @@
 48
 49
 50
+51
+52
+53
+54
+55
+56
+57
+58
+59
+60
+61
+62
 
//! Widgets for editing and rendering skeletons.
 
 use cushy::{
-    animation::{LinearInterpolate, PercentBetween},
+    animation::{LinearInterpolate, PercentBetween, ZeroToOne},
     figures::{IntoComponents, Ranged},
 };
 
-use crate::{Angle, Coordinate, Vector};
+use crate::{Angle, Coordinate, Rotation, Vector};
 
 pub mod skeleton_canvas;
 
-impl PercentBetween for Angle {
-    fn percent_between(&self, min: &Self, max: &Self) -> cushy::animation::ZeroToOne {
+impl PercentBetween for Rotation {
+    fn percent_between(&self, min: &Self, max: &Self) -> ZeroToOne {
         self.radians.percent_between(&min.radians, &max.radians)
     }
 }
 
-impl LinearInterpolate for Angle {
+impl LinearInterpolate for Rotation {
     fn lerp(&self, target: &Self, percent: f32) -> Self {
         Self {
             radians: self.radians.lerp(&target.radians, percent),
@@ -98,4 +110,16 @@
     const MIN: Self = Self::MIN;
     const MAX: Self = Self::MAX;
 }
+
+impl PercentBetween for Angle {
+    fn percent_between(&self, min: &Self, max: &Self) -> ZeroToOne {
+        self.0.percent_between(&min.0, &max.0)
+    }
+}
+
+impl LinearInterpolate for Angle {
+    fn lerp(&self, target: &Self, percent: f32) -> Self {
+        Self(self.0.lerp(&target.0, percent).clamped())
+    }
+}
 
\ No newline at end of file diff --git a/main/src/funnybones/cushy/skeleton_canvas.rs.html b/main/src/funnybones/cushy/skeleton_canvas.rs.html index a84f3b1..ea66409 100644 --- a/main/src/funnybones/cushy/skeleton_canvas.rs.html +++ b/main/src/funnybones/cushy/skeleton_canvas.rs.html @@ -1,4 +1,4 @@ -skeleton_canvas.rs - source
1
+skeleton_canvas.rs - source
1
 2
 3
 4
@@ -435,7 +435,7 @@
 
#![allow(missing_docs)]
 use core::f32;
 
-use crate::{Angle, BoneEnd, BoneId, Coordinate, JointId, Skeleton, Vector};
+use crate::{Rotation, BoneEnd, BoneId, Coordinate, JointId, Skeleton, Vector};
 use cushy::{
     context::{EventContext, GraphicsContext, LayoutContext, Trackable},
     figures::{
@@ -864,6 +864,6 @@
 #[derive(Clone, Copy, Debug, PartialEq)]
 pub enum SkeletonMutation {
     SetDesiredEnd { bone: BoneId, end: Vector },
-    SetJointRotation { joint: JointId, rotation: Angle },
+    SetJointRotation { joint: JointId, rotation: Rotation },
 }
 
\ No newline at end of file diff --git a/main/src/funnybones/lib.rs.html b/main/src/funnybones/lib.rs.html index 4b970b9..c5a7cb1 100644 --- a/main/src/funnybones/lib.rs.html +++ b/main/src/funnybones/lib.rs.html @@ -1,4 +1,4 @@ -lib.rs - source
1
+lib.rs - source
1
 2
 3
 4
@@ -1007,6 +1007,34 @@
 1007
 1008
 1009
+1010
+1011
+1012
+1013
+1014
+1015
+1016
+1017
+1018
+1019
+1020
+1021
+1022
+1023
+1024
+1025
+1026
+1027
+1028
+1029
+1030
+1031
+1032
+1033
+1034
+1035
+1036
+1037
 
#![doc = include_str!(".crate-docs.md")]
 
 use std::{
@@ -1059,8 +1087,8 @@
 
     /// Returns the angle formed a line passing through 0,0 towards this vector.
     #[must_use]
-    pub fn as_rotation(self) -> Angle {
-        Angle::radians(self.y.atan2(self.x))
+    pub fn as_rotation(self) -> Rotation {
+        Rotation::radians(self.y.atan2(self.x))
     }
 
     /// Returns a vector pointing from `self` to `other`.
@@ -1114,25 +1142,54 @@
     }
 }
 
-/// A value representing a direction.
-#[derive(Clone, Copy, PartialEq, PartialOrd)]
-#[cfg_attr(feature = "serde", derive(::serde::Serialize, ::serde::Deserialize))]
-pub struct Angle {
-    radians: f32,
-}
+/// A value representing a rotation between 0. and `2π`.
+#[derive(Debug, PartialEq, Clone, Copy, PartialOrd, Default)]
+pub struct Angle(Rotation);
 
 impl Angle {
     /// The minimum rotation represented by this type.
-    pub const MIN: Self = Self { radians: 0. };
+    pub const MIN: Self = Self(Rotation { radians: 0. });
     /// The maximum rotation represented by this type.
-    pub const MAX: Self = Self {
+    pub const MAX: Self = Self(Rotation {
         radians: PI * 2. - f32::EPSILON,
-    };
+    });
 
-    /// Returns a rotation representing the given radians.
+    /// Returns an angle representing the given radians.
     #[must_use]
     pub fn radians(radians: f32) -> Self {
-        Self { radians }.normalized()
+        Self(Rotation::radians(radians).clamped())
+    }
+
+    /// Returns an angle representing the given degrees.
+    #[must_use]
+    pub fn degrees(degrees: f32) -> Self {
+        Self::radians(degrees * PI / 180.0)
+    }
+}
+
+impl From<Angle> for Rotation {
+    fn from(value: Angle) -> Self {
+        value.0
+    }
+}
+impl From<Rotation> for Angle {
+    fn from(value: Rotation) -> Self {
+        Self(value.clamped())
+    }
+}
+
+/// A value representing a rotation in 2d space.
+#[derive(Clone, Copy, PartialEq, PartialOrd)]
+#[cfg_attr(feature = "serde", derive(::serde::Serialize, ::serde::Deserialize))]
+pub struct Rotation {
+    radians: f32,
+}
+
+impl Rotation {
+    /// Returns a rotation representing the given radians.
+    #[must_use]
+    pub const fn radians(radians: f32) -> Self {
+        Self { radians }
     }
 
     /// Returns a rotation representing the given degrees.
@@ -1142,24 +1199,20 @@
     }
 
     /// Returns this rotation represented in degrees.
-    ///
-    /// This value will always be greater than or equal to 0 and will always be
-    /// less than 360.0.
     #[must_use]
     pub fn to_degrees(self) -> f32 {
         self.radians * 180.0 / PI
     }
 
     /// Returns this rotation represented in radians.
-    ///
-    /// This value will always be greater than or equal to 0 and will always be
-    /// less than `2π`.
     #[must_use]
     pub const fn to_radians(self) -> f32 {
         self.radians
     }
 
-    fn normalized(mut self) -> Self {
+    /// Returns this angle constrained between 0 and `2π`.
+    #[must_use]
+    pub fn clamped(mut self) -> Self {
         const TWO_PI: f32 = PI * 2.0;
         while self.radians >= TWO_PI {
             self.radians -= TWO_PI;
@@ -1183,25 +1236,25 @@
     }
 }
 
-impl Debug for Angle {
+impl Debug for Rotation {
     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
         Display::fmt(self, f)
     }
 }
 
-impl Display for Angle {
+impl Display for Rotation {
     fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
         write!(f, "{}°", self.to_degrees())
     }
 }
 
-impl Default for Angle {
+impl Default for Rotation {
     fn default() -> Self {
         Self { radians: 0. }
     }
 }
 
-impl Add for Angle {
+impl Add for Rotation {
     type Output = Self;
 
     fn add(self, rhs: Self) -> Self::Output {
@@ -1209,13 +1262,13 @@
     }
 }
 
-impl AddAssign for Angle {
+impl AddAssign for Rotation {
     fn add_assign(&mut self, rhs: Self) {
         self.radians = (*self + rhs).radians;
     }
 }
 
-impl Sub for Angle {
+impl Sub for Rotation {
     type Output = Self;
 
     fn sub(self, rhs: Self) -> Self::Output {
@@ -1223,13 +1276,13 @@
     }
 }
 
-impl SubAssign for Angle {
+impl SubAssign for Rotation {
     fn sub_assign(&mut self, rhs: Self) {
         self.radians = (*self - rhs).radians;
     }
 }
 
-impl Neg for Angle {
+impl Neg for Rotation {
     type Output = Self;
 
     fn neg(self) -> Self::Output {
@@ -1244,13 +1297,13 @@
     /// The length of the vector.
     pub magnitude: f32,
     /// The direction the vector is heading.
-    pub direction: Angle,
+    pub direction: Rotation,
 }
 
 impl Vector {
     /// Returns a new vector for the given magnitude and direction.
     #[must_use]
-    pub const fn new(magnitude: f32, direction: Angle) -> Self {
+    pub const fn new(magnitude: f32, direction: Rotation) -> Self {
         Self {
             magnitude,
             direction,
@@ -1300,19 +1353,19 @@
     }
 }
 
-impl Add<Angle> for Vector {
+impl Add<Rotation> for Vector {
     type Output = Self;
 
-    fn add(mut self, rhs: Angle) -> Self::Output {
+    fn add(mut self, rhs: Rotation) -> Self::Output {
         self.direction += rhs;
         self
     }
 }
 
-impl Sub<Angle> for Vector {
+impl Sub<Rotation> for Vector {
     type Output = Self;
 
-    fn sub(mut self, rhs: Angle) -> Self::Output {
+    fn sub(mut self, rhs: Rotation) -> Self::Output {
         self.direction -= rhs;
         self
     }
@@ -1426,7 +1479,7 @@
 #[derive(Default, Debug, PartialEq)]
 pub struct Skeleton {
     bones: Vec<Bone>,
-    rotation: Angle,
+    rotation: Rotation,
     joints: Vec<Joint>,
     connections: HashMap<BoneAxis, Vec<JointId>>,
     generation: usize,
@@ -1461,7 +1514,7 @@
             joint_pos: None,
             end: Coordinate::default(),
             desired_end: None,
-            entry_angle: Angle::default(),
+            entry_angle: Rotation::default(),
         });
         id
     }
@@ -1553,13 +1606,13 @@
     }
 
     /// Sets a base rotation to apply to the entire skeleton.
-    pub fn set_rotation(&mut self, rotation: Angle) {
+    pub fn set_rotation(&mut self, rotation: Rotation) {
         self.rotation = rotation;
     }
 
     /// Returns the base rotation being applied to the entire skeleton.
     #[must_use]
-    pub const fn rotation(&self) -> Angle {
+    pub const fn rotation(&self) -> Rotation {
         self.rotation
     }
 
@@ -1575,11 +1628,11 @@
     fn solve_axis(&mut self) {
         let mut axis_solved = HashSet::new();
         let root_bone = &mut self.bones[0];
-        let (end, mid) = determine_end_position(
+        let (end, mid, _) = determine_end_position(
             root_bone.start,
             root_bone.desired_end,
             self.rotation,
-            Angle::radians(0.),
+            Rotation::radians(0.),
             &root_bone.kind,
         );
         root_bone.entry_angle = self.rotation;
@@ -1591,7 +1644,7 @@
             (
                 root_bone.id.axis_a(),
                 root_bone.start,
-                angle + Angle::radians(PI),
+                angle + Rotation::radians(PI),
             ),
             (root_bone.id.axis_b(), root_bone.end, angle),
         ];
@@ -1619,13 +1672,14 @@
                 bone.start = current_position;
                 joint.calculated_position = current_position;
 
-                let (end, mid) = determine_end_position(
+                let (end, mid, angle_offset) = determine_end_position(
                     current_position,
                     bone.desired_end,
                     current_rotation,
                     joint.angle,
                     &bone.kind,
                 );
+                bone.entry_angle += angle_offset;
                 bone.end = end;
                 bone.joint_pos = mid;
 
@@ -1642,14 +1696,16 @@
 fn determine_end_position(
     start: Coordinate,
     desired_end: Option<Vector>,
-    current_rotation: Angle,
-    joint_angle: Angle,
+    current_rotation: Rotation,
+    joint_angle: Rotation,
     bone: &BoneKind,
-) -> (Coordinate, Option<Coordinate>) {
+) -> (Coordinate, Option<Coordinate>, Rotation) {
+    let entry_angle = current_rotation + joint_angle;
     match bone {
         BoneKind::Rigid { length } => (
-            start + Vector::new(*length, current_rotation + joint_angle),
+            start + Vector::new(*length, entry_angle),
             None,
+            Rotation::default(),
         ),
         BoneKind::Jointed {
             start_length,
@@ -1657,7 +1713,7 @@
             inverse,
         } => {
             if let Some(desired_end) = desired_end {
-                let desired_angle = desired_end.direction + current_rotation;
+                let desired_angle = desired_end.direction + entry_angle;
                 let distance = desired_end.magnitude;
                 let full_length = start_length + end_length;
                 let minimum_size = (start_length - end_length).abs();
@@ -1680,11 +1736,11 @@
                     *end_length,
                 );
 
-                (end, Some(joint))
+                (end, Some(joint), joint_angle)
             } else {
-                let joint = start + Vector::new(*start_length, current_rotation);
-                let end = joint + Vector::new(*end_length, current_rotation);
-                (end, Some(joint))
+                let joint = start + Vector::new(*start_length, entry_angle);
+                let end = joint + Vector::new(*end_length, entry_angle);
+                (end, Some(joint), joint_angle)
             }
         }
     }
@@ -1694,7 +1750,7 @@
     inverse: bool,
     start: Coordinate,
     distance: f32,
-    hyp_angle: Angle,
+    hyp_angle: Rotation,
     first: f32,
     second: f32,
 ) -> Coordinate {
@@ -1704,7 +1760,7 @@
         start + Vector::new(first, hyp_angle)
     } else {
         let first_angle = hyp_angle
-            - Angle {
+            - Rotation {
                 radians: if inverse { -first_angle } else { first_angle },
             };
         start + Vector::new(first, first_angle)
@@ -1771,7 +1827,7 @@
     joint_pos: Option<Coordinate>,
     end: Coordinate,
     desired_end: Option<Vector>,
-    entry_angle: Angle,
+    entry_angle: Rotation,
 }
 
 impl Bone {
@@ -1817,7 +1873,7 @@
 
     /// Returns the angle of the previous bone segment connecting to this bone.
     #[must_use]
-    pub const fn entry_angle(&self) -> Angle {
+    pub const fn entry_angle(&self) -> Rotation {
         self.entry_angle
     }
 
@@ -1862,7 +1918,7 @@
     bone_a: BoneAxis,
     bone_b: BoneAxis,
     calculated_position: Coordinate,
-    angle: Angle,
+    angle: Rotation,
 }
 
 impl Joint {
@@ -1874,7 +1930,7 @@
 
     /// Returns a new joint formed by joining `bone_a` and `bone_b` at `angle`.
     #[must_use]
-    pub const fn new(angle: Angle, bone_a: BoneAxis, bone_b: BoneAxis) -> Self {
+    pub const fn new(angle: Rotation, bone_a: BoneAxis, bone_b: BoneAxis) -> Self {
         Self {
             id: JointId(0),
             label: None,
@@ -1922,13 +1978,13 @@
     ///
     /// This setting is ignored if the bone furthest from the root of the joint
     /// is a [`BoneKind::Jointed`] bone.
-    pub fn set_angle(&mut self, angle: Angle) {
+    pub fn set_angle(&mut self, angle: Rotation) {
         self.angle = angle;
     }
 
     /// Returns the rotation of this joint.
     #[must_use]
-    pub const fn angle(&self) -> Angle {
+    pub const fn angle(&self) -> Rotation {
         self.angle
     }
 }
@@ -2002,15 +2058,15 @@
 #[allow(clippy::cast_possible_truncation)]
 fn rotation() {
     assert_eq!(
-        (Angle::degrees(90.) + Angle::degrees(180.))
-            .normalized()
+        (Rotation::degrees(90.) + Rotation::degrees(180.))
+            .clamped()
             .to_degrees()
             .round() as i32,
         270,
     );
     assert_eq!(
-        (Angle::degrees(90.) + Angle::degrees(-180.))
-            .normalized()
+        (Rotation::degrees(90.) + Rotation::degrees(-180.))
+            .clamped()
             .to_degrees()
             .round() as i32,
         270,
diff --git a/main/src/funnybones/serde.rs.html b/main/src/funnybones/serde.rs.html
index 606893f..f2fe47b 100644
--- a/main/src/funnybones/serde.rs.html
+++ b/main/src/funnybones/serde.rs.html
@@ -1,4 +1,4 @@
-serde.rs - source
1
+serde.rs - source
1
 2
 3
 4
@@ -163,7 +163,7 @@
     Deserialize, Serialize,
 };
 
-use crate::{Angle, Bone, BoneAxis, BoneKind, Joint, Skeleton, Vector};
+use crate::{Rotation, Bone, BoneAxis, BoneKind, Joint, Skeleton, Vector};
 
 impl Serialize for Skeleton {
     fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
@@ -287,7 +287,7 @@
 struct DeserializedJoint {
     from: BoneAxis,
     to: BoneAxis,
-    angle: Angle,
+    angle: Rotation,
     #[serde(default)]
     label: String,
 }
@@ -302,7 +302,7 @@
         inverse: true,
     });
     let joint = s.push_joint(Joint::new(
-        Angle::radians(0.),
+        Rotation::radians(0.),
         spine.axis_a(),
         other.axis_b(),
     ));
@@ -310,6 +310,6 @@
     let deserialized: Skeleton = pot::from_slice(&serialized).unwrap();
     assert_eq!(deserialized[spine].label(), "spine");
     assert_eq!(deserialized[other].label(), "");
-    assert_eq!(deserialized[joint].angle(), Angle::radians(0.));
+    assert_eq!(deserialized[joint].angle(), Rotation::radians(0.));
 }
 
\ No newline at end of file diff --git a/main/trait.impl/core/clone/trait.Clone.js b/main/trait.impl/core/clone/trait.Clone.js index 64d049a..092a088 100644 --- a/main/trait.impl/core/clone/trait.Clone.js +++ b/main/trait.impl/core/clone/trait.Clone.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["FunnyBones",[["impl Clone for Mode"],["impl Clone for ChangeAggregator"],["impl Clone for EditingSkeleton"],["impl Clone for SkeletalBone"]]],["funnybones",[["impl Clone for BoneProperty"],["impl Clone for JointProperty"],["impl Clone for PropertyUpdate"],["impl Clone for Target"],["impl Clone for Value"],["impl Clone for SkeletonMutation"],["impl Clone for Target"],["impl Clone for BoneEnd"],["impl Clone for BoneKind"],["impl Clone for Animation"],["impl Clone for Frame"],["impl Clone for Keyframe"],["impl Clone for Timeline"],["impl Clone for Angle"],["impl Clone for BoneAxis"],["impl Clone for BoneId"],["impl Clone for Coordinate"],["impl Clone for JointId"],["impl Clone for Vector"]]]]); + var implementors = Object.fromEntries([["FunnyBones",[["impl Clone for Mode"],["impl Clone for EditingSkeleton"],["impl Clone for SkeletalBone"]]],["funnybones",[["impl Clone for BoneProperty"],["impl Clone for JointProperty"],["impl Clone for PropertyUpdate"],["impl Clone for Target"],["impl Clone for Value"],["impl Clone for SkeletonMutation"],["impl Clone for Target"],["impl Clone for BoneEnd"],["impl Clone for BoneKind"],["impl Clone for Animation"],["impl Clone for Frame"],["impl Clone for Keyframe"],["impl Clone for Timeline"],["impl Clone for Angle"],["impl Clone for BoneAxis"],["impl Clone for BoneId"],["impl Clone for Coordinate"],["impl Clone for JointId"],["impl Clone for Rotation"],["impl Clone for Vector"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[1095,5205]} \ No newline at end of file +//{"start":57,"fragment_lengths":[811,5465]} \ No newline at end of file diff --git a/main/trait.impl/core/cmp/trait.PartialEq.js b/main/trait.impl/core/cmp/trait.PartialEq.js index 197fb75..b0692f9 100644 --- a/main/trait.impl/core/cmp/trait.PartialEq.js +++ b/main/trait.impl/core/cmp/trait.PartialEq.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["FunnyBones",[["impl PartialEq for Mode"],["impl PartialEq for EditingSkeleton"],["impl PartialEq for SkeletalBone"]]],["funnybones",[["impl PartialEq for BoneProperty"],["impl PartialEq for JointProperty"],["impl PartialEq for PropertyUpdate"],["impl PartialEq for Target"],["impl PartialEq for Value"],["impl PartialEq for SkeletonMutation"],["impl PartialEq for Target"],["impl PartialEq for BoneEnd"],["impl PartialEq for BoneKind"],["impl PartialEq for Animation"],["impl PartialEq for Frame"],["impl PartialEq for Keyframe"],["impl PartialEq for Timeline"],["impl PartialEq for Angle"],["impl PartialEq for Bone"],["impl PartialEq for BoneAxis"],["impl PartialEq for BoneId"],["impl PartialEq for Coordinate"],["impl PartialEq for Joint"],["impl PartialEq for JointId"],["impl PartialEq for Skeleton"],["impl PartialEq for Vector"]]]]); + var implementors = Object.fromEntries([["FunnyBones",[["impl PartialEq for Mode"],["impl PartialEq for EditingSkeleton"],["impl PartialEq for SkeletalBone"]]],["funnybones",[["impl PartialEq for BoneProperty"],["impl PartialEq for JointProperty"],["impl PartialEq for PropertyUpdate"],["impl PartialEq for Target"],["impl PartialEq for Value"],["impl PartialEq for SkeletonMutation"],["impl PartialEq for Target"],["impl PartialEq for BoneEnd"],["impl PartialEq for BoneKind"],["impl PartialEq for Animation"],["impl PartialEq for Frame"],["impl PartialEq for Keyframe"],["impl PartialEq for Timeline"],["impl PartialEq for Angle"],["impl PartialEq for Bone"],["impl PartialEq for BoneAxis"],["impl PartialEq for BoneId"],["impl PartialEq for Coordinate"],["impl PartialEq for Joint"],["impl PartialEq for JointId"],["impl PartialEq for Rotation"],["impl PartialEq for Skeleton"],["impl PartialEq for Vector"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[835,6140]} \ No newline at end of file +//{"start":57,"fragment_lengths":[835,6408]} \ No newline at end of file diff --git a/main/trait.impl/core/cmp/trait.PartialOrd.js b/main/trait.impl/core/cmp/trait.PartialOrd.js index 33261e9..4fbe5f4 100644 --- a/main/trait.impl/core/cmp/trait.PartialOrd.js +++ b/main/trait.impl/core/cmp/trait.PartialOrd.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["funnybones",[["impl PartialOrd for Frame"],["impl PartialOrd for Angle"],["impl PartialOrd for BoneId"],["impl PartialOrd for JointId"]]]]); + var implementors = Object.fromEntries([["funnybones",[["impl PartialOrd for Frame"],["impl PartialOrd for Angle"],["impl PartialOrd for BoneId"],["impl PartialOrd for JointId"],["impl PartialOrd for Rotation"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[1094]} \ No newline at end of file +//{"start":57,"fragment_lengths":[1365]} \ No newline at end of file diff --git a/main/trait.impl/core/convert/trait.From.js b/main/trait.impl/core/convert/trait.From.js index c1b0a03..f77240d 100644 --- a/main/trait.impl/core/convert/trait.From.js +++ b/main/trait.impl/core/convert/trait.From.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["funnybones",[["impl From<BoneKind> for LabeledBoneKind"],["impl From<bool> for Value"],["impl From<f32> for Value"],["impl From<u32> for Frame"],["impl From<Frame> for f32"],["impl From<Frame> for u32"],["impl From<Frame> for Duration"],["impl From<Coordinate> for Vector"],["impl From<Vector> for Value"],["impl From<Vector> for Coordinate"]]]]); + var implementors = Object.fromEntries([["funnybones",[["impl From<BoneKind> for LabeledBoneKind"],["impl From<bool> for Value"],["impl From<f32> for Value"],["impl From<u32> for Frame"],["impl From<Frame> for f32"],["impl From<Frame> for u32"],["impl From<Frame> for Duration"],["impl From<Angle> for Rotation"],["impl From<Coordinate> for Vector"],["impl From<Rotation> for Angle"],["impl From<Vector> for Value"],["impl From<Vector> for Coordinate"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[3851]} \ No newline at end of file +//{"start":57,"fragment_lengths":[4593]} \ No newline at end of file diff --git a/main/trait.impl/core/default/trait.Default.js b/main/trait.impl/core/default/trait.Default.js index 6e1678c..809cabe 100644 --- a/main/trait.impl/core/default/trait.Default.js +++ b/main/trait.impl/core/default/trait.Default.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["FunnyBones",[["impl Default for Mode"],["impl Default for EditingSkeleton"],["impl Default for SkeletalBone"]]],["funnybones",[["impl Default for Animation"],["impl Default for Frame"],["impl Default for Angle"],["impl Default for Coordinate"],["impl Default for Skeleton"],["impl Default for Vector"]]]]); + var implementors = Object.fromEntries([["FunnyBones",[["impl Default for Mode"],["impl Default for EditingSkeleton"],["impl Default for SkeletalBone"]]],["funnybones",[["impl Default for Animation"],["impl Default for Frame"],["impl Default for Angle"],["impl Default for Coordinate"],["impl Default for Rotation"],["impl Default for Skeleton"],["impl Default for Vector"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[841,1664]} \ No newline at end of file +//{"start":57,"fragment_lengths":[841,1934]} \ No newline at end of file diff --git a/main/trait.impl/core/fmt/trait.Debug.js b/main/trait.impl/core/fmt/trait.Debug.js index a752984..2b7253f 100644 --- a/main/trait.impl/core/fmt/trait.Debug.js +++ b/main/trait.impl/core/fmt/trait.Debug.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["FunnyBones",[["impl Debug for Mode"],["impl Debug for ChangeAggregator"],["impl Debug for EditingSkeleton"],["impl Debug for SkeletalBone"]]],["funnybones",[["impl Debug for BoneProperty"],["impl Debug for JointProperty"],["impl Debug for PropertyUpdate"],["impl Debug for Target"],["impl Debug for Value"],["impl Debug for SkeletonMutation"],["impl Debug for Target"],["impl Debug for BoneEnd"],["impl Debug for BoneKind"],["impl Debug for Animation"],["impl Debug for Frame"],["impl Debug for Keyframe"],["impl Debug for Timeline"],["impl Debug for SkeletonCanvas"],["impl Debug for Angle"],["impl Debug for Bone"],["impl Debug for BoneAxis"],["impl Debug for BoneId"],["impl Debug for Coordinate"],["impl Debug for Joint"],["impl Debug for JointId"],["impl Debug for Skeleton"],["impl Debug for Vector"]]]]); + var implementors = Object.fromEntries([["FunnyBones",[["impl Debug for Mode"],["impl Debug for EditingSkeleton"],["impl Debug for SkeletalBone"]]],["funnybones",[["impl Debug for BoneProperty"],["impl Debug for JointProperty"],["impl Debug for PropertyUpdate"],["impl Debug for Target"],["impl Debug for Value"],["impl Debug for SkeletonMutation"],["impl Debug for Target"],["impl Debug for BoneEnd"],["impl Debug for BoneKind"],["impl Debug for Animation"],["impl Debug for Frame"],["impl Debug for Keyframe"],["impl Debug for Timeline"],["impl Debug for SkeletonCanvas"],["impl Debug for Angle"],["impl Debug for Bone"],["impl Debug for BoneAxis"],["impl Debug for BoneId"],["impl Debug for Coordinate"],["impl Debug for Joint"],["impl Debug for JointId"],["impl Debug for Rotation"],["impl Debug for Skeleton"],["impl Debug for Vector"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[1079,6196]} \ No newline at end of file +//{"start":57,"fragment_lengths":[799,6452]} \ No newline at end of file diff --git a/main/trait.impl/core/fmt/trait.Display.js b/main/trait.impl/core/fmt/trait.Display.js index 85e780f..3e906cc 100644 --- a/main/trait.impl/core/fmt/trait.Display.js +++ b/main/trait.impl/core/fmt/trait.Display.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["funnybones",[["impl Display for Angle"]]]]); + var implementors = Object.fromEntries([["funnybones",[["impl Display for Rotation"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[269]} \ No newline at end of file +//{"start":57,"fragment_lengths":[278]} \ No newline at end of file diff --git a/main/trait.impl/core/marker/trait.Copy.js b/main/trait.impl/core/marker/trait.Copy.js index 68c28f3..b73d652 100644 --- a/main/trait.impl/core/marker/trait.Copy.js +++ b/main/trait.impl/core/marker/trait.Copy.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["FunnyBones",[["impl Copy for Mode"]]],["funnybones",[["impl Copy for PropertyUpdate"],["impl Copy for Value"],["impl Copy for SkeletonMutation"],["impl Copy for Target"],["impl Copy for BoneEnd"],["impl Copy for BoneKind"],["impl Copy for Frame"],["impl Copy for Keyframe"],["impl Copy for Angle"],["impl Copy for BoneAxis"],["impl Copy for BoneId"],["impl Copy for Coordinate"],["impl Copy for JointId"],["impl Copy for Vector"]]]]); + var implementors = Object.fromEntries([["FunnyBones",[["impl Copy for Mode"]]],["funnybones",[["impl Copy for PropertyUpdate"],["impl Copy for Value"],["impl Copy for SkeletonMutation"],["impl Copy for Target"],["impl Copy for BoneEnd"],["impl Copy for BoneKind"],["impl Copy for Frame"],["impl Copy for Keyframe"],["impl Copy for Angle"],["impl Copy for BoneAxis"],["impl Copy for BoneId"],["impl Copy for Coordinate"],["impl Copy for JointId"],["impl Copy for Rotation"],["impl Copy for Vector"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[257,3780]} \ No newline at end of file +//{"start":57,"fragment_lengths":[257,4039]} \ No newline at end of file diff --git a/main/trait.impl/core/marker/trait.Freeze.js b/main/trait.impl/core/marker/trait.Freeze.js index 645b5a5..fc98af5 100644 --- a/main/trait.impl/core/marker/trait.Freeze.js +++ b/main/trait.impl/core/marker/trait.Freeze.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["FunnyBones",[["impl Freeze for Mode",1,["FunnyBones::Mode"]],["impl Freeze for ChangeAggregator",1,["FunnyBones::ChangeAggregator"]],["impl Freeze for EditingSkeleton",1,["FunnyBones::EditingSkeleton"]],["impl Freeze for SkeletalBone",1,["FunnyBones::SkeletalBone"]]]],["funnybones",[["impl Freeze for BoneProperty",1,["funnybones::animation::BoneProperty"]],["impl Freeze for JointProperty",1,["funnybones::animation::JointProperty"]],["impl Freeze for PropertyUpdate",1,["funnybones::animation::PropertyUpdate"]],["impl Freeze for Target",1,["funnybones::animation::Target"]],["impl Freeze for Value",1,["funnybones::animation::Value"]],["impl Freeze for SkeletonMutation",1,["funnybones::cushy::skeleton_canvas::SkeletonMutation"]],["impl Freeze for Target",1,["funnybones::cushy::skeleton_canvas::Target"]],["impl Freeze for BoneEnd",1,["funnybones::BoneEnd"]],["impl Freeze for BoneKind",1,["funnybones::BoneKind"]],["impl Freeze for Animation",1,["funnybones::animation::Animation"]],["impl Freeze for Frame",1,["funnybones::animation::Frame"]],["impl Freeze for Keyframe",1,["funnybones::animation::Keyframe"]],["impl Freeze for RunningAnimation",1,["funnybones::animation::RunningAnimation"]],["impl Freeze for Timeline",1,["funnybones::animation::Timeline"]],["impl Freeze for SkeletonCanvas",1,["funnybones::cushy::skeleton_canvas::SkeletonCanvas"]],["impl Freeze for Angle",1,["funnybones::Angle"]],["impl Freeze for Bone",1,["funnybones::Bone"]],["impl Freeze for BoneAxis",1,["funnybones::BoneAxis"]],["impl Freeze for BoneId",1,["funnybones::BoneId"]],["impl Freeze for Coordinate",1,["funnybones::Coordinate"]],["impl Freeze for Joint",1,["funnybones::Joint"]],["impl Freeze for JointId",1,["funnybones::JointId"]],["impl Freeze for LabeledBoneKind",1,["funnybones::LabeledBoneKind"]],["impl Freeze for Skeleton",1,["funnybones::Skeleton"]],["impl Freeze for Vector",1,["funnybones::Vector"]]]]]); + var implementors = Object.fromEntries([["FunnyBones",[["impl Freeze for Mode",1,["FunnyBones::Mode"]],["impl Freeze for EditingSkeleton",1,["FunnyBones::EditingSkeleton"]],["impl Freeze for SkeletalBone",1,["FunnyBones::SkeletalBone"]]]],["funnybones",[["impl Freeze for BoneProperty",1,["funnybones::animation::BoneProperty"]],["impl Freeze for JointProperty",1,["funnybones::animation::JointProperty"]],["impl Freeze for PropertyUpdate",1,["funnybones::animation::PropertyUpdate"]],["impl Freeze for Target",1,["funnybones::animation::Target"]],["impl Freeze for Value",1,["funnybones::animation::Value"]],["impl Freeze for SkeletonMutation",1,["funnybones::cushy::skeleton_canvas::SkeletonMutation"]],["impl Freeze for Target",1,["funnybones::cushy::skeleton_canvas::Target"]],["impl Freeze for BoneEnd",1,["funnybones::BoneEnd"]],["impl Freeze for BoneKind",1,["funnybones::BoneKind"]],["impl Freeze for Animation",1,["funnybones::animation::Animation"]],["impl Freeze for Frame",1,["funnybones::animation::Frame"]],["impl Freeze for Keyframe",1,["funnybones::animation::Keyframe"]],["impl Freeze for RunningAnimation",1,["funnybones::animation::RunningAnimation"]],["impl Freeze for Timeline",1,["funnybones::animation::Timeline"]],["impl Freeze for SkeletonCanvas",1,["funnybones::cushy::skeleton_canvas::SkeletonCanvas"]],["impl Freeze for Angle",1,["funnybones::Angle"]],["impl Freeze for Bone",1,["funnybones::Bone"]],["impl Freeze for BoneAxis",1,["funnybones::BoneAxis"]],["impl Freeze for BoneId",1,["funnybones::BoneId"]],["impl Freeze for Coordinate",1,["funnybones::Coordinate"]],["impl Freeze for Joint",1,["funnybones::Joint"]],["impl Freeze for JointId",1,["funnybones::JointId"]],["impl Freeze for LabeledBoneKind",1,["funnybones::LabeledBoneKind"]],["impl Freeze for Rotation",1,["funnybones::Rotation"]],["impl Freeze for Skeleton",1,["funnybones::Skeleton"]],["impl Freeze for Vector",1,["funnybones::Vector"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[1238,7877]} \ No newline at end of file +//{"start":57,"fragment_lengths":[914,8169]} \ No newline at end of file diff --git a/main/trait.impl/core/marker/trait.Send.js b/main/trait.impl/core/marker/trait.Send.js index 39fdf52..fdbf3a1 100644 --- a/main/trait.impl/core/marker/trait.Send.js +++ b/main/trait.impl/core/marker/trait.Send.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["FunnyBones",[["impl Send for Mode",1,["FunnyBones::Mode"]],["impl Send for ChangeAggregator",1,["FunnyBones::ChangeAggregator"]],["impl Send for EditingSkeleton",1,["FunnyBones::EditingSkeleton"]],["impl Send for SkeletalBone",1,["FunnyBones::SkeletalBone"]]]],["funnybones",[["impl Send for BoneProperty",1,["funnybones::animation::BoneProperty"]],["impl Send for JointProperty",1,["funnybones::animation::JointProperty"]],["impl Send for PropertyUpdate",1,["funnybones::animation::PropertyUpdate"]],["impl Send for Target",1,["funnybones::animation::Target"]],["impl Send for Value",1,["funnybones::animation::Value"]],["impl Send for SkeletonMutation",1,["funnybones::cushy::skeleton_canvas::SkeletonMutation"]],["impl Send for Target",1,["funnybones::cushy::skeleton_canvas::Target"]],["impl Send for BoneEnd",1,["funnybones::BoneEnd"]],["impl Send for BoneKind",1,["funnybones::BoneKind"]],["impl Send for Animation",1,["funnybones::animation::Animation"]],["impl Send for Frame",1,["funnybones::animation::Frame"]],["impl Send for Keyframe",1,["funnybones::animation::Keyframe"]],["impl Send for RunningAnimation",1,["funnybones::animation::RunningAnimation"]],["impl Send for Timeline",1,["funnybones::animation::Timeline"]],["impl Send for SkeletonCanvas",1,["funnybones::cushy::skeleton_canvas::SkeletonCanvas"]],["impl Send for Angle",1,["funnybones::Angle"]],["impl Send for Bone",1,["funnybones::Bone"]],["impl Send for BoneAxis",1,["funnybones::BoneAxis"]],["impl Send for BoneId",1,["funnybones::BoneId"]],["impl Send for Coordinate",1,["funnybones::Coordinate"]],["impl Send for Joint",1,["funnybones::Joint"]],["impl Send for JointId",1,["funnybones::JointId"]],["impl Send for LabeledBoneKind",1,["funnybones::LabeledBoneKind"]],["impl Send for Skeleton",1,["funnybones::Skeleton"]],["impl Send for Vector",1,["funnybones::Vector"]]]]]); + var implementors = Object.fromEntries([["FunnyBones",[["impl Send for Mode",1,["FunnyBones::Mode"]],["impl Send for EditingSkeleton",1,["FunnyBones::EditingSkeleton"]],["impl Send for SkeletalBone",1,["FunnyBones::SkeletalBone"]]]],["funnybones",[["impl Send for BoneProperty",1,["funnybones::animation::BoneProperty"]],["impl Send for JointProperty",1,["funnybones::animation::JointProperty"]],["impl Send for PropertyUpdate",1,["funnybones::animation::PropertyUpdate"]],["impl Send for Target",1,["funnybones::animation::Target"]],["impl Send for Value",1,["funnybones::animation::Value"]],["impl Send for SkeletonMutation",1,["funnybones::cushy::skeleton_canvas::SkeletonMutation"]],["impl Send for Target",1,["funnybones::cushy::skeleton_canvas::Target"]],["impl Send for BoneEnd",1,["funnybones::BoneEnd"]],["impl Send for BoneKind",1,["funnybones::BoneKind"]],["impl Send for Animation",1,["funnybones::animation::Animation"]],["impl Send for Frame",1,["funnybones::animation::Frame"]],["impl Send for Keyframe",1,["funnybones::animation::Keyframe"]],["impl Send for RunningAnimation",1,["funnybones::animation::RunningAnimation"]],["impl Send for Timeline",1,["funnybones::animation::Timeline"]],["impl Send for SkeletonCanvas",1,["funnybones::cushy::skeleton_canvas::SkeletonCanvas"]],["impl Send for Angle",1,["funnybones::Angle"]],["impl Send for Bone",1,["funnybones::Bone"]],["impl Send for BoneAxis",1,["funnybones::BoneAxis"]],["impl Send for BoneId",1,["funnybones::BoneId"]],["impl Send for Coordinate",1,["funnybones::Coordinate"]],["impl Send for Joint",1,["funnybones::Joint"]],["impl Send for JointId",1,["funnybones::JointId"]],["impl Send for LabeledBoneKind",1,["funnybones::LabeledBoneKind"]],["impl Send for Rotation",1,["funnybones::Rotation"]],["impl Send for Skeleton",1,["funnybones::Skeleton"]],["impl Send for Vector",1,["funnybones::Vector"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[1214,7727]} \ No newline at end of file +//{"start":57,"fragment_lengths":[896,8013]} \ No newline at end of file diff --git a/main/trait.impl/core/marker/trait.StructuralPartialEq.js b/main/trait.impl/core/marker/trait.StructuralPartialEq.js index 455c8fd..1d226c3 100644 --- a/main/trait.impl/core/marker/trait.StructuralPartialEq.js +++ b/main/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["FunnyBones",[["impl StructuralPartialEq for Mode"],["impl StructuralPartialEq for EditingSkeleton"],["impl StructuralPartialEq for SkeletalBone"]]],["funnybones",[["impl StructuralPartialEq for BoneProperty"],["impl StructuralPartialEq for JointProperty"],["impl StructuralPartialEq for PropertyUpdate"],["impl StructuralPartialEq for Target"],["impl StructuralPartialEq for Value"],["impl StructuralPartialEq for SkeletonMutation"],["impl StructuralPartialEq for Target"],["impl StructuralPartialEq for BoneEnd"],["impl StructuralPartialEq for BoneKind"],["impl StructuralPartialEq for Animation"],["impl StructuralPartialEq for Frame"],["impl StructuralPartialEq for Keyframe"],["impl StructuralPartialEq for Timeline"],["impl StructuralPartialEq for Angle"],["impl StructuralPartialEq for Bone"],["impl StructuralPartialEq for BoneAxis"],["impl StructuralPartialEq for BoneId"],["impl StructuralPartialEq for Coordinate"],["impl StructuralPartialEq for Joint"],["impl StructuralPartialEq for JointId"],["impl StructuralPartialEq for Skeleton"],["impl StructuralPartialEq for Vector"]]]]); + var implementors = Object.fromEntries([["FunnyBones",[["impl StructuralPartialEq for Mode"],["impl StructuralPartialEq for EditingSkeleton"],["impl StructuralPartialEq for SkeletalBone"]]],["funnybones",[["impl StructuralPartialEq for BoneProperty"],["impl StructuralPartialEq for JointProperty"],["impl StructuralPartialEq for PropertyUpdate"],["impl StructuralPartialEq for Target"],["impl StructuralPartialEq for Value"],["impl StructuralPartialEq for SkeletonMutation"],["impl StructuralPartialEq for Target"],["impl StructuralPartialEq for BoneEnd"],["impl StructuralPartialEq for BoneKind"],["impl StructuralPartialEq for Animation"],["impl StructuralPartialEq for Frame"],["impl StructuralPartialEq for Keyframe"],["impl StructuralPartialEq for Timeline"],["impl StructuralPartialEq for Angle"],["impl StructuralPartialEq for Bone"],["impl StructuralPartialEq for BoneAxis"],["impl StructuralPartialEq for BoneId"],["impl StructuralPartialEq for Coordinate"],["impl StructuralPartialEq for Joint"],["impl StructuralPartialEq for JointId"],["impl StructuralPartialEq for Rotation"],["impl StructuralPartialEq for Skeleton"],["impl StructuralPartialEq for Vector"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[943,6932]} \ No newline at end of file +//{"start":57,"fragment_lengths":[943,7236]} \ No newline at end of file diff --git a/main/trait.impl/core/marker/trait.Sync.js b/main/trait.impl/core/marker/trait.Sync.js index 28aaa22..a6766d6 100644 --- a/main/trait.impl/core/marker/trait.Sync.js +++ b/main/trait.impl/core/marker/trait.Sync.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["FunnyBones",[["impl Sync for Mode",1,["FunnyBones::Mode"]],["impl Sync for ChangeAggregator",1,["FunnyBones::ChangeAggregator"]],["impl Sync for EditingSkeleton",1,["FunnyBones::EditingSkeleton"]],["impl Sync for SkeletalBone",1,["FunnyBones::SkeletalBone"]]]],["funnybones",[["impl !Sync for SkeletonCanvas",1,["funnybones::cushy::skeleton_canvas::SkeletonCanvas"]],["impl Sync for BoneProperty",1,["funnybones::animation::BoneProperty"]],["impl Sync for JointProperty",1,["funnybones::animation::JointProperty"]],["impl Sync for PropertyUpdate",1,["funnybones::animation::PropertyUpdate"]],["impl Sync for Target",1,["funnybones::animation::Target"]],["impl Sync for Value",1,["funnybones::animation::Value"]],["impl Sync for SkeletonMutation",1,["funnybones::cushy::skeleton_canvas::SkeletonMutation"]],["impl Sync for Target",1,["funnybones::cushy::skeleton_canvas::Target"]],["impl Sync for BoneEnd",1,["funnybones::BoneEnd"]],["impl Sync for BoneKind",1,["funnybones::BoneKind"]],["impl Sync for Animation",1,["funnybones::animation::Animation"]],["impl Sync for Frame",1,["funnybones::animation::Frame"]],["impl Sync for Keyframe",1,["funnybones::animation::Keyframe"]],["impl Sync for RunningAnimation",1,["funnybones::animation::RunningAnimation"]],["impl Sync for Timeline",1,["funnybones::animation::Timeline"]],["impl Sync for Angle",1,["funnybones::Angle"]],["impl Sync for Bone",1,["funnybones::Bone"]],["impl Sync for BoneAxis",1,["funnybones::BoneAxis"]],["impl Sync for BoneId",1,["funnybones::BoneId"]],["impl Sync for Coordinate",1,["funnybones::Coordinate"]],["impl Sync for Joint",1,["funnybones::Joint"]],["impl Sync for JointId",1,["funnybones::JointId"]],["impl Sync for LabeledBoneKind",1,["funnybones::LabeledBoneKind"]],["impl Sync for Skeleton",1,["funnybones::Skeleton"]],["impl Sync for Vector",1,["funnybones::Vector"]]]]]); + var implementors = Object.fromEntries([["FunnyBones",[["impl Sync for Mode",1,["FunnyBones::Mode"]],["impl Sync for EditingSkeleton",1,["FunnyBones::EditingSkeleton"]],["impl Sync for SkeletalBone",1,["FunnyBones::SkeletalBone"]]]],["funnybones",[["impl !Sync for SkeletonCanvas",1,["funnybones::cushy::skeleton_canvas::SkeletonCanvas"]],["impl Sync for BoneProperty",1,["funnybones::animation::BoneProperty"]],["impl Sync for JointProperty",1,["funnybones::animation::JointProperty"]],["impl Sync for PropertyUpdate",1,["funnybones::animation::PropertyUpdate"]],["impl Sync for Target",1,["funnybones::animation::Target"]],["impl Sync for Value",1,["funnybones::animation::Value"]],["impl Sync for SkeletonMutation",1,["funnybones::cushy::skeleton_canvas::SkeletonMutation"]],["impl Sync for Target",1,["funnybones::cushy::skeleton_canvas::Target"]],["impl Sync for BoneEnd",1,["funnybones::BoneEnd"]],["impl Sync for BoneKind",1,["funnybones::BoneKind"]],["impl Sync for Animation",1,["funnybones::animation::Animation"]],["impl Sync for Frame",1,["funnybones::animation::Frame"]],["impl Sync for Keyframe",1,["funnybones::animation::Keyframe"]],["impl Sync for RunningAnimation",1,["funnybones::animation::RunningAnimation"]],["impl Sync for Timeline",1,["funnybones::animation::Timeline"]],["impl Sync for Angle",1,["funnybones::Angle"]],["impl Sync for Bone",1,["funnybones::Bone"]],["impl Sync for BoneAxis",1,["funnybones::BoneAxis"]],["impl Sync for BoneId",1,["funnybones::BoneId"]],["impl Sync for Coordinate",1,["funnybones::Coordinate"]],["impl Sync for Joint",1,["funnybones::Joint"]],["impl Sync for JointId",1,["funnybones::JointId"]],["impl Sync for LabeledBoneKind",1,["funnybones::LabeledBoneKind"]],["impl Sync for Rotation",1,["funnybones::Rotation"]],["impl Sync for Skeleton",1,["funnybones::Skeleton"]],["impl Sync for Vector",1,["funnybones::Vector"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[1214,7728]} \ No newline at end of file +//{"start":57,"fragment_lengths":[896,8014]} \ No newline at end of file diff --git a/main/trait.impl/core/marker/trait.Unpin.js b/main/trait.impl/core/marker/trait.Unpin.js index 8c8fdd4..2de8a36 100644 --- a/main/trait.impl/core/marker/trait.Unpin.js +++ b/main/trait.impl/core/marker/trait.Unpin.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["FunnyBones",[["impl Unpin for Mode",1,["FunnyBones::Mode"]],["impl Unpin for ChangeAggregator",1,["FunnyBones::ChangeAggregator"]],["impl Unpin for EditingSkeleton",1,["FunnyBones::EditingSkeleton"]],["impl Unpin for SkeletalBone",1,["FunnyBones::SkeletalBone"]]]],["funnybones",[["impl Unpin for BoneProperty",1,["funnybones::animation::BoneProperty"]],["impl Unpin for JointProperty",1,["funnybones::animation::JointProperty"]],["impl Unpin for PropertyUpdate",1,["funnybones::animation::PropertyUpdate"]],["impl Unpin for Target",1,["funnybones::animation::Target"]],["impl Unpin for Value",1,["funnybones::animation::Value"]],["impl Unpin for SkeletonMutation",1,["funnybones::cushy::skeleton_canvas::SkeletonMutation"]],["impl Unpin for Target",1,["funnybones::cushy::skeleton_canvas::Target"]],["impl Unpin for BoneEnd",1,["funnybones::BoneEnd"]],["impl Unpin for BoneKind",1,["funnybones::BoneKind"]],["impl Unpin for Animation",1,["funnybones::animation::Animation"]],["impl Unpin for Frame",1,["funnybones::animation::Frame"]],["impl Unpin for Keyframe",1,["funnybones::animation::Keyframe"]],["impl Unpin for RunningAnimation",1,["funnybones::animation::RunningAnimation"]],["impl Unpin for Timeline",1,["funnybones::animation::Timeline"]],["impl Unpin for SkeletonCanvas",1,["funnybones::cushy::skeleton_canvas::SkeletonCanvas"]],["impl Unpin for Angle",1,["funnybones::Angle"]],["impl Unpin for Bone",1,["funnybones::Bone"]],["impl Unpin for BoneAxis",1,["funnybones::BoneAxis"]],["impl Unpin for BoneId",1,["funnybones::BoneId"]],["impl Unpin for Coordinate",1,["funnybones::Coordinate"]],["impl Unpin for Joint",1,["funnybones::Joint"]],["impl Unpin for JointId",1,["funnybones::JointId"]],["impl Unpin for LabeledBoneKind",1,["funnybones::LabeledBoneKind"]],["impl Unpin for Skeleton",1,["funnybones::Skeleton"]],["impl Unpin for Vector",1,["funnybones::Vector"]]]]]); + var implementors = Object.fromEntries([["FunnyBones",[["impl Unpin for Mode",1,["FunnyBones::Mode"]],["impl Unpin for EditingSkeleton",1,["FunnyBones::EditingSkeleton"]],["impl Unpin for SkeletalBone",1,["FunnyBones::SkeletalBone"]]]],["funnybones",[["impl Unpin for BoneProperty",1,["funnybones::animation::BoneProperty"]],["impl Unpin for JointProperty",1,["funnybones::animation::JointProperty"]],["impl Unpin for PropertyUpdate",1,["funnybones::animation::PropertyUpdate"]],["impl Unpin for Target",1,["funnybones::animation::Target"]],["impl Unpin for Value",1,["funnybones::animation::Value"]],["impl Unpin for SkeletonMutation",1,["funnybones::cushy::skeleton_canvas::SkeletonMutation"]],["impl Unpin for Target",1,["funnybones::cushy::skeleton_canvas::Target"]],["impl Unpin for BoneEnd",1,["funnybones::BoneEnd"]],["impl Unpin for BoneKind",1,["funnybones::BoneKind"]],["impl Unpin for Animation",1,["funnybones::animation::Animation"]],["impl Unpin for Frame",1,["funnybones::animation::Frame"]],["impl Unpin for Keyframe",1,["funnybones::animation::Keyframe"]],["impl Unpin for RunningAnimation",1,["funnybones::animation::RunningAnimation"]],["impl Unpin for Timeline",1,["funnybones::animation::Timeline"]],["impl Unpin for SkeletonCanvas",1,["funnybones::cushy::skeleton_canvas::SkeletonCanvas"]],["impl Unpin for Angle",1,["funnybones::Angle"]],["impl Unpin for Bone",1,["funnybones::Bone"]],["impl Unpin for BoneAxis",1,["funnybones::BoneAxis"]],["impl Unpin for BoneId",1,["funnybones::BoneId"]],["impl Unpin for Coordinate",1,["funnybones::Coordinate"]],["impl Unpin for Joint",1,["funnybones::Joint"]],["impl Unpin for JointId",1,["funnybones::JointId"]],["impl Unpin for LabeledBoneKind",1,["funnybones::LabeledBoneKind"]],["impl Unpin for Rotation",1,["funnybones::Rotation"]],["impl Unpin for Skeleton",1,["funnybones::Skeleton"]],["impl Unpin for Vector",1,["funnybones::Vector"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[1226,7802]} \ No newline at end of file +//{"start":57,"fragment_lengths":[905,8091]} \ No newline at end of file diff --git a/main/trait.impl/core/ops/arith/trait.Add.js b/main/trait.impl/core/ops/arith/trait.Add.js index 0e7f7a5..fe0493b 100644 --- a/main/trait.impl/core/ops/arith/trait.Add.js +++ b/main/trait.impl/core/ops/arith/trait.Add.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["funnybones",[["impl Add for Value"],["impl Add for Angle"],["impl Add for Coordinate"],["impl Add for Vector"],["impl Add<Angle> for Vector"],["impl Add<Vector> for Coordinate"]]]]); + var implementors = Object.fromEntries([["funnybones",[["impl Add for Value"],["impl Add for Coordinate"],["impl Add for Rotation"],["impl Add for Vector"],["impl Add<Rotation> for Vector"],["impl Add<Vector> for Coordinate"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[1814]} \ No newline at end of file +//{"start":57,"fragment_lengths":[1832]} \ No newline at end of file diff --git a/main/trait.impl/core/ops/arith/trait.AddAssign.js b/main/trait.impl/core/ops/arith/trait.AddAssign.js index e167583..077f1b8 100644 --- a/main/trait.impl/core/ops/arith/trait.AddAssign.js +++ b/main/trait.impl/core/ops/arith/trait.AddAssign.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["funnybones",[["impl AddAssign for Angle"]]]]); + var implementors = Object.fromEntries([["funnybones",[["impl AddAssign for Rotation"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[288]} \ No newline at end of file +//{"start":57,"fragment_lengths":[297]} \ No newline at end of file diff --git a/main/trait.impl/core/ops/arith/trait.Neg.js b/main/trait.impl/core/ops/arith/trait.Neg.js index 3d1b86b..6deee1e 100644 --- a/main/trait.impl/core/ops/arith/trait.Neg.js +++ b/main/trait.impl/core/ops/arith/trait.Neg.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["funnybones",[["impl Neg for Angle"]]]]); + var implementors = Object.fromEntries([["funnybones",[["impl Neg for Rotation"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[270]} \ No newline at end of file +//{"start":57,"fragment_lengths":[279]} \ No newline at end of file diff --git a/main/trait.impl/core/ops/arith/trait.Sub.js b/main/trait.impl/core/ops/arith/trait.Sub.js index 2fddfba..b16bc76 100644 --- a/main/trait.impl/core/ops/arith/trait.Sub.js +++ b/main/trait.impl/core/ops/arith/trait.Sub.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["funnybones",[["impl Sub for Frame"],["impl Sub for Angle"],["impl Sub for Coordinate"],["impl Sub<Angle> for Vector"],["impl Sub<Vector> for Coordinate"]]]]); + var implementors = Object.fromEntries([["funnybones",[["impl Sub for Frame"],["impl Sub for Coordinate"],["impl Sub for Rotation"],["impl Sub<Rotation> for Vector"],["impl Sub<Vector> for Coordinate"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[1563]} \ No newline at end of file +//{"start":57,"fragment_lengths":[1581]} \ No newline at end of file diff --git a/main/trait.impl/core/ops/arith/trait.SubAssign.js b/main/trait.impl/core/ops/arith/trait.SubAssign.js index 2dcba96..6b25f0f 100644 --- a/main/trait.impl/core/ops/arith/trait.SubAssign.js +++ b/main/trait.impl/core/ops/arith/trait.SubAssign.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["funnybones",[["impl SubAssign for Angle"]]]]); + var implementors = Object.fromEntries([["funnybones",[["impl SubAssign for Rotation"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[288]} \ No newline at end of file +//{"start":57,"fragment_lengths":[297]} \ No newline at end of file diff --git a/main/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/main/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js index b77f1a4..7e1ffaf 100644 --- a/main/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/main/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["FunnyBones",[["impl !RefUnwindSafe for ChangeAggregator",1,["FunnyBones::ChangeAggregator"]],["impl !RefUnwindSafe for EditingSkeleton",1,["FunnyBones::EditingSkeleton"]],["impl !RefUnwindSafe for SkeletalBone",1,["FunnyBones::SkeletalBone"]],["impl RefUnwindSafe for Mode",1,["FunnyBones::Mode"]]]],["funnybones",[["impl !RefUnwindSafe for SkeletonCanvas",1,["funnybones::cushy::skeleton_canvas::SkeletonCanvas"]],["impl RefUnwindSafe for BoneProperty",1,["funnybones::animation::BoneProperty"]],["impl RefUnwindSafe for JointProperty",1,["funnybones::animation::JointProperty"]],["impl RefUnwindSafe for PropertyUpdate",1,["funnybones::animation::PropertyUpdate"]],["impl RefUnwindSafe for Target",1,["funnybones::animation::Target"]],["impl RefUnwindSafe for Value",1,["funnybones::animation::Value"]],["impl RefUnwindSafe for SkeletonMutation",1,["funnybones::cushy::skeleton_canvas::SkeletonMutation"]],["impl RefUnwindSafe for Target",1,["funnybones::cushy::skeleton_canvas::Target"]],["impl RefUnwindSafe for BoneEnd",1,["funnybones::BoneEnd"]],["impl RefUnwindSafe for BoneKind",1,["funnybones::BoneKind"]],["impl RefUnwindSafe for Animation",1,["funnybones::animation::Animation"]],["impl RefUnwindSafe for Frame",1,["funnybones::animation::Frame"]],["impl RefUnwindSafe for Keyframe",1,["funnybones::animation::Keyframe"]],["impl RefUnwindSafe for RunningAnimation",1,["funnybones::animation::RunningAnimation"]],["impl RefUnwindSafe for Timeline",1,["funnybones::animation::Timeline"]],["impl RefUnwindSafe for Angle",1,["funnybones::Angle"]],["impl RefUnwindSafe for Bone",1,["funnybones::Bone"]],["impl RefUnwindSafe for BoneAxis",1,["funnybones::BoneAxis"]],["impl RefUnwindSafe for BoneId",1,["funnybones::BoneId"]],["impl RefUnwindSafe for Coordinate",1,["funnybones::Coordinate"]],["impl RefUnwindSafe for Joint",1,["funnybones::Joint"]],["impl RefUnwindSafe for JointId",1,["funnybones::JointId"]],["impl RefUnwindSafe for LabeledBoneKind",1,["funnybones::LabeledBoneKind"]],["impl RefUnwindSafe for Skeleton",1,["funnybones::Skeleton"]],["impl RefUnwindSafe for Vector",1,["funnybones::Vector"]]]]]); + var implementors = Object.fromEntries([["FunnyBones",[["impl !RefUnwindSafe for EditingSkeleton",1,["FunnyBones::EditingSkeleton"]],["impl !RefUnwindSafe for SkeletalBone",1,["FunnyBones::SkeletalBone"]],["impl RefUnwindSafe for Mode",1,["FunnyBones::Mode"]]]],["funnybones",[["impl !RefUnwindSafe for SkeletonCanvas",1,["funnybones::cushy::skeleton_canvas::SkeletonCanvas"]],["impl RefUnwindSafe for BoneProperty",1,["funnybones::animation::BoneProperty"]],["impl RefUnwindSafe for JointProperty",1,["funnybones::animation::JointProperty"]],["impl RefUnwindSafe for PropertyUpdate",1,["funnybones::animation::PropertyUpdate"]],["impl RefUnwindSafe for Target",1,["funnybones::animation::Target"]],["impl RefUnwindSafe for Value",1,["funnybones::animation::Value"]],["impl RefUnwindSafe for SkeletonMutation",1,["funnybones::cushy::skeleton_canvas::SkeletonMutation"]],["impl RefUnwindSafe for Target",1,["funnybones::cushy::skeleton_canvas::Target"]],["impl RefUnwindSafe for BoneEnd",1,["funnybones::BoneEnd"]],["impl RefUnwindSafe for BoneKind",1,["funnybones::BoneKind"]],["impl RefUnwindSafe for Animation",1,["funnybones::animation::Animation"]],["impl RefUnwindSafe for Frame",1,["funnybones::animation::Frame"]],["impl RefUnwindSafe for Keyframe",1,["funnybones::animation::Keyframe"]],["impl RefUnwindSafe for RunningAnimation",1,["funnybones::animation::RunningAnimation"]],["impl RefUnwindSafe for Timeline",1,["funnybones::animation::Timeline"]],["impl RefUnwindSafe for Angle",1,["funnybones::Angle"]],["impl RefUnwindSafe for Bone",1,["funnybones::Bone"]],["impl RefUnwindSafe for BoneAxis",1,["funnybones::BoneAxis"]],["impl RefUnwindSafe for BoneId",1,["funnybones::BoneId"]],["impl RefUnwindSafe for Coordinate",1,["funnybones::Coordinate"]],["impl RefUnwindSafe for Joint",1,["funnybones::Joint"]],["impl RefUnwindSafe for JointId",1,["funnybones::JointId"]],["impl RefUnwindSafe for LabeledBoneKind",1,["funnybones::LabeledBoneKind"]],["impl RefUnwindSafe for Rotation",1,["funnybones::Rotation"]],["impl RefUnwindSafe for Skeleton",1,["funnybones::Skeleton"]],["impl RefUnwindSafe for Vector",1,["funnybones::Vector"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[1417,8978]} \ No newline at end of file +//{"start":57,"fragment_lengths":[1048,9314]} \ No newline at end of file diff --git a/main/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/main/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js index 267a79a..5a248f3 100644 --- a/main/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/main/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["FunnyBones",[["impl !UnwindSafe for ChangeAggregator",1,["FunnyBones::ChangeAggregator"]],["impl !UnwindSafe for EditingSkeleton",1,["FunnyBones::EditingSkeleton"]],["impl !UnwindSafe for SkeletalBone",1,["FunnyBones::SkeletalBone"]],["impl UnwindSafe for Mode",1,["FunnyBones::Mode"]]]],["funnybones",[["impl !UnwindSafe for SkeletonCanvas",1,["funnybones::cushy::skeleton_canvas::SkeletonCanvas"]],["impl UnwindSafe for BoneProperty",1,["funnybones::animation::BoneProperty"]],["impl UnwindSafe for JointProperty",1,["funnybones::animation::JointProperty"]],["impl UnwindSafe for PropertyUpdate",1,["funnybones::animation::PropertyUpdate"]],["impl UnwindSafe for Target",1,["funnybones::animation::Target"]],["impl UnwindSafe for Value",1,["funnybones::animation::Value"]],["impl UnwindSafe for SkeletonMutation",1,["funnybones::cushy::skeleton_canvas::SkeletonMutation"]],["impl UnwindSafe for Target",1,["funnybones::cushy::skeleton_canvas::Target"]],["impl UnwindSafe for BoneEnd",1,["funnybones::BoneEnd"]],["impl UnwindSafe for BoneKind",1,["funnybones::BoneKind"]],["impl UnwindSafe for Animation",1,["funnybones::animation::Animation"]],["impl UnwindSafe for Frame",1,["funnybones::animation::Frame"]],["impl UnwindSafe for Keyframe",1,["funnybones::animation::Keyframe"]],["impl UnwindSafe for RunningAnimation",1,["funnybones::animation::RunningAnimation"]],["impl UnwindSafe for Timeline",1,["funnybones::animation::Timeline"]],["impl UnwindSafe for Angle",1,["funnybones::Angle"]],["impl UnwindSafe for Bone",1,["funnybones::Bone"]],["impl UnwindSafe for BoneAxis",1,["funnybones::BoneAxis"]],["impl UnwindSafe for BoneId",1,["funnybones::BoneId"]],["impl UnwindSafe for Coordinate",1,["funnybones::Coordinate"]],["impl UnwindSafe for Joint",1,["funnybones::Joint"]],["impl UnwindSafe for JointId",1,["funnybones::JointId"]],["impl UnwindSafe for LabeledBoneKind",1,["funnybones::LabeledBoneKind"]],["impl UnwindSafe for Skeleton",1,["funnybones::Skeleton"]],["impl UnwindSafe for Vector",1,["funnybones::Vector"]]]]]); + var implementors = Object.fromEntries([["FunnyBones",[["impl !UnwindSafe for EditingSkeleton",1,["FunnyBones::EditingSkeleton"]],["impl !UnwindSafe for SkeletalBone",1,["FunnyBones::SkeletalBone"]],["impl UnwindSafe for Mode",1,["FunnyBones::Mode"]]]],["funnybones",[["impl !UnwindSafe for SkeletonCanvas",1,["funnybones::cushy::skeleton_canvas::SkeletonCanvas"]],["impl UnwindSafe for BoneProperty",1,["funnybones::animation::BoneProperty"]],["impl UnwindSafe for JointProperty",1,["funnybones::animation::JointProperty"]],["impl UnwindSafe for PropertyUpdate",1,["funnybones::animation::PropertyUpdate"]],["impl UnwindSafe for Target",1,["funnybones::animation::Target"]],["impl UnwindSafe for Value",1,["funnybones::animation::Value"]],["impl UnwindSafe for SkeletonMutation",1,["funnybones::cushy::skeleton_canvas::SkeletonMutation"]],["impl UnwindSafe for Target",1,["funnybones::cushy::skeleton_canvas::Target"]],["impl UnwindSafe for BoneEnd",1,["funnybones::BoneEnd"]],["impl UnwindSafe for BoneKind",1,["funnybones::BoneKind"]],["impl UnwindSafe for Animation",1,["funnybones::animation::Animation"]],["impl UnwindSafe for Frame",1,["funnybones::animation::Frame"]],["impl UnwindSafe for Keyframe",1,["funnybones::animation::Keyframe"]],["impl UnwindSafe for RunningAnimation",1,["funnybones::animation::RunningAnimation"]],["impl UnwindSafe for Timeline",1,["funnybones::animation::Timeline"]],["impl UnwindSafe for Angle",1,["funnybones::Angle"]],["impl UnwindSafe for Bone",1,["funnybones::Bone"]],["impl UnwindSafe for BoneAxis",1,["funnybones::BoneAxis"]],["impl UnwindSafe for BoneId",1,["funnybones::BoneId"]],["impl UnwindSafe for Coordinate",1,["funnybones::Coordinate"]],["impl UnwindSafe for Joint",1,["funnybones::Joint"]],["impl UnwindSafe for JointId",1,["funnybones::JointId"]],["impl UnwindSafe for LabeledBoneKind",1,["funnybones::LabeledBoneKind"]],["impl UnwindSafe for Rotation",1,["funnybones::Rotation"]],["impl UnwindSafe for Skeleton",1,["funnybones::Skeleton"]],["impl UnwindSafe for Vector",1,["funnybones::Vector"]]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[1381,8753]} \ No newline at end of file +//{"start":57,"fragment_lengths":[1021,9080]} \ No newline at end of file diff --git a/main/trait.impl/cushy/animation/trait.LinearInterpolate.js b/main/trait.impl/cushy/animation/trait.LinearInterpolate.js index 8d2f77c..9ec4876 100644 --- a/main/trait.impl/cushy/animation/trait.LinearInterpolate.js +++ b/main/trait.impl/cushy/animation/trait.LinearInterpolate.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["funnybones",[["impl LinearInterpolate for Angle"],["impl LinearInterpolate for Vector"]]]]); + var implementors = Object.fromEntries([["funnybones",[["impl LinearInterpolate for Angle"],["impl LinearInterpolate for Rotation"],["impl LinearInterpolate for Vector"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[287]} \ No newline at end of file +//{"start":57,"fragment_lengths":[430]} \ No newline at end of file diff --git a/main/trait.impl/cushy/animation/trait.PercentBetween.js b/main/trait.impl/cushy/animation/trait.PercentBetween.js index d3dbed9..3ed294d 100644 --- a/main/trait.impl/cushy/animation/trait.PercentBetween.js +++ b/main/trait.impl/cushy/animation/trait.PercentBetween.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["funnybones",[["impl PercentBetween for Angle"]]]]); + var implementors = Object.fromEntries([["funnybones",[["impl PercentBetween for Angle"],["impl PercentBetween for Rotation"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[147]} \ No newline at end of file +//{"start":57,"fragment_lengths":[287]} \ No newline at end of file diff --git a/main/trait.impl/serde/de/trait.Deserialize.js b/main/trait.impl/serde/de/trait.Deserialize.js index f475b62..8e27b34 100644 --- a/main/trait.impl/serde/de/trait.Deserialize.js +++ b/main/trait.impl/serde/de/trait.Deserialize.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["funnybones",[["impl<'de> Deserialize<'de> for BoneProperty"],["impl<'de> Deserialize<'de> for JointProperty"],["impl<'de> Deserialize<'de> for PropertyUpdate"],["impl<'de> Deserialize<'de> for Target"],["impl<'de> Deserialize<'de> for Value"],["impl<'de> Deserialize<'de> for BoneEnd"],["impl<'de> Deserialize<'de> for BoneKind"],["impl<'de> Deserialize<'de> for Frame"],["impl<'de> Deserialize<'de> for Keyframe"],["impl<'de> Deserialize<'de> for Timeline"],["impl<'de> Deserialize<'de> for Angle"],["impl<'de> Deserialize<'de> for BoneAxis"],["impl<'de> Deserialize<'de> for BoneId"],["impl<'de> Deserialize<'de> for Coordinate"],["impl<'de> Deserialize<'de> for JointId"],["impl<'de> Deserialize<'de> for Skeleton"],["impl<'de> Deserialize<'de> for Vector"]]]]); + var implementors = Object.fromEntries([["funnybones",[["impl<'de> Deserialize<'de> for BoneProperty"],["impl<'de> Deserialize<'de> for JointProperty"],["impl<'de> Deserialize<'de> for PropertyUpdate"],["impl<'de> Deserialize<'de> for Target"],["impl<'de> Deserialize<'de> for Value"],["impl<'de> Deserialize<'de> for BoneEnd"],["impl<'de> Deserialize<'de> for BoneKind"],["impl<'de> Deserialize<'de> for Frame"],["impl<'de> Deserialize<'de> for Keyframe"],["impl<'de> Deserialize<'de> for Timeline"],["impl<'de> Deserialize<'de> for BoneAxis"],["impl<'de> Deserialize<'de> for BoneId"],["impl<'de> Deserialize<'de> for Coordinate"],["impl<'de> Deserialize<'de> for JointId"],["impl<'de> Deserialize<'de> for Rotation"],["impl<'de> Deserialize<'de> for Skeleton"],["impl<'de> Deserialize<'de> for Vector"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[5106]} \ No newline at end of file +//{"start":57,"fragment_lengths":[5115]} \ No newline at end of file diff --git a/main/trait.impl/serde/ser/trait.Serialize.js b/main/trait.impl/serde/ser/trait.Serialize.js index 5d8104c..ef43cb5 100644 --- a/main/trait.impl/serde/ser/trait.Serialize.js +++ b/main/trait.impl/serde/ser/trait.Serialize.js @@ -1,9 +1,9 @@ (function() { - var implementors = Object.fromEntries([["funnybones",[["impl Serialize for BoneProperty"],["impl Serialize for JointProperty"],["impl Serialize for PropertyUpdate"],["impl Serialize for Target"],["impl Serialize for Value"],["impl Serialize for BoneEnd"],["impl Serialize for BoneKind"],["impl Serialize for Frame"],["impl Serialize for Keyframe"],["impl Serialize for Timeline"],["impl Serialize for Angle"],["impl Serialize for Bone"],["impl Serialize for BoneAxis"],["impl Serialize for BoneId"],["impl Serialize for Coordinate"],["impl Serialize for Joint"],["impl Serialize for JointId"],["impl Serialize for Skeleton"],["impl Serialize for Vector"]]]]); + var implementors = Object.fromEntries([["funnybones",[["impl Serialize for BoneProperty"],["impl Serialize for JointProperty"],["impl Serialize for PropertyUpdate"],["impl Serialize for Target"],["impl Serialize for Value"],["impl Serialize for BoneEnd"],["impl Serialize for BoneKind"],["impl Serialize for Frame"],["impl Serialize for Keyframe"],["impl Serialize for Timeline"],["impl Serialize for Bone"],["impl Serialize for BoneAxis"],["impl Serialize for BoneId"],["impl Serialize for Coordinate"],["impl Serialize for Joint"],["impl Serialize for JointId"],["impl Serialize for Rotation"],["impl Serialize for Skeleton"],["impl Serialize for Vector"]]]]); if (window.register_implementors) { window.register_implementors(implementors); } else { window.pending_implementors = implementors; } })() -//{"start":57,"fragment_lengths":[5175]} \ No newline at end of file +//{"start":57,"fragment_lengths":[5184]} \ No newline at end of file