From 1a84bf2af34176508bdda8d0f2ad2e46dc5c4df9 Mon Sep 17 00:00:00 2001 From: Crozet Sébastien Date: Sun, 16 May 2021 17:49:20 +0200 Subject: Replace Kiss3d by Bevy for the testbed renderer. --- src_testbed/camera.rs | 94 ++ src_testbed/engine.rs | 712 ------------- src_testbed/graphics.rs | 400 ++++++++ src_testbed/harness/mod.rs | 59 +- src_testbed/lib.rs | 9 +- src_testbed/objects/ball.rs | 76 -- src_testbed/objects/box_node.rs | 76 -- src_testbed/objects/capsule.rs | 77 -- src_testbed/objects/cone.rs | 77 -- src_testbed/objects/convex.rs | 96 -- src_testbed/objects/cylinder.rs | 77 -- src_testbed/objects/heightfield.rs | 128 --- src_testbed/objects/mesh.rs | 111 --- src_testbed/objects/mod.rs | 12 - src_testbed/objects/node.rs | 547 +++++++--- src_testbed/objects/plane.rs | 132 --- src_testbed/objects/polyline.rs | 67 -- src_testbed/plugin.rs | 12 +- src_testbed/testbed.rs | 1928 ++++++++++++++++-------------------- src_testbed/ui.rs | 719 ++++---------- 20 files changed, 1957 insertions(+), 3452 deletions(-) create mode 100644 src_testbed/camera.rs delete mode 100644 src_testbed/engine.rs create mode 100644 src_testbed/graphics.rs delete mode 100644 src_testbed/objects/ball.rs delete mode 100644 src_testbed/objects/box_node.rs delete mode 100644 src_testbed/objects/capsule.rs delete mode 100644 src_testbed/objects/cone.rs delete mode 100644 src_testbed/objects/convex.rs delete mode 100644 src_testbed/objects/cylinder.rs delete mode 100644 src_testbed/objects/heightfield.rs delete mode 100644 src_testbed/objects/mesh.rs delete mode 100644 src_testbed/objects/plane.rs delete mode 100644 src_testbed/objects/polyline.rs (limited to 'src_testbed') diff --git a/src_testbed/camera.rs b/src_testbed/camera.rs new file mode 100644 index 0000000..529e6c7 --- /dev/null +++ b/src_testbed/camera.rs @@ -0,0 +1,94 @@ +// NOTE: this is inspired from the `bevy-orbit-controls` projects but +// with some modifications like Panning, and 2D support. +use bevy::input::mouse::MouseMotion; +use bevy::input::mouse::MouseScrollUnit::{Line, Pixel}; +use bevy::input::mouse::MouseWheel; +use bevy::prelude::*; +use bevy::render::camera::Camera; + +const LINE_TO_PIXEL_RATIO: f32 = 0.1; + +pub struct OrbitCamera { + pub zoom: f32, + pub center: Vec3, + pub pan_sensitivity: f32, + pub zoom_sensitivity: f32, + pub pan_button: MouseButton, + pub enabled: bool, +} + +impl Default for OrbitCamera { + fn default() -> Self { + OrbitCamera { + zoom: 100.0, + center: Vec3::ZERO, + pan_sensitivity: 1.0, + zoom_sensitivity: 0.8, + pan_button: MouseButton::Right, + enabled: true, + } + } +} + +// Adapted from the 3D orbit camera from bevy-orbit-controls +pub struct OrbitCameraPlugin; +impl OrbitCameraPlugin { + fn update_transform_system( + mut query: Query<(&OrbitCamera, &mut Transform), (Changed, With)>, + ) { + for (camera, mut transform) in query.iter_mut() { + if camera.enabled { + transform.translation = camera.center; + transform.scale = Vec3::new(1.0 / camera.zoom, 1.0 / camera.zoom, 1.0); + } + } + } + + fn mouse_motion_system( + _time: Res