bevy_entitiles 0.2.2

A tilemap library for bevy. With many algorithms built in.
use bevy::prelude::Vec2;

#[inline]
pub fn world_pos_to_chunk_square(
    tilemap_pos: Vec2,
    tilemap_render_chunk_size: u32,
    tilemap_tile_render_scale: Vec2,
    world_pos: Vec2,
) -> Vec2 {
    let rel_pos = world_pos - tilemap_pos;
    let crs = tilemap_tile_render_scale * tilemap_render_chunk_size as f32;
    rel_pos.div_euclid(crs)
}

#[inline]
pub fn world_pos_to_chunk_iso_diamond(
    tilemap_pos: Vec2,
    tilemap_render_chunk_size: u32,
    tilemap_tile_render_scale: Vec2,
    world_pos: Vec2,
) -> Vec2 {
    let rel_pos = world_pos - tilemap_pos;
    let crs = tilemap_tile_render_scale * tilemap_render_chunk_size as f32;
    let h = crs.x * crs.y;

    Vec2::new(
        (rel_pos.x * crs.y + rel_pos.y * crs.x - h / 2.) / h,
        (rel_pos.y * crs.x - h / 2. - rel_pos.x * crs.y) / h,
    )
}