diff options
| author | Sébastien Crozet <developer@crozet.re> | 2020-09-28 10:58:35 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2020-09-28 10:58:35 +0200 |
| commit | 90dffc59ed45e5b95c2a40699cb91d285a206e0e (patch) | |
| tree | fa25c9c94bf4cd18a84f1a8c2bea327cd875af5f /benchmarks2d/all_benchmarks2.rs | |
| parent | 3080c6e7d2e7bad0ac55095ccc24b1ac8bd5449a (diff) | |
| parent | e7466e2f6923d24e987a34f8ebaf839346af8d4e (diff) | |
| download | rapier-90dffc59ed45e5b95c2a40699cb91d285a206e0e.tar.gz rapier-90dffc59ed45e5b95c2a40699cb91d285a206e0e.tar.bz2 rapier-90dffc59ed45e5b95c2a40699cb91d285a206e0e.zip | |
Merge pull request #20 from dimforge/benchbot
Split benchmarks from examples
Diffstat (limited to 'benchmarks2d/all_benchmarks2.rs')
| -rw-r--r-- | benchmarks2d/all_benchmarks2.rs | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/benchmarks2d/all_benchmarks2.rs b/benchmarks2d/all_benchmarks2.rs new file mode 100644 index 0000000..9a7a607 --- /dev/null +++ b/benchmarks2d/all_benchmarks2.rs @@ -0,0 +1,82 @@ +#![allow(dead_code)] + +extern crate nalgebra as na; + +#[cfg(target_arch = "wasm32")] +use wasm_bindgen::prelude::*; + +use inflector::Inflector; + +use rapier_testbed2d::Testbed; +use std::cmp::Ordering; + +mod balls2; +mod boxes2; +mod capsules2; +mod heightfield2; +mod joint_ball2; +mod joint_fixed2; +mod joint_prismatic2; +mod pyramid2; + +fn demo_name_from_command_line() -> Option<String> { + let mut args = std::env::args(); + + while let Some(arg) = args.next() { + if &arg[..] == "--example" { + return args.next(); + } + } + + None +} + +#[cfg(any(target_arch = "wasm32", target_arch = "asmjs"))] +fn demo_name_from_url() -> Option<String> { + None + // let window = stdweb::web::window(); + // let hash = window.location()?.search().ok()?; + // Some(hash[1..].to_string()) +} + +#[cfg(not(any(target_arch = "wasm32", target_arch = "asmjs")))] +fn demo_name_from_url() -> Option<String> { + None +} + +#[cfg_attr(target_arch = "wasm32", wasm_bindgen(start))] +pub fn main() { + let demo = demo_name_from_command_line() + .or_else(|| demo_name_from_url()) + .unwrap_or(String::new()) + .to_camel_case(); + + let mut builders: Vec<(_, fn(&mut Testbed))> = vec![ + ("Balls", balls2::init_world), + ("Boxes", boxes2::init_world), + ("Capsules", capsules2::init_world), + ("Heightfield", heightfield2::init_world), + ("Pyramid", pyramid2::init_world), + ("(Stress test) joint ball", joint_ball2::init_world), + ("(Stress test) joint fixed", joint_fixed2::init_world), + ( + "(Stress test) joint prismatic", + joint_prismatic2::init_world, + ), + ]; + + // Lexicographic sort, with stress tests moved at the end of the list. + builders.sort_by(|a, b| match (a.0.starts_with("("), b.0.starts_with("(")) { + (true, true) | (false, false) => a.0.cmp(b.0), + (true, false) => Ordering::Greater, + (false, true) => Ordering::Less, + }); + + let i = builders + .iter() + .position(|builder| builder.0.to_camel_case().as_str() == demo.as_str()) + .unwrap_or(0); + let testbed = Testbed::from_builders(i, builders); + + testbed.run() +} |
