pybevy_transform 0.2.1

Transform component for PyBevy
Documentation
pub mod global_transform;
pub mod transform;

use bevy::transform::components::{GlobalTransform, Transform};
pub use global_transform::PyGlobalTransform;
use pybevy_core::{PyPlugin, plugin::plugin_registry, registry::global_registry};
use pybevy_macros::{component_bridge, plugin_bridge};
use pyo3::prelude::*;
pub use transform::PyTransform;

component_bridge!(
    Transform,
    PyTransform,
    view_fields = [translation, rotation, scale]
);
component_bridge!(GlobalTransform, PyGlobalTransform, no_insert);

#[pyclass(name = "TransformPlugin", extends = PyPlugin, frozen)]
#[derive(Debug, Clone, Copy)]
pub struct PyTransformPlugin;

#[pymethods]
impl PyTransformPlugin {
    #[new]
    pub fn new() -> (Self, PyPlugin) {
        (PyTransformPlugin, PyPlugin)
    }
}

impl Default for PyTransformPlugin {
    fn default() -> Self {
        PyTransformPlugin
    }
}

plugin_bridge!(PyTransformPlugin, bevy::transform::TransformPlugin);

pub fn register_transform_bridges() {
    global_registry::register_component_bridge(TransformBridge);
    global_registry::register_component_bridge(GlobalTransformBridge);
    plugin_registry::register_plugin_bridge(TransformPluginBridge);
    register_transform_batch();
}

pub fn add_transform_classes(m: &Bound<'_, PyModule>) -> PyResult<()> {
    register_transform_bridges();
    m.add_class::<PyTransformPlugin>()?;
    m.add_class::<PyTransform>()?;
    m.add_class::<PyGlobalTransform>()?;
    Ok(())
}

pub fn add_module(parent: &Bound<'_, PyModule>) -> PyResult<()> {
    let m = PyModule::new(parent.py(), "transform")?;
    add_transform_classes(&m)?;
    parent.add_submodule(&m)
}