plasma-prp 0.1.0

Read, write, inspect, and manipulate Plasma engine PRP files used by Myst Online: Uru Live
Documentation
//! plasma-prp — Parser library for Plasma engine files (Myst Online: Uru Live).
//!
//! Reads and writes `.prp` (Plasma Resource Page), `.age`, `.sdl`, and `.fni` files.
//! Zero engine dependencies — no GPU, audio, or physics.
//!
//! # Quick Start
//! ```no_run
//! use plasma_prp::resource::prp::{PrpPage, class_types};
//! use plasma_prp::age::description::AgeDescription;
//!
//! // Load an age description
//! let age = AgeDescription::from_file("Cleft.age".as_ref()).unwrap();
//! println!("Age: {} ({} pages)", age.age_name, age.pages.len());
//!
//! // Load a PRP page
//! let page = PrpPage::from_file("Cleft_District_Cleft.prp".as_ref()).unwrap();
//! println!("{} objects", page.keys.len());
//!
//! // Access objects by type
//! let drawables = page.keys_of_type(class_types::PL_DRAWABLE_SPANS);
//! println!("{} drawable spans", drawables.len());
//! ```

pub mod age;
pub mod animation;
pub mod camera;
pub mod core;
pub mod lighting;
pub mod material;
pub mod rendering;
pub mod resource;
pub mod sdl;

#[cfg(feature = "python")]
mod python;

// Re-export key types at crate root for convenience
pub use core::class_index::ClassIndex;
pub use core::load_mask::LoadMask;
pub use core::location::Location;
pub use core::uoid::Uoid;
pub use resource::prp::{PlasmaRead, PlasmaWrite, PrpPage, PageHeader, ObjectKey};
pub use age::description::AgeDescription;