Generate wire and data model API shims

This commit is contained in:
2026-08-08 12:18:28 +02:00
parent e2889d758d
commit 7086af9a6f
13 changed files with 153952 additions and 9018 deletions

View File

@@ -7,8 +7,9 @@ host, bind to, invoke, or ship the .NET implementation. The current
stage is a compiling structural shell: crate boundaries mirror the .NET library
projects, public C# type names have Rust declarations, every upstream NUnit case
has a traceable placeholder, and every sample/tool project has a Rust binary
target. Types, StructuredData, Imaging, PrimMesher, and both rendering adapters
now have complete callable, failure-only signatures; the remaining assembly
target. Types, StructuredData, Imaging, PrimMesher, both rendering adapters, and
the main assembly's packet/message/asset/primitive wire-data slice now have
complete callable, failure-only signatures; the remaining manager/extension
slices and semantic Rust test translations are still required before the public
API shim is complete.

View File

@@ -51,16 +51,17 @@ The current workspace is a structural baseline, not a working client:
- compiled metadata records 3,066 public types and 30,789 public members with
matching independent ECMA-335 counts, with all 142 external signature types
resolved to cross-platform Rust or project-owned boundary types;
- the completed Types, StructuredData, Imaging, PrimMesher, and rendering slices
expose 84 final Rust-facing types and all 1,487 callable members with real
fields/constants/enum values and standardized failing bodies;
- the completed Types, StructuredData, Imaging, PrimMesher, rendering, and main
wire/data slices expose 2,293 final Rust-facing types and all 24,292 callable
members with real fields/constants/enum values and standardized failing
bodies;
- all 1,295 NUnit `[Test]`/`[TestCase]` invocations have compiling Rust test
entries that intentionally panic with their source identity and body hash;
- all nine sample/tool projects have compiling Rust binary targets;
- the 128 TestClient command source files are retained as a command inventory.
The remaining generated type shims preserve names and module placement, but do
not yet expose their callable members. `api/SURFACE.tsv` is an inventory aid,
The remaining 773 generated type shims preserve names and module placement, but
do not yet expose their 6,497 callable members. `api/SURFACE.tsv` is an inventory aid,
not proof of API coverage: it records declaration lines but does not fully parse
multiline signatures. Likewise, a generated `pending` test is a parity
placeholder, not a semantic translation. **This repository is therefore at

View File

@@ -48,7 +48,7 @@ External member APIs are not copied. Each signature type resolves to Rust core/s
- Delegates and flags enums: **40 / 46**
- Optional/ref/out/in parameters: **470 / 6,144 / 555 / 0**
- Async Rust signatures: **360**
- Descriptively renamed overloads: **7,137**
- Descriptively renamed overloads: **7,151**
- Explicit CLR delegate APM differences: **80**
Run `python3 tools/generate_rust_mapping.py --check` to regenerate in memory and enforce the complete gate.

View File

@@ -581,15 +581,15 @@ F:LibreMetaverse.AssetUpload.AssetID field LibreMetaverse.UUID LibreMetaverse.As
F:LibreMetaverse.AssetUpload.PacketNum field System.UInt32 LibreMetaverse.AssetUpload.PacketNum libremetaverse libremetaverse::AssetUpload::packet_num pub packet_num: u32 owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.AssetUpload.Type field LibreMetaverse.AssetType LibreMetaverse.AssetUpload.Type libremetaverse libremetaverse::AssetUpload::type_ pub type_: libremetaverse_types::AssetType owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.AssetUpload.XferID field System.UInt64 LibreMetaverse.AssetUpload.XferID libremetaverse libremetaverse::AssetUpload::xfer_id pub xfer_id: u64 owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.ASSETS_PATH constant System.String LibreMetaverse.Assets.ArchiveConstants.ASSETS_PATH libremetaverse assets libremetaverse::assets::ArchiveConstants::ASSETS_PATH pub const ASSETS_PATH: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.ASSET_EXTENSION_SEPARATOR constant System.String LibreMetaverse.Assets.ArchiveConstants.ASSET_EXTENSION_SEPARATOR libremetaverse assets libremetaverse::assets::ArchiveConstants::ASSET_EXTENSION_SEPARATOR pub const ASSET_EXTENSION_SEPARATOR: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.ASSETS_PATH constant System.String LibreMetaverse.Assets.ArchiveConstants.ASSETS_PATH libremetaverse assets libremetaverse::assets::ArchiveConstants::ASSETS_PATH pub const ASSETS_PATH: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.ASSET_EXTENSION_SEPARATOR constant System.String LibreMetaverse.Assets.ArchiveConstants.ASSET_EXTENSION_SEPARATOR libremetaverse assets libremetaverse::assets::ArchiveConstants::ASSET_EXTENSION_SEPARATOR pub const ASSET_EXTENSION_SEPARATOR: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.ASSET_TYPE_TO_EXTENSION field System.Collections.Frozen.FrozenDictionary<LibreMetaverse.AssetType, System.String> LibreMetaverse.Assets.ArchiveConstants.ASSET_TYPE_TO_EXTENSION libremetaverse assets libremetaverse::assets::ArchiveConstants::asset_type_to_extension pub fn asset_type_to_extension() -> libremetaverse_types::compat::FrozenDictionary<libremetaverse_types::AssetType, String> none sync infallible_placeholder direct_snake_case static_field_accessor mapped
F:LibreMetaverse.Assets.ArchiveConstants.CONTROL_FILE_PATH constant System.String LibreMetaverse.Assets.ArchiveConstants.CONTROL_FILE_PATH libremetaverse assets libremetaverse::assets::ArchiveConstants::CONTROL_FILE_PATH pub const CONTROL_FILE_PATH: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.CONTROL_FILE_PATH constant System.String LibreMetaverse.Assets.ArchiveConstants.CONTROL_FILE_PATH libremetaverse assets libremetaverse::assets::ArchiveConstants::CONTROL_FILE_PATH pub const CONTROL_FILE_PATH: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.EXTENSION_TO_ASSET_TYPE field System.Collections.Frozen.FrozenDictionary<System.String, LibreMetaverse.AssetType> LibreMetaverse.Assets.ArchiveConstants.EXTENSION_TO_ASSET_TYPE libremetaverse assets libremetaverse::assets::ArchiveConstants::extension_to_asset_type pub fn extension_to_asset_type() -> libremetaverse_types::compat::FrozenDictionary<String, libremetaverse_types::AssetType> none sync infallible_placeholder direct_snake_case static_field_accessor mapped
F:LibreMetaverse.Assets.ArchiveConstants.LANDDATA_PATH constant System.String LibreMetaverse.Assets.ArchiveConstants.LANDDATA_PATH libremetaverse assets libremetaverse::assets::ArchiveConstants::LANDDATA_PATH pub const LANDDATA_PATH: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.OBJECTS_PATH constant System.String LibreMetaverse.Assets.ArchiveConstants.OBJECTS_PATH libremetaverse assets libremetaverse::assets::ArchiveConstants::OBJECTS_PATH pub const OBJECTS_PATH: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.SETTINGS_PATH constant System.String LibreMetaverse.Assets.ArchiveConstants.SETTINGS_PATH libremetaverse assets libremetaverse::assets::ArchiveConstants::SETTINGS_PATH pub const SETTINGS_PATH: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.TERRAINS_PATH constant System.String LibreMetaverse.Assets.ArchiveConstants.TERRAINS_PATH libremetaverse assets libremetaverse::assets::ArchiveConstants::TERRAINS_PATH pub const TERRAINS_PATH: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.LANDDATA_PATH constant System.String LibreMetaverse.Assets.ArchiveConstants.LANDDATA_PATH libremetaverse assets libremetaverse::assets::ArchiveConstants::LANDDATA_PATH pub const LANDDATA_PATH: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.OBJECTS_PATH constant System.String LibreMetaverse.Assets.ArchiveConstants.OBJECTS_PATH libremetaverse assets libremetaverse::assets::ArchiveConstants::OBJECTS_PATH pub const OBJECTS_PATH: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.SETTINGS_PATH constant System.String LibreMetaverse.Assets.ArchiveConstants.SETTINGS_PATH libremetaverse assets libremetaverse::assets::ArchiveConstants::SETTINGS_PATH pub const SETTINGS_PATH: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.ArchiveConstants.TERRAINS_PATH constant System.String LibreMetaverse.Assets.ArchiveConstants.TERRAINS_PATH libremetaverse assets libremetaverse::assets::ArchiveConstants::TERRAINS_PATH pub const TERRAINS_PATH: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Asset.AssetData field System.Byte[] LibreMetaverse.Assets.Asset.AssetData libremetaverse assets libremetaverse::assets::Asset::asset_data pub asset_data: Vec<u8> owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Asset.Temporary field System.Boolean LibreMetaverse.Assets.Asset.Temporary libremetaverse assets libremetaverse::assets::Asset::temporary pub temporary: bool owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.AssetCallingCard.AvatarID field LibreMetaverse.UUID LibreMetaverse.Assets.AssetCallingCard.AvatarID libremetaverse assets libremetaverse::assets::AssetCallingCard::avatar_id pub avatar_id: libremetaverse_types::UUID owned_value sync none direct_snake_case direct mapped
@@ -664,14 +664,14 @@ F:LibreMetaverse.Assets.Gltf.GltfComponentType.Short enum_value LibreMetaverse.A
F:LibreMetaverse.Assets.Gltf.GltfComponentType.UnsignedByte enum_value LibreMetaverse.Assets.Gltf.GltfComponentType LibreMetaverse.Assets.Gltf.GltfComponentType.UnsignedByte libremetaverse assets::gltf libremetaverse::assets::gltf::GltfComponentType::UnsignedByte UnsignedByte: libremetaverse::assets::gltf::GltfComponentType owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfComponentType.UnsignedInt enum_value LibreMetaverse.Assets.Gltf.GltfComponentType LibreMetaverse.Assets.Gltf.GltfComponentType.UnsignedInt libremetaverse assets::gltf libremetaverse::assets::gltf::GltfComponentType::UnsignedInt UnsignedInt: libremetaverse::assets::gltf::GltfComponentType owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfComponentType.UnsignedShort enum_value LibreMetaverse.Assets.Gltf.GltfComponentType LibreMetaverse.Assets.Gltf.GltfComponentType.UnsignedShort libremetaverse assets::gltf libremetaverse::assets::gltf::GltfComponentType::UnsignedShort UnsignedShort: libremetaverse::assets::gltf::GltfComponentType owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_COLOR_0 constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_COLOR_0 libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_COLOR_0 pub const ATTR_COLOR_0: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_JOINTS_0 constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_JOINTS_0 libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_JOINTS_0 pub const ATTR_JOINTS_0: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_NORMAL constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_NORMAL libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_NORMAL pub const ATTR_NORMAL: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_POSITION constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_POSITION libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_POSITION pub const ATTR_POSITION: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_TANGENT constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_TANGENT libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_TANGENT pub const ATTR_TANGENT: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_TEXCOORD_0 constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_TEXCOORD_0 libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_TEXCOORD_0 pub const ATTR_TEXCOORD_0: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_TEXCOORD_1 constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_TEXCOORD_1 libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_TEXCOORD_1 pub const ATTR_TEXCOORD_1: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_WEIGHTS_0 constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_WEIGHTS_0 libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_WEIGHTS_0 pub const ATTR_WEIGHTS_0: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_COLOR_0 constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_COLOR_0 libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_COLOR_0 pub const ATTR_COLOR_0: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_JOINTS_0 constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_JOINTS_0 libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_JOINTS_0 pub const ATTR_JOINTS_0: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_NORMAL constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_NORMAL libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_NORMAL pub const ATTR_NORMAL: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_POSITION constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_POSITION libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_POSITION pub const ATTR_POSITION: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_TANGENT constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_TANGENT libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_TANGENT pub const ATTR_TANGENT: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_TEXCOORD_0 constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_TEXCOORD_0 libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_TEXCOORD_0 pub const ATTR_TEXCOORD_0: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_TEXCOORD_1 constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_TEXCOORD_1 libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_TEXCOORD_1 pub const ATTR_TEXCOORD_1: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_WEIGHTS_0 constant System.String LibreMetaverse.Assets.Gltf.GltfPrimitive.ATTR_WEIGHTS_0 libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitive::ATTR_WEIGHTS_0 pub const ATTR_WEIGHTS_0: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitiveMode.LineLoop enum_value LibreMetaverse.Assets.Gltf.GltfPrimitiveMode LibreMetaverse.Assets.Gltf.GltfPrimitiveMode.LineLoop libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitiveMode::LineLoop LineLoop: libremetaverse::assets::gltf::GltfPrimitiveMode owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitiveMode.LineStrip enum_value LibreMetaverse.Assets.Gltf.GltfPrimitiveMode LibreMetaverse.Assets.Gltf.GltfPrimitiveMode.LineStrip libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitiveMode::LineStrip LineStrip: libremetaverse::assets::gltf::GltfPrimitiveMode owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Assets.Gltf.GltfPrimitiveMode.Lines enum_value LibreMetaverse.Assets.Gltf.GltfPrimitiveMode LibreMetaverse.Assets.Gltf.GltfPrimitiveMode.Lines libremetaverse assets::gltf libremetaverse::assets::gltf::GltfPrimitiveMode::Lines Lines: libremetaverse::assets::gltf::GltfPrimitiveMode owned_value sync none direct_snake_case direct mapped
@@ -1649,9 +1649,9 @@ F:LibreMetaverse.Http.EventQueueClient.OnEvent field LibreMetaverse.Http.EventQu
F:LibreMetaverse.HttpCapsClient.HDR_LLSD_BINARY field System.Net.Http.Headers.MediaTypeHeaderValue LibreMetaverse.HttpCapsClient.HDR_LLSD_BINARY libremetaverse libremetaverse::HttpCapsClient::hdr_llsd_binary pub fn hdr_llsd_binary() -> libremetaverse_types::compat::MediaTypeHeaderValue none sync infallible_placeholder direct_snake_case static_field_accessor mapped
F:LibreMetaverse.HttpCapsClient.HDR_LLSD_JSON field System.Net.Http.Headers.MediaTypeHeaderValue LibreMetaverse.HttpCapsClient.HDR_LLSD_JSON libremetaverse libremetaverse::HttpCapsClient::hdr_llsd_json pub fn hdr_llsd_json() -> libremetaverse_types::compat::MediaTypeHeaderValue none sync infallible_placeholder direct_snake_case static_field_accessor mapped
F:LibreMetaverse.HttpCapsClient.HDR_LLSD_XML field System.Net.Http.Headers.MediaTypeHeaderValue LibreMetaverse.HttpCapsClient.HDR_LLSD_XML libremetaverse libremetaverse::HttpCapsClient::hdr_llsd_xml pub fn hdr_llsd_xml() -> libremetaverse_types::compat::MediaTypeHeaderValue none sync infallible_placeholder direct_snake_case static_field_accessor mapped
F:LibreMetaverse.HttpCapsClient.LLSD_BINARY constant System.String LibreMetaverse.HttpCapsClient.LLSD_BINARY libremetaverse libremetaverse::HttpCapsClient::LLSD_BINARY pub const LLSD_BINARY: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.HttpCapsClient.LLSD_JSON constant System.String LibreMetaverse.HttpCapsClient.LLSD_JSON libremetaverse libremetaverse::HttpCapsClient::LLSD_JSON pub const LLSD_JSON: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.HttpCapsClient.LLSD_XML constant System.String LibreMetaverse.HttpCapsClient.LLSD_XML libremetaverse libremetaverse::HttpCapsClient::LLSD_XML pub const LLSD_XML: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.HttpCapsClient.LLSD_BINARY constant System.String LibreMetaverse.HttpCapsClient.LLSD_BINARY libremetaverse libremetaverse::HttpCapsClient::LLSD_BINARY pub const LLSD_BINARY: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.HttpCapsClient.LLSD_JSON constant System.String LibreMetaverse.HttpCapsClient.LLSD_JSON libremetaverse libremetaverse::HttpCapsClient::LLSD_JSON pub const LLSD_JSON: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.HttpCapsClient.LLSD_XML constant System.String LibreMetaverse.HttpCapsClient.LLSD_XML libremetaverse libremetaverse::HttpCapsClient::LLSD_XML pub const LLSD_XML: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.ImageCodec.BMP enum_value LibreMetaverse.ImageCodec LibreMetaverse.ImageCodec.BMP libremetaverse libremetaverse::ImageCodec::BMP BMP: libremetaverse::ImageCodec owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.ImageCodec.DXT enum_value LibreMetaverse.ImageCodec LibreMetaverse.ImageCodec.DXT libremetaverse libremetaverse::ImageCodec::DXT DXT: libremetaverse::ImageCodec owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.ImageCodec.Invalid enum_value LibreMetaverse.ImageCodec LibreMetaverse.ImageCodec.Invalid libremetaverse libremetaverse::ImageCodec::Invalid Invalid: libremetaverse::ImageCodec owned_value sync none direct_snake_case direct mapped
@@ -2775,8 +2775,8 @@ F:LibreMetaverse.InstantMessageDialog.TaskInventoryDeclined enum_value LibreMeta
F:LibreMetaverse.InstantMessageDialog.TaskInventoryOffered enum_value LibreMetaverse.InstantMessageDialog LibreMetaverse.InstantMessageDialog.TaskInventoryOffered libremetaverse libremetaverse::InstantMessageDialog::TaskInventoryOffered TaskInventoryOffered: libremetaverse::InstantMessageDialog owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.InstantMessageOnline.Offline enum_value LibreMetaverse.InstantMessageOnline LibreMetaverse.InstantMessageOnline.Offline libremetaverse libremetaverse::InstantMessageOnline::Offline Offline: libremetaverse::InstantMessageOnline owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.InstantMessageOnline.Online enum_value LibreMetaverse.InstantMessageOnline LibreMetaverse.InstantMessageOnline.Online libremetaverse libremetaverse::InstantMessageOnline::Online Online: libremetaverse::InstantMessageOnline owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.InventoryAISClient.INVENTORY_CAP_NAME constant System.String LibreMetaverse.InventoryAISClient.INVENTORY_CAP_NAME libremetaverse libremetaverse::InventoryAISClient::INVENTORY_CAP_NAME pub const INVENTORY_CAP_NAME: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.InventoryAISClient.LIBRARY_CAP_NAME constant System.String LibreMetaverse.InventoryAISClient.LIBRARY_CAP_NAME libremetaverse libremetaverse::InventoryAISClient::LIBRARY_CAP_NAME pub const LIBRARY_CAP_NAME: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.InventoryAISClient.INVENTORY_CAP_NAME constant System.String LibreMetaverse.InventoryAISClient.INVENTORY_CAP_NAME libremetaverse libremetaverse::InventoryAISClient::INVENTORY_CAP_NAME pub const INVENTORY_CAP_NAME: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.InventoryAISClient.LIBRARY_CAP_NAME constant System.String LibreMetaverse.InventoryAISClient.LIBRARY_CAP_NAME libremetaverse libremetaverse::InventoryAISClient::LIBRARY_CAP_NAME pub const LIBRARY_CAP_NAME: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.InventoryFolder.VERSION_UNKNOWN constant System.Int32 LibreMetaverse.InventoryFolder.VERSION_UNKNOWN libremetaverse libremetaverse::InventoryFolder::VERSION_UNKNOWN pub const VERSION_UNKNOWN: i32 owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.InventoryItemFlags.None enum_value LibreMetaverse.InventoryItemFlags LibreMetaverse.InventoryItemFlags.None libremetaverse libremetaverse::InventoryItemFlags::NONE NONE: libremetaverse::InventoryItemFlags owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.InventoryItemFlags.ObjectHasMultipleItems enum_value LibreMetaverse.InventoryItemFlags LibreMetaverse.InventoryItemFlags.ObjectHasMultipleItems libremetaverse libremetaverse::InventoryItemFlags::OBJECT_HAS_MULTIPLE_ITEMS OBJECT_HAS_MULTIPLE_ITEMS: libremetaverse::InventoryItemFlags owned_value sync none direct_snake_case direct mapped
@@ -9190,8 +9190,8 @@ F:LibreMetaverse.RLV.RlvRestrictionType.Unsit enum_value LibreMetaverse.RLV.RlvR
F:LibreMetaverse.RLV.RlvRestrictionType.ViewNote enum_value LibreMetaverse.RLV.RlvRestrictionType LibreMetaverse.RLV.RlvRestrictionType.ViewNote libremetaverse-rlv libremetaverse_rlv::RlvRestrictionType::ViewNote ViewNote: libremetaverse_rlv::RlvRestrictionType owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.RLV.RlvRestrictionType.ViewScript enum_value LibreMetaverse.RLV.RlvRestrictionType LibreMetaverse.RLV.RlvRestrictionType.ViewScript libremetaverse-rlv libremetaverse_rlv::RlvRestrictionType::ViewScript ViewScript: libremetaverse_rlv::RlvRestrictionType owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.RLV.RlvRestrictionType.ViewTexture enum_value LibreMetaverse.RLV.RlvRestrictionType LibreMetaverse.RLV.RlvRestrictionType.ViewTexture libremetaverse-rlv libremetaverse_rlv::RlvRestrictionType::ViewTexture ViewTexture: libremetaverse_rlv::RlvRestrictionType owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.RLV.RlvService.RLVVersion constant System.String LibreMetaverse.RLV.RlvService.RLVVersion libremetaverse-rlv libremetaverse_rlv::RlvService::RLV_VERSION pub const RLV_VERSION: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.RLV.RlvService.RLVVersionNum constant System.String LibreMetaverse.RLV.RlvService.RLVVersionNum libremetaverse-rlv libremetaverse_rlv::RlvService::RLV_VERSION_NUM pub const RLV_VERSION_NUM: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.RLV.RlvService.RLVVersion constant System.String LibreMetaverse.RLV.RlvService.RLVVersion libremetaverse-rlv libremetaverse_rlv::RlvService::RLV_VERSION pub const RLV_VERSION: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.RLV.RlvService.RLVVersionNum constant System.String LibreMetaverse.RLV.RlvService.RLVVersionNum libremetaverse-rlv libremetaverse_rlv::RlvService::RLV_VERSION_NUM pub const RLV_VERSION_NUM: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.RLV.RlvWearableType.Alpha enum_value LibreMetaverse.RLV.RlvWearableType LibreMetaverse.RLV.RlvWearableType.Alpha libremetaverse-rlv libremetaverse_rlv::RlvWearableType::Alpha Alpha: libremetaverse_rlv::RlvWearableType owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.RLV.RlvWearableType.Eyes enum_value LibreMetaverse.RLV.RlvWearableType LibreMetaverse.RLV.RlvWearableType.Eyes libremetaverse-rlv libremetaverse_rlv::RlvWearableType::Eyes Eyes: libremetaverse_rlv::RlvWearableType owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.RLV.RlvWearableType.Gloves enum_value LibreMetaverse.RLV.RlvWearableType LibreMetaverse.RLV.RlvWearableType.Gloves libremetaverse-rlv libremetaverse_rlv::RlvWearableType::Gloves Gloves: libremetaverse_rlv::RlvWearableType owned_value sync none direct_snake_case direct mapped
@@ -9433,8 +9433,8 @@ F:LibreMetaverse.SculptType.None enum_value LibreMetaverse.SculptType LibreMetav
F:LibreMetaverse.SculptType.Plane enum_value LibreMetaverse.SculptType LibreMetaverse.SculptType.Plane libremetaverse-types libremetaverse_types::SculptType::Plane Plane: libremetaverse_types::SculptType owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.SculptType.Sphere enum_value LibreMetaverse.SculptType LibreMetaverse.SculptType.Sphere libremetaverse-types libremetaverse_types::SculptType::Sphere Sphere: libremetaverse_types::SculptType owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.SculptType.Torus enum_value LibreMetaverse.SculptType LibreMetaverse.SculptType.Torus libremetaverse-types libremetaverse_types::SculptType::Torus Torus: libremetaverse_types::SculptType owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Settings.AditiLoginServer constant System.String LibreMetaverse.Settings.AditiLoginServer libremetaverse libremetaverse::Settings::ADITI_LOGIN_SERVER pub const ADITI_LOGIN_SERVER: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Settings.AgniLoginServer constant System.String LibreMetaverse.Settings.AgniLoginServer libremetaverse libremetaverse::Settings::AGNI_LOGIN_SERVER pub const AGNI_LOGIN_SERVER: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Settings.AditiLoginServer constant System.String LibreMetaverse.Settings.AditiLoginServer libremetaverse libremetaverse::Settings::ADITI_LOGIN_SERVER pub const ADITI_LOGIN_SERVER: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Settings.AgniLoginServer constant System.String LibreMetaverse.Settings.AgniLoginServer libremetaverse libremetaverse::Settings::AGNI_LOGIN_SERVER pub const AGNI_LOGIN_SERVER: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Settings.BindAddress field System.Net.IPAddress LibreMetaverse.Settings.BindAddress libremetaverse libremetaverse::Settings::bind_address pub fn bind_address() -> std::net::IpAddr none sync infallible_placeholder direct_snake_case static_field_accessor mapped
F:LibreMetaverse.Settings.DefaultEffectColor field LibreMetaverse.Color4 LibreMetaverse.Settings.DefaultEffectColor libremetaverse libremetaverse::Settings::default_effect_color pub default_effect_color: libremetaverse_types::Color4 owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Settings.EnableInventoryStore constant System.Boolean LibreMetaverse.Settings.EnableInventoryStore libremetaverse libremetaverse::Settings::ENABLE_INVENTORY_STORE pub const ENABLE_INVENTORY_STORE: bool owned_value sync none direct_snake_case direct mapped
@@ -10099,13 +10099,13 @@ F:LibreMetaverse.Voice.Vivox.VoiceGateway.VoiceResponseResults.StatusString fiel
F:LibreMetaverse.Voice.Vivox.VoiceGateway.VoiceResponseResults.VersionID field System.String LibreMetaverse.Voice.Vivox.VoiceGateway.VoiceResponseResults.VersionID libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceGatewayVoiceResponseResults::version_id pub version_id: Option<String> owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceGateway.VoiceSessionEventArgs.SessionHandle field System.String LibreMetaverse.Voice.Vivox.VoiceGateway.VoiceSessionEventArgs.SessionHandle libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceGatewayVoiceSessionEventArgs::session_handle pub session_handle: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.BlockingTimeout field System.Int32 LibreMetaverse.Voice.Vivox.VoiceManager.BlockingTimeout libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::blocking_timeout pub blocking_timeout: i32 owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.DAEMON_ARGS constant System.String LibreMetaverse.Voice.Vivox.VoiceManager.DAEMON_ARGS libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::DAEMON_ARGS pub const DAEMON_ARGS: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.DAEMON_ARGS constant System.String LibreMetaverse.Voice.Vivox.VoiceManager.DAEMON_ARGS libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::DAEMON_ARGS pub const DAEMON_ARGS: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.DAEMON_LOG_LEVEL constant System.Int32 LibreMetaverse.Voice.Vivox.VoiceManager.DAEMON_LOG_LEVEL libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::DAEMON_LOG_LEVEL pub const DAEMON_LOG_LEVEL: i32 owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.DAEMON_PORT constant System.Int32 LibreMetaverse.Voice.Vivox.VoiceManager.DAEMON_PORT libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::DAEMON_PORT pub const DAEMON_PORT: i32 owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.REQUEST_TERMINATOR constant System.String LibreMetaverse.Voice.Vivox.VoiceManager.REQUEST_TERMINATOR libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::REQUEST_TERMINATOR pub const REQUEST_TERMINATOR: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.VOICE_DEBUG_SERVER constant System.String LibreMetaverse.Voice.Vivox.VoiceManager.VOICE_DEBUG_SERVER libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::VOICE_DEBUG_SERVER pub const VOICE_DEBUG_SERVER: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.REQUEST_TERMINATOR constant System.String LibreMetaverse.Voice.Vivox.VoiceManager.REQUEST_TERMINATOR libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::REQUEST_TERMINATOR pub const REQUEST_TERMINATOR: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.VOICE_DEBUG_SERVER constant System.String LibreMetaverse.Voice.Vivox.VoiceManager.VOICE_DEBUG_SERVER libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::VOICE_DEBUG_SERVER pub const VOICE_DEBUG_SERVER: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.VOICE_MAJOR_VERSION constant System.Int32 LibreMetaverse.Voice.Vivox.VoiceManager.VOICE_MAJOR_VERSION libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::VOICE_MAJOR_VERSION pub const VOICE_MAJOR_VERSION: i32 owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.VOICE_RELEASE_SERVER constant System.String LibreMetaverse.Voice.Vivox.VoiceManager.VOICE_RELEASE_SERVER libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::VOICE_RELEASE_SERVER pub const VOICE_RELEASE_SERVER: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.VOICE_RELEASE_SERVER constant System.String LibreMetaverse.Voice.Vivox.VoiceManager.VOICE_RELEASE_SERVER libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::VOICE_RELEASE_SERVER pub const VOICE_RELEASE_SERVER: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoiceManager.VoiceServer field System.String LibreMetaverse.Voice.Vivox.VoiceManager.VoiceServer libremetaverse-voice-vivox libremetaverse_voice_vivox::VoiceManager::voice_server pub voice_server: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoicePosition.AtOrientation field LibreMetaverse.Vector3d LibreMetaverse.Voice.Vivox.VoicePosition.AtOrientation libremetaverse-voice-vivox libremetaverse_voice_vivox::VoicePosition::at_orientation pub at_orientation: libremetaverse_types::Vector3d owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.Vivox.VoicePosition.LeftOrientation field LibreMetaverse.Vector3d LibreMetaverse.Voice.Vivox.VoicePosition.LeftOrientation libremetaverse-voice-vivox libremetaverse_voice_vivox::VoicePosition::left_orientation pub left_orientation: libremetaverse_types::Vector3d owned_value sync none direct_snake_case direct mapped
@@ -10137,8 +10137,8 @@ F:LibreMetaverse.Voice.WebRTC.VoiceSession.Int4.W field System.Int32 LibreMetave
F:LibreMetaverse.Voice.WebRTC.VoiceSession.Int4.X field System.Int32 LibreMetaverse.Voice.WebRTC.VoiceSession.Int4.X libremetaverse-voice-webrtc libremetaverse_voice_webrtc::VoiceSessionInt4::x pub x: i32 owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.WebRTC.VoiceSession.Int4.Y field System.Int32 LibreMetaverse.Voice.WebRTC.VoiceSession.Int4.Y libremetaverse-voice-webrtc libremetaverse_voice_webrtc::VoiceSessionInt4::y pub y: i32 owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.WebRTC.VoiceSession.Int4.Z field System.Int32 LibreMetaverse.Voice.WebRTC.VoiceSession.Int4.Z libremetaverse-voice-webrtc libremetaverse_voice_webrtc::VoiceSessionInt4::z pub z: i32 owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.WebRTC.VoiceSession.PROVISION_VOICE_ACCOUNT_CAP constant System.String LibreMetaverse.Voice.WebRTC.VoiceSession.PROVISION_VOICE_ACCOUNT_CAP libremetaverse-voice-webrtc libremetaverse_voice_webrtc::VoiceSession::PROVISION_VOICE_ACCOUNT_CAP pub const PROVISION_VOICE_ACCOUNT_CAP: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.WebRTC.VoiceSession.VOICE_SIGNALING_CAP constant System.String LibreMetaverse.Voice.WebRTC.VoiceSession.VOICE_SIGNALING_CAP libremetaverse-voice-webrtc libremetaverse_voice_webrtc::VoiceSession::VOICE_SIGNALING_CAP pub const VOICE_SIGNALING_CAP: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.WebRTC.VoiceSession.PROVISION_VOICE_ACCOUNT_CAP constant System.String LibreMetaverse.Voice.WebRTC.VoiceSession.PROVISION_VOICE_ACCOUNT_CAP libremetaverse-voice-webrtc libremetaverse_voice_webrtc::VoiceSession::PROVISION_VOICE_ACCOUNT_CAP pub const PROVISION_VOICE_ACCOUNT_CAP: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.Voice.WebRTC.VoiceSession.VOICE_SIGNALING_CAP constant System.String LibreMetaverse.Voice.WebRTC.VoiceSession.VOICE_SIGNALING_CAP libremetaverse-voice-webrtc libremetaverse_voice_webrtc::VoiceSession::VOICE_SIGNALING_CAP pub const VOICE_SIGNALING_CAP: &'static str owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.VolumeMorphInfo.BoneName field System.String LibreMetaverse.VolumeMorphInfo.BoneName libremetaverse libremetaverse::VolumeMorphInfo::bone_name pub bone_name: String owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.VolumeMorphInfo.HasPosition field System.Boolean LibreMetaverse.VolumeMorphInfo.HasPosition libremetaverse libremetaverse::VolumeMorphInfo::has_position pub has_position: bool owned_value sync none direct_snake_case direct mapped
F:LibreMetaverse.VolumeMorphInfo.HasScale field System.Boolean LibreMetaverse.VolumeMorphInfo.HasScale libremetaverse libremetaverse::VolumeMorphInfo::has_scale pub has_scale: bool owned_value sync none direct_snake_case direct mapped
@@ -10312,13 +10312,13 @@ M:LibreMetaverse.AgentManager.SendTeleportLureRequest(LibreMetaverse.UUID) metho
M:LibreMetaverse.AgentManager.SendTeleportLureRequest(LibreMetaverse.UUID,LibreMetaverse.UUID,System.String) method System.Void LibreMetaverse.AgentManager.SendTeleportLureRequest(LibreMetaverse.UUID targetID, LibreMetaverse.UUID sessionID, System.String message) libremetaverse libremetaverse::AgentManager::send_teleport_lure_request_with_uuid_uuid_string pub fn send_teleport_lure_request_with_uuid_uuid_string(&self, target_id: libremetaverse_types::UUID, session_id: libremetaverse_types::UUID, message: String) -> Result<(), crate::Error> shared_self,owned,owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.AgentManager.SendTeleportLureRequest(LibreMetaverse.UUID,System.String) method System.Void LibreMetaverse.AgentManager.SendTeleportLureRequest(LibreMetaverse.UUID targetID, System.String message) libremetaverse libremetaverse::AgentManager::send_teleport_lure_request_with_uuid_string pub fn send_teleport_lure_request_with_uuid_string(&self, target_id: libremetaverse_types::UUID, message: String) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.AgentManager.SendViewerStatsAsync(LibreMetaverse.Messages.Linden.ViewerStatsMessage,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.AgentManager.SendViewerStatsAsync(LibreMetaverse.Messages.Linden.ViewerStatsMessage stats, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::AgentManager::send_viewer_stats pub async fn send_viewer_stats(&self, stats: libremetaverse::messages::linden::ViewerStatsMessage, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<(), crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AgentManager.SetAgentAccessAsync(System.String,System.Threading.CancellationToken) method System.Threading.Tasks.Task<LibreMetaverse.AgentAccessEventArgs> LibreMetaverse.AgentManager.SetAgentAccessAsync(System.String access, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::AgentManager::set_agent_access pub async fn set_agent_access(&self, access: String, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<libremetaverse::AgentAccessEventArgs, crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AgentManager.SetAgentAccessAsync(System.String,System.Threading.CancellationToken) method System.Threading.Tasks.Task<LibreMetaverse.AgentAccessEventArgs> LibreMetaverse.AgentManager.SetAgentAccessAsync(System.String access, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::AgentManager::set_agent_access_with_string_cancellation_token pub async fn set_agent_access_with_string_cancellation_token(&self, access: String, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<libremetaverse::AgentAccessEventArgs, crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.AgentManager.SetDisplayNameAsync(System.String,System.String,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.AgentManager.SetDisplayNameAsync(System.String oldName, System.String newName, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::AgentManager::set_display_name pub async fn set_display_name(&self, old_name: String, new_name: String, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<(), crate::Error> shared_self,owned,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AgentManager.SetExperiencePermissionAsync(LibreMetaverse.UUID,System.String,System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.Boolean> LibreMetaverse.AgentManager.SetExperiencePermissionAsync(LibreMetaverse.UUID experienceId, System.String permission, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::AgentManager::set_experience_permission pub async fn set_experience_permission(&self, experience_id: libremetaverse_types::UUID, permission: String, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<bool, crate::Error> shared_self,owned,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AgentManager.SetExperiencePreferencesAsync(LibreMetaverse.Messages.Linden.ExperiencePreferencesMessage,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.AgentManager.SetExperiencePreferencesAsync(LibreMetaverse.Messages.Linden.ExperiencePreferencesMessage preferences, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::AgentManager::set_experience_preferences pub async fn set_experience_preferences(&self, preferences: libremetaverse::messages::linden::ExperiencePreferencesMessage, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<(), crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AgentManager.SetExperiencePreferencesAsync(LibreMetaverse.Messages.Linden.ExperiencePreferencesMessage,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.AgentManager.SetExperiencePreferencesAsync(LibreMetaverse.Messages.Linden.ExperiencePreferencesMessage preferences, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::AgentManager::set_experience_preferences_with_experience_preferences_message_cancellation_token pub async fn set_experience_preferences_with_experience_preferences_message_cancellation_token(&self, preferences: libremetaverse::messages::linden::ExperiencePreferencesMessage, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<(), crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.AgentManager.SetHeightWidth(System.UInt16,System.UInt16) method System.Void LibreMetaverse.AgentManager.SetHeightWidth(System.UInt16 height, System.UInt16 width) libremetaverse libremetaverse::AgentManager::set_height_width pub fn set_height_width(&self, height: u16, width: u16) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AgentManager.SetHome method System.Void LibreMetaverse.AgentManager.SetHome() libremetaverse libremetaverse::AgentManager::set_home pub fn set_home(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AgentManager.SetHoverHeightAsync(System.Double,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.AgentManager.SetHoverHeightAsync(System.Double hoverHeight, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::AgentManager::set_hover_height pub async fn set_hover_height(&self, hover_height: f64, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<(), crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AgentManager.SetHoverHeightAsync(System.Double,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.AgentManager.SetHoverHeightAsync(System.Double hoverHeight, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::AgentManager::set_hover_height_with_double_cancellation_token pub async fn set_hover_height_with_double_cancellation_token(&self, hover_height: f64, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<(), crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.AgentManager.Sit method System.Void LibreMetaverse.AgentManager.Sit() libremetaverse libremetaverse::AgentManager::sit pub fn sit(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AgentManager.SitOnGround method System.Void LibreMetaverse.AgentManager.SitOnGround() libremetaverse libremetaverse::AgentManager::sit_on_ground pub fn sit_on_ground(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AgentManager.SphereEffect(LibreMetaverse.Vector3d,LibreMetaverse.Color4,System.Single,LibreMetaverse.UUID) method System.Void LibreMetaverse.AgentManager.SphereEffect(LibreMetaverse.Vector3d globalOffset, LibreMetaverse.Color4 color, System.Single duration, LibreMetaverse.UUID effectID) libremetaverse libremetaverse::AgentManager::sphere_effect pub fn sphere_effect(&self, global_offset: libremetaverse_types::Vector3d, color: libremetaverse_types::Color4, duration: f32, effect_id: libremetaverse_types::UUID) -> Result<(), crate::Error> shared_self,owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
@@ -10524,14 +10524,14 @@ M:LibreMetaverse.Assets.AssetMaterial.ApplyOverride(LibreMetaverse.Assets.AssetM
M:LibreMetaverse.Assets.AssetMaterial.Decode method System.Boolean LibreMetaverse.Assets.AssetMaterial.Decode() libremetaverse assets libremetaverse::assets::AssetMaterial::decode pub fn decode(&self) -> Result<bool, crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.Encode method System.Void LibreMetaverse.Assets.AssetMaterial.Encode() libremetaverse assets libremetaverse::assets::AssetMaterial::encode pub fn encode(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.FromOverrideOsd(LibreMetaverse.StructuredData.OSDMap) method LibreMetaverse.Assets.AssetMaterial LibreMetaverse.Assets.AssetMaterial.FromOverrideOsd(LibreMetaverse.StructuredData.OSDMap data) libremetaverse assets libremetaverse::assets::AssetMaterial::from_override_osd pub fn from_override_osd(data: libremetaverse_structured_data::OSDMap) -> Result<libremetaverse::assets::AssetMaterial, crate::Error> owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetAlphaCutoff(System.Single,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetAlphaCutoff(System.Single cutoff, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_alpha_cutoff pub fn set_alpha_cutoff(&self, cutoff: f32, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetAlphaMode(LibreMetaverse.Assets.GltfAlphaMode,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetAlphaMode(LibreMetaverse.Assets.GltfAlphaMode mode, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_alpha_mode pub fn set_alpha_mode(&self, mode: libremetaverse::assets::GltfAlphaMode, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetBaseColorFactor(LibreMetaverse.Color4,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetBaseColorFactor(LibreMetaverse.Color4 color, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_base_color_factor pub fn set_base_color_factor(&self, color: libremetaverse_types::Color4, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetAlphaCutoff(System.Single,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetAlphaCutoff(System.Single cutoff, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_alpha_cutoff_with_single_boolean pub fn set_alpha_cutoff_with_single_boolean(&self, cutoff: f32, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetAlphaMode(LibreMetaverse.Assets.GltfAlphaMode,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetAlphaMode(LibreMetaverse.Assets.GltfAlphaMode mode, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_alpha_mode_with_gltf_alpha_mode_boolean pub fn set_alpha_mode_with_gltf_alpha_mode_boolean(&self, mode: libremetaverse::assets::GltfAlphaMode, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetBaseColorFactor(LibreMetaverse.Color4,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetBaseColorFactor(LibreMetaverse.Color4 color, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_base_color_factor_with_color4_boolean pub fn set_base_color_factor_with_color4_boolean(&self, color: libremetaverse_types::Color4, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetBaseMaterial method System.Void LibreMetaverse.Assets.AssetMaterial.SetBaseMaterial() libremetaverse assets libremetaverse::assets::AssetMaterial::set_base_material pub fn set_base_material(&self) -> Result<(), crate::Error> shared_self sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetDoubleSided(System.Boolean,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetDoubleSided(System.Boolean doubleSided, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_double_sided pub fn set_double_sided(&self, double_sided: bool, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetEmissiveFactor(LibreMetaverse.Vector3,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetEmissiveFactor(LibreMetaverse.Vector3 color, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_emissive_factor pub fn set_emissive_factor(&self, color: libremetaverse_types::Vector3, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetMetallicFactor(System.Single,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetMetallicFactor(System.Single metallic, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_metallic_factor pub fn set_metallic_factor(&self, metallic: f32, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetRoughnessFactor(System.Single,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetRoughnessFactor(System.Single roughness, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_roughness_factor pub fn set_roughness_factor(&self, roughness: f32, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetDoubleSided(System.Boolean,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetDoubleSided(System.Boolean doubleSided, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_double_sided_with_boolean_boolean pub fn set_double_sided_with_boolean_boolean(&self, double_sided: bool, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetEmissiveFactor(LibreMetaverse.Vector3,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetEmissiveFactor(LibreMetaverse.Vector3 color, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_emissive_factor_with_vector3_boolean pub fn set_emissive_factor_with_vector3_boolean(&self, color: libremetaverse_types::Vector3, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetMetallicFactor(System.Single,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetMetallicFactor(System.Single metallic, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_metallic_factor_with_single_boolean pub fn set_metallic_factor_with_single_boolean(&self, metallic: f32, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetRoughnessFactor(System.Single,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetRoughnessFactor(System.Single roughness, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_roughness_factor_with_single_boolean pub fn set_roughness_factor_with_single_boolean(&self, roughness: f32, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetTextureId(System.Int32,LibreMetaverse.UUID,System.Boolean) method System.Void LibreMetaverse.Assets.AssetMaterial.SetTextureId(System.Int32 slot, LibreMetaverse.UUID id, System.Boolean forOverride = default) libremetaverse assets libremetaverse::assets::AssetMaterial::set_texture_id pub fn set_texture_id(&self, slot: i32, id: libremetaverse_types::UUID, for_override: Option<bool>) -> Result<(), crate::Error> shared_self,owned,owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetTextureOffset(System.Int32,LibreMetaverse.Vector2) method System.Void LibreMetaverse.Assets.AssetMaterial.SetTextureOffset(System.Int32 slot, LibreMetaverse.Vector2 offset) libremetaverse assets libremetaverse::assets::AssetMaterial::set_texture_offset pub fn set_texture_offset(&self, slot: i32, offset: libremetaverse_types::Vector2) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.Assets.AssetMaterial.SetTextureRotation(System.Int32,System.Single) method System.Void LibreMetaverse.Assets.AssetMaterial.SetTextureRotation(System.Int32 slot, System.Single rotation) libremetaverse assets libremetaverse::assets::AssetMaterial::set_texture_rotation pub fn set_texture_rotation(&self, slot: i32, rotation: f32) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
@@ -10727,9 +10727,9 @@ M:LibreMetaverse.AudioDevice.PlayFileOnce(System.String) method System.Void Libr
M:LibreMetaverse.AudioDevice.PlayRawPcmStreamAsync(System.IO.Stream,System.Int32,System.Int32,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.AudioDevice.PlayRawPcmStreamAsync(System.IO.Stream pcmStream, System.Int32 channels = default, System.Int32 sampleRate = default, System.Threading.CancellationToken ct = default) libremetaverse-voice-webrtc libre_metaverse libremetaverse_voice_webrtc::libre_metaverse::AudioDevice::play_raw_pcm_stream pub async fn play_raw_pcm_stream(&self, pcm_stream: Box<dyn libremetaverse_types::compat::ReadWrite + Send>, channels: Option<i32>, sample_rate: Option<i32>, ct: Option<libremetaverse_types::compat::CancellationToken>) -> Result<(), crate::Error> shared_self,owned,optional_owned,optional_owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AudioDevice.PlayRtpPacket(System.UInt32,System.Byte[]) method System.Void LibreMetaverse.AudioDevice.PlayRtpPacket(System.UInt32 ssrc, System.Byte[] payload) libremetaverse-voice-webrtc libre_metaverse libremetaverse_voice_webrtc::libre_metaverse::AudioDevice::play_rtp_packet pub fn play_rtp_packet(&self, ssrc: u32, payload: Vec<u8>) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AudioDevice.SetCaptureGainPercent(System.Int32) method System.Void LibreMetaverse.AudioDevice.SetCaptureGainPercent(System.Int32 percent) libremetaverse-voice-webrtc libre_metaverse libremetaverse_voice_webrtc::libre_metaverse::AudioDevice::set_capture_gain_percent pub fn set_capture_gain_percent(&self, percent: i32) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AudioDevice.SetPlaybackDevice(System.String) method System.Void LibreMetaverse.AudioDevice.SetPlaybackDevice(System.String deviceName) libremetaverse-voice-webrtc libre_metaverse libremetaverse_voice_webrtc::libre_metaverse::AudioDevice::set_playback_device pub fn set_playback_device(&self, device_name: Option<String>) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AudioDevice.SetPlaybackDevice(System.String) method System.Void LibreMetaverse.AudioDevice.SetPlaybackDevice(System.String deviceName) libremetaverse-voice-webrtc libre_metaverse libremetaverse_voice_webrtc::libre_metaverse::AudioDevice::set_playback_device_with_string pub fn set_playback_device_with_string(&self, device_name: Option<String>) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.AudioDevice.SetPlaybackVolume(System.Single) method System.Void LibreMetaverse.AudioDevice.SetPlaybackVolume(System.Single normalized) libremetaverse-voice-webrtc libre_metaverse libremetaverse_voice_webrtc::libre_metaverse::AudioDevice::set_playback_volume pub fn set_playback_volume(&self, normalized: f32) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AudioDevice.SetRecordingDevice(System.String) method System.Void LibreMetaverse.AudioDevice.SetRecordingDevice(System.String deviceName) libremetaverse-voice-webrtc libre_metaverse libremetaverse_voice_webrtc::libre_metaverse::AudioDevice::set_recording_device pub fn set_recording_device(&self, device_name: Option<String>) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AudioDevice.SetRecordingDevice(System.String) method System.Void LibreMetaverse.AudioDevice.SetRecordingDevice(System.String deviceName) libremetaverse-voice-webrtc libre_metaverse libremetaverse_voice_webrtc::libre_metaverse::AudioDevice::set_recording_device_with_string pub fn set_recording_device_with_string(&self, device_name: Option<String>) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.AudioDevice.SetSsrcGainPercent(System.UInt32,System.Int32) method System.Void LibreMetaverse.AudioDevice.SetSsrcGainPercent(System.UInt32 ssrc, System.Int32 percent) libremetaverse-voice-webrtc libre_metaverse libremetaverse_voice_webrtc::libre_metaverse::AudioDevice::set_ssrc_gain_percent pub fn set_ssrc_gain_percent(&self, ssrc: u32, percent: i32) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AudioDevice.SetSsrcMute(System.UInt32,System.Boolean) method System.Void LibreMetaverse.AudioDevice.SetSsrcMute(System.UInt32 ssrc, System.Boolean muted) libremetaverse-voice-webrtc libre_metaverse libremetaverse_voice_webrtc::libre_metaverse::AudioDevice::set_ssrc_mute pub fn set_ssrc_mute(&self, ssrc: u32, muted: bool) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.AudioDevice.StartFilePlayback(System.String,System.Boolean) method System.Void LibreMetaverse.AudioDevice.StartFilePlayback(System.String path, System.Boolean loop = default) libremetaverse-voice-webrtc libre_metaverse libremetaverse_voice_webrtc::libre_metaverse::AudioDevice::start_file_playback pub fn start_file_playback(&self, path: String, loop_: Option<bool>) -> Result<(), crate::Error> shared_self,owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped
@@ -11004,9 +11004,9 @@ M:LibreMetaverse.EnvironmentManager.GetParcelEnvironmentAsync(System.Int32,Syste
M:LibreMetaverse.EnvironmentManager.GetRegionEnvironmentAsync(System.Threading.CancellationToken) method System.Threading.Tasks.Task<LibreMetaverse.Messages.Linden.ExtEnvironmentMessage> LibreMetaverse.EnvironmentManager.GetRegionEnvironmentAsync(System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::EnvironmentManager::get_region_environment pub async fn get_region_environment(&self, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<Option<libremetaverse::messages::linden::ExtEnvironmentMessage>, crate::Error> shared_self,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.EnvironmentManager.ResetParcelEnvironmentAsync(System.Int32,System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.Boolean> LibreMetaverse.EnvironmentManager.ResetParcelEnvironmentAsync(System.Int32 parcelId, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::EnvironmentManager::reset_parcel_environment pub async fn reset_parcel_environment(&self, parcel_id: i32, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<bool, crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.EnvironmentManager.ResetRegionEnvironmentAsync(System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.Boolean> LibreMetaverse.EnvironmentManager.ResetRegionEnvironmentAsync(System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::EnvironmentManager::reset_region_environment pub async fn reset_region_environment(&self, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<bool, crate::Error> shared_self,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.EnvironmentManager.SetLegacyEnvironmentAsync(LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.Boolean> LibreMetaverse.EnvironmentManager.SetLegacyEnvironmentAsync(LibreMetaverse.StructuredData.OSD settings, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::EnvironmentManager::set_legacy_environment pub async fn set_legacy_environment(&self, settings: libremetaverse_structured_data::OSD, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<bool, crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.EnvironmentManager.SetLegacyEnvironmentAsync(LibreMetaverse.StructuredData.OSD,System.Threading.CancellationToken) method System.Threading.Tasks.Task<System.Boolean> LibreMetaverse.EnvironmentManager.SetLegacyEnvironmentAsync(LibreMetaverse.StructuredData.OSD settings, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::EnvironmentManager::set_legacy_environment_with_osd_cancellation_token pub async fn set_legacy_environment_with_osd_cancellation_token(&self, settings: libremetaverse_structured_data::OSD, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<bool, crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.EnvironmentManager.SetParcelEnvironmentAsync(System.Int32,LibreMetaverse.Messages.Linden.EnvironmentData,System.Threading.CancellationToken) method System.Threading.Tasks.Task<LibreMetaverse.Messages.Linden.ExtEnvironmentMessage> LibreMetaverse.EnvironmentManager.SetParcelEnvironmentAsync(System.Int32 parcelId, LibreMetaverse.Messages.Linden.EnvironmentData environment, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::EnvironmentManager::set_parcel_environment pub async fn set_parcel_environment(&self, parcel_id: i32, environment: libremetaverse::messages::linden::EnvironmentData, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<Option<libremetaverse::messages::linden::ExtEnvironmentMessage>, crate::Error> shared_self,owned,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.EnvironmentManager.SetRegionEnvironmentAsync(LibreMetaverse.Messages.Linden.EnvironmentData,System.Threading.CancellationToken) method System.Threading.Tasks.Task<LibreMetaverse.Messages.Linden.ExtEnvironmentMessage> LibreMetaverse.EnvironmentManager.SetRegionEnvironmentAsync(LibreMetaverse.Messages.Linden.EnvironmentData environment, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::EnvironmentManager::set_region_environment pub async fn set_region_environment(&self, environment: libremetaverse::messages::linden::EnvironmentData, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<Option<libremetaverse::messages::linden::ExtEnvironmentMessage>, crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.EnvironmentManager.SetRegionEnvironmentAsync(LibreMetaverse.Messages.Linden.EnvironmentData,System.Threading.CancellationToken) method System.Threading.Tasks.Task<LibreMetaverse.Messages.Linden.ExtEnvironmentMessage> LibreMetaverse.EnvironmentManager.SetRegionEnvironmentAsync(LibreMetaverse.Messages.Linden.EnvironmentData environment, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::EnvironmentManager::set_region_environment_with_environment_data_cancellation_token pub async fn set_region_environment_with_environment_data_cancellation_token(&self, environment: libremetaverse::messages::linden::EnvironmentData, cancellation_token: Option<libremetaverse_types::compat::CancellationToken>) -> Result<Option<libremetaverse::messages::linden::ExtEnvironmentMessage>, crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped
M:LibreMetaverse.EstateBansReplyEventArgs.#ctor(System.UInt32,System.Int32,System.Collections.Generic.List{LibreMetaverse.UUID}) constructor LibreMetaverse.EstateBansReplyEventArgs(System.UInt32 estateID, System.Int32 count, System.Collections.Generic.List<LibreMetaverse.UUID> banned) libremetaverse libremetaverse::EstateBansReplyEventArgs::new pub fn new(estate_id: u32, count: i32, banned: Vec<libremetaverse_types::UUID>) -> Result<Self, crate::Error> owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.EstateCovenantReplyEventArgs.#ctor(LibreMetaverse.UUID,System.Int64,System.String,LibreMetaverse.UUID) constructor LibreMetaverse.EstateCovenantReplyEventArgs(LibreMetaverse.UUID covenantID, System.Int64 timestamp, System.String estateName, LibreMetaverse.UUID estateOwnerID) libremetaverse libremetaverse::EstateCovenantReplyEventArgs::new pub fn new(covenant_id: libremetaverse_types::UUID, timestamp: i64, estate_name: String, estate_owner_id: libremetaverse_types::UUID) -> Result<Self, crate::Error> owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
M:LibreMetaverse.EstateExperienceReplyEventArgs.#ctor(System.Collections.Generic.List{LibreMetaverse.UUID},System.Collections.Generic.List{LibreMetaverse.UUID},System.Collections.Generic.List{LibreMetaverse.UUID}) constructor LibreMetaverse.EstateExperienceReplyEventArgs(System.Collections.Generic.List<LibreMetaverse.UUID> blocked, System.Collections.Generic.List<LibreMetaverse.UUID> trusted, System.Collections.Generic.List<LibreMetaverse.UUID> allowed) libremetaverse libremetaverse::EstateExperienceReplyEventArgs::new pub fn new(blocked: Vec<libremetaverse_types::UUID>, trusted: Vec<libremetaverse_types::UUID>, allowed: Vec<libremetaverse_types::UUID>) -> Result<Self, crate::Error> owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped
Can't render this file because it is too large.

View File

@@ -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 | pending milestone issue |
| `LibreMetaverse` | 2,711 | 27,281 | partial callable shim (2,209 types / 22,805 members) |
| `LibreMetaverse.Imaging.Abstractions` | 3 | 20 | callable failure-only shim |
| `LibreMetaverse.Imaging.Skia` | 1 | 3 | callable failure-only shim |
| `LibreMetaverse.LslTools` | 164 | 768 | pending milestone issue |
@@ -18,4 +18,8 @@ Generated by `python3 tools/generate_api_shims.py`; do not edit by hand.
| `LibreMetaverse.Voice.Vivox` | 64 | 531 | pending milestone issue |
| `LibreMetaverse.Voice.WebRTC` | 12 | 210 | pending milestone issue |
Current callable coverage: **84 types / 1,487 members**.
The partial `LibreMetaverse` row is milestone issue #7's wire/data slice: packets, messages, assets,
GLTF, archives/import-export, materials, rendering DTOs, bit packing, permissions, primitives, and
texture/media/particle records. Other main-assembly types remain pending shells for issues #8-#10.
Current callable coverage: **2,293 types / 24,292 members**.

View File

@@ -7,7 +7,7 @@ pub mod codec {
pub trait IImageCreator {}
pub struct ImageCreator<T>(pub std::marker::PhantomData<T>);
pub struct InterleavedImage;
pub struct BlkImgDataSrc;
pub trait BlkImgDataSrc {}
}
mod generated;

View File

@@ -5,6 +5,9 @@ extern crate self as libremetaverse_structured_data;
mod generated;
pub mod xml {
/// Project-owned XML element boundary; external XML APIs are not copied.
pub struct Element;
/// Native XML reader boundary; external XML APIs are not copied.
pub struct Reader;

View File

@@ -57,6 +57,33 @@ pub struct StringReader(pub String);
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct StreamReader(pub Vec<u8>);
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct XmlTextReader(pub String);
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct XmlTextWriter(pub String);
#[derive(Clone, Copy, Debug, Default, Eq, Hash, PartialEq)]
pub struct CancellationToken;
#[derive(Clone, Debug)]
pub struct FrozenDictionary<TKey, TValue>(pub std::collections::HashMap<TKey, TValue>);
#[derive(Clone, Debug)]
pub struct IDictionary<TKey, TValue>(pub std::collections::HashMap<TKey, TValue>);
#[derive(Clone, Debug)]
pub struct SortedList<TKey, TValue>(pub std::collections::BTreeMap<TKey, TValue>);
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct Matrix4x4(pub [f32; 16]);
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct Quaternion(pub [f32; 4]);
#[derive(Clone, Copy, Debug, Default, PartialEq)]
pub struct Vector3(pub [f32; 3]);
#[derive(Clone, Debug, Eq, PartialEq)]
pub struct StringWriter(pub String);

File diff suppressed because it is too large Load Diff

View File

@@ -1,14 +1,23 @@
//! Public rewrite shell corresponding to the main `LibreMetaverse` assembly.
extern crate self as libremetaverse;
mod generated;
pub use TextureEntryFace as PrimitiveTextureEntryFace;
pub use generated::*;
pub use libremetaverse_imaging as imaging_abstractions;
pub use libremetaverse_structured_data as structured_data;
pub use libremetaverse_types as types;
pub use libremetaverse_types::NotImplemented as Error;
/// Project-owned boundary types for external `MessagePack` signatures.
pub mod message_pack {
pub trait IMessagePackFormatter<T = ()> {}
pub struct MessagePackReader;
pub struct MessagePackSerializerOptions;
pub struct MessagePackWriter;
}
/// Common behavior for program shims while the network stack is unimplemented.
pub mod shim {
use std::process::ExitCode;

View File

@@ -0,0 +1,69 @@
use libremetaverse::assets::gltf::GltfDocument;
use libremetaverse::assets::{ArchiveConstants, AssetTexture, OarFile};
use libremetaverse::import_export::ModelPrim;
use libremetaverse::materials::LegacyMaterial;
use libremetaverse::messages::linden::AgentDropGroupMessage;
use libremetaverse::packets::UseCircuitCodePacket;
use libremetaverse::{BitPack, PacketFrequency, PermissionMask, Permissions, Primitive};
fn member_id<T>(result: Result<T, libremetaverse::Error>) -> &'static str {
result
.err()
.expect("failure-only shim unexpectedly returned a value")
.csharp_member()
}
#[test]
fn each_wire_data_domain_is_callable_and_failure_only() {
assert_eq!(
member_id(UseCircuitCodePacket::new_with_constructor()),
"M:LibreMetaverse.Packets.UseCircuitCodePacket.#ctor"
);
assert_eq!(
member_id(AgentDropGroupMessage::new()),
"M:LibreMetaverse.Messages.Linden.AgentDropGroupMessage.#ctor"
);
assert_eq!(
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"
);
assert_eq!(
member_id(ModelPrim::new()),
"M:LibreMetaverse.ImportExport.ModelPrim.#ctor"
);
assert_eq!(
member_id(OarFile::package_archive(String::new(), String::new())),
"M:LibreMetaverse.Assets.OarFile.PackageArchive(System.String,System.String)"
);
assert_eq!(
member_id(BitPack::new(Vec::new(), 0)),
"M:LibreMetaverse.BitPack.#ctor(System.Byte[],System.Int32)"
);
assert_eq!(
member_id(Permissions::new(0, 0, 0, 0, 0)),
"M:LibreMetaverse.Permissions.#ctor(System.UInt32,System.UInt32,System.UInt32,System.UInt32,System.UInt32)"
);
}
#[test]
fn wire_widths_flags_and_constants_match_the_catalog() {
assert_eq!(PacketFrequency::High as u8, 2);
assert_eq!(PermissionMask::COPY.0, 32_768);
assert_eq!(ArchiveConstants::ASSETS_PATH, "assets/");
assert_eq!(
libremetaverse::PrimitiveParticleSystem::LEGACY_DATA_BLOCK_SIZE,
86
);
}

View File

@@ -28,6 +28,45 @@ TARGETS = {
"LibreMetaverse.StructuredData": ROOT / "crates/libremetaverse-structured-data/src/generated.rs",
}
MAIN_TARGET = ROOT / "crates/libremetaverse/src/generated.rs"
WIRE_NAMESPACES = (
"LibreMetaverse.Assets",
"LibreMetaverse.Formatters",
"LibreMetaverse.Imaging",
"LibreMetaverse.ImportExport",
"LibreMetaverse.Materials",
"LibreMetaverse.Messages",
"LibreMetaverse.Packets",
"LibreMetaverse.Rendering",
)
WIRE_ROOT_TYPES = {
"T:LibreMetaverse.Animation",
"T:LibreMetaverse.BitPack",
"T:LibreMetaverse.Bumpiness",
"T:LibreMetaverse.FieldType",
"T:LibreMetaverse.GLTFMaterialUpdate",
"T:LibreMetaverse.Grass",
"T:LibreMetaverse.GrassDefinition",
"T:LibreMetaverse.Interfaces.IMessage",
"T:LibreMetaverse.LiveParticle",
"T:LibreMetaverse.MappingType",
"T:LibreMetaverse.MediaControls",
"T:LibreMetaverse.MediaEntry",
"T:LibreMetaverse.MediaPermission",
"T:LibreMetaverse.NameValue",
"T:LibreMetaverse.NameValue.ClassType",
"T:LibreMetaverse.NameValue.SendtoType",
"T:LibreMetaverse.NameValue.ValueType",
"T:LibreMetaverse.PacketFrequency",
"T:LibreMetaverse.PermissionMask",
"T:LibreMetaverse.PermissionWho",
"T:LibreMetaverse.Permissions",
"T:LibreMetaverse.Shininess",
"T:LibreMetaverse.TextureAttributes",
"T:LibreMetaverse.Tree",
"T:LibreMetaverse.TreeDefinition",
}
UNDERLYING = {
"System.SByte": "i8", "System.Byte": "u8", "System.Int16": "i16", "System.UInt16": "u16",
"System.Int32": "i32", "System.UInt32": "u32", "System.Int64": "i64", "System.UInt64": "u64",
@@ -134,6 +173,15 @@ def render_body(signature: str, member_id: str, error_model: str, trait: bool) -
return f" {signature} {{ {failure} }}"
def rust_constant_value(item: dict) -> str:
value = item["value"]["value"]
if item["type"] == "System.String":
return json.dumps(value)
if item["type"] == "System.Boolean":
return value.lower()
return value
def render_type(item: dict, type_row: dict, member_rows: dict[str, dict[str, str]], mapper: mapping.Mapper) -> str:
rust_name = type_name(type_row)
if item["kind"] == "enum":
@@ -179,8 +227,7 @@ def render_type(item: dict, type_row: dict, member_rows: dict[str, dict[str, str
row = member_rows[member["doc_id"]]
lines.append(f" /// C# member: `{member['doc_id']}`.")
if member["kind"] == "constant":
value = member["value"]["value"]
lines.append(f" {row['rust_signature']} = {value};")
lines.append(f" {row['rust_signature']} = {rust_constant_value(member)};")
continue
signatures = row["rust_signature"].split(" ; ")
for index, signature in enumerate(signatures):
@@ -199,7 +246,53 @@ def render_type(item: dict, type_row: dict, member_rows: dict[str, dict[str, str
return "\n".join(lines)
def generate_sources(catalog: dict) -> tuple[dict[Path, str], dict[str, tuple[int, int]]]:
def render_pending_type(item: dict, type_row: dict) -> str:
rust_name = type_name(type_row)
names = generic_names(item)
suffix = generic_suffix(names)
lines = [f"/// Pending catalog type `{item['doc_id']}`; completed by a later milestone issue."]
if item["kind"] == "interface":
lines.append(f"pub trait {rust_name}{suffix} {{}}")
elif names:
tuple_type = "(" + ", ".join(names) + ("," if len(names) == 1 else "") + ")"
lines += [f"pub struct {rust_name}{suffix} {{", f" _marker: std::marker::PhantomData<{tuple_type}>,", "}"]
else:
lines.append(f"pub struct {rust_name};")
return "\n".join(lines)
def wire_type(item: dict) -> bool:
return (
item["doc_id"] in WIRE_ROOT_TYPES
or item["doc_id"].startswith("T:LibreMetaverse.Primitive")
or item["namespace"].startswith(WIRE_NAMESPACES)
)
def render_modules(items: list[tuple[dict, dict, bool]], member_rows: dict[str, dict[str, str]], mapper: mapping.Mapper) -> str:
tree: dict = {"items": [], "children": {}}
for item, type_row, complete in items:
node = tree
for segment in filter(None, type_row["rust_module"].split("::")):
node = node["children"].setdefault(segment, {"items": [], "children": {}})
node["items"].append((item, type_row, complete))
def render_node(node: dict) -> list[str]:
lines = []
for item, type_row, complete in node["items"]:
rendered = render_type(item, type_row, member_rows, mapper) if complete else render_pending_type(item, type_row)
lines += [rendered, ""]
for name, child in sorted(node["children"].items()):
body = render_node(child)
lines.append(f"pub mod {name} {{")
lines += [(" " + line) if line else "" for line in body]
lines += ["}", ""]
return lines
return "\n".join(render_node(tree))
def generate_sources(catalog: dict) -> tuple[dict[Path, str], dict[str, tuple[int, int, bool]]]:
type_rows, resolved = mapping.build_type_rows(catalog)
type_by_id = {row["csharp_type_id"]: row for row in type_rows}
interfaces = {
@@ -216,7 +309,7 @@ def generate_sources(catalog: dict) -> tuple[dict[Path, str], dict[str, tuple[in
coverage = {}
for assembly in catalog["assemblies"]:
name = assembly["identity"]["name"]
if name not in TARGETS:
if name not in TARGETS and name != "LibreMetaverse":
continue
chunks = [
"// @generated by tools/generate_api_shims.py; do not edit by hand.",
@@ -227,11 +320,16 @@ def generate_sources(catalog: dict) -> tuple[dict[Path, str], dict[str, tuple[in
"#![allow(non_snake_case)]",
"",
]
for item in assembly["types"]:
chunks += [render_type(item, type_by_id[item["doc_id"]], member_rows, mapper), ""]
selected = assembly["types"] if name in TARGETS else [item for item in assembly["types"] if wire_type(item)]
selected_ids = {item["doc_id"] for item in selected}
rendered_items = [
(item, type_by_id[item["doc_id"]], item["doc_id"] in selected_ids)
for item in assembly["types"]
]
chunks.append(render_modules(rendered_items, member_rows, mapper))
source = format_rust("\n".join(chunks).rstrip() + "\n")
expected_types = {item["doc_id"] for item in assembly["types"]}
expected_members = {member["doc_id"] for item in assembly["types"] for member in item["members"]}
expected_types = selected_ids
expected_members = {member["doc_id"] for item in selected for member in item["members"]}
emitted_types = set(re.findall(r"C# type: `(.*)`\.", source))
emitted_members = set(re.findall(r"C# member: `(.*)`\.", source))
if emitted_types != expected_types or emitted_members != expected_members:
@@ -240,12 +338,12 @@ def generate_sources(catalog: dict) -> tuple[dict[Path, str], dict[str, tuple[in
f"types missing/stale={len(expected_types - emitted_types)}/{len(emitted_types - expected_types)}, "
f"members missing/stale={len(expected_members - emitted_members)}/{len(emitted_members - expected_members)}"
)
outputs[TARGETS[name]] = source
coverage[name] = (len(assembly["types"]), sum(len(item["members"]) for item in assembly["types"]))
outputs[TARGETS.get(name, MAIN_TARGET)] = source
coverage[name] = (len(selected), sum(len(item["members"]) for item in selected), len(selected) == len(assembly["types"]))
return outputs, coverage
def coverage_report(catalog: dict, coverage: dict[str, tuple[int, int]]) -> str:
def coverage_report(catalog: dict, coverage: dict[str, tuple[int, int, bool]]) -> str:
lines = [
"# Callable shim coverage", "", "Generated by `python3 tools/generate_api_shims.py`; do not edit by hand.", "",
"| Assembly | Types | Members | Status |", "|---|---:|---:|---|",
@@ -256,15 +354,22 @@ def coverage_report(catalog: dict, coverage: dict[str, tuple[int, int]]) -> str:
types = len(assembly["types"])
members = sum(len(item["members"]) for item in assembly["types"])
if name in coverage:
got_types, got_members = coverage[name]
if (types, members) != (got_types, got_members):
got_types, got_members, complete = coverage[name]
if complete and (types, members) != (got_types, got_members):
raise ValueError(f"incomplete generated slice for {name}")
status = "callable failure-only shim"
total_types += types
total_members += members
status = "callable failure-only shim" if complete else f"partial callable shim ({got_types:,} types / {got_members:,} members)"
total_types += got_types
total_members += got_members
else:
status = "pending milestone issue"
lines.append(f"| `{name}` | {types:,} | {members:,} | {status} |")
if "LibreMetaverse" in coverage and not coverage["LibreMetaverse"][2]:
lines += [
"",
"The partial `LibreMetaverse` row is milestone issue #7's wire/data slice: packets, messages, assets,",
"GLTF, archives/import-export, materials, rendering DTOs, bit packing, permissions, primitives, and",
"texture/media/particle records. Other main-assembly types remain pending shells for issues #8-#10.",
]
lines += ["", f"Current callable coverage: **{total_types:,} types / {total_members:,} members**.", ""]
return "\n".join(lines)

View File

@@ -590,6 +590,8 @@ def member_signature(mapper: Mapper, owner: dict, item: dict, rust_name: str) ->
if kind == "enum_value":
signature = f"{rust_name}: {value_type}"
elif kind == "constant":
if item["type"] == "System.String":
value_type = "&'static str"
signature = f"pub const {rust_name}: {value_type}"
elif item.get("static"):
signature = f"pub fn {rust_name}() -> {value_type}"
@@ -665,6 +667,16 @@ def build_member_rows(catalog: dict, mapper: Mapper) -> list[dict[str, str]]:
for owner in assembly["types"]:
_, module, owner_path = declared_type_path(assembly_name, owner)
groups = Counter(member_base_name(member) for member in owner["members"])
synthetic_names = {
f"set_{member_base_name(member)}"
for member in owner["members"]
if member["kind"] in {"property", "indexer"}
and any(accessor["kind"] == "set" for accessor in member.get("accessors", []))
} | {
f"subscribe_{member_base_name(member)}"
for member in owner["members"]
if member["kind"] == "event"
}
enum_values = [member.get("value", {}).get("value") for member in owner["members"] if member["kind"] == "enum_value"]
enum_constants = owner["kind"] == "enum" and (
any(attribute["type"] == "System.FlagsAttribute" for attribute in owner.get("attributes", []))
@@ -677,7 +689,7 @@ def build_member_rows(catalog: dict, mapper: Mapper) -> list[dict[str, str]]:
base_name = snake(item["name"]).upper()
rust_name = base_name
decision = "direct_snake_case"
if groups[base_name] > 1:
if groups[base_name] > 1 or (item["kind"] == "method" and base_name in synthetic_names):
suffixes = []
for parameter in item.get("parameters", []):
suffixes.append(parameter_slug(parameter["type"]))