1pub mod global_transform;
2pub mod transform;
3
4use bevy::transform::components::{GlobalTransform, Transform};
5pub use global_transform::PyGlobalTransform;
6use pybevy_core::{PyPlugin, plugin::plugin_registry, registry::global_registry};
7use pybevy_macros::{component_bridge, plugin_bridge};
8use pyo3::prelude::*;
9pub use transform::PyTransform;
10
11component_bridge!(
12 Transform,
13 PyTransform,
14 view_fields = [translation, rotation, scale]
15);
16component_bridge!(GlobalTransform, PyGlobalTransform, no_insert);
17
18#[pyclass(name = "TransformPlugin", extends = PyPlugin, frozen)]
19#[derive(Debug, Clone, Copy)]
20pub struct PyTransformPlugin;
21
22#[pymethods]
23impl PyTransformPlugin {
24 #[new]
25 pub fn new() -> (Self, PyPlugin) {
26 (PyTransformPlugin, PyPlugin)
27 }
28}
29
30impl Default for PyTransformPlugin {
31 fn default() -> Self {
32 PyTransformPlugin
33 }
34}
35
36plugin_bridge!(PyTransformPlugin, bevy::transform::TransformPlugin);
37
38pub fn register_transform_bridges() {
39 global_registry::register_component_bridge(TransformBridge);
40 global_registry::register_component_bridge(GlobalTransformBridge);
41 plugin_registry::register_plugin_bridge(TransformPluginBridge);
42 register_transform_batch();
43}
44
45pub fn add_transform_classes(m: &Bound<'_, PyModule>) -> PyResult<()> {
46 register_transform_bridges();
47 m.add_class::<PyTransformPlugin>()?;
48 m.add_class::<PyTransform>()?;
49 m.add_class::<PyGlobalTransform>()?;
50 Ok(())
51}
52
53pub fn add_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
54 let m = PyModule::new(parent.py(), "transform")?;
55 add_transform_classes(&m)?;
56 parent.add_submodule(&m)
57}