update bevy 0.11 - fix compile errors
This commit is contained in:
@@ -87,8 +87,8 @@ impl OrbitCameraPlugin {
|
||||
}
|
||||
impl Plugin for OrbitCameraPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.add_system(Self::mouse_motion_system)
|
||||
.add_system(Self::zoom_system)
|
||||
.add_system(Self::update_transform_system);
|
||||
app.add_systems(Update, Self::mouse_motion_system)
|
||||
.add_systems(Update, Self::zoom_system)
|
||||
.add_systems(Update, Self::update_transform_system);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -113,8 +113,8 @@ impl OrbitCameraPlugin {
|
||||
}
|
||||
impl Plugin for OrbitCameraPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.add_system(Self::mouse_motion_system)
|
||||
.add_system(Self::zoom_system)
|
||||
.add_system(Self::update_transform_system);
|
||||
app.add_systems(Update, Self::mouse_motion_system)
|
||||
.add_systems(Update, Self::zoom_system)
|
||||
.add_systems(Update, Self::update_transform_system);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -20,17 +20,16 @@ impl Default for RapierDebugRenderPlugin {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl Plugin for RapierDebugRenderPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
app.add_plugin(crate::lines::DebugLinesPlugin::with_depth_test(
|
||||
app.add_plugins(crate::lines::DebugLinesPlugin::with_depth_test(
|
||||
self.depth_test,
|
||||
))
|
||||
.insert_resource(DebugRenderPipelineResource(DebugRenderPipeline::new(
|
||||
Default::default(),
|
||||
!DebugRenderMode::RIGID_BODY_AXES & !DebugRenderMode::COLLIDER_AABBS,
|
||||
)))
|
||||
.add_system_to_stage(CoreStage::Update, debug_render_scene);
|
||||
.add_systems(Update, debug_render_scene);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -13,6 +13,8 @@ use rapier::math::{Isometry, Real, Vector};
|
||||
//#[cfg(feature = "dim2")]
|
||||
//use crate::objects::polyline::Polyline;
|
||||
// use crate::objects::mesh::Mesh;
|
||||
use bevy_pbr::StandardMaterial;
|
||||
use bevy_sprite::ColorMaterial;
|
||||
use rand::{Rng, SeedableRng};
|
||||
use rand_pcg::Pcg32;
|
||||
use std::collections::HashMap;
|
||||
|
||||
@@ -19,7 +19,6 @@ use bevy::render::MainWorld;
|
||||
*/
|
||||
use bevy::{
|
||||
asset::{Assets, HandleUntyped},
|
||||
pbr::{NotShadowCaster, NotShadowReceiver},
|
||||
prelude::*,
|
||||
reflect::TypeUuid,
|
||||
render::{
|
||||
@@ -27,8 +26,10 @@ use bevy::{
|
||||
render_phase::AddRenderCommand,
|
||||
render_resource::PrimitiveTopology,
|
||||
render_resource::Shader,
|
||||
RenderSet,
|
||||
},
|
||||
};
|
||||
use bevy_pbr::{NotShadowCaster, NotShadowReceiver};
|
||||
|
||||
mod render_dim;
|
||||
|
||||
@@ -38,8 +39,8 @@ mod render_dim;
|
||||
#[cfg(feature = "dim3")]
|
||||
mod dim {
|
||||
pub(crate) use super::render_dim::r3d::{queue, DebugLinePipeline, DrawDebugLines};
|
||||
pub(crate) use bevy::core_pipeline::core_3d::Opaque3d as Phase;
|
||||
use bevy::{asset::Handle, render::mesh::Mesh};
|
||||
pub(crate) use bevy_core_pipeline::core_3d::Opaque3d as Phase;
|
||||
|
||||
pub(crate) type MeshHandle = Handle<Mesh>;
|
||||
pub(crate) fn from_handle(from: &MeshHandle) -> &Handle<Mesh> {
|
||||
@@ -54,8 +55,9 @@ mod dim {
|
||||
#[cfg(feature = "dim2")]
|
||||
mod dim {
|
||||
pub(crate) use super::render_dim::r2d::{queue, DebugLinePipeline, DrawDebugLines};
|
||||
pub(crate) use bevy::core_pipeline::core_2d::Transparent2d as Phase;
|
||||
use bevy::{asset::Handle, render::mesh::Mesh, sprite::Mesh2dHandle};
|
||||
use bevy::{asset::Handle, render::mesh::Mesh};
|
||||
pub(crate) use bevy_core_pipeline::core_2d::Transparent2d as Phase;
|
||||
use bevy_sprite::Mesh2dHandle;
|
||||
|
||||
pub(crate) type MeshHandle = Mesh2dHandle;
|
||||
pub(crate) fn from_handle(from: &MeshHandle) -> &Handle<Mesh> {
|
||||
@@ -120,27 +122,33 @@ impl DebugLinesPlugin {
|
||||
Self { depth_test: val }
|
||||
}
|
||||
}
|
||||
|
||||
use bevy::render::render_phase::DrawFunctions;
|
||||
use bevy::render::Render;
|
||||
impl Plugin for DebugLinesPlugin {
|
||||
fn build(&self, app: &mut App) {
|
||||
use bevy::render::{render_resource::SpecializedMeshPipelines, RenderApp, RenderStage};
|
||||
use bevy::render::{render_resource::SpecializedMeshPipelines, RenderApp};
|
||||
let mut shaders = app.world.get_resource_mut::<Assets<Shader>>().unwrap();
|
||||
shaders.set_untracked(
|
||||
DEBUG_LINES_SHADER_HANDLE,
|
||||
Shader::from_wgsl(dim::SHADER_FILE),
|
||||
Shader::from_wgsl(dim::SHADER_FILE, file!()),
|
||||
);
|
||||
app.init_resource::<DebugLines>();
|
||||
app.add_startup_system(setup)
|
||||
.add_system_to_stage(CoreStage::PostUpdate, update.label("draw_lines"));
|
||||
|
||||
app.init_resource::<DrawFunctions<dim::Phase>>();
|
||||
|
||||
app.add_systems(Startup, setup)
|
||||
.add_systems(PostUpdate, update);
|
||||
|
||||
app.sub_app_mut(RenderApp)
|
||||
.init_resource::<DrawFunctions<dim::Phase>>()
|
||||
.add_render_command::<dim::Phase, dim::DrawDebugLines>()
|
||||
.insert_resource(DebugLinesConfig {
|
||||
depth_test: self.depth_test,
|
||||
})
|
||||
.init_resource::<dim::DebugLinePipeline>()
|
||||
.init_resource::<SpecializedMeshPipelines<dim::DebugLinePipeline>>()
|
||||
.add_system_to_stage(RenderStage::Extract, extract)
|
||||
.add_system_to_stage(RenderStage::Queue, dim::queue);
|
||||
.add_systems(Render, extract.in_set(RenderSet::ExtractCommands))
|
||||
.add_systems(Render, dim::queue.in_set(RenderSet::Queue));
|
||||
|
||||
info!("Loaded {} debug lines plugin.", dim::DIMMENSION);
|
||||
}
|
||||
@@ -176,7 +184,7 @@ fn setup(mut cmds: Commands, mut meshes: ResMut<Assets<Mesh>>) {
|
||||
// https://github.com/Toqozz/bevy_debug_lines/issues/16
|
||||
//mesh.set_indices(Some(Indices::U16(Vec::with_capacity(MAX_POINTS_PER_MESH))));
|
||||
|
||||
cmds.spawn_bundle((
|
||||
cmds.spawn((
|
||||
dim::into_handle(meshes.add(mesh)),
|
||||
NotShadowCaster,
|
||||
NotShadowReceiver,
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
pub mod r3d {
|
||||
use bevy_core_pipeline::core_3d::Opaque3d;
|
||||
use bevy_pbr::{
|
||||
DrawMesh, MeshPipeline, MeshPipelineKey, MeshUniform, SetMeshBindGroup,
|
||||
SetMeshViewBindGroup,
|
||||
};
|
||||
|
||||
use bevy::{
|
||||
core_pipeline::core_3d::Opaque3d,
|
||||
pbr::{
|
||||
DrawMesh, MeshPipeline, MeshPipelineKey, MeshUniform, SetMeshBindGroup,
|
||||
SetMeshViewBindGroup,
|
||||
},
|
||||
prelude::*,
|
||||
render::{
|
||||
mesh::MeshVertexBufferLayout,
|
||||
@@ -54,9 +55,9 @@ pub mod r3d {
|
||||
//use VertexFormat::{Float32x3, Float32x4};
|
||||
|
||||
let mut shader_defs = Vec::new();
|
||||
shader_defs.push("LINES_3D".to_string());
|
||||
shader_defs.push("LINES_3D".to_string().into());
|
||||
if depth_test {
|
||||
shader_defs.push("DEPTH_TEST_ENABLED".to_string());
|
||||
shader_defs.push("DEPTH_TEST_ENABLED".to_string().into());
|
||||
}
|
||||
|
||||
let vertex_buffer_layout = layout.get_layout(&[
|
||||
@@ -64,7 +65,7 @@ pub mod r3d {
|
||||
Mesh::ATTRIBUTE_COLOR.at_shader_location(1),
|
||||
])?;
|
||||
let (label, blend, depth_write_enabled);
|
||||
if key.contains(MeshPipelineKey::TRANSPARENT_MAIN_PASS) {
|
||||
if key.contains(MeshPipelineKey::BLEND_ALPHA) {
|
||||
label = "transparent_mesh_pipeline".into();
|
||||
blend = Some(BlendState::ALPHA_BLENDING);
|
||||
// For the transparent pass, fragments that are closer will be alpha
|
||||
@@ -96,7 +97,7 @@ pub mod r3d {
|
||||
write_mask: ColorWrites::ALL,
|
||||
})],
|
||||
}),
|
||||
layout: Some(vec![self.mesh_pipeline.view_layout.clone()]),
|
||||
layout: vec![self.mesh_pipeline.view_layout.clone()],
|
||||
primitive: PrimitiveState {
|
||||
front_face: FrontFace::Ccw,
|
||||
cull_mode: None,
|
||||
@@ -128,6 +129,7 @@ pub mod r3d {
|
||||
alpha_to_coverage_enabled: false,
|
||||
},
|
||||
label: Some(label),
|
||||
push_constant_ranges: vec![],
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -147,7 +149,7 @@ pub mod r3d {
|
||||
.read()
|
||||
.get_id::<DrawDebugLines>()
|
||||
.unwrap();
|
||||
let key = MeshPipelineKey::from_msaa_samples(msaa.samples);
|
||||
let key = MeshPipelineKey::from_msaa_samples(msaa.samples());
|
||||
for (view, mut transparent_phase) in views.iter_mut() {
|
||||
let view_matrix = view.transform.compute_matrix();
|
||||
let view_row_2 = view_matrix.row(2);
|
||||
@@ -183,7 +185,6 @@ pub mod r3d {
|
||||
pub mod r2d {
|
||||
use bevy::{
|
||||
asset::Handle,
|
||||
core_pipeline::core_2d::Transparent2d,
|
||||
prelude::*,
|
||||
render::{
|
||||
mesh::MeshVertexBufferLayout,
|
||||
@@ -200,12 +201,13 @@ pub mod r2d {
|
||||
texture::BevyDefault,
|
||||
view::{Msaa, VisibleEntities},
|
||||
},
|
||||
sprite::{
|
||||
DrawMesh2d, Mesh2dHandle, Mesh2dPipeline, Mesh2dPipelineKey, Mesh2dUniform,
|
||||
SetMesh2dBindGroup, SetMesh2dViewBindGroup,
|
||||
},
|
||||
utils::FloatOrd,
|
||||
};
|
||||
use bevy_core_pipeline::core_2d::Transparent2d;
|
||||
use bevy_sprite::{
|
||||
DrawMesh2d, Mesh2dHandle, Mesh2dPipeline, Mesh2dPipelineKey, Mesh2dUniform,
|
||||
SetMesh2dBindGroup, SetMesh2dViewBindGroup,
|
||||
};
|
||||
|
||||
use crate::lines::{RenderDebugLinesMesh, DEBUG_LINES_SHADER_HANDLE};
|
||||
|
||||
@@ -264,7 +266,7 @@ pub mod r2d {
|
||||
write_mask: ColorWrites::ALL,
|
||||
})],
|
||||
}),
|
||||
layout: Some(vec![self.mesh_pipeline.view_layout.clone()]),
|
||||
layout: vec![self.mesh_pipeline.view_layout.clone()],
|
||||
primitive: PrimitiveState {
|
||||
front_face: FrontFace::Ccw,
|
||||
cull_mode: None,
|
||||
@@ -281,6 +283,7 @@ pub mod r2d {
|
||||
alpha_to_coverage_enabled: false,
|
||||
},
|
||||
label: None,
|
||||
push_constant_ranges: vec![],
|
||||
})
|
||||
}
|
||||
}
|
||||
@@ -297,7 +300,7 @@ pub mod r2d {
|
||||
) {
|
||||
for (view, mut phase) in views.iter_mut() {
|
||||
let draw_mesh2d = draw2d_functions.read().get_id::<DrawDebugLines>().unwrap();
|
||||
let msaa_key = Mesh2dPipelineKey::from_msaa_samples(msaa.samples);
|
||||
let msaa_key = Mesh2dPipelineKey::from_msaa_samples(msaa.samples());
|
||||
|
||||
for visible_entity in &view.entities {
|
||||
if let Ok((uniform, mesh_handle)) = material_meshes.get(*visible_entity) {
|
||||
|
||||
@@ -5,9 +5,13 @@ use bevy::render::mesh::{Indices, VertexAttributeValues};
|
||||
use na::{point, Point3, Vector3};
|
||||
use std::collections::HashMap;
|
||||
|
||||
use bevy::pbr::wireframe::Wireframe;
|
||||
use bevy::render::render_resource::PrimitiveTopology;
|
||||
use bevy_pbr::wireframe::Wireframe;
|
||||
use bevy_pbr::PbrBundle;
|
||||
use bevy_pbr::StandardMaterial;
|
||||
use bevy_sprite::ColorMaterial;
|
||||
use rapier::geometry::{ColliderHandle, ColliderSet, Shape, ShapeType};
|
||||
|
||||
#[cfg(feature = "dim3")]
|
||||
use rapier::geometry::{Cone, Cylinder};
|
||||
use rapier::math::{Isometry, Real, Vector};
|
||||
@@ -15,7 +19,7 @@ use rapier::math::{Isometry, Real, Vector};
|
||||
use crate::graphics::BevyMaterial;
|
||||
#[cfg(feature = "dim2")]
|
||||
use {
|
||||
bevy::sprite::MaterialMesh2dBundle,
|
||||
bevy_sprite::MaterialMesh2dBundle,
|
||||
na::{Point2, Vector2},
|
||||
rapier::geometry::{Ball, Cuboid},
|
||||
};
|
||||
@@ -235,10 +239,11 @@ impl EntityWithGraphics {
|
||||
//
|
||||
// Ball mesh
|
||||
//
|
||||
let ball = Mesh::from(shape::Icosphere {
|
||||
let ball = Mesh::try_from(shape::Icosphere {
|
||||
subdivisions: 2,
|
||||
radius: 1.0,
|
||||
});
|
||||
})
|
||||
.unwrap();
|
||||
out.insert(ShapeType::Ball, meshes.add(ball));
|
||||
|
||||
//
|
||||
|
||||
@@ -4,7 +4,7 @@ use crate::physics::PhysicsState;
|
||||
use crate::GraphicsManager;
|
||||
use bevy::prelude::*;
|
||||
// use bevy::render::render_resource::RenderPipelineDescriptor;
|
||||
use bevy_egui::EguiContext;
|
||||
use bevy_egui::EguiContexts;
|
||||
|
||||
pub trait TestbedPlugin {
|
||||
fn init_plugin(&mut self);
|
||||
@@ -31,7 +31,7 @@ pub trait TestbedPlugin {
|
||||
);
|
||||
fn update_ui(
|
||||
&mut self,
|
||||
ui_context: &EguiContext,
|
||||
ui_context: &EguiContexts,
|
||||
harness: &mut Harness,
|
||||
graphics: &mut GraphicsManager,
|
||||
commands: &mut Commands,
|
||||
|
||||
@@ -27,9 +27,15 @@ use crate::box2d_backend::Box2dWorld;
|
||||
use crate::harness::Harness;
|
||||
#[cfg(all(feature = "dim3", feature = "other-backends"))]
|
||||
use crate::physx_backend::PhysxWorld;
|
||||
use bevy::pbr::wireframe::WireframePlugin;
|
||||
use bevy::render::camera::Camera;
|
||||
use bevy_egui::EguiContext;
|
||||
use bevy_core_pipeline::prelude::Camera2dBundle;
|
||||
use bevy_core_pipeline::prelude::Camera3dBundle;
|
||||
use bevy_core_pipeline::prelude::ClearColor;
|
||||
use bevy_egui::EguiContexts;
|
||||
use bevy_pbr::wireframe::WireframePlugin;
|
||||
use bevy_pbr::AmbientLight;
|
||||
use bevy_pbr::DirectionalLight;
|
||||
use bevy_pbr::DirectionalLightBundle;
|
||||
|
||||
#[cfg(feature = "dim2")]
|
||||
use crate::camera2d::{OrbitCamera, OrbitCameraPlugin};
|
||||
@@ -372,25 +378,25 @@ impl TestbedApp {
|
||||
};
|
||||
|
||||
let window_plugin = WindowPlugin {
|
||||
window: WindowDescriptor {
|
||||
primary_window: Some(Window {
|
||||
title,
|
||||
..Default::default()
|
||||
},
|
||||
}),
|
||||
..Default::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(Msaa::Sample4)
|
||||
.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());
|
||||
.add_plugins(OrbitCameraPlugin)
|
||||
.add_plugins(WireframePlugin)
|
||||
.add_plugins(bevy_egui::EguiPlugin);
|
||||
// .add_plugins(debug_render::RapierDebugRenderPlugin::default());
|
||||
|
||||
#[cfg(target_arch = "wasm32")]
|
||||
app.add_plugin(bevy_webgl2::WebGL2Plugin);
|
||||
@@ -398,15 +404,16 @@ impl TestbedApp {
|
||||
#[cfg(feature = "other-backends")]
|
||||
app.insert_non_send_resource(self.other_backends);
|
||||
|
||||
app.add_startup_system(setup_graphics_environment)
|
||||
app.add_systems(Startup, setup_graphics_environment)
|
||||
.insert_non_send_resource(self.graphics)
|
||||
.insert_resource(self.state)
|
||||
.insert_non_send_resource(self.harness)
|
||||
.insert_resource(self.builders)
|
||||
.insert_non_send_resource(self.plugins)
|
||||
.add_stage_before(CoreStage::Update, "physics", SystemStage::single_threaded())
|
||||
.add_system_to_stage("physics", update_testbed)
|
||||
.add_system(egui_focus);
|
||||
// .add_stage_before(CoreStage::Update, "physics", SystemStage::single_threaded())
|
||||
// .add_system_to_stage("physics", update_testbed)
|
||||
.add_systems(PreUpdate, update_testbed)
|
||||
.add_systems(Update, egui_focus);
|
||||
init(&mut app);
|
||||
app.run();
|
||||
}
|
||||
@@ -709,10 +716,10 @@ impl<'a, 'b, 'c, 'd, 'e, 'f> Testbed<'a, 'b, 'c, 'd, 'e, 'f> {
|
||||
KeyCode::Space => {
|
||||
desired_movement += Vector::y() * 2.0;
|
||||
}
|
||||
KeyCode::RControl => {
|
||||
KeyCode::ControlRight => {
|
||||
desired_movement -= Vector::y();
|
||||
}
|
||||
KeyCode::RShift => {
|
||||
KeyCode::ShiftRight => {
|
||||
speed /= 10.0;
|
||||
}
|
||||
_ => {}
|
||||
@@ -750,10 +757,10 @@ impl<'a, 'b, 'c, 'd, 'e, 'f> Testbed<'a, 'b, 'c, 'd, 'e, 'f> {
|
||||
KeyCode::Space => {
|
||||
desired_movement += Vector::y() * 2.0;
|
||||
}
|
||||
KeyCode::RControl => {
|
||||
KeyCode::ControlRight => {
|
||||
desired_movement -= Vector::y();
|
||||
}
|
||||
KeyCode::RShift => {
|
||||
KeyCode::ShiftLeft => {
|
||||
speed /= 10.0;
|
||||
}
|
||||
_ => {}
|
||||
@@ -1004,15 +1011,17 @@ fn setup_graphics_environment(mut commands: Commands) {
|
||||
directional_light: DirectionalLight {
|
||||
illuminance: 10000.0,
|
||||
// Configure the projection to better fit the scene
|
||||
shadow_projection: OrthographicProjection {
|
||||
left: -HALF_SIZE,
|
||||
right: HALF_SIZE,
|
||||
bottom: -HALF_SIZE,
|
||||
top: HALF_SIZE,
|
||||
near: -10.0 * HALF_SIZE,
|
||||
far: 100.0 * HALF_SIZE,
|
||||
..Default::default()
|
||||
},
|
||||
// shadow_projection: OrthographicProjection {
|
||||
// area: Rect::new(
|
||||
// -HALF_SIZE,
|
||||
// HALF_SIZE,
|
||||
// -HALF_SIZE,
|
||||
// HALF_SIZE,
|
||||
// ),
|
||||
// near: -10.0 * HALF_SIZE,
|
||||
// far: 100.0 * HALF_SIZE,
|
||||
// ..Default::default()
|
||||
// },
|
||||
shadows_enabled: true,
|
||||
..Default::default()
|
||||
},
|
||||
@@ -1073,7 +1082,7 @@ fn setup_graphics_environment(mut commands: Commands) {
|
||||
});
|
||||
}
|
||||
|
||||
fn egui_focus(mut ui_context: ResMut<EguiContext>, mut cameras: Query<&mut OrbitCamera>) {
|
||||
fn egui_focus(mut ui_context: EguiContexts, mut cameras: Query<&mut OrbitCamera>) {
|
||||
let mut camera_enabled = true;
|
||||
if ui_context.ctx_mut().wants_pointer_input() {
|
||||
camera_enabled = false;
|
||||
@@ -1083,9 +1092,11 @@ fn egui_focus(mut ui_context: ResMut<EguiContext>, mut cameras: Query<&mut Orbit
|
||||
}
|
||||
}
|
||||
|
||||
use bevy::window::PrimaryWindow;
|
||||
|
||||
fn update_testbed(
|
||||
mut commands: Commands,
|
||||
windows: Res<Windows>,
|
||||
windows: Query<&Window, With<PrimaryWindow>>,
|
||||
// mut pipelines: ResMut<Assets<RenderPipelineDescriptor>>,
|
||||
mut meshes: ResMut<Assets<Mesh>>,
|
||||
mut materials: ResMut<Assets<BevyMaterial>>,
|
||||
@@ -1095,7 +1106,7 @@ fn update_testbed(
|
||||
mut harness: NonSendMut<Harness>,
|
||||
#[cfg(feature = "other-backends")] mut other_backends: NonSendMut<OtherBackends>,
|
||||
mut plugins: NonSendMut<Plugins>,
|
||||
mut ui_context: ResMut<EguiContext>,
|
||||
mut ui_context: EguiContexts,
|
||||
mut gfx_components: Query<(&mut Transform,)>,
|
||||
mut cameras: Query<(&Camera, &GlobalTransform, &mut OrbitCamera)>,
|
||||
keys: Res<Input<KeyCode>>,
|
||||
@@ -1407,7 +1418,7 @@ fn update_testbed(
|
||||
}
|
||||
}
|
||||
|
||||
if let Some(window) = windows.get_primary() {
|
||||
if let Ok(window) = windows.get_single() {
|
||||
for (camera, camera_pos, _) in cameras.iter_mut() {
|
||||
highlight_hovered_body(
|
||||
&mut *materials,
|
||||
@@ -1419,7 +1430,7 @@ fn update_testbed(
|
||||
camera_pos,
|
||||
);
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
graphics.draw(
|
||||
&harness.physics.bodies,
|
||||
|
||||
@@ -9,9 +9,9 @@ use crate::testbed::{
|
||||
|
||||
use crate::PhysicsState;
|
||||
use bevy_egui::egui::Slider;
|
||||
use bevy_egui::{egui, EguiContext};
|
||||
use bevy_egui::{egui, EguiContexts};
|
||||
|
||||
pub fn update_ui(ui_context: &mut EguiContext, state: &mut TestbedState, harness: &mut Harness) {
|
||||
pub fn update_ui(ui_context: &mut EguiContexts, state: &mut TestbedState, harness: &mut Harness) {
|
||||
egui::Window::new("Parameters").show(ui_context.ctx_mut(), |ui| {
|
||||
if state.backend_names.len() > 1 && !state.example_names.is_empty() {
|
||||
let mut changed = false;
|
||||
|
||||
Reference in New Issue
Block a user