use std::ops::RangeInclusive;
use crate::prelude::*;
use avian3d::{math::Scalar, prelude::Mass};
use bevy_ecs::prelude::*;
use crate::prelude::AvianPickupActor;
pub(super) fn plugin(_app: &mut App) {}
pub(super) mod prelude {
pub use super::{
HeldProp, PickupMassOverride, PitchRangeOverride, PreferredPickupDistanceOverride,
PreferredPickupRotation, ThrownAngularSpeedOverride, ThrownLinearSpeedOverride,
};
}
#[derive(Debug, Clone, PartialEq, Component, Default, Reflect)]
#[reflect(Debug, Component, PartialEq, Default)]
#[cfg_attr(
feature = "serialize",
derive(serde::Serialize, serde::Deserialize),
reflect(Serialize, Deserialize)
)]
pub struct PreferredPickupRotation(pub Quat);
#[derive(Debug, Clone, PartialEq, Component)]
pub(crate) struct PrePickupRotation(pub Quat);
#[derive(Debug, Clone, PartialEq, Component, Reflect)]
#[reflect(Debug, Component, PartialEq, Default)]
#[cfg_attr(
feature = "serialize",
derive(serde::Serialize, serde::Deserialize),
reflect(Serialize, Deserialize)
)]
pub struct PitchRangeOverride(pub RangeInclusive<Scalar>);
impl Default for PitchRangeOverride {
fn default() -> Self {
Self(AvianPickupActor::default().hold.pitch_range)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Component, Reflect)]
#[reflect(Debug, Component, PartialEq, Default)]
#[cfg_attr(
feature = "serialize",
derive(serde::Serialize, serde::Deserialize),
reflect(Serialize, Deserialize)
)]
pub struct PreferredPickupDistanceOverride(pub Scalar);
impl Default for PreferredPickupDistanceOverride {
fn default() -> Self {
Self(AvianPickupActor::default().hold.preferred_distance)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Component, Reflect)]
#[reflect(Debug, Component, Default, PartialEq)]
#[cfg_attr(
feature = "serialize",
derive(serde::Serialize, serde::Deserialize),
reflect(Serialize, Deserialize)
)]
pub struct PickupMassOverride(pub Scalar);
impl Default for PickupMassOverride {
fn default() -> Self {
Self(AvianPickupActor::default().hold.temporary_prop_mass)
}
}
#[derive(Debug, Clone, Copy, PartialEq, Component, Reflect)]
#[reflect(Debug, Component, PartialEq, Default)]
#[cfg_attr(
feature = "serialize",
derive(serde::Serialize, serde::Deserialize),
reflect(Serialize, Deserialize)
)]
pub struct ThrownLinearSpeedOverride(pub Scalar);
impl Default for ThrownLinearSpeedOverride {
fn default() -> Self {
Self(*AvianPickupActor::default().throw.linear_speed_range.end())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Component, Reflect)]
#[reflect(Debug, Component, PartialEq, Default)]
#[cfg_attr(
feature = "serialize",
derive(serde::Serialize, serde::Deserialize),
reflect(Serialize, Deserialize)
)]
pub struct ThrownAngularSpeedOverride(pub Scalar);
impl Default for ThrownAngularSpeedOverride {
fn default() -> Self {
Self(*AvianPickupActor::default().throw.angular_speed_range.end())
}
}
#[derive(Debug, Clone, Copy, PartialEq, Component)]
pub(crate) struct NonPickupMass(pub Mass);
#[derive(Debug, Clone, Copy, PartialEq, Component, Hash, Default, Reflect)]
#[reflect(Debug, Component, Default, Hash, PartialEq)]
#[cfg_attr(
feature = "serialize",
derive(serde::Serialize, serde::Deserialize),
reflect(Serialize, Deserialize)
)]
pub struct HeldProp;