1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
//! Bevy `Component` newtypes wrapping `astrodyn` typed siblings (state,
//! mass, gravity controls, interactions, derived states).
//!
//! `Reflect` derives are deferred until inspector / scene-tooling adoption
//! demands them; absent that bound, components can carry `<P: Planet>`
//! generics directly without the `TypePath` constraint that previously
//! forced a `<SelfPlanet>` wildcard at the storage layer.
//!
//! JEOD_INV: TS.01 — this module is a per-entity storage boundary. The
//! `<SelfRef>` and `<SelfPlanet>` wildcard tags on Bevy `Component`,
//! `Message`, and runner-state field types in this module (and its
//! per-stage submodules) are the canonical sites where runtime-resolved
//! entity identity meets the compile-time phantom-frame discipline. All
//! system code paths and `astrodyn_*` / `astrodyn` APIs use `<V: Vehicle>` /
//! `<P: Planet>` parameters; the wildcards are confined to this storage
//! layer. See `tests/self_ref_self_planet_discipline.rs` for the lint
//! that enforces the rule across the workspace.
//!
//! # Submodule layout
//!
//! Components are grouped along the same axis as
//! [`crate::systems`]: each pipeline-stage module
//! co-locates the components its systems read and write. Glue
//! components (frame-tree, joint, mass-tree, frame-attach) live in
//! their own modules.
//!
//! - `state` — translational / rotational / mass / accumulators /
//! integrator state / external loads.
//! - `gravity` — gravity sources, planet shape / rotation,
//! ephemeris config, gravity-gradient torque, tidal config / output.
//! - `interaction` — drag, SRP, atmosphere, shadow.
//! - `integration` — integration-frame source and frame-switch config.
//! - `derived` — orbital elements, Euler angles, LVLH, geodetic,
//! solar beta, Earth lighting (config + outputs).
//! - `frame_tree` — frames-as-entities translation / rotation /
//! angular-velocity components and frame-kind markers / handles.
//! - `joint` — kinematic-joint spec components.
//! - `mass_tree` — mass-tree edges, kinematic gating, attach /
//! detach messages.
//! - `frame_attach` — non-body frame attachment + detached-subtree
//! propagation.
//!
//! Submodules are private to keep the per-stage names from colliding
//! with the same names in [`crate::systems`] under
//! `pub use components::*` / `pub use systems::*` glob exports. Every
//! item from each submodule is re-exported here so existing
//! `astrodyn_bevy::components::<Name>` and `crate::components::*` paths
//! continue to resolve.
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;
pub use *;