Implement native object models (#68)
All checks were successful
Native code generation / deterministic (push) Successful in 14m42s
Imaging and meshing gate / native (push) Successful in 4m59s
Native Rust workspace compile / compile (push) Successful in 5m7s

This commit is contained in:
2026-08-10 13:32:08 +00:00
parent cf98152e41
commit 43820f6bd1
11 changed files with 3763 additions and 1441 deletions

View File

@@ -890,7 +890,6 @@ fn render_visual_catalog(catalog: &VisualCatalog) -> String {
visual_parameters: Vec::new(),\n\
})\n\
}\n\n\
pub(crate) fn new_texture_entry_face() -> Result<crate::PrimitiveTextureEntryFace, crate::Error> { Ok(crate::PrimitiveTextureEntryFace) }\n\n\
#[cfg(test)] mod tests { use super::*; #[test] fn golden_catalog_shape_and_values() { let params = generated_params(); assert_eq!(params.len(), 672); assert_eq!(GROUP0_PARAM_IDS.len(), 253); assert!(GROUP0_PARAM_IDS.windows(2).all(|ids| ids[0] < ids[1])); let height = &params[&33]; assert_eq!(height.name, \"Height\"); assert_eq!(height.group, 0); assert_eq!(height.wearable.as_deref(), Some(\"shape\")); assert_eq!(height.min_value, -2.3); assert_eq!(height.max_value, 2.0); assert!(!height.skeletal_distortions.as_ref().unwrap().is_empty()); } }\n",
);
body

View File

@@ -197,6 +197,18 @@ NATIVE_TYPES = {
"T:LibreMetaverse.Messages.Linden.EventQueueGetMessage": "crate::event_queue::EventQueueGetMessage",
"T:LibreMetaverse.Messages.Linden.AttachmentResourcesMessage": "crate::message_decoder::AttachmentResourcesMessage",
"T:LibreMetaverse.Primitive.PhysicsProperties": "crate::message_decoder::PrimitivePhysicsProperties",
"T:LibreMetaverse.Primitive": "crate::object_model::Primitive",
"T:LibreMetaverse.Primitive.ConstructionData": "crate::object_model::PrimitiveConstructionData",
"T:LibreMetaverse.Primitive.FlexibleData": "crate::object_model::PrimitiveFlexibleData",
"T:LibreMetaverse.Primitive.LightData": "crate::object_model::PrimitiveLightData",
"T:LibreMetaverse.Primitive.LightImage": "crate::object_model::PrimitiveLightImage",
"T:LibreMetaverse.Primitive.ObjectProperties": "crate::object_model::PrimitiveObjectProperties",
"T:LibreMetaverse.Primitive.ParticleSystem": "crate::object_model::PrimitiveParticleSystem",
"T:LibreMetaverse.Primitive.SculptData": "crate::object_model::PrimitiveSculptData",
"T:LibreMetaverse.Primitive.TextureAnimation": "crate::object_model::PrimitiveTextureAnimation",
"T:LibreMetaverse.Primitive.TextureEntry": "crate::object_model::PrimitiveTextureEntry",
"T:LibreMetaverse.Primitive.TextureEntryFace": "crate::object_model::PrimitiveTextureEntryFace",
"T:LibreMetaverse.Materials.LegacyMaterial": "crate::object_model::LegacyMaterial",
"T:LibreMetaverse.ArchetypeParam": "crate::genepool_catalog::ArchetypeParam",
"T:LibreMetaverse.AttentionData": "crate::attention_catalog::AttentionData",
"T:LibreMetaverse.AttentionSet": "crate::attention_catalog::AttentionSet",
@@ -330,6 +342,18 @@ NATIVE_DECLARATIONS = {
}
NATIVE_MEMBER_BODIES = {
"M:LibreMetaverse.Helpers.TEGlowByte(System.Single)":
"Ok(crate::object_model::te_glow_byte(glow))",
"M:LibreMetaverse.Helpers.TEGlowFloat(System.Byte[],System.Int32)":
"crate::object_model::te_glow_float(bytes, pos)",
"M:LibreMetaverse.Helpers.TEOffsetFloat(System.Byte[],System.Int32)":
"crate::object_model::te_offset_float(bytes, pos)",
"M:LibreMetaverse.Helpers.TEOffsetShort(System.Single)":
"Ok(crate::object_model::te_offset_short(offset))",
"M:LibreMetaverse.Helpers.TERotationFloat(System.Byte[],System.Int32)":
"crate::object_model::te_rotation_float(bytes, pos)",
"M:LibreMetaverse.Helpers.TERotationShort(System.Single)":
"Ok(crate::object_model::te_rotation_short(rotation))",
"M:LibreMetaverse.AvatarAnimationEventArgs.#ctor(LibreMetaverse.UUID,System.Collections.Generic.List{LibreMetaverse.Animation})":
"crate::avatar_manager::AvatarAnimationEventArgs::native_new(avatar_id, anims)",
"P:LibreMetaverse.AvatarAnimationEventArgs.Animations":
@@ -1871,8 +1895,6 @@ NATIVE_MEMBER_BODIES = {
"crate::foliage_catalog::grass_by_id(self.prim_data.state)",
"M:LibreMetaverse.Primitive.GetTreeDefinition":
"crate::foliage_catalog::TreeDefinitions::get(self.tree_species)",
"M:LibreMetaverse.Primitive.TextureEntryFace.#ctor(LibreMetaverse.Primitive.TextureEntryFace)":
"crate::visual_catalog::new_texture_entry_face()",
"M:LibreMetaverse.StructuredData.OSDParser.BufferCharactersEqual(System.IO.StringReader,System.Char[],System.Int32)":
"crate::notation::buffer_characters_equal(reader, buffer, offset)",
"M:LibreMetaverse.StructuredData.OSDParser.ConsumeBytes(System.IO.Stream,System.Int32)":

View File

@@ -1014,6 +1014,7 @@ def validate_generated_shims() -> None:
"crate::message_decoder::",
"crate::NameValue {",
"crate::object_material::",
"crate::object_model::",
"crate::notation::",
"crate::packet_catalog::",
"crate::packet_wire::",