Crate unity_asset_binary

Crate unity_asset_binary 

Source
Expand description

Unity Binary Asset Parser

This crate provides functionality to parse Unity binary file formats including:

  • AssetBundle files (.bundle, .unity3d)
  • Serialized Asset files (.assets)
  • Resource files

§Features

  • AssetBundle parsing: Support for UnityFS format
  • Compression support: LZ4, LZMA, and other compression formats
  • TypeTree parsing: Dynamic type information for objects
  • Object extraction: Extract Unity objects from binary data

§Feature Flags

  • texture: Texture processing (basic formats + PNG export)
  • audio: Audio processing (all formats including Vorbis, MP3)
  • mesh: Mesh processing (parsing + basic export)
  • sprite: Sprite processing (requires texture support)
  • texture-advanced: Advanced texture formats (DXT, ETC, ASTC) - requires texture2ddecoder
  • mesh-export: Advanced mesh export (OBJ format)

§Example

use unity_asset_binary::load_bundle_from_memory;
use std::fs;

// Load an AssetBundle file
let data = fs::read("example.bundle")?;
let bundle = load_bundle_from_memory(data)?;

// Access contained assets
for asset in &bundle.assets {
    println!("Asset with {} objects", asset.object_count());
    // Access objects in the asset
    for object in &asset.objects {
        println!("  Object: {} (type_id: {})", object.path_id, object.type_id);
    }
}

Re-exports§

pub use asset::Asset;
pub use asset::AssetFileInfo;
pub use asset::AssetProcessor;
pub use asset::FileIdentifier;
pub use asset::FileStatistics;
pub use asset::HeaderFormatInfo;
pub use asset::HeaderValidation;
pub use asset::ObjectInfo;
pub use asset::ParsingOptions;
pub use asset::ParsingStats;
pub use asset::SerializedFile;
pub use asset::SerializedFileHeader;
pub use asset::SerializedFileParser;
pub use asset::SerializedType;
pub use asset::TypeRegistry;
pub use asset::class_ids;
pub use asset::create_processor as create_asset_processor;
pub use asset::get_file_info as get_asset_file_info;
pub use asset::get_parsing_options as get_asset_parsing_options;
pub use asset::get_supported_versions as get_supported_asset_versions;
pub use asset::is_valid_serialized_file;
pub use asset::is_version_supported as is_asset_version_supported;
pub use asset::parse_serialized_file;
pub use asset::parse_serialized_file_from_path;
pub use bundle::AssetBundle;
pub use bundle::BundleCompression;
pub use bundle::BundleFileInfo;
pub use bundle::BundleFormatInfo;
pub use bundle::BundleHeader;
pub use bundle::BundleInfo;
pub use bundle::BundleLoadOptions;
pub use bundle::BundleLoader;
pub use bundle::BundleParser;
pub use bundle::BundleProcessor;
pub use bundle::BundleResourceManager;
pub use bundle::BundleStatistics;
pub use bundle::CompressionOptions;
pub use bundle::CompressionStats;
pub use bundle::DirectoryNode;
pub use bundle::LoaderStatistics;
pub use bundle::ParsingComplexity;
pub use bundle::create_processor as create_bundle_processor;
pub use bundle::extract_file_from_bundle;
pub use bundle::get_bundle_info;
pub use bundle::get_supported_formats as get_supported_bundle_formats;
pub use bundle::is_valid_bundle;
pub use bundle::list_bundle_contents;
pub use bundle::load_bundle;
pub use bundle::load_bundle_from_memory;
pub use bundle::load_bundle_with_options;
pub use error::BinaryError;
pub use error::Result;
pub use metadata::AssetMetadata;
pub use metadata::AssetReference;
pub use metadata::AssetRelationships;
pub use metadata::AssetStatistics;
pub use metadata::ComponentRelationship;
pub use metadata::DependencyAnalyzer;
pub use metadata::DependencyGraph;
pub use metadata::DependencyInfo;
pub use metadata::ExternalReference;
pub use metadata::ExtractionConfig;
pub use metadata::ExtractionResult;
pub use metadata::ExtractionStats;
pub use metadata::FileInfo;
pub use metadata::GameObjectHierarchy;
pub use metadata::InternalReference;
pub use metadata::MemoryUsage;
pub use metadata::MetadataExtractor;
pub use metadata::MetadataProcessor;
pub use metadata::ObjectStatistics;
pub use metadata::ObjectSummary;
pub use metadata::PerformanceMetrics;
pub use metadata::ProcessingOptions;
pub use metadata::RelationshipAnalyzer;
pub use metadata::create_comprehensive_processor;
pub use metadata::create_performance_processor;
pub use metadata::create_processor as create_metadata_processor;
pub use metadata::extract_basic_metadata;
pub use metadata::extract_metadata_with_config;
pub use metadata::get_asset_statistics;
pub use metadata::is_extraction_supported;
pub use object::ObjectInfo as UnityObjectInfo;
pub use object::UnityObject;
pub use reader::BinaryReader;
pub use reader::ByteOrder;
pub use typetree::ParsingStats as TypeTreeParsingStats;
pub use typetree::TypeInfo;
pub use typetree::TypeRegistry as TypeTreeRegistry;
pub use typetree::TypeTree;
pub use typetree::TypeTreeBuilder;
pub use typetree::TypeTreeInfo;
pub use typetree::TypeTreeNode;
pub use typetree::TypeTreeParser;
pub use typetree::TypeTreeProcessor;
pub use typetree::TypeTreeSerializer;
pub use typetree::TypeTreeStatistics;
pub use typetree::TypeTreeValidator;
pub use typetree::ValidationReport;
pub use typetree::build_common_typetree;
pub use typetree::create_processor as create_typetree_processor;
pub use typetree::get_parsing_method as get_typetree_parsing_method;
pub use typetree::get_typetree_info;
pub use typetree::is_version_supported as is_typetree_version_supported;
pub use typetree::parse_object_with_typetree;
pub use typetree::parse_typetree;
pub use typetree::serialize_object_with_typetree;
pub use typetree::validate_typetree;
pub use unity_objects::GameObject;
pub use unity_objects::ObjectRef;
pub use unity_objects::Quaternion;
pub use unity_objects::Transform;
pub use unity_objects::Vector3;
pub use unity_version::UnityFeature;
pub use unity_version::UnityVersion;
pub use unity_version::UnityVersionType;
pub use unity_version::VersionCompatibility;
pub use webfile::WebFile;
pub use webfile::WebFileCompression;
pub use texture::BasicDecoder;
pub use texture::CompressedDecoder;
pub use texture::CrunchDecoder;
pub use texture::ExportOptions;
pub use texture::GLTextureSettings;
pub use texture::MobileDecoder;
pub use texture::StreamingInfo;
pub use texture::Texture2D;
pub use texture::Texture2DConverter;
pub use texture::Texture2DProcessor;
pub use texture::TextureDecoder;
pub use texture::TextureExporter;
pub use texture::TextureFormat;
pub use texture::TextureProcessor;
pub use texture::TextureSwizzler;
pub use texture::create_processor;
pub use texture::decode_texture_data;
pub use texture::export_image;
pub use texture::get_supported_formats;
pub use texture::is_format_supported;
pub use audio::AudioAnalysis;
pub use audio::AudioClip;
pub use audio::AudioClipConverter;
pub use audio::AudioClipMeta;
pub use audio::AudioClipProcessor;
pub use audio::AudioCompressionFormat;
pub use audio::AudioDecoder;
pub use audio::AudioExporter;
pub use audio::AudioFormat;
pub use audio::AudioFormatInfo;
pub use audio::AudioInfo;
pub use audio::AudioProcessor;
pub use audio::AudioProperties;
pub use audio::DecodedAudio;
pub use audio::FMODSoundType;
pub use audio::create_processor as create_audio_processor;
pub use audio::decode_audio_data;
pub use audio::export_audio;
pub use audio::get_supported_formats as get_supported_audio_formats;
pub use audio::is_format_supported as is_audio_format_supported;
pub use sprite::ProcessingOptions as SpriteProcessingOptions;
pub use sprite::Sprite;
pub use sprite::SpriteAtlas;
pub use sprite::SpriteBorder;
pub use sprite::SpriteConfig;
pub use sprite::SpriteInfo;
pub use sprite::SpriteManager;
pub use sprite::SpriteOffset;
pub use sprite::SpriteParser;
pub use sprite::SpritePivot;
pub use sprite::SpriteProcessor;
pub use sprite::SpriteRect;
pub use sprite::SpriteRenderData;
pub use sprite::SpriteResult;
pub use sprite::SpriteSettings;
pub use sprite::SpriteStats;
pub use sprite::create_full_manager as create_full_sprite_manager;
pub use sprite::create_manager as create_sprite_manager;
pub use sprite::create_performance_manager as create_performance_sprite_manager;
pub use sprite::extract_sprite_image;
pub use sprite::get_sprite_area;
pub use sprite::get_sprite_aspect_ratio;
pub use sprite::is_atlas_sprite;
pub use sprite::is_nine_slice_sprite;
pub use sprite::is_sprite_feature_supported;
pub use sprite::parse_sprite;
pub use sprite::validate_sprite;
pub use mesh::AABB;
pub use mesh::BlendShape;
pub use mesh::BlendShapeChannel;
pub use mesh::BlendShapeData;
pub use mesh::BlendShapeVertex;
pub use mesh::ChannelInfo;
pub use mesh::CompressedMesh;
pub use mesh::Mesh;
pub use mesh::MeshConfig;
pub use mesh::MeshInfo;
pub use mesh::MeshManager;
pub use mesh::MeshParser;
pub use mesh::MeshProcessor;
pub use mesh::MeshResult;
pub use mesh::MeshStats;
pub use mesh::PackedFloatVector;
pub use mesh::PackedIntVector;
pub use mesh::ProcessingOptions as MeshProcessingOptions;
pub use mesh::StreamingInfo as MeshStreamingInfo;
pub use mesh::SubMesh;
pub use mesh::VertexData;
pub use mesh::create_full_manager as create_full_mesh_manager;
pub use mesh::create_manager as create_mesh_manager;
pub use mesh::create_performance_manager as create_performance_mesh_manager;
pub use mesh::export_mesh_to_obj;
pub use mesh::get_mesh_bounds;
pub use mesh::get_triangle_count;
pub use mesh::get_vertex_count;
pub use mesh::has_blend_shapes;
pub use mesh::has_streaming_data;
pub use mesh::is_compressed_mesh;
pub use mesh::is_mesh_feature_supported;
pub use mesh::parse_mesh;
pub use mesh::validate_mesh;

Modules§

asset
Unity asset processing module
audio
Audio processing module
bundle
Unity AssetBundle processing module
compression
Compression support for Unity binary files
error
Error types for Unity binary parsing
mesh
Unity Mesh processing module
metadata
Unity asset metadata processing module
object
Unity object parsing and representation
performance
Performance Optimization and Monitoring
reader
Binary data reader for Unity files
sprite
Unity Sprite processing module
texture
Texture processing module
typetree
Unity TypeTree processing module
unity_objects
Unity Core Object Types
unity_version
Unity Version Management System
webfile
Unity WebFile parsing