#![doc = include_str!("../README.md")]
extern crate alloc;
use alloc::borrow::Cow;
#[cfg(feature = "bevy")]
use bevy_asset::Asset;
#[cfg(feature = "bevy")]
use bevy_reflect::Reflect;
#[cfg(feature = "bevy")]
mod plugin;
pub mod prelude {
#[cfg(feature = "bevy")]
pub use super::plugin::{
RpackAssetHelper, RpackAssetPlugin, RpackAtlasAsset, RpackAtlasAssetError,
RpackAtlasAssetLoader, RpackAtlasAssetLoaderSettings, RpackAtlasError, RpackAtlases,
};
pub use super::{AtlasAsset, AtlasFrame, SerializableRect};
}
#[derive(Copy, Clone, Debug, serde::Deserialize, serde::Serialize)]
#[cfg_attr(feature = "bevy", derive(Reflect))]
pub struct SerializableRect {
pub x: u32,
pub y: u32,
pub w: u32,
pub h: u32,
}
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[cfg_attr(feature = "bevy", derive(Reflect))]
pub struct AtlasFrame {
pub key: String,
pub frame: SerializableRect,
}
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[cfg_attr(feature = "bevy", derive(Asset, Reflect))]
pub struct AtlasAsset {
pub size: [u32; 2],
pub filename: String,
pub frames: Vec<AtlasFrame>,
#[cfg_attr(feature = "bevy", reflect(default))]
#[serde(default, skip_serializing_if = "AtlasMetadata::skip_serialization")]
pub metadata: AtlasMetadata,
}
#[derive(Clone, Debug, serde::Deserialize, serde::Serialize)]
#[cfg_attr(feature = "bevy", derive(Reflect))]
pub struct AtlasMetadata {
pub format_version: u32,
pub app: Cow<'static, str>,
pub app_version: Cow<'static, str>,
#[serde(skip_serializing, default)]
pub skip_serialization: bool,
}
impl AtlasMetadata {
pub fn skip_serialization(&self) -> bool {
self.skip_serialization
}
}
impl Default for AtlasMetadata {
fn default() -> Self {
Self {
format_version: 1,
app: Cow::Borrowed("rpack"),
app_version: Cow::Borrowed(env!("CARGO_PKG_VERSION")),
skip_serialization: false,
}
}
}