- 32bit to 64bit (reverse) conversion of hkx.
- XML to 32bit/64bit hkx (reverse) conversion.
- Display of hkx/XML state machine dependency tree.
- Output logs that make it possible to determine the binary data location of hkx.
- Hexdump the binary data of hkx.
- Display data differences between two hkx/XML.
./hkxc --help
- Convenience wrapper API(For CLI/GUI): Examples
# in Cargo.toml
tokio = { version = "1.41.0", features = ["full"] } # Async runtime
serde_hkx_features = { git = "https://github.com/SARDONYX-sard/serde-hkx", tag = "0.5.0" }
use serde_hkx_features::convert::{convert, OutFormat}
use serde_hkx_features::error::{Result}
#[tokio::main]
async fn havok_convert() -> Result<()> {
let input = "./defaultmale.hkx";
let out_fmt = OutFormat::from_input(&input)?; // `.hkx` -> OutFormat::Xml, `.xml` -> OutFormat::Amd64
let output: Option<PathBuf> = None; // `None` is same as input.
convert(input, output, out_fmt).await
}
- Low level API: (e.g. Tests)
# in Cargo.toml
havok_classes = { git = "https://github.com/SARDONYX-sard/serde-hkx", tag = "0.5.0" }
serde_hkx = { git = "https://github.com/SARDONYX-sard/serde-hkx", tag = "0.5.0" }
NOTE: Currently there is a stack overflow problem of unknown cause. This occurs
with debug build (cargo build
) but not with release (cargo build --release
).
git clone https://github.com/SARDONYX-sard/serde-hkx.git;cd ./serde-hkx; cargo doc -p serde_hkx_features;
The only way to find out if it is possible or not is to try it out.
- XML Serializer
- XML Deserializer
- Bytes Serializer
- Bytes Deserializer
- Generate Havok Classes
- Testing the API & CI.
- Modify the code based on the test data.