INNER CODE UNIT · Rust

atlas

elringus/sprite-dicing · crates/abi/src/lib.rs:331

        let atlas = unsafe { &*result.atlases };
        let count = pixel_count(atlas.width, atlas.height);
        let atlas_pixels = unsafe { to_slice(atlas.pixels, count) }.unwrap();
        assert!(atlas_pixels.contains(&RED));
        assert!(atlas_pixels.contains(&BLUE));

        let sprite = unsafe { &*result.sprites };
        assert_eq!(unsafe { to_str(sprite.id) }, Some("sprite"));
        assert_eq!(sprite.atlas_index, 0);
        assert!(sprite.vertex_count > 0 && sprite.vertex_count % 4 == 0);
        assert_eq!(sprite.index_count, sprite.vertex_count / 4 * 6);
        let indices = unsafe { to_slice(sprite.indices, sprite.index_count) }.unwrap();
        assert!(indices.iter().all(|i| (*i as usize) < sprite.vertex_count));
        let uvs = unsafe { to_slice(sprite.uvs, sprite.vertex_count) }.unwrap();
        assert!(uvs.iter().all(|uv| (0.0..=1.0).contains(&uv.u)));
        assert_eq!(sprite.rect.width, 2.0);
        assert_eq!(sprite.rect.height, 2.0);
        assert_eq!(sprite.pivot, sd_pivot { x: 0.5, y: 0.5 });

View source record →

📰 Research Paper
Loading…
⏳ Fetching content…