#sprite #pixel #2d #gamedev #pixelorama

pxo

加载Pixelorama文件的实用工具

2个不稳定版本

0.2.0 2023年11月9日
0.1.0 2023年5月17日

#950 in 图像

MIT/Apache

24KB
454

Pxo

加载Pixelorama文件的实用工具。仅支持最近的Pixelorama版本。

默认情况下,文件将被读取到Pxo文件中,每个Cel(每个帧和图层都存在一个)将被存储为单独的图像。仅在需要单独图层的情况下,如不同、可交换的服装存储在不同的图层时,才推荐使用此加载方法。

默认启用的sprite功能允许将文件加载到更易用的Sprite中。图层合并,每帧只有一个图像。其余的Sprite描述了如何对其进行动画处理。

pack功能允许打包加载的文件。一个Sprite的图像被打包到一个单独的精灵图中,并使用PackedSprite来保存精灵数据,每个帧由一个PackedFrame表示。图像从PackedSprite单独返回,因为也可以将多个文件打包到同一图像中。

基本用法

# use std::fs::File;
let file = File::open("path/to/your/sprite.pxo")?;

// Load a .pxo and convert it into a sprite
let pxo = pxo::Pxo::load(file)?;
let sprite = pxo::Sprite::from(pxo, SpriteOptions::Default())?;

// Alternatively, a .pxo can be directly loaded as a sprite
let sprite = pxo::Sprite::load(file, SpriteOptions::Default())?;

// Packing a single sprite
// An error will be returned if the sprite cannot be packed into a 2048x2048 image
let (packed, image) = pxo::PackedSprite::pack_sprite(sprite, 2048, 2048)?;

// Packing two sprites, loaded from two different files, into the same image
sprite_a = pxo::Sprite::load(file_a, SpriteOptions::Default())?;
sprite_b = pxo::Sprite::load(file_b, SpriteOptions::Default())?;

let (packed, image) = pxo::PackedSprite::pack_sprites(&[sprite_a, sprite_b], 2048, 2048)?;

依赖关系

~9.5MB
~148K SLoC