util.rs 819B

12345678910111213141516171819202122232425262728293031
  1. use crate::map::Map;
  2. use crate::physics::GridPoint;
  3. use crate::{ScenePoint, WindowPoint};
  4. pub fn grid_position_from_scene_point(position: &ScenePoint, map: &Map) -> GridPoint {
  5. GridPoint::new(
  6. (position.x / map.terrain.tileset.tile_width as f32) as i32,
  7. (position.y / map.terrain.tileset.tile_height as f32) as i32,
  8. )
  9. }
  10. pub fn scene_point_from_window_point(
  11. window_point: &WindowPoint,
  12. display_offset: &WindowPoint,
  13. ) -> ScenePoint {
  14. ScenePoint::new(
  15. window_point.x - display_offset.x,
  16. window_point.y - display_offset.y,
  17. )
  18. }
  19. pub fn window_point_from_scene_point(
  20. scene_point: &ScenePoint,
  21. display_offset: &WindowPoint,
  22. ) -> WindowPoint {
  23. WindowPoint::new(
  24. scene_point.x + display_offset.x,
  25. scene_point.y + display_offset.y,
  26. )
  27. }