Releases: splashdust/bevy_voxel_world
0.10.2
ChunkData
is now public. You can get the data for a chunk by callingvoxel_world.get_chunk_data(chunk_pos)
get_closest_surface_voxel
,get_random_surface_voxel
andget_surface_voxel_at_2d_pos
have been deprecated. It's better to use ray-casting instead to find voxels according to your needs.- A system for debug-drawing chunks have been added. This can be used to visualize chunk boundaries in the world.
- Add
ChunkWillUpdate
event which is fired whenset_voxel
has been called - Fix an error in the events that caused events to fire incorrectly.
Full Changelog: 0.10.1...0.10.2
0.10.1
0.10.0
What's Changed
- Update to bevy0.15 by @Touma-Kazusa2 in #42
New Contributors
- @Touma-Kazusa2 made their first contribution in #42
Full Changelog: 0.9.0...0.10.0
0.9.0
What's Changed
- Change material index to generic type by @juzi5201314 in #39. See the
textures_custom_idx.rs
example for details on how this can be used.
Breaking Changes:
type MaterialIndex
now needs to be implemented forVoxelWorldConfig
:
impl VoxelWorldConfig for MainWorld {
type MaterialIndex = u8;
...
}
New Contributors
- @juzi5201314 made their first contribution in #39
Full Changelog: 0.8.1...0.9.0
0.8.1
What's Changed
- Debugging: Gizmo helpers by @splashdust in #30
- Bump bevy from 0.14.0 to 0.14.2 by @dependabot in #37
Full Changelog: 0.8.0...0.8.1
0.8.0
Upgrade to Bevy 0.14
Thanks to @JohnathanFL for contributing this release
0.7.0
New features:
- Added
voxel_line_traversal
andvoxel_cartesian_traversal
for versatile and fast traversal of the voxel grid (#24) - Created a new bevy_voxel_world::traversal_alg module to make it easy for crate users to import those algorithms (#24)
- Rewrite of
raycast
using the traversal algorithm. (#25)
Breaking changes:
VoxelRaycastResult.normal
is now wrapped in anOption<Vec3>
Thanks to @dtaralla for contributing to this release!
0.6.0
New features:
- Add function that returns a sendable raycast function (3335f30)
- Add WorldConfig constraint to the Chunk events (ebbd03d)
- Add World Config type parameter to the VoxelWorldCamera and CameraInfo (0349632)
- Spawn chunks on a root node and add
init_root
callback (6e5df25, f1fc4c6, a0fc663)
Breaking changes:
- Move raycast functions to main VoxelWorld system param (262b124)
Thanks to @aligator for contributing to this release!
0.5.1
Fix lingering meshes when an existing chunk is emptied of voxels
0.5.0
Adds support for multiple parallell world instances
Breaking changes:
Configuration is now supplied when adding the plugin
// First declare a config struct. It needs to derive `Resource`, `Clone` and `Default`
#[derive(Resource, Clone, Default)]
struct MyWorld;
// Then implement the `VoxelWorldConfig` trait for it:
impl VoxelWorldConfig for MyWorld {
// All the trait methods have defaults, so you only need to add the ones you want to alter
fn spawning_distance(&self) -> u32 {
15
}
}
Then when adding the plugin:
.add_plugins(VoxelWorldPlugin::with_config(MyWorld))
If you don't want to change any default config, you can simply do this:
.add_plugins(VoxelWorldPlugin::default())
Adding multiple worlds follows the same pattern. Just create different configuration structs and add a VoxelWorldPlugin
for each.
.add_plugins(VoxelWorldPlugin::with_config(MyOtherWorld))
Each world instance can have it's own configuration and will keep track of it's own set of voxel data and chunks.
The VoxelWorld
system param now needs a type parameter to specify which world instance you want to select
The configuration struct adds the config values and its type also acts as a marker for the world instance.
fn my_system(
my_voxel_world: VoxelWorld<MyWorld>,
my_other_voxel_world: VoxelWorld<MyOtherWorld>
) {
// Set a voxel in `my_voxel_world`
my_voxel_world.set_voxel(pos, WorldVoxel::Solid(voxel_type))
// Set a voxel in `my_other_voxel_world`
my_other_voxel_world.set_voxel(pos, WorldVoxel::Solid(voxel_type))
}
If you initialized the plugin with ::default()
, you still need to explicitly specify the instance as DefaultWorld
:
fn my_system(voxel_world: VoxelWorld<DefaultWorld>) { ... }
The VoxelWorldRaycast
system param now also requires the same config type paramter as described above.