1use super::interval::*;
4use super::Curve;
5
6use crate::ops;
7use crate::VectorSpace;
8use core::any::type_name;
9use core::fmt::{self, Debug};
10use core::marker::PhantomData;
11
12#[cfg(feature = "bevy_reflect")]
13use {
14 alloc::format,
15 bevy_reflect::{utility::GenericTypePathCell, FromReflect, Reflect, TypePath},
16};
17
18#[cfg(feature = "bevy_reflect")]
19mod paths {
20 pub(super) const THIS_MODULE: &str = "bevy_math::curve::adaptors";
21 pub(super) const THIS_CRATE: &str = "bevy_math";
22}
23
24#[expect(unused, reason = "imported just for doc links")]
25use super::CurveExt;
26
27#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone> ::core::clone::Clone for ConstantCurve<T> {
#[inline]
fn clone(&self) -> ConstantCurve<T> {
ConstantCurve {
domain: ::core::clone::Clone::clone(&self.domain),
value: ::core::clone::Clone::clone(&self.value),
}
}
}Clone, #[automatically_derived]
impl<T: ::core::marker::Copy> ::core::marker::Copy for ConstantCurve<T> { }Copy, #[automatically_derived]
impl<T: ::core::fmt::Debug> ::core::fmt::Debug for ConstantCurve<T> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "ConstantCurve",
"domain", &self.domain, "value", &&self.value)
}
}Debug)]
45#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T> _serde::Serialize for ConstantCurve<T> where
T: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ConstantCurve", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"domain", &self.domain)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"value", &self.value)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, T> _serde::Deserialize<'de> for ConstantCurve<T> where
T: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __field1, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"domain" => _serde::__private228::Ok(__Field::__field0),
"value" => _serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"domain" => _serde::__private228::Ok(__Field::__field0),
b"value" => _serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, T> where T: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<ConstantCurve<T>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, T> _serde::de::Visitor<'de> for __Visitor<'de, T>
where T: _serde::Deserialize<'de> {
type Value = ConstantCurve<T>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct ConstantCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<Interval>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct ConstantCurve with 2 elements")),
};
let __field1 =
match _serde::de::SeqAccess::next_element::<T>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(1usize,
&"struct ConstantCurve with 2 elements")),
};
_serde::__private228::Ok(ConstantCurve {
domain: __field0,
value: __field1,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<Interval> =
_serde::__private228::None;
let mut __field1: _serde::__private228::Option<T> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("domain"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<Interval>(&mut __map)?);
}
__Field::__field1 => {
if _serde::__private228::Option::is_some(&__field1) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("value"));
}
__field1 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<T>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("domain")?,
};
let __field1 =
match __field1 {
_serde::__private228::Some(__field1) => __field1,
_serde::__private228::None =>
_serde::__private228::de::missing_field("value")?,
};
_serde::__private228::Ok(ConstantCurve {
domain: __field0,
value: __field1,
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] = &["domain", "value"];
_serde::Deserializer::deserialize_struct(__deserializer,
"ConstantCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<ConstantCurve<T>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
46#[cfg_attr(feature = "bevy_reflect", derive(const _: () =
{
impl<T> bevy_reflect::GetTypeRegistration for ConstantCurve<T> where
ConstantCurve<T>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
T: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration.insert::<bevy_reflect::ReflectFromReflect>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<Interval as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
<T as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<T> bevy_reflect::Typed for ConstantCurve<T> where
ConstantCurve<T>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
T: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<Interval>("domain"),
bevy_reflect::NamedField::new::<T>("value")]).with_generics(bevy_reflect::Generics::from_iter([bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<T>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("T")))])))
})
}
}
#[allow(deprecated, reason =
"derives on a deprecated type shouldn't be considered a usage")]
impl<T> bevy_reflect::TypePath for ConstantCurve<T> where
ConstantCurve<T>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath {
fn type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("bevy_math::curve::adaptors::ConstantCurve<"),
<T as bevy_reflect::TypePath>::type_path()), ">")
})
}
fn short_type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("ConstantCurve<"),
<T as bevy_reflect::TypePath>::short_type_path()), ">")
})
}
fn type_ident() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("ConstantCurve")
}
fn crate_name() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors".split(':').next().unwrap())
}
fn module_path() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors")
}
}
impl<T> bevy_reflect::Reflect for ConstantCurve<T> where
ConstantCurve<T>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
T: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<T> bevy_reflect::structs::Struct for ConstantCurve<T> where
ConstantCurve<T>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
T: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"domain" => ::core::option::Option::Some(&self.domain),
"value" => ::core::option::Option::Some(&self.value),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"domain" => ::core::option::Option::Some(&mut self.domain),
"value" => ::core::option::Option::Some(&mut self.value),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.domain),
1usize => ::core::option::Option::Some(&self.value),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.domain),
1usize => ::core::option::Option::Some(&mut self.value),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("domain"),
1usize => ::core::option::Option::Some("value"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"domain" => ::core::option::Option::Some(0usize),
"value" => ::core::option::Option::Some(1usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 2usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("domain",
bevy_reflect::PartialReflect::to_dynamic(&self.domain));
dynamic.insert_boxed("value",
bevy_reflect::PartialReflect::to_dynamic(&self.value));
dynamic
}
}
impl<T> bevy_reflect::PartialReflect for ConstantCurve<T> where
ConstantCurve<T>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
T: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
domain: <Interval as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.domain)?,
value: <T as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.value)?,
}))
}
}
impl<T> bevy_reflect::FromReflect for ConstantCurve<T> where
ConstantCurve<T>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
T: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn from_reflect(reflect: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<Self> {
if let bevy_reflect::ReflectRef::Struct(__ref_struct) =
bevy_reflect::PartialReflect::reflect_ref(reflect) {
let __this =
Self {
domain: <Interval as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"domain")?)?,
value: <T as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"value")?)?,
};
::core::option::Option::Some(__this)
} else { ::core::option::Option::None }
}
}
};Reflect))]
47pub struct ConstantCurve<T> {
48 pub(crate) domain: Interval,
49 pub(crate) value: T,
50}
51
52impl<T> ConstantCurve<T>
53where
54 T: Clone,
55{
56 pub fn new(domain: Interval, value: T) -> Self {
59 Self { domain, value }
60 }
61}
62
63impl<T> Curve<T> for ConstantCurve<T>
64where
65 T: Clone,
66{
67 #[inline]
68 fn domain(&self) -> Interval {
69 self.domain
70 }
71
72 #[inline]
73 fn sample_unchecked(&self, _t: f32) -> T {
74 self.value.clone()
75 }
76}
77
78#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone, F: ::core::clone::Clone> ::core::clone::Clone
for FunctionCurve<T, F> {
#[inline]
fn clone(&self) -> FunctionCurve<T, F> {
FunctionCurve {
domain: ::core::clone::Clone::clone(&self.domain),
f: ::core::clone::Clone::clone(&self.f),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone)]
83#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T, F> _serde::Serialize for FunctionCurve<T, F> where
F: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"FunctionCurve", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"domain", &self.domain)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"f", &self.f)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, T, F> _serde::Deserialize<'de> for FunctionCurve<T, F> where
F: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __field1, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"domain" => _serde::__private228::Ok(__Field::__field0),
"f" => _serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"domain" => _serde::__private228::Ok(__Field::__field0),
b"f" => _serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, T, F> where
F: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<FunctionCurve<T,
F>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, T, F> _serde::de::Visitor<'de> for
__Visitor<'de, T, F> where F: _serde::Deserialize<'de> {
type Value = FunctionCurve<T, F>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct FunctionCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<Interval>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct FunctionCurve with 2 elements")),
};
let __field1 =
match _serde::de::SeqAccess::next_element::<F>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(1usize,
&"struct FunctionCurve with 2 elements")),
};
let __field2 = _serde::__private228::Default::default();
_serde::__private228::Ok(FunctionCurve {
domain: __field0,
f: __field1,
_phantom: __field2,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<Interval> =
_serde::__private228::None;
let mut __field1: _serde::__private228::Option<F> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("domain"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<Interval>(&mut __map)?);
}
__Field::__field1 => {
if _serde::__private228::Option::is_some(&__field1) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("f"));
}
__field1 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<F>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("domain")?,
};
let __field1 =
match __field1 {
_serde::__private228::Some(__field1) => __field1,
_serde::__private228::None =>
_serde::__private228::de::missing_field("f")?,
};
_serde::__private228::Ok(FunctionCurve {
domain: __field0,
f: __field1,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] = &["domain", "f"];
_serde::Deserializer::deserialize_struct(__deserializer,
"FunctionCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<FunctionCurve<T,
F>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
84#[cfg_attr(
85 feature = "bevy_reflect",
86 derive(const _: () =
{
impl<T, F> bevy_reflect::GetTypeRegistration for FunctionCurve<T, F>
where FunctionCurve<T, F>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync, T: TypePath {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<Interval as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<T, F> bevy_reflect::Typed for FunctionCurve<T, F> where
FunctionCurve<T, F>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: TypePath {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<Interval>("domain")]))
})
}
}
impl<T, F> bevy_reflect::Reflect for FunctionCurve<T, F> where
FunctionCurve<T, F>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: TypePath {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<T, F> bevy_reflect::structs::Struct for FunctionCurve<T, F> where
FunctionCurve<T, F>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: TypePath {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"domain" => ::core::option::Option::Some(&self.domain),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"domain" => ::core::option::Option::Some(&mut self.domain),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.domain),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.domain),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("domain"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"domain" => ::core::option::Option::Some(0usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 1usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("domain",
bevy_reflect::PartialReflect::to_dynamic(&self.domain));
dynamic
}
}
impl<T, F> bevy_reflect::PartialReflect for FunctionCurve<T, F> where
FunctionCurve<T, F>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: TypePath {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
domain: <Interval as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.domain)?,
f: return ::core::result::Result::Err(bevy_reflect::ReflectCloneError::FieldNotCloneable {
field: bevy_reflect::FieldId::Named(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("f")),
variant: ::core::option::Option::None,
container_type_path: bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed(<Self
as bevy_reflect::TypePath>::type_path()),
}),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect),
87 reflect(where T: TypePath),
88 reflect(from_reflect = false, type_path = false),
89)]
90pub struct FunctionCurve<T, F> {
91 pub(crate) domain: Interval,
92 #[cfg_attr(feature = "bevy_reflect", reflect(ignore))]
93 pub(crate) f: F,
94 #[cfg_attr(feature = "serialize", serde(skip))]
95 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
96 pub(crate) _phantom: PhantomData<fn() -> T>,
97}
98
99impl<T, F> Debug for FunctionCurve<T, F> {
100 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
101 f.debug_struct("FunctionCurve")
102 .field("domain", &self.domain)
103 .field("f", &type_name::<F>())
104 .finish()
105 }
106}
107
108#[cfg(feature = "bevy_reflect")]
111impl<T, F> TypePath for FunctionCurve<T, F>
112where
113 T: TypePath,
114 F: 'static,
115{
116 fn type_path() -> &'static str {
117 static CELL: GenericTypePathCell = GenericTypePathCell::new();
118 CELL.get_or_insert::<Self, _>(|| {
119 ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}::FunctionCurve<{1},{2}>",
paths::THIS_MODULE, T::type_path(), type_name::<F>()))
})format!(
120 "{}::FunctionCurve<{},{}>",
121 paths::THIS_MODULE,
122 T::type_path(),
123 type_name::<F>()
124 )
125 })
126 }
127
128 fn short_type_path() -> &'static str {
129 static CELL: GenericTypePathCell = GenericTypePathCell::new();
130 CELL.get_or_insert::<Self, _>(|| {
131 ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("FunctionCurve<{0},{1}>",
T::short_type_path(), type_name::<F>()))
})format!(
132 "FunctionCurve<{},{}>",
133 T::short_type_path(),
134 type_name::<F>()
135 )
136 })
137 }
138
139 fn type_ident() -> Option<&'static str> {
140 Some("FunctionCurve")
141 }
142
143 fn crate_name() -> Option<&'static str> {
144 Some(paths::THIS_CRATE)
145 }
146
147 fn module_path() -> Option<&'static str> {
148 Some(paths::THIS_MODULE)
149 }
150}
151
152impl<T, F> FunctionCurve<T, F>
153where
154 F: Fn(f32) -> T,
155{
156 pub fn new(domain: Interval, function: F) -> Self {
159 FunctionCurve {
160 domain,
161 f: function,
162 _phantom: PhantomData,
163 }
164 }
165}
166
167impl<T, F> Curve<T> for FunctionCurve<T, F>
168where
169 F: Fn(f32) -> T,
170{
171 #[inline]
172 fn domain(&self) -> Interval {
173 self.domain
174 }
175
176 #[inline]
177 fn sample_unchecked(&self, t: f32) -> T {
178 (self.f)(t)
179 }
180}
181
182#[derive(#[automatically_derived]
impl<S: ::core::clone::Clone, T: ::core::clone::Clone,
C: ::core::clone::Clone, F: ::core::clone::Clone> ::core::clone::Clone for
MapCurve<S, T, C, F> {
#[inline]
fn clone(&self) -> MapCurve<S, T, C, F> {
MapCurve {
preimage: ::core::clone::Clone::clone(&self.preimage),
f: ::core::clone::Clone::clone(&self.f),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone)]
185#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<S, T, C, F> _serde::Serialize for MapCurve<S, T, C, F> where
C: _serde::Serialize, F: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"MapCurve", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"preimage", &self.preimage)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"f", &self.f)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, S, T, C, F> _serde::Deserialize<'de> for
MapCurve<S, T, C, F> where C: _serde::Deserialize<'de>,
F: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __field1, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"preimage" => _serde::__private228::Ok(__Field::__field0),
"f" => _serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"preimage" => _serde::__private228::Ok(__Field::__field0),
b"f" => _serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, S, T, C, F> where
C: _serde::Deserialize<'de>, F: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<MapCurve<S, T, C,
F>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, S, T, C, F> _serde::de::Visitor<'de> for
__Visitor<'de, S, T, C, F> where
C: _serde::Deserialize<'de>, F: _serde::Deserialize<'de> {
type Value = MapCurve<S, T, C, F>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct MapCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<C>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct MapCurve with 2 elements")),
};
let __field1 =
match _serde::de::SeqAccess::next_element::<F>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(1usize,
&"struct MapCurve with 2 elements")),
};
let __field2 = _serde::__private228::Default::default();
_serde::__private228::Ok(MapCurve {
preimage: __field0,
f: __field1,
_phantom: __field2,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<C> =
_serde::__private228::None;
let mut __field1: _serde::__private228::Option<F> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("preimage"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<C>(&mut __map)?);
}
__Field::__field1 => {
if _serde::__private228::Option::is_some(&__field1) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("f"));
}
__field1 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<F>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("preimage")?,
};
let __field1 =
match __field1 {
_serde::__private228::Some(__field1) => __field1,
_serde::__private228::None =>
_serde::__private228::de::missing_field("f")?,
};
_serde::__private228::Ok(MapCurve {
preimage: __field0,
f: __field1,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] = &["preimage", "f"];
_serde::Deserializer::deserialize_struct(__deserializer,
"MapCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<MapCurve<S, T,
C, F>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
186#[cfg_attr(
187 feature = "bevy_reflect",
188 derive(const _: () =
{
impl<S, T, C, F> bevy_reflect::GetTypeRegistration for
MapCurve<S, T, C, F> where
MapCurve<S, T, C, F>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection, S: TypePath,
T: TypePath, C: TypePath {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<C as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<S, T, C, F> bevy_reflect::Typed for MapCurve<S, T, C, F> where
MapCurve<S, T, C, F>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection, S: TypePath,
T: TypePath, C: TypePath {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<C>("preimage")]))
})
}
}
impl<S, T, C, F> bevy_reflect::Reflect for MapCurve<S, T, C, F> where
MapCurve<S, T, C, F>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection, S: TypePath,
T: TypePath, C: TypePath {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<S, T, C, F> bevy_reflect::structs::Struct for
MapCurve<S, T, C, F> where
MapCurve<S, T, C, F>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection, S: TypePath,
T: TypePath, C: TypePath {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"preimage" => ::core::option::Option::Some(&self.preimage),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"preimage" =>
::core::option::Option::Some(&mut self.preimage),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.preimage),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.preimage),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("preimage"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"preimage" => ::core::option::Option::Some(0usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 1usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("preimage",
bevy_reflect::PartialReflect::to_dynamic(&self.preimage));
dynamic
}
}
impl<S, T, C, F> bevy_reflect::PartialReflect for MapCurve<S, T, C, F>
where MapCurve<S, T, C, F>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection, S: TypePath,
T: TypePath, C: TypePath {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
preimage: <C as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.preimage)?,
f: return ::core::result::Result::Err(bevy_reflect::ReflectCloneError::FieldNotCloneable {
field: bevy_reflect::FieldId::Named(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("f")),
variant: ::core::option::Option::None,
container_type_path: bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed(<Self
as bevy_reflect::TypePath>::type_path()),
}),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect),
189 reflect(where S: TypePath, T: TypePath, C: TypePath),
190 reflect(from_reflect = false, type_path = false),
191)]
192pub struct MapCurve<S, T, C, F> {
193 pub(crate) preimage: C,
194 #[cfg_attr(feature = "bevy_reflect", reflect(ignore))]
195 pub(crate) f: F,
196 #[cfg_attr(feature = "serialize", serde(skip))]
197 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
198 pub(crate) _phantom: PhantomData<(fn() -> S, fn(S) -> T)>,
199}
200
201impl<S, T, C, F> Debug for MapCurve<S, T, C, F>
202where
203 C: Debug,
204{
205 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
206 f.debug_struct("MapCurve")
207 .field("preimage", &self.preimage)
208 .field("f", &type_name::<F>())
209 .finish()
210 }
211}
212
213#[cfg(feature = "bevy_reflect")]
216impl<S, T, C, F> TypePath for MapCurve<S, T, C, F>
217where
218 S: TypePath,
219 T: TypePath,
220 C: TypePath,
221 F: 'static,
222{
223 fn type_path() -> &'static str {
224 static CELL: GenericTypePathCell = GenericTypePathCell::new();
225 CELL.get_or_insert::<Self, _>(|| {
226 ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}::MapCurve<{1},{2},{3},{4}>",
paths::THIS_MODULE, S::type_path(), T::type_path(),
C::type_path(), type_name::<F>()))
})format!(
227 "{}::MapCurve<{},{},{},{}>",
228 paths::THIS_MODULE,
229 S::type_path(),
230 T::type_path(),
231 C::type_path(),
232 type_name::<F>()
233 )
234 })
235 }
236
237 fn short_type_path() -> &'static str {
238 static CELL: GenericTypePathCell = GenericTypePathCell::new();
239 CELL.get_or_insert::<Self, _>(|| {
240 ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("MapCurve<{0},{1},{2},{3}>",
S::type_path(), T::type_path(), C::type_path(),
type_name::<F>()))
})format!(
241 "MapCurve<{},{},{},{}>",
242 S::type_path(),
243 T::type_path(),
244 C::type_path(),
245 type_name::<F>()
246 )
247 })
248 }
249
250 fn type_ident() -> Option<&'static str> {
251 Some("MapCurve")
252 }
253
254 fn crate_name() -> Option<&'static str> {
255 Some(paths::THIS_CRATE)
256 }
257
258 fn module_path() -> Option<&'static str> {
259 Some(paths::THIS_MODULE)
260 }
261}
262
263impl<S, T, C, F> Curve<T> for MapCurve<S, T, C, F>
264where
265 C: Curve<S>,
266 F: Fn(S) -> T,
267{
268 #[inline]
269 fn domain(&self) -> Interval {
270 self.preimage.domain()
271 }
272
273 #[inline]
274 fn sample_unchecked(&self, t: f32) -> T {
275 (self.f)(self.preimage.sample_unchecked(t))
276 }
277}
278
279#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone, C: ::core::clone::Clone,
F: ::core::clone::Clone> ::core::clone::Clone for ReparamCurve<T, C, F> {
#[inline]
fn clone(&self) -> ReparamCurve<T, C, F> {
ReparamCurve {
domain: ::core::clone::Clone::clone(&self.domain),
base: ::core::clone::Clone::clone(&self.base),
f: ::core::clone::Clone::clone(&self.f),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone)]
282#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T, C, F> _serde::Serialize for ReparamCurve<T, C, F> where
C: _serde::Serialize, F: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ReparamCurve", false as usize + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"domain", &self.domain)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"base", &self.base)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"f", &self.f)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, T, C, F> _serde::Deserialize<'de> for ReparamCurve<T, C, F>
where C: _serde::Deserialize<'de>, F: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __field1, __field2, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
2u64 => _serde::__private228::Ok(__Field::__field2),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"domain" => _serde::__private228::Ok(__Field::__field0),
"base" => _serde::__private228::Ok(__Field::__field1),
"f" => _serde::__private228::Ok(__Field::__field2),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"domain" => _serde::__private228::Ok(__Field::__field0),
b"base" => _serde::__private228::Ok(__Field::__field1),
b"f" => _serde::__private228::Ok(__Field::__field2),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, T, C, F> where
C: _serde::Deserialize<'de>, F: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<ReparamCurve<T, C,
F>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, T, C, F> _serde::de::Visitor<'de> for
__Visitor<'de, T, C, F> where C: _serde::Deserialize<'de>,
F: _serde::Deserialize<'de> {
type Value = ReparamCurve<T, C, F>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct ReparamCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<Interval>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct ReparamCurve with 3 elements")),
};
let __field1 =
match _serde::de::SeqAccess::next_element::<C>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(1usize,
&"struct ReparamCurve with 3 elements")),
};
let __field2 =
match _serde::de::SeqAccess::next_element::<F>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(2usize,
&"struct ReparamCurve with 3 elements")),
};
let __field3 = _serde::__private228::Default::default();
_serde::__private228::Ok(ReparamCurve {
domain: __field0,
base: __field1,
f: __field2,
_phantom: __field3,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<Interval> =
_serde::__private228::None;
let mut __field1: _serde::__private228::Option<C> =
_serde::__private228::None;
let mut __field2: _serde::__private228::Option<F> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("domain"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<Interval>(&mut __map)?);
}
__Field::__field1 => {
if _serde::__private228::Option::is_some(&__field1) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("base"));
}
__field1 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<C>(&mut __map)?);
}
__Field::__field2 => {
if _serde::__private228::Option::is_some(&__field2) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("f"));
}
__field2 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<F>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("domain")?,
};
let __field1 =
match __field1 {
_serde::__private228::Some(__field1) => __field1,
_serde::__private228::None =>
_serde::__private228::de::missing_field("base")?,
};
let __field2 =
match __field2 {
_serde::__private228::Some(__field2) => __field2,
_serde::__private228::None =>
_serde::__private228::de::missing_field("f")?,
};
_serde::__private228::Ok(ReparamCurve {
domain: __field0,
base: __field1,
f: __field2,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] =
&["domain", "base", "f"];
_serde::Deserializer::deserialize_struct(__deserializer,
"ReparamCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<ReparamCurve<T,
C, F>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
283#[cfg_attr(
284 feature = "bevy_reflect",
285 derive(const _: () =
{
impl<T, C, F> bevy_reflect::GetTypeRegistration for
ReparamCurve<T, C, F> where
ReparamCurve<T, C, F>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection, T: TypePath,
C: TypePath {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<Interval as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
<C as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<T, C, F> bevy_reflect::Typed for ReparamCurve<T, C, F> where
ReparamCurve<T, C, F>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection, T: TypePath,
C: TypePath {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<Interval>("domain"),
bevy_reflect::NamedField::new::<C>("base")]))
})
}
}
impl<T, C, F> bevy_reflect::Reflect for ReparamCurve<T, C, F> where
ReparamCurve<T, C, F>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection, T: TypePath,
C: TypePath {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<T, C, F> bevy_reflect::structs::Struct for ReparamCurve<T, C, F>
where ReparamCurve<T, C, F>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection, T: TypePath,
C: TypePath {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"domain" => ::core::option::Option::Some(&self.domain),
"base" => ::core::option::Option::Some(&self.base),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"domain" => ::core::option::Option::Some(&mut self.domain),
"base" => ::core::option::Option::Some(&mut self.base),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.domain),
1usize => ::core::option::Option::Some(&self.base),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.domain),
1usize => ::core::option::Option::Some(&mut self.base),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("domain"),
1usize => ::core::option::Option::Some("base"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"domain" => ::core::option::Option::Some(0usize),
"base" => ::core::option::Option::Some(1usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 2usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("domain",
bevy_reflect::PartialReflect::to_dynamic(&self.domain));
dynamic.insert_boxed("base",
bevy_reflect::PartialReflect::to_dynamic(&self.base));
dynamic
}
}
impl<T, C, F> bevy_reflect::PartialReflect for ReparamCurve<T, C, F>
where ReparamCurve<T, C, F>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection, T: TypePath,
C: TypePath {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
domain: <Interval as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.domain)?,
base: <C as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.base)?,
f: return ::core::result::Result::Err(bevy_reflect::ReflectCloneError::FieldNotCloneable {
field: bevy_reflect::FieldId::Named(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("f")),
variant: ::core::option::Option::None,
container_type_path: bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed(<Self
as bevy_reflect::TypePath>::type_path()),
}),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect),
286 reflect(where T: TypePath, C: TypePath),
287 reflect(from_reflect = false, type_path = false),
288)]
289pub struct ReparamCurve<T, C, F> {
290 pub(crate) domain: Interval,
291 pub(crate) base: C,
292 #[cfg_attr(feature = "bevy_reflect", reflect(ignore))]
293 pub(crate) f: F,
294 #[cfg_attr(feature = "serialize", serde(skip))]
295 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
296 pub(crate) _phantom: PhantomData<fn() -> T>,
297}
298
299impl<T, C, F> Debug for ReparamCurve<T, C, F>
300where
301 C: Debug,
302{
303 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
304 f.debug_struct("ReparamCurve")
305 .field("domain", &self.domain)
306 .field("base", &self.base)
307 .field("f", &type_name::<F>())
308 .finish()
309 }
310}
311
312#[cfg(feature = "bevy_reflect")]
315impl<T, C, F> TypePath for ReparamCurve<T, C, F>
316where
317 T: TypePath,
318 C: TypePath,
319 F: 'static,
320{
321 fn type_path() -> &'static str {
322 static CELL: GenericTypePathCell = GenericTypePathCell::new();
323 CELL.get_or_insert::<Self, _>(|| {
324 ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("{0}::ReparamCurve<{1},{2},{3}>",
paths::THIS_MODULE, T::type_path(), C::type_path(),
type_name::<F>()))
})format!(
325 "{}::ReparamCurve<{},{},{}>",
326 paths::THIS_MODULE,
327 T::type_path(),
328 C::type_path(),
329 type_name::<F>()
330 )
331 })
332 }
333
334 fn short_type_path() -> &'static str {
335 static CELL: GenericTypePathCell = GenericTypePathCell::new();
336 CELL.get_or_insert::<Self, _>(|| {
337 ::alloc::__export::must_use({
::alloc::fmt::format(format_args!("ReparamCurve<{0},{1},{2}>",
T::type_path(), C::type_path(), type_name::<F>()))
})format!(
338 "ReparamCurve<{},{},{}>",
339 T::type_path(),
340 C::type_path(),
341 type_name::<F>()
342 )
343 })
344 }
345
346 fn type_ident() -> Option<&'static str> {
347 Some("ReparamCurve")
348 }
349
350 fn crate_name() -> Option<&'static str> {
351 Some(paths::THIS_CRATE)
352 }
353
354 fn module_path() -> Option<&'static str> {
355 Some(paths::THIS_MODULE)
356 }
357}
358
359impl<T, C, F> Curve<T> for ReparamCurve<T, C, F>
360where
361 C: Curve<T>,
362 F: Fn(f32) -> f32,
363{
364 #[inline]
365 fn domain(&self) -> Interval {
366 self.domain
367 }
368
369 #[inline]
370 fn sample_unchecked(&self, t: f32) -> T {
371 self.base.sample_unchecked((self.f)(t))
372 }
373}
374
375#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone, C: ::core::clone::Clone> ::core::clone::Clone
for LinearReparamCurve<T, C> {
#[inline]
fn clone(&self) -> LinearReparamCurve<T, C> {
LinearReparamCurve {
base: ::core::clone::Clone::clone(&self.base),
new_domain: ::core::clone::Clone::clone(&self.new_domain),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone, #[automatically_derived]
impl<T: ::core::fmt::Debug, C: ::core::fmt::Debug> ::core::fmt::Debug for
LinearReparamCurve<T, C> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"LinearReparamCurve", "base", &self.base, "new_domain",
&self.new_domain, "_phantom", &&self._phantom)
}
}Debug)]
378#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T, C> _serde::Serialize for LinearReparamCurve<T, C> where
C: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"LinearReparamCurve", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"base", &self.base)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"new_domain", &self.new_domain)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, T, C> _serde::Deserialize<'de> for LinearReparamCurve<T, C>
where C: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __field1, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"base" => _serde::__private228::Ok(__Field::__field0),
"new_domain" => _serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"base" => _serde::__private228::Ok(__Field::__field0),
b"new_domain" =>
_serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, T, C> where
C: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<LinearReparamCurve<T,
C>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, T, C> _serde::de::Visitor<'de> for
__Visitor<'de, T, C> where C: _serde::Deserialize<'de> {
type Value = LinearReparamCurve<T, C>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct LinearReparamCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<C>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct LinearReparamCurve with 2 elements")),
};
let __field1 =
match _serde::de::SeqAccess::next_element::<Interval>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(1usize,
&"struct LinearReparamCurve with 2 elements")),
};
let __field2 = _serde::__private228::Default::default();
_serde::__private228::Ok(LinearReparamCurve {
base: __field0,
new_domain: __field1,
_phantom: __field2,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<C> =
_serde::__private228::None;
let mut __field1: _serde::__private228::Option<Interval> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("base"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<C>(&mut __map)?);
}
__Field::__field1 => {
if _serde::__private228::Option::is_some(&__field1) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("new_domain"));
}
__field1 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<Interval>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("base")?,
};
let __field1 =
match __field1 {
_serde::__private228::Some(__field1) => __field1,
_serde::__private228::None =>
_serde::__private228::de::missing_field("new_domain")?,
};
_serde::__private228::Ok(LinearReparamCurve {
base: __field0,
new_domain: __field1,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] =
&["base", "new_domain"];
_serde::Deserializer::deserialize_struct(__deserializer,
"LinearReparamCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<LinearReparamCurve<T,
C>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
379#[cfg_attr(
380 feature = "bevy_reflect",
381 derive(const _: () =
{
impl<T, C> bevy_reflect::GetTypeRegistration for
LinearReparamCurve<T, C> where
LinearReparamCurve<T, C>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<C as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
<Interval as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<T, C> bevy_reflect::Typed for LinearReparamCurve<T, C> where
LinearReparamCurve<T, C>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<C>("base"),
bevy_reflect::NamedField::new::<Interval>("new_domain")]).with_generics(bevy_reflect::Generics::from_iter([bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<T>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("T"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<C>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("C")))])))
})
}
}
#[allow(deprecated, reason =
"derives on a deprecated type shouldn't be considered a usage")]
impl<T, C> bevy_reflect::TypePath for LinearReparamCurve<T, C> where
LinearReparamCurve<T, C>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath {
fn type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("bevy_math::curve::adaptors::LinearReparamCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::type_path()), ", "),
<C as bevy_reflect::TypePath>::type_path())), ">")
})
}
fn short_type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("LinearReparamCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::short_type_path()), ", "),
<C as bevy_reflect::TypePath>::short_type_path())), ">")
})
}
fn type_ident() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("LinearReparamCurve")
}
fn crate_name() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors".split(':').next().unwrap())
}
fn module_path() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors")
}
}
impl<T, C> bevy_reflect::Reflect for LinearReparamCurve<T, C> where
LinearReparamCurve<T, C>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<T, C> bevy_reflect::structs::Struct for LinearReparamCurve<T, C>
where LinearReparamCurve<T, C>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"base" => ::core::option::Option::Some(&self.base),
"new_domain" =>
::core::option::Option::Some(&self.new_domain),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"base" => ::core::option::Option::Some(&mut self.base),
"new_domain" =>
::core::option::Option::Some(&mut self.new_domain),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.base),
1usize => ::core::option::Option::Some(&self.new_domain),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.base),
1usize =>
::core::option::Option::Some(&mut self.new_domain),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("base"),
1usize => ::core::option::Option::Some("new_domain"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"base" => ::core::option::Option::Some(0usize),
"new_domain" => ::core::option::Option::Some(1usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 2usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("base",
bevy_reflect::PartialReflect::to_dynamic(&self.base));
dynamic.insert_boxed("new_domain",
bevy_reflect::PartialReflect::to_dynamic(&self.new_domain));
dynamic
}
}
impl<T, C> bevy_reflect::PartialReflect for LinearReparamCurve<T, C>
where LinearReparamCurve<T, C>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
base: <C as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.base)?,
new_domain: <Interval as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.new_domain)?,
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect, const _: () =
{
impl<T, C> bevy_reflect::FromReflect for LinearReparamCurve<T, C>
where LinearReparamCurve<T, C>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
C: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn from_reflect(reflect: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<Self> {
if let bevy_reflect::ReflectRef::Struct(__ref_struct) =
bevy_reflect::PartialReflect::reflect_ref(reflect) {
let __this =
Self {
base: <C as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"base")?)?,
new_domain: <Interval as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"new_domain")?)?,
_phantom: ::core::default::Default::default(),
};
::core::option::Option::Some(__this)
} else { ::core::option::Option::None }
}
}
};FromReflect),
382 reflect(from_reflect = false)
383)]
384pub struct LinearReparamCurve<T, C> {
385 pub(crate) base: C,
387 pub(crate) new_domain: Interval,
389 #[cfg_attr(feature = "serialize", serde(skip))]
390 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
391 pub(crate) _phantom: PhantomData<fn() -> T>,
392}
393
394impl<T, C> Curve<T> for LinearReparamCurve<T, C>
395where
396 C: Curve<T>,
397{
398 #[inline]
399 fn domain(&self) -> Interval {
400 self.new_domain
401 }
402
403 #[inline]
404 fn sample_unchecked(&self, t: f32) -> T {
405 let f = self.new_domain.linear_map_to(self.base.domain()).unwrap();
407 self.base.sample_unchecked(f(t))
408 }
409}
410
411#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone, C: ::core::clone::Clone,
D: ::core::clone::Clone> ::core::clone::Clone for
CurveReparamCurve<T, C, D> {
#[inline]
fn clone(&self) -> CurveReparamCurve<T, C, D> {
CurveReparamCurve {
base: ::core::clone::Clone::clone(&self.base),
reparam_curve: ::core::clone::Clone::clone(&self.reparam_curve),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone, #[automatically_derived]
impl<T: ::core::fmt::Debug, C: ::core::fmt::Debug, D: ::core::fmt::Debug>
::core::fmt::Debug for CurveReparamCurve<T, C, D> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f,
"CurveReparamCurve", "base", &self.base, "reparam_curve",
&self.reparam_curve, "_phantom", &&self._phantom)
}
}Debug)]
414#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T, C, D> _serde::Serialize for CurveReparamCurve<T, C, D> where
C: _serde::Serialize, D: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"CurveReparamCurve", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"base", &self.base)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"reparam_curve", &self.reparam_curve)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, T, C, D> _serde::Deserialize<'de> for
CurveReparamCurve<T, C, D> where C: _serde::Deserialize<'de>,
D: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __field1, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"base" => _serde::__private228::Ok(__Field::__field0),
"reparam_curve" =>
_serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"base" => _serde::__private228::Ok(__Field::__field0),
b"reparam_curve" =>
_serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, T, C, D> where
C: _serde::Deserialize<'de>, D: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<CurveReparamCurve<T,
C, D>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, T, C, D> _serde::de::Visitor<'de> for
__Visitor<'de, T, C, D> where C: _serde::Deserialize<'de>,
D: _serde::Deserialize<'de> {
type Value = CurveReparamCurve<T, C, D>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct CurveReparamCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<C>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct CurveReparamCurve with 2 elements")),
};
let __field1 =
match _serde::de::SeqAccess::next_element::<D>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(1usize,
&"struct CurveReparamCurve with 2 elements")),
};
let __field2 = _serde::__private228::Default::default();
_serde::__private228::Ok(CurveReparamCurve {
base: __field0,
reparam_curve: __field1,
_phantom: __field2,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<C> =
_serde::__private228::None;
let mut __field1: _serde::__private228::Option<D> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("base"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<C>(&mut __map)?);
}
__Field::__field1 => {
if _serde::__private228::Option::is_some(&__field1) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("reparam_curve"));
}
__field1 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<D>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("base")?,
};
let __field1 =
match __field1 {
_serde::__private228::Some(__field1) => __field1,
_serde::__private228::None =>
_serde::__private228::de::missing_field("reparam_curve")?,
};
_serde::__private228::Ok(CurveReparamCurve {
base: __field0,
reparam_curve: __field1,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] =
&["base", "reparam_curve"];
_serde::Deserializer::deserialize_struct(__deserializer,
"CurveReparamCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<CurveReparamCurve<T,
C, D>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
415#[cfg_attr(
416 feature = "bevy_reflect",
417 derive(const _: () =
{
impl<T, C, D> bevy_reflect::GetTypeRegistration for
CurveReparamCurve<T, C, D> where
CurveReparamCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<C as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
<D as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<T, C, D> bevy_reflect::Typed for CurveReparamCurve<T, C, D> where
CurveReparamCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<C>("base"),
bevy_reflect::NamedField::new::<D>("reparam_curve")]).with_generics(bevy_reflect::Generics::from_iter([bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<T>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("T"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<C>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("C"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<D>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("D")))])))
})
}
}
#[allow(deprecated, reason =
"derives on a deprecated type shouldn't be considered a usage")]
impl<T, C, D> bevy_reflect::TypePath for CurveReparamCurve<T, C, D>
where CurveReparamCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath {
fn type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("bevy_math::curve::adaptors::CurveReparamCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::type_path()), ", "),
<C as bevy_reflect::TypePath>::type_path()), ", "),
<D as bevy_reflect::TypePath>::type_path())), ">")
})
}
fn short_type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("CurveReparamCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::short_type_path()), ", "),
<C as bevy_reflect::TypePath>::short_type_path()), ", "),
<D as bevy_reflect::TypePath>::short_type_path())), ">")
})
}
fn type_ident() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("CurveReparamCurve")
}
fn crate_name() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors".split(':').next().unwrap())
}
fn module_path() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors")
}
}
impl<T, C, D> bevy_reflect::Reflect for CurveReparamCurve<T, C, D>
where CurveReparamCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<T, C, D> bevy_reflect::structs::Struct for
CurveReparamCurve<T, C, D> where
CurveReparamCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"base" => ::core::option::Option::Some(&self.base),
"reparam_curve" =>
::core::option::Option::Some(&self.reparam_curve),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"base" => ::core::option::Option::Some(&mut self.base),
"reparam_curve" =>
::core::option::Option::Some(&mut self.reparam_curve),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.base),
1usize => ::core::option::Option::Some(&self.reparam_curve),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.base),
1usize =>
::core::option::Option::Some(&mut self.reparam_curve),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("base"),
1usize => ::core::option::Option::Some("reparam_curve"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"base" => ::core::option::Option::Some(0usize),
"reparam_curve" => ::core::option::Option::Some(1usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 2usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("base",
bevy_reflect::PartialReflect::to_dynamic(&self.base));
dynamic.insert_boxed("reparam_curve",
bevy_reflect::PartialReflect::to_dynamic(&self.reparam_curve));
dynamic
}
}
impl<T, C, D> bevy_reflect::PartialReflect for
CurveReparamCurve<T, C, D> where
CurveReparamCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
base: <C as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.base)?,
reparam_curve: <D as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.reparam_curve)?,
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect, const _: () =
{
impl<T, C, D> bevy_reflect::FromReflect for CurveReparamCurve<T, C, D>
where CurveReparamCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::FromReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn from_reflect(reflect: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<Self> {
if let bevy_reflect::ReflectRef::Struct(__ref_struct) =
bevy_reflect::PartialReflect::reflect_ref(reflect) {
let __this =
Self {
base: <C as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"base")?)?,
reparam_curve: <D as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"reparam_curve")?)?,
_phantom: ::core::default::Default::default(),
};
::core::option::Option::Some(__this)
} else { ::core::option::Option::None }
}
}
};FromReflect),
418 reflect(from_reflect = false)
419)]
420pub struct CurveReparamCurve<T, C, D> {
421 pub(crate) base: C,
422 pub(crate) reparam_curve: D,
423 #[cfg_attr(feature = "serialize", serde(skip))]
424 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
425 pub(crate) _phantom: PhantomData<fn() -> T>,
426}
427
428impl<T, C, D> Curve<T> for CurveReparamCurve<T, C, D>
429where
430 C: Curve<T>,
431 D: Curve<f32>,
432{
433 #[inline]
434 fn domain(&self) -> Interval {
435 self.reparam_curve.domain()
436 }
437
438 #[inline]
439 fn sample_unchecked(&self, t: f32) -> T {
440 let sample_time = self.reparam_curve.sample_unchecked(t);
441 self.base.sample_unchecked(sample_time)
442 }
443}
444
445#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone, C: ::core::clone::Clone> ::core::clone::Clone
for GraphCurve<T, C> {
#[inline]
fn clone(&self) -> GraphCurve<T, C> {
GraphCurve {
base: ::core::clone::Clone::clone(&self.base),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone, #[automatically_derived]
impl<T: ::core::fmt::Debug, C: ::core::fmt::Debug> ::core::fmt::Debug for
GraphCurve<T, C> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "GraphCurve",
"base", &self.base, "_phantom", &&self._phantom)
}
}Debug)]
448#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T, C> _serde::Serialize for GraphCurve<T, C> where
C: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"GraphCurve", false as usize + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"base", &self.base)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, T, C> _serde::Deserialize<'de> for GraphCurve<T, C> where
C: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"base" => _serde::__private228::Ok(__Field::__field0),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"base" => _serde::__private228::Ok(__Field::__field0),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, T, C> where
C: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<GraphCurve<T, C>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, T, C> _serde::de::Visitor<'de> for
__Visitor<'de, T, C> where C: _serde::Deserialize<'de> {
type Value = GraphCurve<T, C>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct GraphCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<C>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct GraphCurve with 1 element")),
};
let __field1 = _serde::__private228::Default::default();
_serde::__private228::Ok(GraphCurve {
base: __field0,
_phantom: __field1,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<C> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("base"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<C>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("base")?,
};
_serde::__private228::Ok(GraphCurve {
base: __field0,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] = &["base"];
_serde::Deserializer::deserialize_struct(__deserializer,
"GraphCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<GraphCurve<T,
C>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
449#[cfg_attr(
450 feature = "bevy_reflect",
451 derive(const _: () =
{
impl<T, C> bevy_reflect::GetTypeRegistration for GraphCurve<T, C>
where GraphCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<C as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<T, C> bevy_reflect::Typed for GraphCurve<T, C> where
GraphCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<C>("base")]).with_generics(bevy_reflect::Generics::from_iter([bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<T>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("T"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<C>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("C")))])))
})
}
}
#[allow(deprecated, reason =
"derives on a deprecated type shouldn't be considered a usage")]
impl<T, C> bevy_reflect::TypePath for GraphCurve<T, C> where
GraphCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath {
fn type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("bevy_math::curve::adaptors::GraphCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::type_path()), ", "),
<C as bevy_reflect::TypePath>::type_path())), ">")
})
}
fn short_type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("GraphCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::short_type_path()), ", "),
<C as bevy_reflect::TypePath>::short_type_path())), ">")
})
}
fn type_ident() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("GraphCurve")
}
fn crate_name() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors".split(':').next().unwrap())
}
fn module_path() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors")
}
}
impl<T, C> bevy_reflect::Reflect for GraphCurve<T, C> where
GraphCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<T, C> bevy_reflect::structs::Struct for GraphCurve<T, C> where
GraphCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"base" => ::core::option::Option::Some(&self.base),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"base" => ::core::option::Option::Some(&mut self.base),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.base),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.base),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("base"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"base" => ::core::option::Option::Some(0usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 1usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("base",
bevy_reflect::PartialReflect::to_dynamic(&self.base));
dynamic
}
}
impl<T, C> bevy_reflect::PartialReflect for GraphCurve<T, C> where
GraphCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
base: <C as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.base)?,
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect, const _: () =
{
impl<T, C> bevy_reflect::FromReflect for GraphCurve<T, C> where
GraphCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::FromReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn from_reflect(reflect: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<Self> {
if let bevy_reflect::ReflectRef::Struct(__ref_struct) =
bevy_reflect::PartialReflect::reflect_ref(reflect) {
let __this =
Self {
base: <C as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"base")?)?,
_phantom: ::core::default::Default::default(),
};
::core::option::Option::Some(__this)
} else { ::core::option::Option::None }
}
}
};FromReflect),
452 reflect(from_reflect = false)
453)]
454pub struct GraphCurve<T, C> {
455 pub(crate) base: C,
456 #[cfg_attr(feature = "serialize", serde(skip))]
457 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
458 pub(crate) _phantom: PhantomData<fn() -> T>,
459}
460
461impl<T, C> Curve<(f32, T)> for GraphCurve<T, C>
462where
463 C: Curve<T>,
464{
465 #[inline]
466 fn domain(&self) -> Interval {
467 self.base.domain()
468 }
469
470 #[inline]
471 fn sample_unchecked(&self, t: f32) -> (f32, T) {
472 (t, self.base.sample_unchecked(t))
473 }
474}
475
476#[derive(#[automatically_derived]
impl<S: ::core::clone::Clone, T: ::core::clone::Clone,
C: ::core::clone::Clone, D: ::core::clone::Clone> ::core::clone::Clone for
ZipCurve<S, T, C, D> {
#[inline]
fn clone(&self) -> ZipCurve<S, T, C, D> {
ZipCurve {
domain: ::core::clone::Clone::clone(&self.domain),
first: ::core::clone::Clone::clone(&self.first),
second: ::core::clone::Clone::clone(&self.second),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone, #[automatically_derived]
impl<S: ::core::fmt::Debug, T: ::core::fmt::Debug, C: ::core::fmt::Debug,
D: ::core::fmt::Debug> ::core::fmt::Debug for ZipCurve<S, T, C, D> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f, "ZipCurve",
"domain", &self.domain, "first", &self.first, "second",
&self.second, "_phantom", &&self._phantom)
}
}Debug)]
479#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<S, T, C, D> _serde::Serialize for ZipCurve<S, T, C, D> where
C: _serde::Serialize, D: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ZipCurve", false as usize + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"domain", &self.domain)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"first", &self.first)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"second", &self.second)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, S, T, C, D> _serde::Deserialize<'de> for
ZipCurve<S, T, C, D> where C: _serde::Deserialize<'de>,
D: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __field1, __field2, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
2u64 => _serde::__private228::Ok(__Field::__field2),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"domain" => _serde::__private228::Ok(__Field::__field0),
"first" => _serde::__private228::Ok(__Field::__field1),
"second" => _serde::__private228::Ok(__Field::__field2),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"domain" => _serde::__private228::Ok(__Field::__field0),
b"first" => _serde::__private228::Ok(__Field::__field1),
b"second" => _serde::__private228::Ok(__Field::__field2),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, S, T, C, D> where
C: _serde::Deserialize<'de>, D: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<ZipCurve<S, T, C,
D>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, S, T, C, D> _serde::de::Visitor<'de> for
__Visitor<'de, S, T, C, D> where
C: _serde::Deserialize<'de>, D: _serde::Deserialize<'de> {
type Value = ZipCurve<S, T, C, D>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct ZipCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<Interval>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct ZipCurve with 3 elements")),
};
let __field1 =
match _serde::de::SeqAccess::next_element::<C>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(1usize,
&"struct ZipCurve with 3 elements")),
};
let __field2 =
match _serde::de::SeqAccess::next_element::<D>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(2usize,
&"struct ZipCurve with 3 elements")),
};
let __field3 = _serde::__private228::Default::default();
_serde::__private228::Ok(ZipCurve {
domain: __field0,
first: __field1,
second: __field2,
_phantom: __field3,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<Interval> =
_serde::__private228::None;
let mut __field1: _serde::__private228::Option<C> =
_serde::__private228::None;
let mut __field2: _serde::__private228::Option<D> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("domain"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<Interval>(&mut __map)?);
}
__Field::__field1 => {
if _serde::__private228::Option::is_some(&__field1) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("first"));
}
__field1 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<C>(&mut __map)?);
}
__Field::__field2 => {
if _serde::__private228::Option::is_some(&__field2) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("second"));
}
__field2 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<D>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("domain")?,
};
let __field1 =
match __field1 {
_serde::__private228::Some(__field1) => __field1,
_serde::__private228::None =>
_serde::__private228::de::missing_field("first")?,
};
let __field2 =
match __field2 {
_serde::__private228::Some(__field2) => __field2,
_serde::__private228::None =>
_serde::__private228::de::missing_field("second")?,
};
_serde::__private228::Ok(ZipCurve {
domain: __field0,
first: __field1,
second: __field2,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] =
&["domain", "first", "second"];
_serde::Deserializer::deserialize_struct(__deserializer,
"ZipCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<ZipCurve<S, T,
C, D>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
480#[cfg_attr(
481 feature = "bevy_reflect",
482 derive(const _: () =
{
impl<S, T, C, D> bevy_reflect::GetTypeRegistration for
ZipCurve<S, T, C, D> where
ZipCurve<S, T, C, D>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, S: bevy_reflect::TypePath,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<Interval as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
<C as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
<D as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<S, T, C, D> bevy_reflect::Typed for ZipCurve<S, T, C, D> where
ZipCurve<S, T, C, D>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, S: bevy_reflect::TypePath,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<Interval>("domain"),
bevy_reflect::NamedField::new::<C>("first"),
bevy_reflect::NamedField::new::<D>("second")]).with_generics(bevy_reflect::Generics::from_iter([bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<S>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("S"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<T>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("T"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<C>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("C"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<D>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("D")))])))
})
}
}
#[allow(deprecated, reason =
"derives on a deprecated type shouldn't be considered a usage")]
impl<S, T, C, D> bevy_reflect::TypePath for ZipCurve<S, T, C, D> where
ZipCurve<S, T, C, D>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, S: bevy_reflect::TypePath,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath {
fn type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("bevy_math::curve::adaptors::ZipCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<S
as bevy_reflect::TypePath>::type_path()), ", "),
<T as bevy_reflect::TypePath>::type_path()), ", "),
<C as bevy_reflect::TypePath>::type_path()), ", "),
<D as bevy_reflect::TypePath>::type_path())), ">")
})
}
fn short_type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("ZipCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<S
as bevy_reflect::TypePath>::short_type_path()), ", "),
<T as bevy_reflect::TypePath>::short_type_path()), ", "),
<C as bevy_reflect::TypePath>::short_type_path()), ", "),
<D as bevy_reflect::TypePath>::short_type_path())), ">")
})
}
fn type_ident() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("ZipCurve")
}
fn crate_name() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors".split(':').next().unwrap())
}
fn module_path() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors")
}
}
impl<S, T, C, D> bevy_reflect::Reflect for ZipCurve<S, T, C, D> where
ZipCurve<S, T, C, D>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, S: bevy_reflect::TypePath,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<S, T, C, D> bevy_reflect::structs::Struct for
ZipCurve<S, T, C, D> where
ZipCurve<S, T, C, D>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, S: bevy_reflect::TypePath,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"domain" => ::core::option::Option::Some(&self.domain),
"first" => ::core::option::Option::Some(&self.first),
"second" => ::core::option::Option::Some(&self.second),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"domain" => ::core::option::Option::Some(&mut self.domain),
"first" => ::core::option::Option::Some(&mut self.first),
"second" => ::core::option::Option::Some(&mut self.second),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.domain),
1usize => ::core::option::Option::Some(&self.first),
2usize => ::core::option::Option::Some(&self.second),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.domain),
1usize => ::core::option::Option::Some(&mut self.first),
2usize => ::core::option::Option::Some(&mut self.second),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("domain"),
1usize => ::core::option::Option::Some("first"),
2usize => ::core::option::Option::Some("second"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"domain" => ::core::option::Option::Some(0usize),
"first" => ::core::option::Option::Some(1usize),
"second" => ::core::option::Option::Some(2usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 3usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("domain",
bevy_reflect::PartialReflect::to_dynamic(&self.domain));
dynamic.insert_boxed("first",
bevy_reflect::PartialReflect::to_dynamic(&self.first));
dynamic.insert_boxed("second",
bevy_reflect::PartialReflect::to_dynamic(&self.second));
dynamic
}
}
impl<S, T, C, D> bevy_reflect::PartialReflect for ZipCurve<S, T, C, D>
where ZipCurve<S, T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
S: bevy_reflect::TypePath, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, D: bevy_reflect::TypePath,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
domain: <Interval as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.domain)?,
first: <C as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.first)?,
second: <D as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.second)?,
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect, const _: () =
{
impl<S, T, C, D> bevy_reflect::FromReflect for ZipCurve<S, T, C, D>
where ZipCurve<S, T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
S: bevy_reflect::TypePath, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, D: bevy_reflect::TypePath,
C: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn from_reflect(reflect: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<Self> {
if let bevy_reflect::ReflectRef::Struct(__ref_struct) =
bevy_reflect::PartialReflect::reflect_ref(reflect) {
let __this =
Self {
domain: <Interval as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"domain")?)?,
first: <C as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"first")?)?,
second: <D as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"second")?)?,
_phantom: ::core::default::Default::default(),
};
::core::option::Option::Some(__this)
} else { ::core::option::Option::None }
}
}
};FromReflect),
483 reflect(from_reflect = false)
484)]
485pub struct ZipCurve<S, T, C, D> {
486 pub(crate) domain: Interval,
487 pub(crate) first: C,
488 pub(crate) second: D,
489 #[cfg_attr(feature = "serialize", serde(skip))]
490 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
491 pub(crate) _phantom: PhantomData<fn() -> (S, T)>,
492}
493
494impl<S, T, C, D> Curve<(S, T)> for ZipCurve<S, T, C, D>
495where
496 C: Curve<S>,
497 D: Curve<T>,
498{
499 #[inline]
500 fn domain(&self) -> Interval {
501 self.domain
502 }
503
504 #[inline]
505 fn sample_unchecked(&self, t: f32) -> (S, T) {
506 (
507 self.first.sample_unchecked(t),
508 self.second.sample_unchecked(t),
509 )
510 }
511}
512
513#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone, C: ::core::clone::Clone,
D: ::core::clone::Clone> ::core::clone::Clone for ChainCurve<T, C, D> {
#[inline]
fn clone(&self) -> ChainCurve<T, C, D> {
ChainCurve {
first: ::core::clone::Clone::clone(&self.first),
second: ::core::clone::Clone::clone(&self.second),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone, #[automatically_derived]
impl<T: ::core::fmt::Debug, C: ::core::fmt::Debug, D: ::core::fmt::Debug>
::core::fmt::Debug for ChainCurve<T, C, D> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "ChainCurve",
"first", &self.first, "second", &self.second, "_phantom",
&&self._phantom)
}
}Debug)]
521#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T, C, D> _serde::Serialize for ChainCurve<T, C, D> where
C: _serde::Serialize, D: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ChainCurve", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"first", &self.first)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"second", &self.second)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, T, C, D> _serde::Deserialize<'de> for ChainCurve<T, C, D>
where C: _serde::Deserialize<'de>, D: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __field1, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"first" => _serde::__private228::Ok(__Field::__field0),
"second" => _serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"first" => _serde::__private228::Ok(__Field::__field0),
b"second" => _serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, T, C, D> where
C: _serde::Deserialize<'de>, D: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<ChainCurve<T, C,
D>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, T, C, D> _serde::de::Visitor<'de> for
__Visitor<'de, T, C, D> where C: _serde::Deserialize<'de>,
D: _serde::Deserialize<'de> {
type Value = ChainCurve<T, C, D>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct ChainCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<C>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct ChainCurve with 2 elements")),
};
let __field1 =
match _serde::de::SeqAccess::next_element::<D>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(1usize,
&"struct ChainCurve with 2 elements")),
};
let __field2 = _serde::__private228::Default::default();
_serde::__private228::Ok(ChainCurve {
first: __field0,
second: __field1,
_phantom: __field2,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<C> =
_serde::__private228::None;
let mut __field1: _serde::__private228::Option<D> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("first"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<C>(&mut __map)?);
}
__Field::__field1 => {
if _serde::__private228::Option::is_some(&__field1) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("second"));
}
__field1 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<D>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("first")?,
};
let __field1 =
match __field1 {
_serde::__private228::Some(__field1) => __field1,
_serde::__private228::None =>
_serde::__private228::de::missing_field("second")?,
};
_serde::__private228::Ok(ChainCurve {
first: __field0,
second: __field1,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] = &["first", "second"];
_serde::Deserializer::deserialize_struct(__deserializer,
"ChainCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<ChainCurve<T, C,
D>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
522#[cfg_attr(
523 feature = "bevy_reflect",
524 derive(const _: () =
{
impl<T, C, D> bevy_reflect::GetTypeRegistration for
ChainCurve<T, C, D> where ChainCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<C as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
<D as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<T, C, D> bevy_reflect::Typed for ChainCurve<T, C, D> where
ChainCurve<T, C, D>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, D: bevy_reflect::TypePath,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<C>("first"),
bevy_reflect::NamedField::new::<D>("second")]).with_generics(bevy_reflect::Generics::from_iter([bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<T>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("T"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<C>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("C"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<D>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("D")))])))
})
}
}
#[allow(deprecated, reason =
"derives on a deprecated type shouldn't be considered a usage")]
impl<T, C, D> bevy_reflect::TypePath for ChainCurve<T, C, D> where
ChainCurve<T, C, D>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, D: bevy_reflect::TypePath {
fn type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("bevy_math::curve::adaptors::ChainCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::type_path()), ", "),
<C as bevy_reflect::TypePath>::type_path()), ", "),
<D as bevy_reflect::TypePath>::type_path())), ">")
})
}
fn short_type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("ChainCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::short_type_path()), ", "),
<C as bevy_reflect::TypePath>::short_type_path()), ", "),
<D as bevy_reflect::TypePath>::short_type_path())), ">")
})
}
fn type_ident() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("ChainCurve")
}
fn crate_name() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors".split(':').next().unwrap())
}
fn module_path() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors")
}
}
impl<T, C, D> bevy_reflect::Reflect for ChainCurve<T, C, D> where
ChainCurve<T, C, D>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, D: bevy_reflect::TypePath,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<T, C, D> bevy_reflect::structs::Struct for ChainCurve<T, C, D>
where ChainCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"first" => ::core::option::Option::Some(&self.first),
"second" => ::core::option::Option::Some(&self.second),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"first" => ::core::option::Option::Some(&mut self.first),
"second" => ::core::option::Option::Some(&mut self.second),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.first),
1usize => ::core::option::Option::Some(&self.second),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.first),
1usize => ::core::option::Option::Some(&mut self.second),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("first"),
1usize => ::core::option::Option::Some("second"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"first" => ::core::option::Option::Some(0usize),
"second" => ::core::option::Option::Some(1usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 2usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("first",
bevy_reflect::PartialReflect::to_dynamic(&self.first));
dynamic.insert_boxed("second",
bevy_reflect::PartialReflect::to_dynamic(&self.second));
dynamic
}
}
impl<T, C, D> bevy_reflect::PartialReflect for ChainCurve<T, C, D>
where ChainCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
first: <C as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.first)?,
second: <D as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.second)?,
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect, const _: () =
{
impl<T, C, D> bevy_reflect::FromReflect for ChainCurve<T, C, D> where
ChainCurve<T, C, D>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, D: bevy_reflect::TypePath,
C: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn from_reflect(reflect: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<Self> {
if let bevy_reflect::ReflectRef::Struct(__ref_struct) =
bevy_reflect::PartialReflect::reflect_ref(reflect) {
let __this =
Self {
first: <C as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"first")?)?,
second: <D as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"second")?)?,
_phantom: ::core::default::Default::default(),
};
::core::option::Option::Some(__this)
} else { ::core::option::Option::None }
}
}
};FromReflect),
525 reflect(from_reflect = false)
526)]
527pub struct ChainCurve<T, C, D> {
528 pub(crate) first: C,
529 pub(crate) second: D,
530 #[cfg_attr(feature = "serialize", serde(skip))]
531 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
532 pub(crate) _phantom: PhantomData<fn() -> T>,
533}
534
535impl<T, C, D> Curve<T> for ChainCurve<T, C, D>
536where
537 C: Curve<T>,
538 D: Curve<T>,
539{
540 #[inline]
541 fn domain(&self) -> Interval {
542 Interval::new(
545 self.first.domain().start(),
546 self.first.domain().end() + self.second.domain().length(),
547 )
548 .unwrap()
549 }
550
551 #[inline]
552 fn sample_unchecked(&self, t: f32) -> T {
553 if t > self.first.domain().end() {
554 self.second.sample_unchecked(
555 t - self.first.domain().end() + self.second.domain().start(),
557 )
558 } else {
559 self.first.sample_unchecked(t)
560 }
561 }
562}
563
564#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone, C: ::core::clone::Clone> ::core::clone::Clone
for ReverseCurve<T, C> {
#[inline]
fn clone(&self) -> ReverseCurve<T, C> {
ReverseCurve {
curve: ::core::clone::Clone::clone(&self.curve),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone, #[automatically_derived]
impl<T: ::core::fmt::Debug, C: ::core::fmt::Debug> ::core::fmt::Debug for
ReverseCurve<T, C> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "ReverseCurve",
"curve", &self.curve, "_phantom", &&self._phantom)
}
}Debug)]
572#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T, C> _serde::Serialize for ReverseCurve<T, C> where
C: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ReverseCurve", false as usize + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"curve", &self.curve)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, T, C> _serde::Deserialize<'de> for ReverseCurve<T, C> where
C: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"curve" => _serde::__private228::Ok(__Field::__field0),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"curve" => _serde::__private228::Ok(__Field::__field0),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, T, C> where
C: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<ReverseCurve<T,
C>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, T, C> _serde::de::Visitor<'de> for
__Visitor<'de, T, C> where C: _serde::Deserialize<'de> {
type Value = ReverseCurve<T, C>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct ReverseCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<C>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct ReverseCurve with 1 element")),
};
let __field1 = _serde::__private228::Default::default();
_serde::__private228::Ok(ReverseCurve {
curve: __field0,
_phantom: __field1,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<C> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("curve"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<C>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("curve")?,
};
_serde::__private228::Ok(ReverseCurve {
curve: __field0,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] = &["curve"];
_serde::Deserializer::deserialize_struct(__deserializer,
"ReverseCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<ReverseCurve<T,
C>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
573#[cfg_attr(
574 feature = "bevy_reflect",
575 derive(const _: () =
{
impl<T, C> bevy_reflect::GetTypeRegistration for ReverseCurve<T, C>
where ReverseCurve<T, C>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<C as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<T, C> bevy_reflect::Typed for ReverseCurve<T, C> where
ReverseCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<C>("curve")]).with_generics(bevy_reflect::Generics::from_iter([bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<T>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("T"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<C>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("C")))])))
})
}
}
#[allow(deprecated, reason =
"derives on a deprecated type shouldn't be considered a usage")]
impl<T, C> bevy_reflect::TypePath for ReverseCurve<T, C> where
ReverseCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath {
fn type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("bevy_math::curve::adaptors::ReverseCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::type_path()), ", "),
<C as bevy_reflect::TypePath>::type_path())), ">")
})
}
fn short_type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("ReverseCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::short_type_path()), ", "),
<C as bevy_reflect::TypePath>::short_type_path())), ">")
})
}
fn type_ident() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("ReverseCurve")
}
fn crate_name() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors".split(':').next().unwrap())
}
fn module_path() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors")
}
}
impl<T, C> bevy_reflect::Reflect for ReverseCurve<T, C> where
ReverseCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<T, C> bevy_reflect::structs::Struct for ReverseCurve<T, C> where
ReverseCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"curve" => ::core::option::Option::Some(&self.curve),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"curve" => ::core::option::Option::Some(&mut self.curve),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.curve),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.curve),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("curve"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"curve" => ::core::option::Option::Some(0usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 1usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("curve",
bevy_reflect::PartialReflect::to_dynamic(&self.curve));
dynamic
}
}
impl<T, C> bevy_reflect::PartialReflect for ReverseCurve<T, C> where
ReverseCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
curve: <C as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.curve)?,
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect, const _: () =
{
impl<T, C> bevy_reflect::FromReflect for ReverseCurve<T, C> where
ReverseCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::FromReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn from_reflect(reflect: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<Self> {
if let bevy_reflect::ReflectRef::Struct(__ref_struct) =
bevy_reflect::PartialReflect::reflect_ref(reflect) {
let __this =
Self {
curve: <C as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"curve")?)?,
_phantom: ::core::default::Default::default(),
};
::core::option::Option::Some(__this)
} else { ::core::option::Option::None }
}
}
};FromReflect),
576 reflect(from_reflect = false)
577)]
578pub struct ReverseCurve<T, C> {
579 pub(crate) curve: C,
580 #[cfg_attr(feature = "serialize", serde(skip))]
581 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
582 pub(crate) _phantom: PhantomData<fn() -> T>,
583}
584
585impl<T, C> Curve<T> for ReverseCurve<T, C>
586where
587 C: Curve<T>,
588{
589 #[inline]
590 fn domain(&self) -> Interval {
591 self.curve.domain()
592 }
593
594 #[inline]
595 fn sample_unchecked(&self, t: f32) -> T {
596 self.curve
597 .sample_unchecked(self.domain().end() - (t - self.domain().start()))
598 }
599}
600
601#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone, C: ::core::clone::Clone> ::core::clone::Clone
for RepeatCurve<T, C> {
#[inline]
fn clone(&self) -> RepeatCurve<T, C> {
RepeatCurve {
domain: ::core::clone::Clone::clone(&self.domain),
curve: ::core::clone::Clone::clone(&self.curve),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone, #[automatically_derived]
impl<T: ::core::fmt::Debug, C: ::core::fmt::Debug> ::core::fmt::Debug for
RepeatCurve<T, C> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field3_finish(f, "RepeatCurve",
"domain", &self.domain, "curve", &self.curve, "_phantom",
&&self._phantom)
}
}Debug)]
614#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T, C> _serde::Serialize for RepeatCurve<T, C> where
C: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"RepeatCurve", false as usize + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"domain", &self.domain)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"curve", &self.curve)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, T, C> _serde::Deserialize<'de> for RepeatCurve<T, C> where
C: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __field1, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"domain" => _serde::__private228::Ok(__Field::__field0),
"curve" => _serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"domain" => _serde::__private228::Ok(__Field::__field0),
b"curve" => _serde::__private228::Ok(__Field::__field1),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, T, C> where
C: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<RepeatCurve<T,
C>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, T, C> _serde::de::Visitor<'de> for
__Visitor<'de, T, C> where C: _serde::Deserialize<'de> {
type Value = RepeatCurve<T, C>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct RepeatCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<Interval>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct RepeatCurve with 2 elements")),
};
let __field1 =
match _serde::de::SeqAccess::next_element::<C>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(1usize,
&"struct RepeatCurve with 2 elements")),
};
let __field2 = _serde::__private228::Default::default();
_serde::__private228::Ok(RepeatCurve {
domain: __field0,
curve: __field1,
_phantom: __field2,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<Interval> =
_serde::__private228::None;
let mut __field1: _serde::__private228::Option<C> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("domain"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<Interval>(&mut __map)?);
}
__Field::__field1 => {
if _serde::__private228::Option::is_some(&__field1) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("curve"));
}
__field1 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<C>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("domain")?,
};
let __field1 =
match __field1 {
_serde::__private228::Some(__field1) => __field1,
_serde::__private228::None =>
_serde::__private228::de::missing_field("curve")?,
};
_serde::__private228::Ok(RepeatCurve {
domain: __field0,
curve: __field1,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] = &["domain", "curve"];
_serde::Deserializer::deserialize_struct(__deserializer,
"RepeatCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<RepeatCurve<T,
C>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
615#[cfg_attr(
616 feature = "bevy_reflect",
617 derive(const _: () =
{
impl<T, C> bevy_reflect::GetTypeRegistration for RepeatCurve<T, C>
where RepeatCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<Interval as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
<C as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<T, C> bevy_reflect::Typed for RepeatCurve<T, C> where
RepeatCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<Interval>("domain"),
bevy_reflect::NamedField::new::<C>("curve")]).with_generics(bevy_reflect::Generics::from_iter([bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<T>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("T"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<C>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("C")))])))
})
}
}
#[allow(deprecated, reason =
"derives on a deprecated type shouldn't be considered a usage")]
impl<T, C> bevy_reflect::TypePath for RepeatCurve<T, C> where
RepeatCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath {
fn type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("bevy_math::curve::adaptors::RepeatCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::type_path()), ", "),
<C as bevy_reflect::TypePath>::type_path())), ">")
})
}
fn short_type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("RepeatCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::short_type_path()), ", "),
<C as bevy_reflect::TypePath>::short_type_path())), ">")
})
}
fn type_ident() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("RepeatCurve")
}
fn crate_name() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors".split(':').next().unwrap())
}
fn module_path() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors")
}
}
impl<T, C> bevy_reflect::Reflect for RepeatCurve<T, C> where
RepeatCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<T, C> bevy_reflect::structs::Struct for RepeatCurve<T, C> where
RepeatCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"domain" => ::core::option::Option::Some(&self.domain),
"curve" => ::core::option::Option::Some(&self.curve),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"domain" => ::core::option::Option::Some(&mut self.domain),
"curve" => ::core::option::Option::Some(&mut self.curve),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.domain),
1usize => ::core::option::Option::Some(&self.curve),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.domain),
1usize => ::core::option::Option::Some(&mut self.curve),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("domain"),
1usize => ::core::option::Option::Some("curve"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"domain" => ::core::option::Option::Some(0usize),
"curve" => ::core::option::Option::Some(1usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 2usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("domain",
bevy_reflect::PartialReflect::to_dynamic(&self.domain));
dynamic.insert_boxed("curve",
bevy_reflect::PartialReflect::to_dynamic(&self.curve));
dynamic
}
}
impl<T, C> bevy_reflect::PartialReflect for RepeatCurve<T, C> where
RepeatCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
domain: <Interval as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.domain)?,
curve: <C as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.curve)?,
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect, const _: () =
{
impl<T, C> bevy_reflect::FromReflect for RepeatCurve<T, C> where
RepeatCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::FromReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn from_reflect(reflect: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<Self> {
if let bevy_reflect::ReflectRef::Struct(__ref_struct) =
bevy_reflect::PartialReflect::reflect_ref(reflect) {
let __this =
Self {
domain: <Interval as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"domain")?)?,
curve: <C as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"curve")?)?,
_phantom: ::core::default::Default::default(),
};
::core::option::Option::Some(__this)
} else { ::core::option::Option::None }
}
}
};FromReflect),
618 reflect(from_reflect = false)
619)]
620pub struct RepeatCurve<T, C> {
621 pub(crate) domain: Interval,
622 pub(crate) curve: C,
623 #[cfg_attr(feature = "serialize", serde(skip))]
624 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
625 pub(crate) _phantom: PhantomData<fn() -> T>,
626}
627
628impl<T, C> Curve<T> for RepeatCurve<T, C>
629where
630 C: Curve<T>,
631{
632 #[inline]
633 fn domain(&self) -> Interval {
634 self.domain
635 }
636
637 #[inline]
638 fn sample_unchecked(&self, t: f32) -> T {
639 let t = self.base_curve_sample_time(t);
640 self.curve.sample_unchecked(t)
641 }
642}
643
644impl<T, C> RepeatCurve<T, C>
645where
646 C: Curve<T>,
647{
648 #[inline]
649 pub(crate) fn base_curve_sample_time(&self, t: f32) -> f32 {
650 let d = self.curve.domain();
652 let cyclic_t = ops::rem_euclid(t - d.start(), d.length());
653 if t != d.start() && cyclic_t == 0.0 {
654 d.end()
655 } else {
656 d.start() + cyclic_t
657 }
658 }
659}
660
661#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone, C: ::core::clone::Clone> ::core::clone::Clone
for ForeverCurve<T, C> {
#[inline]
fn clone(&self) -> ForeverCurve<T, C> {
ForeverCurve {
curve: ::core::clone::Clone::clone(&self.curve),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone, #[automatically_derived]
impl<T: ::core::fmt::Debug, C: ::core::fmt::Debug> ::core::fmt::Debug for
ForeverCurve<T, C> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "ForeverCurve",
"curve", &self.curve, "_phantom", &&self._phantom)
}
}Debug)]
674#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T, C> _serde::Serialize for ForeverCurve<T, C> where
C: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ForeverCurve", false as usize + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"curve", &self.curve)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, T, C> _serde::Deserialize<'de> for ForeverCurve<T, C> where
C: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"curve" => _serde::__private228::Ok(__Field::__field0),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"curve" => _serde::__private228::Ok(__Field::__field0),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, T, C> where
C: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<ForeverCurve<T,
C>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, T, C> _serde::de::Visitor<'de> for
__Visitor<'de, T, C> where C: _serde::Deserialize<'de> {
type Value = ForeverCurve<T, C>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct ForeverCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<C>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct ForeverCurve with 1 element")),
};
let __field1 = _serde::__private228::Default::default();
_serde::__private228::Ok(ForeverCurve {
curve: __field0,
_phantom: __field1,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<C> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("curve"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<C>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("curve")?,
};
_serde::__private228::Ok(ForeverCurve {
curve: __field0,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] = &["curve"];
_serde::Deserializer::deserialize_struct(__deserializer,
"ForeverCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<ForeverCurve<T,
C>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
675#[cfg_attr(
676 feature = "bevy_reflect",
677 derive(const _: () =
{
impl<T, C> bevy_reflect::GetTypeRegistration for ForeverCurve<T, C>
where ForeverCurve<T, C>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<C as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<T, C> bevy_reflect::Typed for ForeverCurve<T, C> where
ForeverCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<C>("curve")]).with_generics(bevy_reflect::Generics::from_iter([bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<T>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("T"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<C>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("C")))])))
})
}
}
#[allow(deprecated, reason =
"derives on a deprecated type shouldn't be considered a usage")]
impl<T, C> bevy_reflect::TypePath for ForeverCurve<T, C> where
ForeverCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath {
fn type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("bevy_math::curve::adaptors::ForeverCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::type_path()), ", "),
<C as bevy_reflect::TypePath>::type_path())), ">")
})
}
fn short_type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("ForeverCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::short_type_path()), ", "),
<C as bevy_reflect::TypePath>::short_type_path())), ">")
})
}
fn type_ident() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("ForeverCurve")
}
fn crate_name() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors".split(':').next().unwrap())
}
fn module_path() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors")
}
}
impl<T, C> bevy_reflect::Reflect for ForeverCurve<T, C> where
ForeverCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<T, C> bevy_reflect::structs::Struct for ForeverCurve<T, C> where
ForeverCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"curve" => ::core::option::Option::Some(&self.curve),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"curve" => ::core::option::Option::Some(&mut self.curve),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.curve),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.curve),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("curve"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"curve" => ::core::option::Option::Some(0usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 1usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("curve",
bevy_reflect::PartialReflect::to_dynamic(&self.curve));
dynamic
}
}
impl<T, C> bevy_reflect::PartialReflect for ForeverCurve<T, C> where
ForeverCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
curve: <C as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.curve)?,
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect, const _: () =
{
impl<T, C> bevy_reflect::FromReflect for ForeverCurve<T, C> where
ForeverCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::FromReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn from_reflect(reflect: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<Self> {
if let bevy_reflect::ReflectRef::Struct(__ref_struct) =
bevy_reflect::PartialReflect::reflect_ref(reflect) {
let __this =
Self {
curve: <C as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"curve")?)?,
_phantom: ::core::default::Default::default(),
};
::core::option::Option::Some(__this)
} else { ::core::option::Option::None }
}
}
};FromReflect),
678 reflect(from_reflect = false)
679)]
680pub struct ForeverCurve<T, C> {
681 pub(crate) curve: C,
682 #[cfg_attr(feature = "serialize", serde(skip))]
683 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
684 pub(crate) _phantom: PhantomData<fn() -> T>,
685}
686
687impl<T, C> Curve<T> for ForeverCurve<T, C>
688where
689 C: Curve<T>,
690{
691 #[inline]
692 fn domain(&self) -> Interval {
693 Interval::EVERYWHERE
694 }
695
696 #[inline]
697 fn sample_unchecked(&self, t: f32) -> T {
698 let t = self.base_curve_sample_time(t);
699 self.curve.sample_unchecked(t)
700 }
701}
702
703impl<T, C> ForeverCurve<T, C>
704where
705 C: Curve<T>,
706{
707 #[inline]
708 pub(crate) fn base_curve_sample_time(&self, t: f32) -> f32 {
709 let d = self.curve.domain();
711 let cyclic_t = ops::rem_euclid(t - d.start(), d.length());
712 if t != d.start() && cyclic_t == 0.0 {
713 d.end()
714 } else {
715 d.start() + cyclic_t
716 }
717 }
718}
719
720#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone, C: ::core::clone::Clone> ::core::clone::Clone
for PingPongCurve<T, C> {
#[inline]
fn clone(&self) -> PingPongCurve<T, C> {
PingPongCurve {
curve: ::core::clone::Clone::clone(&self.curve),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone, #[automatically_derived]
impl<T: ::core::fmt::Debug, C: ::core::fmt::Debug> ::core::fmt::Debug for
PingPongCurve<T, C> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field2_finish(f, "PingPongCurve",
"curve", &self.curve, "_phantom", &&self._phantom)
}
}Debug)]
729#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T, C> _serde::Serialize for PingPongCurve<T, C> where
C: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"PingPongCurve", false as usize + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"curve", &self.curve)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, T, C> _serde::Deserialize<'de> for PingPongCurve<T, C> where
C: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"curve" => _serde::__private228::Ok(__Field::__field0),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"curve" => _serde::__private228::Ok(__Field::__field0),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, T, C> where
C: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<PingPongCurve<T,
C>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, T, C> _serde::de::Visitor<'de> for
__Visitor<'de, T, C> where C: _serde::Deserialize<'de> {
type Value = PingPongCurve<T, C>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct PingPongCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<C>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct PingPongCurve with 1 element")),
};
let __field1 = _serde::__private228::Default::default();
_serde::__private228::Ok(PingPongCurve {
curve: __field0,
_phantom: __field1,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<C> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("curve"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<C>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("curve")?,
};
_serde::__private228::Ok(PingPongCurve {
curve: __field0,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] = &["curve"];
_serde::Deserializer::deserialize_struct(__deserializer,
"PingPongCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<PingPongCurve<T,
C>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
730#[cfg_attr(
731 feature = "bevy_reflect",
732 derive(const _: () =
{
impl<T, C> bevy_reflect::GetTypeRegistration for PingPongCurve<T, C>
where PingPongCurve<T, C>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
C: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<C as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<T, C> bevy_reflect::Typed for PingPongCurve<T, C> where
PingPongCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<C>("curve")]).with_generics(bevy_reflect::Generics::from_iter([bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<T>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("T"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<C>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("C")))])))
})
}
}
#[allow(deprecated, reason =
"derives on a deprecated type shouldn't be considered a usage")]
impl<T, C> bevy_reflect::TypePath for PingPongCurve<T, C> where
PingPongCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath {
fn type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("bevy_math::curve::adaptors::PingPongCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::type_path()), ", "),
<C as bevy_reflect::TypePath>::type_path())), ">")
})
}
fn short_type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("PingPongCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::short_type_path()), ", "),
<C as bevy_reflect::TypePath>::short_type_path())), ">")
})
}
fn type_ident() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("PingPongCurve")
}
fn crate_name() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors".split(':').next().unwrap())
}
fn module_path() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors")
}
}
impl<T, C> bevy_reflect::Reflect for PingPongCurve<T, C> where
PingPongCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<T, C> bevy_reflect::structs::Struct for PingPongCurve<T, C> where
PingPongCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"curve" => ::core::option::Option::Some(&self.curve),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"curve" => ::core::option::Option::Some(&mut self.curve),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.curve),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.curve),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("curve"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"curve" => ::core::option::Option::Some(0usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 1usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("curve",
bevy_reflect::PartialReflect::to_dynamic(&self.curve));
dynamic
}
}
impl<T, C> bevy_reflect::PartialReflect for PingPongCurve<T, C> where
PingPongCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
curve: <C as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.curve)?,
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect, const _: () =
{
impl<T, C> bevy_reflect::FromReflect for PingPongCurve<T, C> where
PingPongCurve<T, C>: ::core::any::Any + ::core::marker::Send +
::core::marker::Sync, T: bevy_reflect::TypePath,
C: bevy_reflect::TypePath, C: bevy_reflect::FromReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn from_reflect(reflect: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<Self> {
if let bevy_reflect::ReflectRef::Struct(__ref_struct) =
bevy_reflect::PartialReflect::reflect_ref(reflect) {
let __this =
Self {
curve: <C as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"curve")?)?,
_phantom: ::core::default::Default::default(),
};
::core::option::Option::Some(__this)
} else { ::core::option::Option::None }
}
}
};FromReflect),
733 reflect(from_reflect = false)
734)]
735pub struct PingPongCurve<T, C> {
736 pub(crate) curve: C,
737 #[cfg_attr(feature = "serialize", serde(skip))]
738 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
739 pub(crate) _phantom: PhantomData<fn() -> T>,
740}
741
742impl<T, C> Curve<T> for PingPongCurve<T, C>
743where
744 C: Curve<T>,
745{
746 #[inline]
747 fn domain(&self) -> Interval {
748 Interval::new(
751 self.curve.domain().start(),
752 self.curve.domain().end() + self.curve.domain().length(),
753 )
754 .unwrap()
755 }
756
757 #[inline]
758 fn sample_unchecked(&self, t: f32) -> T {
759 let final_t = if t > self.curve.domain().end() {
761 self.curve.domain().end() * 2.0 - t
762 } else {
763 t
764 };
765 self.curve.sample_unchecked(final_t)
766 }
767}
768
769#[derive(#[automatically_derived]
impl<T: ::core::clone::Clone, C: ::core::clone::Clone,
D: ::core::clone::Clone> ::core::clone::Clone for
ContinuationCurve<T, C, D> {
#[inline]
fn clone(&self) -> ContinuationCurve<T, C, D> {
ContinuationCurve {
first: ::core::clone::Clone::clone(&self.first),
second: ::core::clone::Clone::clone(&self.second),
offset: ::core::clone::Clone::clone(&self.offset),
_phantom: ::core::clone::Clone::clone(&self._phantom),
}
}
}Clone, #[automatically_derived]
impl<T: ::core::fmt::Debug, C: ::core::fmt::Debug, D: ::core::fmt::Debug>
::core::fmt::Debug for ContinuationCurve<T, C, D> {
#[inline]
fn fmt(&self, f: &mut ::core::fmt::Formatter) -> ::core::fmt::Result {
::core::fmt::Formatter::debug_struct_field4_finish(f,
"ContinuationCurve", "first", &self.first, "second", &self.second,
"offset", &self.offset, "_phantom", &&self._phantom)
}
}Debug)]
784#[cfg_attr(feature = "serialize", derive(#[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<T, C, D> _serde::Serialize for ContinuationCurve<T, C, D> where
T: _serde::Serialize, C: _serde::Serialize, D: _serde::Serialize {
fn serialize<__S>(&self, __serializer: __S)
-> _serde::__private228::Result<__S::Ok, __S::Error> where
__S: _serde::Serializer {
let mut __serde_state =
_serde::Serializer::serialize_struct(__serializer,
"ContinuationCurve", false as usize + 1 + 1 + 1)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"first", &self.first)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"second", &self.second)?;
_serde::ser::SerializeStruct::serialize_field(&mut __serde_state,
"offset", &self.offset)?;
_serde::ser::SerializeStruct::end(__serde_state)
}
}
};serde::Serialize, #[doc(hidden)]
#[allow(non_upper_case_globals, unused_attributes, unused_qualifications,
clippy :: absolute_paths,)]
const _: () =
{
#[allow(unused_extern_crates, clippy :: useless_attribute)]
extern crate serde as _serde;
;
#[automatically_derived]
impl<'de, T, C, D> _serde::Deserialize<'de> for
ContinuationCurve<T, C, D> where T: _serde::Deserialize<'de>,
C: _serde::Deserialize<'de>, D: _serde::Deserialize<'de> {
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
#[allow(non_camel_case_types)]
#[doc(hidden)]
enum __Field { __field0, __field1, __field2, __ignore, }
#[doc(hidden)]
struct __FieldVisitor;
#[automatically_derived]
impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
type Value = __Field;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"field identifier")
}
fn visit_u64<__E>(self, __value: u64)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
0u64 => _serde::__private228::Ok(__Field::__field0),
1u64 => _serde::__private228::Ok(__Field::__field1),
2u64 => _serde::__private228::Ok(__Field::__field2),
_ => _serde::__private228::Ok(__Field::__ignore),
}
}
fn visit_str<__E>(self, __value: &str)
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
"first" => _serde::__private228::Ok(__Field::__field0),
"second" => _serde::__private228::Ok(__Field::__field1),
"offset" => _serde::__private228::Ok(__Field::__field2),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
fn visit_bytes<__E>(self, __value: &[u8])
-> _serde::__private228::Result<Self::Value, __E> where
__E: _serde::de::Error {
match __value {
b"first" => _serde::__private228::Ok(__Field::__field0),
b"second" => _serde::__private228::Ok(__Field::__field1),
b"offset" => _serde::__private228::Ok(__Field::__field2),
_ => { _serde::__private228::Ok(__Field::__ignore) }
}
}
}
#[automatically_derived]
impl<'de> _serde::Deserialize<'de> for __Field {
#[inline]
fn deserialize<__D>(__deserializer: __D)
-> _serde::__private228::Result<Self, __D::Error> where
__D: _serde::Deserializer<'de> {
_serde::Deserializer::deserialize_identifier(__deserializer,
__FieldVisitor)
}
}
#[doc(hidden)]
struct __Visitor<'de, T, C, D> where
T: _serde::Deserialize<'de>, C: _serde::Deserialize<'de>,
D: _serde::Deserialize<'de> {
marker: _serde::__private228::PhantomData<ContinuationCurve<T,
C, D>>,
lifetime: _serde::__private228::PhantomData<&'de ()>,
}
#[automatically_derived]
impl<'de, T, C, D> _serde::de::Visitor<'de> for
__Visitor<'de, T, C, D> where T: _serde::Deserialize<'de>,
C: _serde::Deserialize<'de>, D: _serde::Deserialize<'de> {
type Value = ContinuationCurve<T, C, D>;
fn expecting(&self,
__formatter: &mut _serde::__private228::Formatter)
-> _serde::__private228::fmt::Result {
_serde::__private228::Formatter::write_str(__formatter,
"struct ContinuationCurve")
}
#[inline]
fn visit_seq<__A>(self, mut __seq: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::SeqAccess<'de> {
let __field0 =
match _serde::de::SeqAccess::next_element::<C>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(0usize,
&"struct ContinuationCurve with 3 elements")),
};
let __field1 =
match _serde::de::SeqAccess::next_element::<D>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(1usize,
&"struct ContinuationCurve with 3 elements")),
};
let __field2 =
match _serde::de::SeqAccess::next_element::<T>(&mut __seq)?
{
_serde::__private228::Some(__value) => __value,
_serde::__private228::None =>
return _serde::__private228::Err(_serde::de::Error::invalid_length(2usize,
&"struct ContinuationCurve with 3 elements")),
};
let __field3 = _serde::__private228::Default::default();
_serde::__private228::Ok(ContinuationCurve {
first: __field0,
second: __field1,
offset: __field2,
_phantom: __field3,
})
}
#[inline]
fn visit_map<__A>(self, mut __map: __A)
-> _serde::__private228::Result<Self::Value, __A::Error>
where __A: _serde::de::MapAccess<'de> {
let mut __field0: _serde::__private228::Option<C> =
_serde::__private228::None;
let mut __field1: _serde::__private228::Option<D> =
_serde::__private228::None;
let mut __field2: _serde::__private228::Option<T> =
_serde::__private228::None;
while let _serde::__private228::Some(__key) =
_serde::de::MapAccess::next_key::<__Field>(&mut __map)? {
match __key {
__Field::__field0 => {
if _serde::__private228::Option::is_some(&__field0) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("first"));
}
__field0 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<C>(&mut __map)?);
}
__Field::__field1 => {
if _serde::__private228::Option::is_some(&__field1) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("second"));
}
__field1 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<D>(&mut __map)?);
}
__Field::__field2 => {
if _serde::__private228::Option::is_some(&__field2) {
return _serde::__private228::Err(<__A::Error as
_serde::de::Error>::duplicate_field("offset"));
}
__field2 =
_serde::__private228::Some(_serde::de::MapAccess::next_value::<T>(&mut __map)?);
}
_ => {
let _ =
_serde::de::MapAccess::next_value::<_serde::de::IgnoredAny>(&mut __map)?;
}
}
}
let __field0 =
match __field0 {
_serde::__private228::Some(__field0) => __field0,
_serde::__private228::None =>
_serde::__private228::de::missing_field("first")?,
};
let __field1 =
match __field1 {
_serde::__private228::Some(__field1) => __field1,
_serde::__private228::None =>
_serde::__private228::de::missing_field("second")?,
};
let __field2 =
match __field2 {
_serde::__private228::Some(__field2) => __field2,
_serde::__private228::None =>
_serde::__private228::de::missing_field("offset")?,
};
_serde::__private228::Ok(ContinuationCurve {
first: __field0,
second: __field1,
offset: __field2,
_phantom: _serde::__private228::Default::default(),
})
}
}
#[doc(hidden)]
const FIELDS: &'static [&'static str] =
&["first", "second", "offset"];
_serde::Deserializer::deserialize_struct(__deserializer,
"ContinuationCurve", FIELDS,
__Visitor {
marker: _serde::__private228::PhantomData::<ContinuationCurve<T,
C, D>>,
lifetime: _serde::__private228::PhantomData,
})
}
}
};serde::Deserialize))]
785#[cfg_attr(
786 feature = "bevy_reflect",
787 derive(const _: () =
{
impl<T, C, D> bevy_reflect::GetTypeRegistration for
ContinuationCurve<T, C, D> where
ContinuationCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
T: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn get_type_registration() -> bevy_reflect::TypeRegistration {
let mut registration =
bevy_reflect::TypeRegistration::of::<Self>();
registration.insert::<bevy_reflect::ReflectFromPtr>(bevy_reflect::FromType::<Self>::from_type());
registration
}
#[inline(never)]
fn register_type_dependencies(registry:
&mut bevy_reflect::TypeRegistry) {
<C as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
<D as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
<T as
bevy_reflect::__macro_exports::RegisterForReflection>::__register(registry);
}
}
impl<T, C, D> bevy_reflect::Typed for ContinuationCurve<T, C, D> where
ContinuationCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
T: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn type_info() -> &'static bevy_reflect::TypeInfo {
static CELL: bevy_reflect::utility::GenericTypeInfoCell =
bevy_reflect::utility::GenericTypeInfoCell::new();
CELL.get_or_insert::<Self,
_>(||
{
bevy_reflect::TypeInfo::Struct(bevy_reflect::structs::StructInfo::new::<Self>(&[bevy_reflect::NamedField::new::<C>("first"),
bevy_reflect::NamedField::new::<D>("second"),
bevy_reflect::NamedField::new::<T>("offset")]).with_generics(bevy_reflect::Generics::from_iter([bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<T>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("T"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<C>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("C"))),
bevy_reflect::GenericInfo::Type(bevy_reflect::TypeParamInfo::new::<D>(bevy_reflect::__macro_exports::alloc_utils::Cow::Borrowed("D")))])))
})
}
}
#[allow(deprecated, reason =
"derives on a deprecated type shouldn't be considered a usage")]
impl<T, C, D> bevy_reflect::TypePath for ContinuationCurve<T, C, D>
where ContinuationCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath {
fn type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("bevy_math::curve::adaptors::ContinuationCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::type_path()), ", "),
<C as bevy_reflect::TypePath>::type_path()), ", "),
<D as bevy_reflect::TypePath>::type_path())), ">")
})
}
fn short_type_path() -> &'static str {
static CELL: bevy_reflect::utility::GenericTypePathCell =
bevy_reflect::utility::GenericTypePathCell::new();
CELL.get_or_insert::<Self,
_>(||
{
::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string("ContinuationCurve<"),
&::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(::core::ops::Add::<&str>::add(bevy_reflect::__macro_exports::alloc_utils::ToString::to_string(<T
as bevy_reflect::TypePath>::short_type_path()), ", "),
<C as bevy_reflect::TypePath>::short_type_path()), ", "),
<D as bevy_reflect::TypePath>::short_type_path())), ">")
})
}
fn type_ident() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("ContinuationCurve")
}
fn crate_name() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors".split(':').next().unwrap())
}
fn module_path() -> ::core::option::Option<&'static str> {
::core::option::Option::Some("bevy_math::curve::adaptors")
}
}
impl<T, C, D> bevy_reflect::Reflect for ContinuationCurve<T, C, D>
where ContinuationCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
T: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn into_any(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn ::core::any::Any> {
self
}
#[inline]
fn as_any(&self) -> &dyn ::core::any::Any { self }
#[inline]
fn as_any_mut(&mut self) -> &mut dyn ::core::any::Any { self }
#[inline]
fn into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect> {
self
}
#[inline]
fn as_reflect(&self) -> &dyn bevy_reflect::Reflect { self }
#[inline]
fn as_reflect_mut(&mut self) -> &mut dyn bevy_reflect::Reflect {
self
}
#[inline]
fn set(&mut self,
value:
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>)
->
::core::result::Result<(),
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>> {
*self = <dyn bevy_reflect::Reflect>::take(value)?;
::core::result::Result::Ok(())
}
}
impl<T, C, D> bevy_reflect::structs::Struct for
ContinuationCurve<T, C, D> where
ContinuationCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
T: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn field(&self, name: &str)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match name {
"first" => ::core::option::Option::Some(&self.first),
"second" => ::core::option::Option::Some(&self.second),
"offset" => ::core::option::Option::Some(&self.offset),
_ => ::core::option::Option::None,
}
}
fn field_mut(&mut self, name: &str)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match name {
"first" => ::core::option::Option::Some(&mut self.first),
"second" => ::core::option::Option::Some(&mut self.second),
"offset" => ::core::option::Option::Some(&mut self.offset),
_ => ::core::option::Option::None,
}
}
fn field_at(&self, index: usize)
-> ::core::option::Option<&dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&self.first),
1usize => ::core::option::Option::Some(&self.second),
2usize => ::core::option::Option::Some(&self.offset),
_ => ::core::option::Option::None,
}
}
fn field_at_mut(&mut self, index: usize)
->
::core::option::Option<&mut dyn bevy_reflect::PartialReflect> {
match index {
0usize => ::core::option::Option::Some(&mut self.first),
1usize => ::core::option::Option::Some(&mut self.second),
2usize => ::core::option::Option::Some(&mut self.offset),
_ => ::core::option::Option::None,
}
}
fn name_at(&self, index: usize) -> ::core::option::Option<&str> {
match index {
0usize => ::core::option::Option::Some("first"),
1usize => ::core::option::Option::Some("second"),
2usize => ::core::option::Option::Some("offset"),
_ => ::core::option::Option::None,
}
}
fn index_of_name(&self, name: &str)
-> ::core::option::Option<usize> {
match name {
"first" => ::core::option::Option::Some(0usize),
"second" => ::core::option::Option::Some(1usize),
"offset" => ::core::option::Option::Some(2usize),
_ => ::core::option::Option::None,
}
}
fn field_len(&self) -> usize { 3usize }
fn iter_fields(&self) -> bevy_reflect::structs::FieldIter {
bevy_reflect::structs::FieldIter::new(self)
}
fn to_dynamic_struct(&self)
-> bevy_reflect::structs::DynamicStruct {
let mut dynamic: bevy_reflect::structs::DynamicStruct =
::core::default::Default::default();
dynamic.set_represented_type(bevy_reflect::PartialReflect::get_represented_type_info(self));
dynamic.insert_boxed("first",
bevy_reflect::PartialReflect::to_dynamic(&self.first));
dynamic.insert_boxed("second",
bevy_reflect::PartialReflect::to_dynamic(&self.second));
dynamic.insert_boxed("offset",
bevy_reflect::PartialReflect::to_dynamic(&self.offset));
dynamic
}
}
impl<T, C, D> bevy_reflect::PartialReflect for
ContinuationCurve<T, C, D> where
ContinuationCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::PartialReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
T: bevy_reflect::PartialReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
#[inline]
fn get_represented_type_info(&self)
-> ::core::option::Option<&'static bevy_reflect::TypeInfo> {
::core::option::Option::Some(<Self as
bevy_reflect::Typed>::type_info())
}
#[inline]
fn try_apply(&mut self, value: &dyn bevy_reflect::PartialReflect)
-> ::core::result::Result<(), bevy_reflect::ApplyError> {
if let bevy_reflect::ReflectRef::Struct(struct_value) =
bevy_reflect::PartialReflect::reflect_ref(value) {
for (name, value) in
bevy_reflect::structs::Struct::iter_fields(struct_value) {
if let ::core::option::Option::Some(v) =
bevy_reflect::structs::Struct::field_mut(self, name) {
bevy_reflect::PartialReflect::try_apply(v, value)?;
}
}
} else {
return ::core::result::Result::Err(bevy_reflect::ApplyError::MismatchedKinds {
from_kind: bevy_reflect::PartialReflect::reflect_kind(value),
to_kind: bevy_reflect::ReflectKind::Struct,
});
}
::core::result::Result::Ok(())
}
#[inline]
fn reflect_kind(&self) -> bevy_reflect::ReflectKind {
bevy_reflect::ReflectKind::Struct
}
#[inline]
fn reflect_ref(&self) -> bevy_reflect::ReflectRef {
bevy_reflect::ReflectRef::Struct(self)
}
#[inline]
fn reflect_mut(&mut self) -> bevy_reflect::ReflectMut {
bevy_reflect::ReflectMut::Struct(self)
}
#[inline]
fn reflect_owned(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
-> bevy_reflect::ReflectOwned {
bevy_reflect::ReflectOwned::Struct(self)
}
#[inline]
fn try_into_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect>> {
::core::result::Result::Ok(self)
}
#[inline]
fn try_as_reflect(&self)
-> ::core::option::Option<&dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn try_as_reflect_mut(&mut self)
-> ::core::option::Option<&mut dyn bevy_reflect::Reflect> {
::core::option::Option::Some(self)
}
#[inline]
fn into_partial_reflect(self:
bevy_reflect::__macro_exports::alloc_utils::Box<Self>)
->
bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::PartialReflect> {
self
}
#[inline]
fn as_partial_reflect(&self)
-> &dyn bevy_reflect::PartialReflect {
self
}
#[inline]
fn as_partial_reflect_mut(&mut self)
-> &mut dyn bevy_reflect::PartialReflect {
self
}
fn reflect_partial_eq(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<bool> {
(bevy_reflect::structs::struct_partial_eq)(self, value)
}
fn reflect_partial_cmp(&self,
value: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<::core::cmp::Ordering> {
(bevy_reflect::structs::struct_partial_cmp)(self, value)
}
#[inline]
#[allow(unreachable_code, reason =
"Ignored fields without a `clone` attribute will early-return with an error")]
fn reflect_clone(&self)
->
::core::result::Result<bevy_reflect::__macro_exports::alloc_utils::Box<dyn bevy_reflect::Reflect>,
bevy_reflect::ReflectCloneError> {
::core::result::Result::Ok(bevy_reflect::__macro_exports::alloc_utils::Box::new(Self {
first: <C as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.first)?,
second: <D as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.second)?,
offset: <T as
bevy_reflect::PartialReflect>::reflect_clone_and_take(&self.offset)?,
_phantom: ::core::clone::Clone::clone(&self._phantom),
}))
}
}
};Reflect, const _: () =
{
impl<T, C, D> bevy_reflect::FromReflect for ContinuationCurve<T, C, D>
where ContinuationCurve<T, C, D>: ::core::any::Any +
::core::marker::Send + ::core::marker::Sync,
T: bevy_reflect::TypePath, C: bevy_reflect::TypePath,
D: bevy_reflect::TypePath, C: bevy_reflect::FromReflect +
bevy_reflect::TypePath + bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
D: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection,
T: bevy_reflect::FromReflect + bevy_reflect::TypePath +
bevy_reflect::MaybeTyped +
bevy_reflect::__macro_exports::RegisterForReflection {
fn from_reflect(reflect: &dyn bevy_reflect::PartialReflect)
-> ::core::option::Option<Self> {
if let bevy_reflect::ReflectRef::Struct(__ref_struct) =
bevy_reflect::PartialReflect::reflect_ref(reflect) {
let __this =
Self {
first: <C as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"first")?)?,
second: <D as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"second")?)?,
offset: <T as
bevy_reflect::FromReflect>::from_reflect(bevy_reflect::structs::Struct::field(__ref_struct,
"offset")?)?,
_phantom: ::core::default::Default::default(),
};
::core::option::Option::Some(__this)
} else { ::core::option::Option::None }
}
}
};FromReflect),
788 reflect(from_reflect = false)
789)]
790pub struct ContinuationCurve<T, C, D> {
791 pub(crate) first: C,
792 pub(crate) second: D,
793 pub(crate) offset: T,
795 #[cfg_attr(feature = "serialize", serde(skip))]
796 #[cfg_attr(feature = "bevy_reflect", reflect(ignore, clone))]
797 pub(crate) _phantom: PhantomData<fn() -> T>,
798}
799
800impl<T, C, D> Curve<T> for ContinuationCurve<T, C, D>
801where
802 T: VectorSpace,
803 C: Curve<T>,
804 D: Curve<T>,
805{
806 #[inline]
807 fn domain(&self) -> Interval {
808 Interval::new(
811 self.first.domain().start(),
812 self.first.domain().end() + self.second.domain().length(),
813 )
814 .unwrap()
815 }
816
817 #[inline]
818 fn sample_unchecked(&self, t: f32) -> T {
819 if t > self.first.domain().end() {
820 self.second.sample_unchecked(
821 t - self.first.domain().end() + self.second.domain().start(),
823 ) + self.offset
824 } else {
825 self.first.sample_unchecked(t)
826 }
827 }
828}