extern crate proc_macro;
use proc_macro::*;
use toml::*;
use voxel_engine_types::asset::*;
use wasset::*;
#[proc_macro]
pub fn include_assets(path: TokenStream) -> TokenStream {
wasset::include_assets::<VoxelAssetEncoder>(
path,
"e::quote! { ::voxel_engine::asset::AssetId },
)
}
struct VoxelAssetEncoder;
impl AssetEncoder for VoxelAssetEncoder {
type Target = Asset;
fn encode(
extension: &str,
_: &Table,
data: Vec<u8>,
) -> Result<Option<Self::Target>, WassetError> {
match extension {
"jpg" | "jpeg" => Ok(Some(Asset::Image {
data,
format: ImageFormat::Jpeg,
})),
"png" => Ok(Some(Asset::Image {
data,
format: ImageFormat::Png,
})),
"toml" | "txt" => Ok(Some(Asset::Text {
value: String::from_utf8(data).map_err(WassetError::from_serialize)?,
})),
_ => Ok(None),
}
}
}
#[no_mangle]
extern "C" fn __wings_invoke_proxy_function() {}
#[no_mangle]
extern "C" fn __wings_proxy_index() {}