util.rs 923B

123456789101112131415161718192021222324252627282930313233343536
  1. use crate::physics::GridPosition;
  2. use crate::{ScenePoint, Vector2, WindowPoint, GRID_TILE_HEIGHT, GRID_TILE_WIDTH};
  3. pub fn vec_from_angle(angle: f32) -> Vector2 {
  4. let vx = angle.sin();
  5. let vy = angle.cos();
  6. Vector2::new(vx, vy)
  7. }
  8. pub fn grid_position_from_scene_point(position: &ScenePoint) -> GridPosition {
  9. GridPosition::new(
  10. (position.x / GRID_TILE_WIDTH) as i32,
  11. (position.y / GRID_TILE_HEIGHT) as i32,
  12. )
  13. }
  14. pub fn scene_point_from_window_point(
  15. window_point: &WindowPoint,
  16. display_offset: &WindowPoint,
  17. ) -> ScenePoint {
  18. ScenePoint::new(
  19. window_point.x - display_offset.x,
  20. window_point.y - display_offset.y,
  21. )
  22. }
  23. pub fn window_point_from_scene_point(
  24. scene_point: &ScenePoint,
  25. display_offset: &WindowPoint,
  26. ) -> WindowPoint {
  27. WindowPoint::new(
  28. scene_point.x + display_offset.x,
  29. scene_point.y + display_offset.y,
  30. )
  31. }