Implement native object models (#68)
This commit is contained in:
@@ -4,7 +4,7 @@ Generated by `python3 tools/generate_api_shims.py`; do not edit by hand.
|
||||
|
||||
| Assembly | Types | Members | Status |
|
||||
|---|---:|---:|---|
|
||||
| `LibreMetaverse` | 2,711 | 27,281 | native implementation: 225 types / 15,463 members; remaining surface is callable failure-only shims |
|
||||
| `LibreMetaverse` | 2,711 | 27,281 | native implementation: 237 types / 15,757 members; remaining surface is callable failure-only shims |
|
||||
| `LibreMetaverse.Imaging.Abstractions` | 3 | 20 | native implementation: 3 types / 20 members; no generated shims remain |
|
||||
| `LibreMetaverse.Imaging.Skia` | 1 | 3 | native implementation: 1 type / 3 members; no generated shims remain |
|
||||
| `LibreMetaverse.LslTools` | 164 | 768 | callable failure-only shim |
|
||||
|
||||
@@ -429,7 +429,7 @@ fn face(vertices: Vec<Vertex>, weights: Option<Vec<VertexWeight>>) -> Face {
|
||||
num_s: 0,
|
||||
num_t: 0,
|
||||
tex_coords1: None,
|
||||
texture_face: PrimitiveTextureEntryFace,
|
||||
texture_face: PrimitiveTextureEntryFace::default(),
|
||||
user_data: Object::from(""),
|
||||
vertices,
|
||||
weights,
|
||||
|
||||
@@ -1166,6 +1166,7 @@ pub(crate) fn primitive_defaults() -> Primitive {
|
||||
},
|
||||
textures: None,
|
||||
tree_species: crate::Tree::Pine1,
|
||||
unknown_extra_params: Vec::new(),
|
||||
velocity: libremetaverse_types::Vector3::zero(),
|
||||
}
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -43,6 +43,7 @@ mod message_codec;
|
||||
mod message_decoder;
|
||||
mod network_manager;
|
||||
mod object_material;
|
||||
mod object_model;
|
||||
#[rustfmt::skip]
|
||||
pub mod packet_catalog;
|
||||
mod packet_wire;
|
||||
|
||||
3408
crates/libremetaverse/src/object_model.rs
Normal file
3408
crates/libremetaverse/src/object_model.rs
Normal file
File diff suppressed because it is too large
Load Diff
@@ -23352,12 +23352,6 @@ pub(crate) fn new_avatar() -> Result<crate::Avatar, crate::Error> {
|
||||
visual_parameters: Vec::new(),
|
||||
})
|
||||
}
|
||||
pub(crate) fn new_texture_entry_face() -> Result<
|
||||
crate::PrimitiveTextureEntryFace,
|
||||
crate::Error,
|
||||
> {
|
||||
Ok(crate::PrimitiveTextureEntryFace)
|
||||
}
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
|
||||
@@ -29,14 +29,6 @@ fn each_wire_data_domain_is_callable_and_failure_only() {
|
||||
member_id(AssetTexture::new_with_constructor()),
|
||||
"M:LibreMetaverse.Assets.AssetTexture.#ctor"
|
||||
);
|
||||
assert_eq!(
|
||||
member_id(Primitive::new_with_constructor()),
|
||||
"M:LibreMetaverse.Primitive.#ctor"
|
||||
);
|
||||
assert_eq!(
|
||||
member_id(LegacyMaterial::new_with_constructor()),
|
||||
"M:LibreMetaverse.Materials.LegacyMaterial.#ctor"
|
||||
);
|
||||
assert_eq!(
|
||||
member_id(GltfDocument::new()),
|
||||
"M:LibreMetaverse.Assets.Gltf.GltfDocument.#ctor"
|
||||
@@ -58,6 +50,22 @@ fn each_wire_data_domain_is_callable_and_failure_only() {
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn object_model_domains_are_native() {
|
||||
assert_eq!(
|
||||
Primitive::new_with_constructor()
|
||||
.expect("native primitive constructor")
|
||||
.local_id,
|
||||
0
|
||||
);
|
||||
assert_eq!(
|
||||
LegacyMaterial::new_with_constructor()
|
||||
.expect("native legacy material constructor")
|
||||
.id(),
|
||||
libremetaverse_types::UUID::zero()
|
||||
);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn wire_widths_flags_and_constants_match_the_catalog() {
|
||||
assert_eq!(PacketFrequency::High as u8, 2);
|
||||
|
||||
@@ -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 = ¶ms[&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
|
||||
|
||||
@@ -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)":
|
||||
|
||||
@@ -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::",
|
||||
|
||||
Reference in New Issue
Block a user