oyk

OYK is ODE (Open Dynamics Engine) bindings for Rust yaw kinetics

ODE * https://github.com/nomissbowling/oyk/blob/master/img/oyk_512x100.png?raw=true

Now this crate is tested on ode-0.16.2 dll version.

ode.dll drawstuff.dll for x64 Windows binary compiled with -DdDOUBLE by mingw

(It may work with VC, or other platforms.)

Requirements

to build dll

in the running directory

Samples

```rust use oyk::ode::*;

fn startcallback(rode: &mut ODE) { let cam = &mut rode.cams[0]; cam.pos = vec![4.0, 3.0, 5.0, 0.0]; cam.ypr = vec![-150.0, -30.0, 3.0, 0.0]; let tdelta = &mut rode.tdelta; *tdelta = 0.002; let obgs = &mut rode.obgs; let m: dReal = 1.0; let r: dReal = 0.2; for i in 0..16 { let c: dVector4 = vec4fromu32(COLORS[i]); let p: dVector3 = [(i%4) as dReal - 1.5, (i/4) as dReal - 1.5, 2.0, 1.0]; obgs.push(ODE::mksphere(m, r, &c, &p)); } let c: dVector4 = [1.0, 1.0, 0.0, 0.8]; let p: dVector3 = [0.0, 0.0, 10.0, 1.0]; obgs.push(ODE::mksphere(0.1, 1.0, &c, &p)); defaultstartcallback(rode); }

fn stepcallback(rode: &mut ODE, pause: i32) { defaultstep_callback(rode, pause); }

fn commandcallback(rode: &mut ODE, cmd: i32) { match cmd as u8 as char { 'r' => {{ ODE::clearobgs(); startcallback(rode); }}, 'v' => {{ let cam = &mut rode.cams[0]; cam.pos = vec![14.0 - cam.pos[0], 13.0 - cam.pos[1], 5.0, 0.0]; cam.ypr = vec![-150.0, -30.0 - cam.ypr[1], 3.0, 0.0]; }}, _ => {} } defaultcommand_callback(rode, cmd); }

fn main() { ODE::open(); ODE::simloop( 800, 600, Some(startcallback), None, // nearcallback Some(stepcallback), Some(commandcallback), None, // stopcallback b"./resources"); ODE::close(); } ```

see also

License

MIT License