Generate skeleton attention and genepool catalogs (#49)
Some checks failed
Native code generation / deterministic (push) Successful in 5m4s
Imaging and meshing gate / native (push) Failing after 17s
JPEG 2000 feature / linux (push) Failing after 59s
Skia feature / linux (push) Failing after 1m31s

This commit is contained in:
2026-08-09 09:28:40 +00:00
parent 5f83ce61e1
commit 4a32025e37
18 changed files with 7018 additions and 423 deletions

View File

@@ -11,6 +11,7 @@ use std::fmt::Write as _;
use std::fs;
use std::path::{Component, Path, PathBuf};
mod avatar_catalog;
mod xml_catalog;
pub const INVENTORY_PATH: &str = "codegen/sources.json";
@@ -18,6 +19,9 @@ pub const MANIFEST_OUTPUT: &str = "codegen/generated/source_manifest.rs";
pub const PACKET_OUTPUT: &str = "crates/libremetaverse/src/packet_catalog.rs";
pub const VISUAL_OUTPUT: &str = "crates/libremetaverse/src/visual_catalog.rs";
pub const FOLIAGE_OUTPUT: &str = "crates/libremetaverse/src/foliage_catalog.rs";
pub const SKELETON_OUTPUT: &str = "crates/libremetaverse/src/skeleton_catalog.rs";
pub const ATTENTION_OUTPUT: &str = "crates/libremetaverse/src/attention_catalog.rs";
pub const GENEPOOL_OUTPUT: &str = "crates/libremetaverse/src/genepool_catalog.rs";
pub const PUBLIC_API_PATH: &str = "api/public-api.json";
const RUST_KEYWORDS: &[&str] = &[
"as", "break", "const", "continue", "crate", "else", "enum", "extern", "false", "fn", "for",
@@ -2055,6 +2059,18 @@ pub fn regenerate(root: &Path, check: bool) -> Result<(), String> {
root.join(FOLIAGE_OUTPUT),
xml_catalog::foliage_catalog_bytes(root)?,
),
(
root.join(SKELETON_OUTPUT),
avatar_catalog::skeleton_catalog_bytes(root)?,
),
(
root.join(ATTENTION_OUTPUT),
avatar_catalog::attention_catalog_bytes(root)?,
),
(
root.join(GENEPOOL_OUTPUT),
avatar_catalog::genepool_catalog_bytes(root)?,
),
];
if check {
for (path, expected) in outputs {
@@ -2099,6 +2115,21 @@ mod tests {
let second_foliage =
xml_catalog::foliage_catalog_bytes(&root).expect("second foliage generation");
assert_eq!(first_foliage, second_foliage);
let first_skeleton =
avatar_catalog::skeleton_catalog_bytes(&root).expect("first skeleton generation");
let second_skeleton =
avatar_catalog::skeleton_catalog_bytes(&root).expect("second skeleton generation");
assert_eq!(first_skeleton, second_skeleton);
let first_attention =
avatar_catalog::attention_catalog_bytes(&root).expect("first attention generation");
let second_attention =
avatar_catalog::attention_catalog_bytes(&root).expect("second attention generation");
assert_eq!(first_attention, second_attention);
let first_genepool =
avatar_catalog::genepool_catalog_bytes(&root).expect("first genepool generation");
let second_genepool =
avatar_catalog::genepool_catalog_bytes(&root).expect("second genepool generation");
assert_eq!(first_genepool, second_genepool);
}
#[test]