(screen_x: f64, screen_y: f64)
| 2136 | |
| 2137 | #[no_mangle] |
| 2138 | pub extern "C" fn bloom_scene_pick(screen_x: f64, screen_y: f64) -> f64 { |
| 2139 | let eng = engine(); |
| 2140 | let inv_vp = eng.renderer.inverse_vp_matrix(); |
| 2141 | let cam_pos = eng.renderer.camera_pos(); |
| 2142 | let w = eng.renderer.width() as f32; |
| 2143 | let h = eng.renderer.height() as f32; |
| 2144 | |
| 2145 | let (origin, direction) = bloom_shared::picking::screen_to_ray( |
| 2146 | screen_x as f32, screen_y as f32, |
| 2147 | w, h, &inv_vp, &cam_pos, |
| 2148 | ); |
| 2149 | |
| 2150 | let result = bloom_shared::picking::raycast_scene(&eng.scene, &origin, &direction); |
| 2151 | let hit = result.hit; |
| 2152 | unsafe { LAST_PICK = Some(result); } |
| 2153 | if hit { 1.0 } else { 0.0 } |
| 2154 | } |
| 2155 | |
| 2156 | #[no_mangle] |
| 2157 | pub extern "C" fn bloom_scene_set_cast_shadow(handle: f64, cast: f64) { |
nothing calls this directly
no test coverage detected