4 releases (breaking)
0.4.0 | Nov 8, 2024 |
---|---|
0.3.0 | Nov 7, 2024 |
0.2.0 | May 17, 2024 |
0.1.0 | Jan 19, 2024 |
#1558 in Game dev
265KB
4.5K
SLoC
Bevy quickstart
cargo add bevy_ghx_proc_gen
Steps 1
to 3
are the same as in the ghx_proc_gen
Quickstart.
- To automatically spawn our assets for us, we use the
ProcGenSimplePlugin
app.add_plugins(ProcGenSimplePlugin::<Cartesian2D, PbrMesh>::new());
- To see something in the Bevy viewport, we setup assets in a
RulesModelsAssets
:
fn setup_generator(
mut commands: Commands,
mut meshes: ResMut<Assets<Mesh>>,
mut materials: ResMut<Assets<StandardMaterial>>,
) {
// ... Steps 1 to 3: Generator setup ...
// Simple procedural cube mesh and materials.
let cube_mesh = meshes.add(Mesh::from(shape::Cube { size: CUBE_SIZE }));
let white_mat = materials.add(Color::WHITE.into());
let black_mat = materials.add(Color::BLACK.into());*
// We create our models asset here, in a separate collection for the sake of simplicity.
// (We could also declare them with our models)
let mut models_assets = RulesModelsAssets::<PbrMesh>::new();
models_assets.add_asset(0, PbrMesh {
mesh: cube_mesh.clone(),
material: white_mat,
},
);
models_assets.add_asset(1, PbrMesh {
mesh: cube_mesh.clone(),
material: black_mat,
},
);
// ...
}
- Spawn an
Entity
with aGeneratorBundle
:
// The ProcGenSimplePlugin will detect this, generate and spawn the nodes.
commands.spawn(GeneratorBundle {
spatial: SpatialBundle::from_transform(Transform::from_translation(Vec3::new(
-grid.size_x() as f32 / 2., -grid.size_y() as f32 / 2., 0.,
))),
grid,
generator,
asset_spawner: AssetSpawner::new(models_assets, NODE_SIZE, Vec3::ONE),
});
- For more information, check out the
bevy_ghx_proc_gen
crate documentation or the Examples. - Almost all systems, structs components, resources, ... have a
pub
visibility, so you can use or override them in custom plugins
Bevy plugins
- Check out the
GridDebugPlugin
frombevy_ghx_grid
which provides debug utilities for the grid-types used byghx_proc_gen
.
ghx_proc_gen
does not need a plugin to work, but if you want a really quick way to get started, or are in need of some debug utilities for your generations, there are some ready-made plugins for this:
-
ProcGenSimplePlugin
: Really simple, just here to generate and spawn the nodes assets. See its sources. -
ProcGenDebugPlugin
[Depends onGridDebugPlugin
]: Just a bit more complex, and not focused on performance but rather on demos & debugging use-cases. You can view the generation one step at a time, see where the contradiction occurs and more. See its sources.- Keybindings as well as most settings used by the debug plugin can be overriden via some Bevy
Resource
. - Note that the debug plugin, with all features enabled, depends on other plugins to function propely, such as:
DefaultPickingPlugins
(from bevy_mod_picking),EguiPlugin
(from bevy_egui) or theGridDebugPlugin
(from bevy_ghx_grid)
- Keybindings as well as most settings used by the debug plugin can be overriden via some Bevy
Both of those plugins
start their work when you insert the components from a GeneratorBundle
on an Entity
.
ProcGenDebugPlugin
editing feature demo:
https://github.com/Henauxg/ghx_proc_gen/assets/19689618/b2f15673-e6aa-4a1d-94f7-a98c903a7591
https://github.com/Henauxg/ghx_proc_gen/assets/19689618/5fa26a8f-7454-4574-9cc3-f6f77fdd0049
Cargo features
Find the list and description in Cargo.toml
default-assets-bundle-spawners
: This feature compiles simpleAssetBundleSpawner impl
for a few basic types. Disable the feature if you don't need them, or want to customize their implementation.reflect
: simply derivesReflect
on common structs of the crate.simple-plugin
: compiles the simple plugin and its systems.debug-plugin
: compiles the debug plugin, the grid debug plugin and their systems.picking
: Enables picking throughbevy_mod_picking
. Used by the debug-plugin if enabled.egui-edit
: Enables anegui
editor panel to inspect nodes and paint models
See also the main crate cargo features
Compatible Bevy versions
Compatibility with Bevy versions:
ghx_proc_gen | bevy_ghx_proc_gen | bevy |
---|---|---|
0.4 | 0.4 | 0.14 |
0.2-0.3 | 0.2-0.3 | 0.13 |
0.1 | 0.1 | 0.12 |
License
bevy-ghx-proc-gen is free and open source. All code in this repository is dual-licensed under either:
- MIT License (LICENSE-MIT or http://opensource.org/licenses/MIT)
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
at your option.
Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.
Dependencies
~39–78MB
~1.5M SLoC