avian3d/
type_registration.rs

1use crate::{
2    prelude::*,
3    sync::{ancestor_marker::AncestorMarker, PreviousGlobalTransform, SyncConfig},
4};
5use bevy::prelude::*;
6use dynamics::solver::{schedule::SubstepCount, SolverConfig};
7
8/// Registers physics types to the `TypeRegistry` resource in `bevy_reflect`.
9pub struct PhysicsTypeRegistrationPlugin;
10
11impl Plugin for PhysicsTypeRegistrationPlugin {
12    fn build(&self, app: &mut App) {
13        app.register_type::<Time<Physics>>()
14            .register_type::<Time<Substeps>>()
15            .register_type::<SubstepCount>()
16            .register_type::<SleepingThreshold>()
17            .register_type::<DeactivationTime>()
18            .register_type::<Gravity>()
19            .register_type::<RigidBody>()
20            .register_type::<RigidBodyDisabled>()
21            .register_type::<Sleeping>()
22            .register_type::<SleepingDisabled>()
23            .register_type::<TimeSleeping>()
24            .register_type::<Position>()
25            .register_type::<Rotation>()
26            .register_type::<PreSolveAccumulatedTranslation>()
27            .register_type::<PreviousRotation>()
28            .register_type::<PreviousGlobalTransform>()
29            .register_type::<AccumulatedTranslation>()
30            .register_type::<LinearVelocity>()
31            .register_type::<AngularVelocity>()
32            .register_type::<PreSolveLinearVelocity>()
33            .register_type::<PreSolveAngularVelocity>()
34            .register_type::<MaxLinearSpeed>()
35            .register_type::<MaxAngularSpeed>()
36            .register_type::<Restitution>()
37            .register_type::<Friction>()
38            .register_type::<LinearDamping>()
39            .register_type::<AngularDamping>()
40            .register_type::<ExternalForce>()
41            .register_type::<ExternalTorque>()
42            .register_type::<ExternalImpulse>()
43            .register_type::<ExternalAngularImpulse>()
44            .register_type::<GravityScale>()
45            .register_type::<ColliderDensity>()
46            .register_type::<ColliderMassProperties>()
47            .register_type::<LockedAxes>()
48            .register_type::<ColliderOf>()
49            .register_type::<RigidBodyColliders>()
50            .register_type::<Dominance>()
51            .register_type::<ColliderAabb>()
52            .register_type::<CollisionLayers>()
53            .register_type::<CollidingEntities>()
54            .register_type::<CoefficientCombine>()
55            .register_type::<Sensor>()
56            .register_type::<ColliderTransform>()
57            .register_type::<SpeculativeMargin>()
58            .register_type::<SweptCcd>()
59            .register_type::<CollisionMargin>()
60            .register_type::<NarrowPhaseConfig>()
61            .register_type::<SolverConfig>()
62            .register_type::<SyncConfig>()
63            .register_type::<AncestorMarker<RigidBody>>()
64            .register_type::<AncestorMarker<ColliderMarker>>()
65            .register_type::<RayCaster>()
66            .register_type::<DistanceJoint>()
67            .register_type::<FixedJoint>()
68            .register_type::<PrismaticJoint>()
69            .register_type::<RevoluteJoint>()
70            .register_type::<PreSolveRotation>()
71            .register_type::<GlobalAngularInertia>();
72
73        #[cfg(feature = "default-collider")]
74        app.register_type::<ColliderConstructor>()
75            .register_type::<ColliderConstructorHierarchy>()
76            .register_type::<crate::collision::collider::ColliderConstructorHierarchyConfig>()
77            .register_type::<ShapeCaster>();
78
79        #[cfg(feature = "3d")]
80        app.register_type::<SphericalJoint>();
81    }
82}