diff --git a/crates/parry2d/examples/aabb2d.rs b/crates/parry2d/examples/aabb2d.rs index 1bed800f..9223f6e5 100644 --- a/crates/parry2d/examples/aabb2d.rs +++ b/crates/parry2d/examples/aabb2d.rs @@ -1,16 +1,8 @@ -<<<<<<< HEAD -mod common_macroquad; - -extern crate nalgebra as na; - -use common_macroquad::{draw_polyline, lissajous_2d, mquad_from_na, na_from_mquad}; -======= mod common_macroquad2d; extern crate nalgebra as na; use common_macroquad2d::{draw_polyline, lissajous_2d, mquad_from_na, na_from_mquad}; ->>>>>>> @{-1} use macroquad::prelude::*; use na::Isometry2; use parry2d::bounding_volume::{Aabb, BoundingVolume}; diff --git a/crates/parry2d/examples/bounding_sphere2d.rs b/crates/parry2d/examples/bounding_sphere2d.rs index ba55c256..7f3bb40a 100644 --- a/crates/parry2d/examples/bounding_sphere2d.rs +++ b/crates/parry2d/examples/bounding_sphere2d.rs @@ -1,14 +1,3 @@ -<<<<<<< HEAD -mod common_macroquad; - -extern crate nalgebra as na; - -use common_macroquad::{draw_polyline, lissajous_2d, mquad_from_na, na_from_mquad}; -use macroquad::prelude::*; -use na::{Isometry2, Vector2}; -use parry2d::bounding_volume::{Aabb, BoundingVolume}; -use parry2d::shape::Ball; -======= mod common_macroquad2d; extern crate nalgebra as na; @@ -17,7 +6,6 @@ use common_macroquad2d::{draw_polyline, lissajous_2d, mquad_from_na, na_from_mqu use macroquad::prelude::*; use na::{Isometry2, Vector2}; use parry2d::bounding_volume::{Aabb, BoundingVolume}; ->>>>>>> @{-1} use parry2d::shape::Cuboid; const RENDER_SCALE: f32 = 30.0; @@ -37,11 +25,8 @@ async fn main() { let cube2 = Cuboid::new(Vector2::new(1., 0.5)); let cube1_pos = na_from_mquad(lissajous_2d(elapsed_time)) * 5f32; -<<<<<<< HEAD - let cube1_pos = Isometry2::translation(cube1_pos.x, cube1_pos.y); -======= + let cube1_pos = Isometry2::from(cube1_pos); ->>>>>>> @{-1} let cube2_pos = Isometry2::identity(); /* diff --git a/crates/parry2d/examples/common_macroquad.rs b/crates/parry2d/examples/common_macroquad.rs deleted file mode 100644 index bdfc8281..00000000 --- a/crates/parry2d/examples/common_macroquad.rs +++ /dev/null @@ -1,103 +0,0 @@ -#[allow(unused, dead_code)] -use std::f32::consts::{FRAC_PI_2, FRAC_PI_4, FRAC_PI_6}; - -use macroquad::prelude::*; -use macroquad::{ - color::{Color, WHITE}, - math::Vec2, - shapes::draw_line, -}; -use nalgebra::Point2; -use parry2d::math::Real; -use parry2d::shape::TriMesh; - -fn main() { - println!( - "This module contains helper functions to use macroquad, - isolated from the rest of the examples for the sake of simplicity." - ); -} - -pub fn mquad_from_na(a: Point2) -> Vec2 { - Vec2::new(a.x, a.y) -} - -pub fn na_from_mquad(a: Vec2) -> Point2 { - Point2::new(a.x, a.y) -} - -pub fn draw_polyline(polygon: Vec<(Vec2, Vec2)>, color: Color) { - for i in 0..polygon.len() { - let a = polygon[i].0; - let b = polygon[i].1; - draw_line_2d(a, b, color); - } -} - -pub fn easy_draw_text(text: &str) { - macroquad::text::draw_text(text, 10.0, 48.0 + 18.0, 30.0, WHITE); -} - -pub fn lissajous_2d(t: f32) -> Vec2 { - // Some hardcoded parameters to have a pleasing lissajous trajectory. - lissajous_2d_with_params(t, 3.0, 2.0, FRAC_PI_2, FRAC_PI_4) -} -pub fn lissajous_2d_with_params(t: f32, a: f32, b: f32, delta_x: f32, delta_y: f32) -> Vec2 { - // Some hardcoded parameters to have a pleasing lissajous trajectory. - - let x = (a * t + delta_x).sin(); - let y = (b * t + delta_y).sin(); - Vec2::new(x, y) * 0.75f32 -} - -pub fn draw_line_2d(a: Vec2, b: Vec2, color: Color) { - draw_line(a.x, a.y, b.x, b.y, 2f32, color); -} - -pub fn draw_trimesh2(trimesh: &TriMesh, offset: Vec2) { - let vertices = trimesh.vertices(); - for v in trimesh.indices() { - let v0 = mquad_from_na(vertices[v[0] as usize]) + offset; - let v1 = mquad_from_na(vertices[v[1] as usize]) + offset; - let v2 = mquad_from_na(vertices[v[2] as usize]) + offset; - - draw_line(v0.x, v0.y, v1.x, v1.y, 2f32, WHITE); - draw_line(v0.x, v0.y, v2.x, v2.y, 2f32, WHITE); - draw_line(v2.x, v2.y, v1.x, v1.y, 2f32, WHITE); - } -} - -pub fn draw_polygon(polygon: &[Point2], scale: f32, shift: Point2, color: Color) { - for i in 0..polygon.len() { - let a = polygon[i]; - let b = polygon[(i + 1) % polygon.len()]; - draw_line( - a.x * scale + shift.x, - a.y * scale + shift.y, - b.x * scale + shift.x, - b.y * scale + shift.y, - 2.0, - color, - ); - } -} - -pub fn draw_point(point: Point2, scale: f32, shift: Point2, color: Color) { - let edge_len = 0.15; - draw_line( - (point.x - edge_len) * scale + shift.x, - point.y * scale + shift.y, - (point.x + edge_len) * scale + shift.x, - point.y * scale + shift.y, - 2.0, - color, - ); - draw_line( - point.x * scale + shift.x, - (point.y - edge_len) * scale + shift.y, - point.x * scale + shift.x, - (point.y + edge_len) * scale + shift.y, - 2.0, - color, - ); -} diff --git a/crates/parry2d/examples/convex_hull2d.rs b/crates/parry2d/examples/convex_hull2d.rs index 2a445c9d..33b3c3ff 100644 --- a/crates/parry2d/examples/convex_hull2d.rs +++ b/crates/parry2d/examples/convex_hull2d.rs @@ -1,16 +1,8 @@ -<<<<<<< HEAD -mod common_macroquad; - -use std::f32::consts::{FRAC_PI_2, FRAC_PI_4}; - -use common_macroquad::{draw_point, draw_polygon, lissajous_2d_with_params, na_from_mquad}; -======= mod common_macroquad2d; use std::f32::consts::{FRAC_PI_2, FRAC_PI_4}; use common_macroquad2d::{draw_point, draw_polygon, lissajous_2d_with_params, na_from_mquad}; ->>>>>>> @{-1} use macroquad::prelude::*; use nalgebra::Point2; use parry2d::transformation; diff --git a/crates/parry3d/examples/common_macroquad.rs b/crates/parry3d/examples/common_macroquad.rs deleted file mode 100644 index 5b5411f7..00000000 --- a/crates/parry3d/examples/common_macroquad.rs +++ /dev/null @@ -1,130 +0,0 @@ -#[allow(unused, dead_code)] -use std::f32::consts::{FRAC_PI_2, FRAC_PI_4, FRAC_PI_6}; - -use macroquad::{ - color::{Color, WHITE}, - math::{Vec2, Vec3, Vec4}, - models::{draw_line_3d, Mesh}, - ui::Vertex, -}; -use nalgebra::Point3; -use parry3d::math::Real; - -fn main() { - println!( - "This module contains helper functions to use macroquad, - isolated from the rest of the examples for the sake of simplicity." - ); -} - -pub fn mquad_from_na(a: Point3) -> Vec3 { - Vec3::new(a.x, a.y, a.z) -} - -pub fn na_from_mquad(a: Vec3) -> Point3 { - Point3::new(a.x, a.y, a.z) -} - -pub fn lissajous_3d(t: f32) -> Vec3 { - // Some hardcoded parameters to have a pleasing lissajous trajectory. - lissajous_3d_with_params(t, 3.0, 2.0, 1.0, FRAC_PI_2, FRAC_PI_4, FRAC_PI_6) -} - -pub fn lissajous_3d_with_params( - t: f32, - a: f32, - b: f32, - c: f32, - delta_x: f32, - delta_y: f32, - delta_z: f32, -) -> Vec3 { - let x = (a * t + delta_x).sin(); - let y = (b * t + delta_y).sin(); - let z = (c * t + delta_z).sin(); - Vec3::new(x, y, z) * 0.75f32 -} - -pub fn draw_polyline(polygon: Vec<(Vec3, Vec3)>, color: Color) { - for i in 0..polygon.len() { - let a = polygon[i].0; - let b = polygon[i].1; - draw_line_3d(a, b, color); - } -} - -pub fn easy_draw_text(text: &str) { - macroquad::text::draw_text(text, 10.0, 48.0 + 18.0, 30.0, WHITE); -} - -pub fn mquad_mesh_from_points( - trimesh: &(Vec>, Vec<[u32; 3]>), - light_pos: Vec3, - color: Color, -) -> Mesh { - let (points, indices) = trimesh; - // Transform the parry mesh into a mquad Mesh - let (mquad_points, mquad_indices) = ( - points - .iter() - .map(|p| Vertex { - position: mquad_from_na(*p), - uv: Vec2::new(p.x, p.y), - color: color.into(), - normal: Vec4::ZERO, - }) - .collect(), - indices.iter().flatten().map(|v| *v as u16).collect(), - ); - - // Macroquad does support adding normals to vertices, but we´d have to provide shaders for them. - // so we're baking a color into these vertices. - // See https://github.com/not-fl3/macroquad/issues/321. - - // Compute the normal of each vertex, making them unique - let vertices: Vec = - mquad_compute_normals_and_bake_light(&mquad_points, &mquad_indices, light_pos); - // Regenerate the index for each vertex. - let indices: Vec = (0..vertices.len() * 3) - .into_iter() - .map(|i| i as u16) - .collect(); - let mesh = Mesh { - vertices, - indices, - texture: None, - }; - mesh -} - -pub fn mquad_compute_normals_and_bake_light( - points: &Vec, - indices: &Vec, - light_pos: Vec3, -) -> Vec { - let mut vertices: Vec = Vec::::new(); - for indices in indices.chunks(3) { - let v0 = &points[indices[0] as usize]; - let v1 = &points[indices[1] as usize]; - let v2 = &points[indices[2] as usize]; - let normal = (v0.position - v2.position) - .cross(v1.position - v2.position) - .normalize(); - let brightness_mod = 0.4 + (0.6 / 2.) * (normal.dot(light_pos) + 1.); - - for &i in indices.iter() { - let mut color = points[i as usize].color; - color[0] = (color[0] as f32 * brightness_mod) as u8; - color[1] = (color[1] as f32 * brightness_mod) as u8; - color[2] = (color[2] as f32 * brightness_mod) as u8; - - vertices.push(Vertex { - position: points[i as usize].position, - uv: Vec2::ZERO, - color: color, - normal: Vec4::ZERO, - }); - } - } - vertices -} diff --git a/crates/parry3d/examples/convex_decomposition.rs b/crates/parry3d/examples/convex_decomposition.rs index 875caaf7..b21b0ae8 100644 --- a/crates/parry3d/examples/convex_decomposition.rs +++ b/crates/parry3d/examples/convex_decomposition.rs @@ -1,8 +1,8 @@ -mod common_macroquad; +mod common_macroquad3d; extern crate nalgebra as na; -use common_macroquad::mquad_mesh_from_points; +use common_macroquad3d::mquad_mesh_from_points; use macroquad::prelude::*; use parry3d::{math::Point, shape::SharedShape};