(screen_x: f64, screen_y: f64)
| 2293 | |
| 2294 | #[no_mangle] |
| 2295 | pub extern "C" fn bloom_scene_pick(screen_x: f64, screen_y: f64) -> f64 { |
| 2296 | let eng = engine(); |
| 2297 | let inv_vp = eng.renderer.inverse_vp_matrix(); |
| 2298 | let cam_pos = eng.renderer.camera_pos(); |
| 2299 | let w = eng.renderer.width() as f32; |
| 2300 | let h = eng.renderer.height() as f32; |
| 2301 | |
| 2302 | let (origin, direction) = bloom_shared::picking::screen_to_ray( |
| 2303 | screen_x as f32, screen_y as f32, |
| 2304 | w, h, &inv_vp, &cam_pos, |
| 2305 | ); |
| 2306 | |
| 2307 | let result = bloom_shared::picking::raycast_scene(&eng.scene, &origin, &direction); |
| 2308 | let hit = result.hit; |
| 2309 | unsafe { LAST_PICK = Some(result); } |
| 2310 | if hit { 1.0 } else { 0.0 } |
| 2311 | } |
| 2312 | |
| 2313 | #[no_mangle] |
| 2314 | pub extern "C" fn bloom_pick_hit_handle() -> f64 { |
nothing calls this directly
no test coverage detected