Bevy Component Mirrors
A third party crate to mirror Component values.
By default, it also provides a set of bevy Components
mirroring the values of bevy_rapier Components.
(Currently only bevy_rapier3d, PRs welcome!)
Since some of bevy_rapier Components do not implement Reflect,
they may be harder to work with.
This crate is especially useful with bevy-inspector-egui,
it will allow you to edit rapier values at run time,
so you don't have to restart your game repetitively
to find the right physics parameters.
Usage
- Add this crate as a dependency to your
Cargo.toml.
[]
= "0.11.0"
- Add
RapierMirrorsPluginsto your app
use RapierMirrorsPlugins;
#
That's it! Now every Entity with the following rapier (3d) components
will automatically have an equivalent XyzMirror component that automatically
syncs its value with it.
ImpulseJointCollider(some collider shape are not implemented yet!)ColliderMassPropertiesAdditionalMassProperties
Implement your own mirrors
If you wish to mirror other components, you need to do the following:
- Create a
Component(eg:ForeignMirror) - Implement the
Mirrortrait for that component. - Implement
From<&'a Foreign> for ForeignMirror - Add
MirrorPlugin::<Foreign, ForeignMirror>::new()to yourapp
use ;
use *;
#
use Foreign;
// Component: required because you want it to be a component
// Reflect: this let `MirrorPlugin` register the `Mirror` type itself
// Foreign → ForeignMirror
// ForeignMirror → Foreign
Features
If you don't need the definitions for the rapier components but still wish to use the mirror plugin, you can disable the rapier components with:
[]
= { = "0.11.0", = false }
Version matrix
| bevy | bevy_rapier3d | bevy_mod_component_mirror |
|---|---|---|
| 0.12 | 0.23.0 | 0.11.0 |
| 0.11 | 0.22.0 | 0.10.0 |
| 0.10 | 0.21.0 | 0.9 |
| 0.9 | 0.20.0 | 0.7 |
Change log
0.11: BREAKING: Bump to bevy 0.12 & rapier 0.230.10: BREAKING: Bump to bevy 0.11 & rapier 0.22 (Thanks Naomijub on GitHub, See #3)0.9: Fix a compilation error which source is currently unknown
Development
Consider moving .git/hooks/pre-commit.sample to .git/hooks/pre-commit.sample, and
adding the following lines before the last exec one:
if ! ; then
fi
License
Copyright © 2022 Nicola Papale
This software is licensed under either MIT or Apache 2.0 at your leisure. See licenses directory for details.