use unity_asset_decode::texture::{Texture2D, Texture2DConverter, TextureFormat};
use unity_asset_decode::unity_version::UnityVersion;
fn main() -> Result<(), Box<dyn std::error::Error>> {
println!("Debug Texture Format Decoding");
println!("=============================");
let converter = Texture2DConverter::new(UnityVersion::default());
println!("\n🔍 Testing RGBA4444:");
test_rgba4444(&converter);
println!("\n🔍 Testing RGB565:");
test_rgb565(&converter);
Ok(())
}
fn test_rgba4444(converter: &Texture2DConverter) {
let image_data = vec![
0xFF, 0x0F, 0x0F, 0xF0, 0xF0, 0x0F, 0x00, 0xFF, ];
let texture = Texture2D {
name: "RGBA4444_Test".to_string(),
width: 2,
height: 2,
complete_image_size: image_data.len() as i32,
format: TextureFormat::RGBA4444,
mip_map: false,
is_readable: true,
data_size: image_data.len() as i32,
image_data,
..Default::default()
};
println!(" Input data: {:?}", texture.image_data);
println!(" Data size: {} bytes", texture.data_size);
match converter.decode_to_image(&texture) {
Ok(image) => {
println!(" ✅ Successfully decoded RGBA4444!");
println!(" Output: {}x{} RGBA", image.width(), image.height());
let pixels = image.pixels().take(4).collect::<Vec<_>>();
for (i, pixel) in pixels.iter().enumerate() {
println!(
" Pixel {}: R={}, G={}, B={}, A={}",
i, pixel[0], pixel[1], pixel[2], pixel[3]
);
}
}
Err(e) => {
println!(" ❌ Failed to decode RGBA4444: {}", e);
}
}
}
fn test_rgb565(converter: &Texture2DConverter) {
let image_data = vec![
0x1F, 0x00, 0xE0, 0x07, 0x00, 0xF8, 0xFF, 0xFF, ];
let texture = Texture2D {
name: "RGB565_Test".to_string(),
width: 2,
height: 2,
complete_image_size: image_data.len() as i32,
format: TextureFormat::RGB565,
mip_map: false,
is_readable: true,
data_size: image_data.len() as i32,
image_data,
..Default::default()
};
println!(" Input data: {:?}", texture.image_data);
println!(" Data size: {} bytes", texture.data_size);
match converter.decode_to_image(&texture) {
Ok(image) => {
println!(" ✅ Successfully decoded RGB565!");
println!(" Output: {}x{} RGBA", image.width(), image.height());
let pixels = image.pixels().take(4).collect::<Vec<_>>();
for (i, pixel) in pixels.iter().enumerate() {
println!(
" Pixel {}: R={}, G={}, B={}, A={}",
i, pixel[0], pixel[1], pixel[2], pixel[3]
);
}
}
Err(e) => {
println!(" ❌ Failed to decode RGB565: {}", e);
}
}
}