aboutsummaryrefslogtreecommitdiff
path: root/src_testbed
diff options
context:
space:
mode:
Diffstat (limited to 'src_testbed')
-rw-r--r--src_testbed/debug_render.rs11
-rw-r--r--src_testbed/lines/mod.rs3
-rw-r--r--src_testbed/lines/render_dim.rs2
-rw-r--r--src_testbed/objects/node.rs4
-rw-r--r--src_testbed/testbed.rs43
5 files changed, 37 insertions, 26 deletions
diff --git a/src_testbed/debug_render.rs b/src_testbed/debug_render.rs
index 047793d..928b8ba 100644
--- a/src_testbed/debug_render.rs
+++ b/src_testbed/debug_render.rs
@@ -6,6 +6,9 @@ use rapier::pipeline::{
DebugRenderBackend, DebugRenderMode, DebugRenderObject, DebugRenderPipeline,
};
+#[derive(Resource)]
+pub struct DebugRenderPipelineResource(pub DebugRenderPipeline);
+
pub struct RapierDebugRenderPlugin {
depth_test: bool,
}
@@ -23,10 +26,10 @@ impl Plugin for RapierDebugRenderPlugin {
app.add_plugin(crate::lines::DebugLinesPlugin::with_depth_test(
self.depth_test,
))
- .insert_resource(DebugRenderPipeline::new(
+ .insert_resource(DebugRenderPipelineResource(DebugRenderPipeline::new(
Default::default(),
!DebugRenderMode::RIGID_BODY_AXES & !DebugRenderMode::COLLIDER_AABBS,
- ))
+ )))
.add_system_to_stage(CoreStage::Update, debug_render_scene);
}
}
@@ -57,12 +60,12 @@ impl<'a> DebugRenderBackend for BevyLinesRenderBackend<'a> {
}
fn debug_render_scene(
- mut pipeline: ResMut<DebugRenderPipeline>,
+ mut pipeline: ResMut<DebugRenderPipelineResource>,
harness: NonSend<Harness>,
mut lines: ResMut<DebugLines>,
) {
let mut backend = BevyLinesRenderBackend { lines: &mut *lines };
- pipeline.render(
+ pipeline.0.render(
&mut backend,
&harness.physics.bodies,
&harness.physics.colliders,
diff --git a/src_testbed/lines/mod.rs b/src_testbed/lines/mod.rs
index 3c68110..60d8098 100644
--- a/src_testbed/lines/mod.rs
+++ b/src_testbed/lines/mod.rs
@@ -73,6 +73,7 @@ mod dim {
pub(crate) const DEBUG_LINES_SHADER_HANDLE: HandleUntyped =
HandleUntyped::weak_from_u64(Shader::TYPE_UUID, 17477439189930443325);
+#[derive(Resource)]
pub(crate) struct DebugLinesConfig {
depth_test: bool,
}
@@ -275,7 +276,7 @@ pub(crate) struct RenderDebugLinesMesh;
/// );
/// }
/// ```
-#[derive(Default)]
+#[derive(Default, Resource)]
pub struct DebugLines {
pub positions: Vec<[f32; 3]>,
//pub colors: Vec<[f32; 4]>,
diff --git a/src_testbed/lines/render_dim.rs b/src_testbed/lines/render_dim.rs
index be23321..718cce0 100644
--- a/src_testbed/lines/render_dim.rs
+++ b/src_testbed/lines/render_dim.rs
@@ -26,6 +26,7 @@ pub mod r3d {
use crate::lines::{DebugLinesConfig, RenderDebugLinesMesh, DEBUG_LINES_SHADER_HANDLE};
+ #[derive(Resource)]
pub(crate) struct DebugLinePipeline {
mesh_pipeline: MeshPipeline,
shader: Handle<Shader>,
@@ -208,6 +209,7 @@ pub mod r2d {
use crate::lines::{RenderDebugLinesMesh, DEBUG_LINES_SHADER_HANDLE};
+ #[derive(Resource)]
pub(crate) struct DebugLinePipeline {
mesh_pipeline: Mesh2dPipeline,
shader: Handle<Shader>,
diff --git a/src_testbed/objects/node.rs b/src_testbed/objects/node.rs
index ba7a2aa..f4b9015 100644
--- a/src_testbed/objects/node.rs
+++ b/src_testbed/objects/node.rs
@@ -44,7 +44,7 @@ impl EntityWithGraphics {
color: Point3<f32>,
sensor: bool,
) -> Self {
- let entity = commands.spawn().id();
+ let entity = commands.spawn_empty().id();
let scale = collider_mesh_scale(shape);
let mesh = prefab_meshs
@@ -108,7 +108,7 @@ impl EntityWithGraphics {
};
let mut entity_commands = commands.entity(entity);
- entity_commands.insert_bundle(bundle);
+ entity_commands.insert(bundle);
if sensor {
entity_commands.insert(Wireframe);
diff --git a/src_testbed/testbed.rs b/src_testbed/testbed.rs
index 1052c55..775175d 100644
--- a/src_testbed/testbed.rs
+++ b/src_testbed/testbed.rs
@@ -97,6 +97,7 @@ bitflags! {
}
}
+#[derive(Resource)]
pub struct TestbedState {
pub running: RunMode,
pub draw_colls: bool,
@@ -122,6 +123,7 @@ pub struct TestbedState {
camera_locked: bool, // Used so that the camera can remain the same before and after we change backend or press the restart button.
}
+#[derive(Resource)]
struct SceneBuilders(Vec<(&'static str, fn(&mut Testbed))>);
#[cfg(feature = "other-backends")]
@@ -369,23 +371,26 @@ impl TestbedApp {
"Rapier: 3D demos".to_string()
};
- let mut app = App::new();
-
- app.insert_resource(WindowDescriptor {
- title,
- ..Default::default()
- })
- .insert_resource(ClearColor(Color::rgb(0.15, 0.15, 0.15)))
- .insert_resource(Msaa { samples: 4 })
- .insert_resource(AmbientLight {
- brightness: 0.3,
+ let window_plugin = WindowPlugin {
+ window: WindowDescriptor {
+ title,
+ ..Default::default()
+ },
..Default::default()
- })
- .add_plugins(DefaultPlugins)
- .add_plugin(OrbitCameraPlugin)
- .add_plugin(WireframePlugin)
- .add_plugin(bevy_egui::EguiPlugin)
- .add_plugin(debug_render::RapierDebugRenderPlugin::default());
+ };
+
+ let mut app = App::new();
+ app.insert_resource(ClearColor(Color::rgb(0.15, 0.15, 0.15)))
+ .insert_resource(Msaa { samples: 4 })
+ .insert_resource(AmbientLight {
+ brightness: 0.3,
+ ..Default::default()
+ })
+ .add_plugins(DefaultPlugins.set(window_plugin))
+ .add_plugin(OrbitCameraPlugin)
+ .add_plugin(WireframePlugin)
+ .add_plugin(bevy_egui::EguiPlugin)
+ .add_plugin(debug_render::RapierDebugRenderPlugin::default());
#[cfg(target_arch = "wasm32")]
app.add_plugin(bevy_webgl2::WebGL2Plugin);
@@ -995,7 +1000,7 @@ fn draw_contacts(_nf: &NarrowPhase, _colliders: &ColliderSet) {
fn setup_graphics_environment(mut commands: Commands) {
const HALF_SIZE: f32 = 100.0;
- commands.spawn_bundle(DirectionalLightBundle {
+ commands.spawn(DirectionalLightBundle {
directional_light: DirectionalLight {
illuminance: 10000.0,
// Configure the projection to better fit the scene
@@ -1020,7 +1025,7 @@ fn setup_graphics_environment(mut commands: Commands) {
});
commands
- .spawn_bundle(Camera3dBundle {
+ .spawn(Camera3dBundle {
transform: Transform::from_matrix(
Mat4::look_at_rh(
Vec3::new(-30.0, 30.0, 100.0),
@@ -1053,7 +1058,7 @@ fn setup_graphics_environment(mut commands: Commands) {
// ..Default::default()
// });
commands
- .spawn_bundle(Camera2dBundle {
+ .spawn(Camera2dBundle {
transform: Transform {
translation: Vec3::new(0.0, 0.0, 0.0),
rotation: Quat::IDENTITY,