From 8ca986dbd361810928abd9a2acaef2fbe5f5dec1 Mon Sep 17 00:00:00 2001 From: Chili Palmer Date: Sat, 8 Aug 2026 12:03:16 +0200 Subject: [PATCH] Generate imaging and rendering API shims --- Cargo.lock | 1 + README.md | 7 +- RUSTREWRITE.md | 6 +- api/RUST-MAPPING.tsv | 10 +- api/SHIM-COVERAGE.md | 12 +- .../src/generated.rs | 36 +- crates/libremetaverse-imaging-skia/src/lib.rs | 7 + .../libremetaverse-imaging/src/generated.rs | 108 +- crates/libremetaverse-imaging/src/lib.rs | 10 + .../src/generated.rs | 986 ++++++++++++++++-- crates/libremetaverse-prim-mesher/src/lib.rs | 2 + .../src/generated.rs | 155 ++- .../src/lib.rs | 2 + .../Cargo.toml | 1 + .../src/generated.rs | 71 +- .../src/lib.rs | 2 + crates/libremetaverse-types/src/compat.rs | 3 + crates/libremetaverse/src/lib.rs | 1 + tests/compat/tests/rendering_shims.rs | 42 + tools/generate_api_shims.py | 21 +- tools/generate_rust_mapping.py | 9 +- 21 files changed, 1345 insertions(+), 147 deletions(-) create mode 100644 tests/compat/tests/rendering_shims.rs diff --git a/Cargo.lock b/Cargo.lock index 71dad6a..1b14e82 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -86,6 +86,7 @@ name = "libremetaverse-rendering-simple" version = "0.0.1" dependencies = [ "libremetaverse", + "libremetaverse-imaging", "libremetaverse-types", ] diff --git a/README.md b/README.md index cdc413e..218efc5 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,10 @@ 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. The Types and StructuredData assemblies now have complete callable, -failure-only signatures; the remaining assembly slices and semantic Rust test -translations are still required before the public API shim is complete. +target. Types, StructuredData, Imaging, PrimMesher, and both rendering adapters +now have complete callable, failure-only signatures; the remaining assembly +slices and semantic Rust test translations are still required before the public +API shim is complete. The source snapshot, compatibility rules, dependency research, and ordered implementation plan are in [RUSTREWRITE.md](RUSTREWRITE.md). diff --git a/RUSTREWRITE.md b/RUSTREWRITE.md index 18187b1..a20346d 100644 --- a/RUSTREWRITE.md +++ b/RUSTREWRITE.md @@ -51,9 +51,9 @@ 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 Types and StructuredData slices expose 61 final Rust-facing types and all - 1,237 callable members with real fields/constants/enum values and standardized - failing bodies; +- 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; - 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; diff --git a/api/RUST-MAPPING.tsv b/api/RUST-MAPPING.tsv index 41a3742..715312d 100644 --- a/api/RUST-MAPPING.tsv +++ b/api/RUST-MAPPING.tsv @@ -11123,7 +11123,7 @@ M:LibreMetaverse.GridClient.DisposeAsync method System.Threading.Tasks.ValueTask M:LibreMetaverse.GridClient.ToString method System.String LibreMetaverse.GridClient.ToString() libremetaverse libremetaverse::GridClient::to_string pub fn to_string(&self) -> String shared_self sync infallible_placeholder direct_snake_case method mapped M:LibreMetaverse.GridClientBakingTextureProvider.#ctor(LibreMetaverse.GridClient) constructor LibreMetaverse.GridClientBakingTextureProvider(LibreMetaverse.GridClient client) libremetaverse libremetaverse::GridClientBakingTextureProvider::new pub fn new(client: libremetaverse::GridClient) -> Result owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.GridClientBakingTextureProvider.RequestTextureAsync(LibreMetaverse.UUID,System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.GridClientBakingTextureProvider.RequestTextureAsync(LibreMetaverse.UUID textureID, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::GridClientBakingTextureProvider::request_texture pub async fn request_texture(&self, texture_id: libremetaverse_types::UUID, cancellation_token: Option) -> Result, crate::Error> shared_self,owned,optional_owned async Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.GridClientServiceCollectionExtensions.AddGridClient(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{LibreMetaverse.Settings}) method Microsoft.Extensions.DependencyInjection.IServiceCollection LibreMetaverse.GridClientServiceCollectionExtensions.AddGridClient(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configure = default) libremetaverse libremetaverse::GridClientServiceCollectionExtensions::add_grid_client pub fn add_grid_client(services: libremetaverse::services::IServiceCollection, configure: Option>) -> Result owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.GridClientServiceCollectionExtensions.AddGridClient(Microsoft.Extensions.DependencyInjection.IServiceCollection,System.Action{LibreMetaverse.Settings}) method Microsoft.Extensions.DependencyInjection.IServiceCollection LibreMetaverse.GridClientServiceCollectionExtensions.AddGridClient(Microsoft.Extensions.DependencyInjection.IServiceCollection services, System.Action configure = default) libremetaverse libremetaverse::GridClientServiceCollectionExtensions::add_grid_client pub fn add_grid_client(services: Box, configure: Option>) -> Result, crate::Error> owned,optional_owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.GridItemsEventArgs.#ctor(LibreMetaverse.GridItemType,System.Collections.Generic.List{LibreMetaverse.MapItem}) constructor LibreMetaverse.GridItemsEventArgs(LibreMetaverse.GridItemType type, System.Collections.Generic.List items) libremetaverse libremetaverse::GridItemsEventArgs::new pub fn new(type_: libremetaverse::GridItemType, items: Vec) -> Result owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.GridLayer.ContainsRegion(System.Int32,System.Int32) method System.Boolean LibreMetaverse.GridLayer.ContainsRegion(System.Int32 x, System.Int32 y) libremetaverse libremetaverse::GridLayer::contains_region pub fn contains_region(&self, x: i32, y: i32) -> Result shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.GridLayerEventArgs.#ctor(LibreMetaverse.GridLayer) constructor LibreMetaverse.GridLayerEventArgs(LibreMetaverse.GridLayer layer) libremetaverse libremetaverse::GridLayerEventArgs::new pub fn new(layer: libremetaverse::GridLayer) -> Result owned sync Result<_, crate::Error> direct_snake_case method mapped @@ -11282,8 +11282,8 @@ M:LibreMetaverse.Imaging.ManagedImage.ExportRaw method System.Byte[] LibreMetave M:LibreMetaverse.Imaging.ManagedImage.ResizeBilinear(System.Int32,System.Int32) method System.Void LibreMetaverse.Imaging.ManagedImage.ResizeBilinear(System.Int32 width, System.Int32 height) libremetaverse-imaging libremetaverse_imaging::ManagedImage::resize_bilinear pub fn resize_bilinear(&self, width: i32, height: i32) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Imaging.ManagedImage.ResizeNearestNeighbor(System.Int32,System.Int32) method System.Void LibreMetaverse.Imaging.ManagedImage.ResizeNearestNeighbor(System.Int32 width, System.Int32 height) libremetaverse-imaging libremetaverse_imaging::ManagedImage::resize_nearest_neighbor pub fn resize_nearest_neighbor(&self, width: i32, height: i32) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Imaging.ManagedImageCreator.#ctor constructor LibreMetaverse.Imaging.ManagedImageCreator() libremetaverse imaging libremetaverse::imaging::ManagedImageCreator::new pub fn new() -> Result none sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Imaging.ManagedImageCreator.Create(System.Int32,System.Int32,System.Int32,System.Byte[]) method CoreJ2K.Util.IImage LibreMetaverse.Imaging.ManagedImageCreator.Create(System.Int32 width, System.Int32 height, System.Int32 numComponents, System.Byte[] bytes) libremetaverse imaging libremetaverse::imaging::ManagedImageCreator::create pub fn create(&self, width: i32, height: i32, num_components: i32, bytes: Vec) -> Result shared_self,owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Imaging.ManagedImageCreator.ToPortableImageSource(System.Object) method CoreJ2K.j2k.image.BlkImgDataSrc LibreMetaverse.Imaging.ManagedImageCreator.ToPortableImageSource(System.Object imageObject) libremetaverse imaging libremetaverse::imaging::ManagedImageCreator::to_portable_image_source pub fn to_portable_image_source(&self, image_object: libremetaverse_types::compat::Object) -> Result shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Imaging.ManagedImageCreator.Create(System.Int32,System.Int32,System.Int32,System.Byte[]) method CoreJ2K.Util.IImage LibreMetaverse.Imaging.ManagedImageCreator.Create(System.Int32 width, System.Int32 height, System.Int32 numComponents, System.Byte[] bytes) libremetaverse imaging libremetaverse::imaging::ManagedImageCreator::create pub fn create(&self, width: i32, height: i32, num_components: i32, bytes: Vec) -> Result, crate::Error> shared_self,owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Imaging.ManagedImageCreator.ToPortableImageSource(System.Object) method CoreJ2K.j2k.image.BlkImgDataSrc LibreMetaverse.Imaging.ManagedImageCreator.ToPortableImageSource(System.Object imageObject) libremetaverse imaging libremetaverse::imaging::ManagedImageCreator::to_portable_image_source pub fn to_portable_image_source(&self, image_object: libremetaverse_types::compat::Object) -> Result, crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Imaging.ManagedImageInterleavedExtensions.ToManagedImage(CoreJ2K.Util.InterleavedImage) method LibreMetaverse.Imaging.ManagedImage LibreMetaverse.Imaging.ManagedImageInterleavedExtensions.ToManagedImage(CoreJ2K.Util.InterleavedImage image) libremetaverse imaging libremetaverse::imaging::ManagedImageInterleavedExtensions::to_managed_image pub fn to_managed_image(image: libremetaverse_imaging::codec::InterleavedImage) -> Result owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Imaging.Skia.SkiaTextureCodec.#ctor constructor LibreMetaverse.Imaging.Skia.SkiaTextureCodec() libremetaverse-imaging-skia libremetaverse_imaging_skia::SkiaTextureCodec::new pub fn new() -> Result none sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Imaging.Skia.SkiaTextureCodec.Decode(System.IO.Stream) method LibreMetaverse.Imaging.ManagedImage LibreMetaverse.Imaging.Skia.SkiaTextureCodec.Decode(System.IO.Stream stream) libremetaverse-imaging-skia libremetaverse_imaging_skia::SkiaTextureCodec::decode pub fn decode(&self, stream: Box) -> Result shared_self,owned sync Result<_, crate::Error> direct_snake_case method mapped @@ -11994,7 +11994,7 @@ M:LibreMetaverse.LoggedOutEventArgs.#ctor(System.Collections.Generic.List{LibreM M:LibreMetaverse.Logger.BeginClientScope(LibreMetaverse.GridClient) method System.IDisposable LibreMetaverse.Logger.BeginClientScope(LibreMetaverse.GridClient client) libremetaverse libremetaverse::Logger::begin_client_scope pub fn begin_client_scope(client: libremetaverse::GridClient) -> Result owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Logger.BeginRegionScope(LibreMetaverse.Simulator) method System.IDisposable LibreMetaverse.Logger.BeginRegionScope(LibreMetaverse.Simulator simulator) libremetaverse libremetaverse::Logger::begin_region_scope pub fn begin_region_scope(simulator: libremetaverse::Simulator) -> Result owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Logger.BeginScope(System.Object) method System.IDisposable LibreMetaverse.Logger.BeginScope(System.Object state) libremetaverse libremetaverse::Logger::begin_scope pub fn begin_scope(state: libremetaverse_types::compat::Object) -> Result owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Logger.CreateDefaultConsoleLoggerFactory method Microsoft.Extensions.Logging.ILoggerFactory LibreMetaverse.Logger.CreateDefaultConsoleLoggerFactory() libremetaverse libremetaverse::Logger::create_default_console_logger_factory pub fn create_default_console_logger_factory() -> Result none sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Logger.CreateDefaultConsoleLoggerFactory method Microsoft.Extensions.Logging.ILoggerFactory LibreMetaverse.Logger.CreateDefaultConsoleLoggerFactory() libremetaverse libremetaverse::Logger::create_default_console_logger_factory pub fn create_default_console_logger_factory() -> Result, crate::Error> none sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Logger.Critical(System.Object,LibreMetaverse.GridClient) method System.Void LibreMetaverse.Logger.Critical(System.Object message, LibreMetaverse.GridClient client = default) libremetaverse libremetaverse::Logger::critical_with_object_grid_client pub fn critical_with_object_grid_client(message: libremetaverse_types::compat::Object, client: Option) -> Result<(), crate::Error> owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped M:LibreMetaverse.Logger.Critical(System.Object,System.Exception,LibreMetaverse.GridClient) method System.Void LibreMetaverse.Logger.Critical(System.Object message, System.Exception exception, LibreMetaverse.GridClient client = default) libremetaverse libremetaverse::Logger::critical_with_object_exception_grid_client pub fn critical_with_object_exception_grid_client(message: libremetaverse_types::compat::Object, exception: libremetaverse_types::compat::ExternalError, client: Option) -> Result<(), crate::Error> owned,owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped M:LibreMetaverse.Logger.Critical(System.Object,System.Exception,System.String) method System.Void LibreMetaverse.Logger.Critical(System.Object message, System.Exception exception, System.String clientName) libremetaverse libremetaverse::Logger::critical_with_object_exception_string pub fn critical_with_object_exception_string(message: libremetaverse_types::compat::Object, exception: libremetaverse_types::compat::ExternalError, client_name: String) -> Result<(), crate::Error> owned,owned,owned sync Result<_, crate::Error> descriptive_overload_name method mapped @@ -12020,7 +12020,7 @@ M:LibreMetaverse.Logger.LogCallback.#ctor(System.Object,System.IntPtr) construct M:LibreMetaverse.Logger.LogCallback.BeginInvoke(System.Object,Microsoft.Extensions.Logging.LogLevel,System.AsyncCallback,System.Object) method System.IAsyncResult LibreMetaverse.Logger.LogCallback.BeginInvoke(System.Object message, Microsoft.Extensions.Logging.LogLevel level, System.AsyncCallback callback, System.Object object) libremetaverse libremetaverse::LoggerLogCallback::begin_invoke pub fn begin_invoke(&self, message: libremetaverse_types::compat::Object, level: libremetaverse::logging::LogLevel, callback: Box, object: libremetaverse_types::compat::Object) -> Result, crate::Error> shared_self,owned,owned,owned,owned sync Result<_, crate::Error> direct_snake_case native_callback_replaces_delegate_apm intentional_difference M:LibreMetaverse.Logger.LogCallback.EndInvoke(System.IAsyncResult) method System.Void LibreMetaverse.Logger.LogCallback.EndInvoke(System.IAsyncResult result) libremetaverse libremetaverse::LoggerLogCallback::end_invoke pub fn end_invoke(&self, result: Box) -> Result<(), crate::Error> shared_self,owned sync Result<_, crate::Error> direct_snake_case native_callback_replaces_delegate_apm intentional_difference M:LibreMetaverse.Logger.LogCallback.Invoke(System.Object,Microsoft.Extensions.Logging.LogLevel) method System.Void LibreMetaverse.Logger.LogCallback.Invoke(System.Object message, Microsoft.Extensions.Logging.LogLevel level) libremetaverse libremetaverse::LoggerLogCallback::invoke pub fn invoke(&self, message: libremetaverse_types::compat::Object, level: libremetaverse::logging::LogLevel) -> Result<(), crate::Error> shared_self,owned,owned sync Result<_, crate::Error> direct_snake_case method mapped -M:LibreMetaverse.Logger.SetLoggerFactory(Microsoft.Extensions.Logging.ILoggerFactory,System.String) method System.Void LibreMetaverse.Logger.SetLoggerFactory(Microsoft.Extensions.Logging.ILoggerFactory factory, System.String name) libremetaverse libremetaverse::Logger::set_logger_factory pub fn set_logger_factory(factory: libremetaverse::logging::ILoggerFactory, name: String) -> Result<(), crate::Error> owned,owned sync Result<_, crate::Error> direct_snake_case method mapped +M:LibreMetaverse.Logger.SetLoggerFactory(Microsoft.Extensions.Logging.ILoggerFactory,System.String) method System.Void LibreMetaverse.Logger.SetLoggerFactory(Microsoft.Extensions.Logging.ILoggerFactory factory, System.String name) libremetaverse libremetaverse::Logger::set_logger_factory pub fn set_logger_factory(factory: Box, name: String) -> Result<(), crate::Error> owned,owned sync Result<_, crate::Error> direct_snake_case method mapped M:LibreMetaverse.Logger.Shutdown method System.Void LibreMetaverse.Logger.Shutdown() libremetaverse libremetaverse::Logger::shutdown_with_method pub fn shutdown_with_method() -> Result<(), crate::Error> none sync Result<_, crate::Error> descriptive_overload_name method mapped M:LibreMetaverse.Logger.ShutdownAsync(System.Nullable{System.TimeSpan},System.Threading.CancellationToken) method System.Threading.Tasks.Task LibreMetaverse.Logger.ShutdownAsync(System.Nullable timeout = default, System.Threading.CancellationToken cancellationToken = default) libremetaverse libremetaverse::Logger::shutdown_with_nullable_cancellation_token pub async fn shutdown_with_nullable_cancellation_token(timeout: Option>, cancellation_token: Option) -> Result optional_owned,optional_owned async Result<_, crate::Error> descriptive_overload_name method mapped M:LibreMetaverse.Logger.Trace(System.Object,LibreMetaverse.GridClient) method System.Void LibreMetaverse.Logger.Trace(System.Object message, LibreMetaverse.GridClient client = default) libremetaverse libremetaverse::Logger::trace_with_object_grid_client pub fn trace_with_object_grid_client(message: libremetaverse_types::compat::Object, client: Option) -> Result<(), crate::Error> owned,optional_owned sync Result<_, crate::Error> descriptive_overload_name method mapped diff --git a/api/SHIM-COVERAGE.md b/api/SHIM-COVERAGE.md index 271c710..a622131 100644 --- a/api/SHIM-COVERAGE.md +++ b/api/SHIM-COVERAGE.md @@ -5,17 +5,17 @@ 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.Imaging.Abstractions` | 3 | 20 | pending milestone issue | -| `LibreMetaverse.Imaging.Skia` | 1 | 3 | pending milestone issue | +| `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 | -| `LibreMetaverse.PrimMesher` | 17 | 207 | pending milestone issue | +| `LibreMetaverse.PrimMesher` | 17 | 207 | callable failure-only shim | | `LibreMetaverse.RLV` | 28 | 499 | pending milestone issue | -| `LibreMetaverse.Rendering.MeshFoundry` | 1 | 14 | pending milestone issue | -| `LibreMetaverse.Rendering.Simple` | 1 | 6 | pending milestone issue | +| `LibreMetaverse.Rendering.MeshFoundry` | 1 | 14 | callable failure-only shim | +| `LibreMetaverse.Rendering.Simple` | 1 | 6 | callable failure-only shim | | `LibreMetaverse.StructuredData` | 16 | 295 | callable failure-only shim | | `LibreMetaverse.Types` | 45 | 942 | callable failure-only shim | | `LibreMetaverse.Utilities` | 3 | 13 | pending milestone issue | | `LibreMetaverse.Voice.Vivox` | 64 | 531 | pending milestone issue | | `LibreMetaverse.Voice.WebRTC` | 12 | 210 | pending milestone issue | -Current callable coverage: **61 types / 1,237 members**. +Current callable coverage: **84 types / 1,487 members**. diff --git a/crates/libremetaverse-imaging-skia/src/generated.rs b/crates/libremetaverse-imaging-skia/src/generated.rs index 6f997b6..9d816f2 100644 --- a/crates/libremetaverse-imaging-skia/src/generated.rs +++ b/crates/libremetaverse-imaging-skia/src/generated.rs @@ -1,11 +1,35 @@ -// @generated by tools/generate_surface.py; do not edit by hand. -// Source: LibreMetaverse 2aa70bb68513b39795da5d13c88f31b86e85a3ba +// @generated by tools/generate_api_shims.py; do not edit by hand. +#![allow(clippy::missing_errors_doc)] +#![allow(clippy::must_use_candidate)] +#![allow(clippy::all, clippy::pedantic, dead_code, unused_variables)] #![allow(non_camel_case_types)] +#![allow(non_snake_case)] -/// `class` shim for C# `LibreMetaverse.Imaging.Skia.SkiaTextureCodec`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +/// C# type: `T:LibreMetaverse.Imaging.Skia.SkiaTextureCodec`. pub struct SkiaTextureCodec; impl SkiaTextureCodec { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.Imaging.Skia.SkiaTextureCodec"; - pub const CSHARP_KIND: &'static str = "class"; + /// C# member: `M:LibreMetaverse.Imaging.Skia.SkiaTextureCodec.#ctor`. + pub fn new() -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Imaging.Skia.SkiaTextureCodec.#ctor", + ) + } + /// C# member: `M:LibreMetaverse.Imaging.Skia.SkiaTextureCodec.Decode(System.IO.Stream)`. + pub fn decode( + &self, + stream: Box, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Imaging.Skia.SkiaTextureCodec.Decode(System.IO.Stream)", + ) + } + /// C# member: `M:LibreMetaverse.Imaging.Skia.SkiaTextureCodec.ToManagedImage(SkiaSharp.SKBitmap)`. + pub fn to_managed_image( + bitmap: libremetaverse_imaging_skia::backend::SKBitmap, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Imaging.Skia.SkiaTextureCodec.ToManagedImage(SkiaSharp.SKBitmap)", + ) + } } +impl libremetaverse_imaging::ITextureCodec for SkiaTextureCodec {} diff --git a/crates/libremetaverse-imaging-skia/src/lib.rs b/crates/libremetaverse-imaging-skia/src/lib.rs index 268f17a..734ca36 100644 --- a/crates/libremetaverse-imaging-skia/src/lib.rs +++ b/crates/libremetaverse-imaging-skia/src/lib.rs @@ -1,5 +1,12 @@ //! Skia imaging adapter corresponding to `LibreMetaverse.Imaging.Skia`. +extern crate self as libremetaverse_imaging_skia; + +pub mod backend { + /// Project-owned bitmap boundary; no `SkiaSharp` API is copied. + pub struct SKBitmap; +} + mod generated; pub use generated::*; diff --git a/crates/libremetaverse-imaging/src/generated.rs b/crates/libremetaverse-imaging/src/generated.rs index 8e01e3f..e6d296f 100644 --- a/crates/libremetaverse-imaging/src/generated.rs +++ b/crates/libremetaverse-imaging/src/generated.rs @@ -1,24 +1,100 @@ -// @generated by tools/generate_surface.py; do not edit by hand. -// Source: LibreMetaverse 2aa70bb68513b39795da5d13c88f31b86e85a3ba +// @generated by tools/generate_api_shims.py; do not edit by hand. +#![allow(clippy::missing_errors_doc)] +#![allow(clippy::must_use_candidate)] +#![allow(clippy::all, clippy::pedantic, dead_code, unused_variables)] #![allow(non_camel_case_types)] +#![allow(non_snake_case)] -/// Shim for C# `LibreMetaverse.Imaging.ITextureCodec`. +/// C# type: `T:LibreMetaverse.Imaging.ITextureCodec`. pub trait ITextureCodec { - const CSHARP_NAME: &'static str = "LibreMetaverse.Imaging.ITextureCodec"; + /// C# member: `M:LibreMetaverse.Imaging.ITextureCodec.Decode(System.IO.Stream)`. + fn decode( + &self, + stream: Box, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Imaging.ITextureCodec.Decode(System.IO.Stream)", + ) + } } -/// `enum` shim for C# `LibreMetaverse.Imaging.ImageChannels`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct ImageChannels; -impl ImageChannels { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.Imaging.ImageChannels"; - pub const CSHARP_KIND: &'static str = "enum"; +/// C# type: `T:LibreMetaverse.Imaging.ManagedImage`. +pub struct ManagedImage { + /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Alpha`. + pub alpha: Vec, + /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Blue`. + pub blue: Vec, + /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Bump`. + pub bump: Vec, + /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Channels`. + pub channels: libremetaverse_imaging::ManagedImageImageChannels, + /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Green`. + pub green: Vec, + /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Height`. + pub height: i32, + /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Red`. + pub red: Vec, + /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Width`. + pub width: i32, + data: Vec, } - -/// `class` shim for C# `LibreMetaverse.Imaging.ManagedImage`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct ManagedImage; impl ManagedImage { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.Imaging.ManagedImage"; - pub const CSHARP_KIND: &'static str = "class"; + /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.#ctor(System.Int32,System.Int32,LibreMetaverse.Imaging.ManagedImage.ImageChannels)`. + pub fn new( + width: i32, + height: i32, + channels: libremetaverse_imaging::ManagedImageImageChannels, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Imaging.ManagedImage.#ctor(System.Int32,System.Int32,LibreMetaverse.Imaging.ManagedImage.ImageChannels)", + ) + } + /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.Clear`. + pub fn clear(&self) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented("M:LibreMetaverse.Imaging.ManagedImage.Clear") + } + /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.Clone`. + pub fn clone(&self) -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.Imaging.ManagedImage.Clone") + } + /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.ConvertChannels(LibreMetaverse.Imaging.ManagedImage.ImageChannels)`. + pub fn convert_channels( + &self, + channels: libremetaverse_imaging::ManagedImageImageChannels, + ) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Imaging.ManagedImage.ConvertChannels(LibreMetaverse.Imaging.ManagedImage.ImageChannels)", + ) + } + /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.ExportRaw`. + pub fn export_raw(&self) -> Result, crate::Error> { + libremetaverse_types::not_implemented("M:LibreMetaverse.Imaging.ManagedImage.ExportRaw") + } + /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.ResizeBilinear(System.Int32,System.Int32)`. + pub fn resize_bilinear(&self, width: i32, height: i32) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Imaging.ManagedImage.ResizeBilinear(System.Int32,System.Int32)", + ) + } + /// C# member: `M:LibreMetaverse.Imaging.ManagedImage.ResizeNearestNeighbor(System.Int32,System.Int32)`. + pub fn resize_nearest_neighbor(&self, width: i32, height: i32) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Imaging.ManagedImage.ResizeNearestNeighbor(System.Int32,System.Int32)", + ) + } +} + +/// C# type: `T:LibreMetaverse.Imaging.ManagedImage.ImageChannels`. +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] +#[repr(transparent)] +pub struct ManagedImageImageChannels(pub i32); +impl ManagedImageImageChannels { + /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.ImageChannels.Alpha`. + pub const ALPHA: Self = Self(4); + /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.ImageChannels.Bump`. + pub const BUMP: Self = Self(8); + /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.ImageChannels.Color`. + pub const COLOR: Self = Self(2); + /// C# member: `F:LibreMetaverse.Imaging.ManagedImage.ImageChannels.Gray`. + pub const GRAY: Self = Self(1); } diff --git a/crates/libremetaverse-imaging/src/lib.rs b/crates/libremetaverse-imaging/src/lib.rs index 02b7b71..d45b3fb 100644 --- a/crates/libremetaverse-imaging/src/lib.rs +++ b/crates/libremetaverse-imaging/src/lib.rs @@ -1,5 +1,15 @@ //! Imaging abstractions corresponding to `LibreMetaverse.Imaging.Abstractions`. +extern crate self as libremetaverse_imaging; + +pub mod codec { + pub trait IImage {} + pub trait IImageCreator {} + pub struct ImageCreator(pub std::marker::PhantomData); + pub struct InterleavedImage; + pub struct BlkImgDataSrc; +} + mod generated; pub use generated::*; diff --git a/crates/libremetaverse-prim-mesher/src/generated.rs b/crates/libremetaverse-prim-mesher/src/generated.rs index 5aeeeb7..8d0df13 100644 --- a/crates/libremetaverse-prim-mesher/src/generated.rs +++ b/crates/libremetaverse-prim-mesher/src/generated.rs @@ -1,139 +1,941 @@ -// @generated by tools/generate_surface.py; do not edit by hand. -// Source: LibreMetaverse 2aa70bb68513b39795da5d13c88f31b86e85a3ba +// @generated by tools/generate_api_shims.py; do not edit by hand. +#![allow(clippy::missing_errors_doc)] +#![allow(clippy::must_use_candidate)] +#![allow(clippy::all, clippy::pedantic, dead_code, unused_variables)] #![allow(non_camel_case_types)] +#![allow(non_snake_case)] -/// `struct` shim for C# `LibreMetaverse.PrimMesher.Coord`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct Coord; +/// C# type: `T:LibreMetaverse.PrimMesher.Coord`. +pub struct Coord { + /// C# member: `F:LibreMetaverse.PrimMesher.Coord.X`. + pub x: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Coord.Y`. + pub y: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Coord.Z`. + pub z: f32, +} impl Coord { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.Coord"; - pub const CSHARP_KIND: &'static str = "struct"; + /// C# member: `M:LibreMetaverse.PrimMesher.Coord.#ctor(System.Single,System.Single,System.Single)`. + pub fn new(x: f32, y: f32, z: f32) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Coord.#ctor(System.Single,System.Single,System.Single)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Coord.Cross(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord)`. + pub fn cross( + c1: libremetaverse_prim_mesher::Coord, + c2: libremetaverse_prim_mesher::Coord, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Coord.Cross(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Coord.Invert`. + pub fn invert(&mut self) -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Coord.Invert") + } + /// C# member: `M:LibreMetaverse.PrimMesher.Coord.Length`. + pub fn length(&mut self) -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Coord.Length") + } + /// C# member: `M:LibreMetaverse.PrimMesher.Coord.Normalize`. + pub fn normalize(&mut self) -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Coord.Normalize") + } + /// C# member: `M:LibreMetaverse.PrimMesher.Coord.ToString`. + pub fn to_string(&self) -> String { + libremetaverse_types::unimplemented_api!("M:LibreMetaverse.PrimMesher.Coord.ToString") + } + /// C# member: `M:LibreMetaverse.PrimMesher.Coord.op_Addition(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord)`. + pub fn add( + v: libremetaverse_prim_mesher::Coord, + a: libremetaverse_prim_mesher::Coord, + ) -> libremetaverse_prim_mesher::Coord { + libremetaverse_types::unimplemented_api!( + "M:LibreMetaverse.PrimMesher.Coord.op_Addition(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord)" + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Coord.op_Multiply(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord)`. + pub fn mul_with_coord_coord( + v: libremetaverse_prim_mesher::Coord, + m: libremetaverse_prim_mesher::Coord, + ) -> libremetaverse_prim_mesher::Coord { + libremetaverse_types::unimplemented_api!( + "M:LibreMetaverse.PrimMesher.Coord.op_Multiply(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord)" + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Coord.op_Multiply(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Quat)`. + pub fn mul_with_coord_quat( + v: libremetaverse_prim_mesher::Coord, + q: libremetaverse_prim_mesher::Quat, + ) -> libremetaverse_prim_mesher::Coord { + libremetaverse_types::unimplemented_api!( + "M:LibreMetaverse.PrimMesher.Coord.op_Multiply(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Quat)" + ) + } } -/// `struct` shim for C# `LibreMetaverse.PrimMesher.Face`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct Face; +/// C# type: `T:LibreMetaverse.PrimMesher.Face`. +pub struct Face { + /// C# member: `F:LibreMetaverse.PrimMesher.Face.n1`. + pub n1: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Face.n2`. + pub n2: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Face.n3`. + pub n3: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Face.primFace`. + pub prim_face: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Face.uv1`. + pub uv1: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Face.uv2`. + pub uv2: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Face.uv3`. + pub uv3: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Face.v1`. + pub v1: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Face.v2`. + pub v2: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Face.v3`. + pub v3: i32, +} impl Face { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.Face"; - pub const CSHARP_KIND: &'static str = "struct"; + /// C# member: `M:LibreMetaverse.PrimMesher.Face.#ctor(System.Int32,System.Int32,System.Int32)`. + pub fn new_with_int32_int32_int32(v1: i32, v2: i32, v3: i32) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Face.#ctor(System.Int32,System.Int32,System.Int32)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Face.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)`. + pub fn new_with_int32_int32_int32_int32_int32_int32( + v1: i32, + v2: i32, + v3: i32, + n1: i32, + n2: i32, + n3: i32, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Face.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Face.SurfaceNormal(System.Collections.Generic.List{LibreMetaverse.PrimMesher.Coord})`. + pub fn surface_normal( + &mut self, + coord_list: Vec, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Face.SurfaceNormal(System.Collections.Generic.List{LibreMetaverse.PrimMesher.Coord})", + ) + } } -/// `class` shim for C# `LibreMetaverse.PrimMesher.ObjMesh`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct ObjMesh; +/// C# type: `T:LibreMetaverse.PrimMesher.ObjMesh`. +pub struct ObjMesh { + /// C# member: `F:LibreMetaverse.PrimMesher.ObjMesh.meshName`. + pub mesh_name: String, + /// C# member: `F:LibreMetaverse.PrimMesher.ObjMesh.numPrimFaces`. + pub num_prim_faces: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.ObjMesh.viewerPolygons`. + pub viewer_polygons: Vec>, + /// C# member: `F:LibreMetaverse.PrimMesher.ObjMesh.viewerVertices`. + pub viewer_vertices: Vec>, +} impl ObjMesh { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.ObjMesh"; - pub const CSHARP_KIND: &'static str = "class"; + /// C# member: `M:LibreMetaverse.PrimMesher.ObjMesh.#ctor(System.IO.StreamReader)`. + pub fn new_with_stream_reader( + sr: libremetaverse_types::compat::StreamReader, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.ObjMesh.#ctor(System.IO.StreamReader)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.ObjMesh.#ctor(System.String)`. + pub fn new_with_string(path: String) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.ObjMesh.#ctor(System.String)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.ObjMesh.GetVertexIndexer`. + pub fn get_vertex_indexer( + &self, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.ObjMesh.GetVertexIndexer", + ) + } } -/// `class` shim for C# `LibreMetaverse.PrimMesher.Path`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct Path; +/// C# type: `T:LibreMetaverse.PrimMesher.Path`. +pub struct Path { + /// C# member: `F:LibreMetaverse.PrimMesher.Path.dimpleBegin`. + pub dimple_begin: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.dimpleEnd`. + pub dimple_end: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.holeSizeX`. + pub hole_size_x: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.holeSizeY`. + pub hole_size_y: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.pathCutBegin`. + pub path_cut_begin: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.pathCutEnd`. + pub path_cut_end: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.pathNodes`. + pub path_nodes: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.radius`. + pub radius: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.revolutions`. + pub revolutions: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.skew`. + pub skew: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.stepsPerRevolution`. + pub steps_per_revolution: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.taperX`. + pub taper_x: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.taperY`. + pub taper_y: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.topShearX`. + pub top_shear_x: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.topShearY`. + pub top_shear_y: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.twistBegin`. + pub twist_begin: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Path.twistEnd`. + pub twist_end: f32, +} impl Path { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.Path"; - pub const CSHARP_KIND: &'static str = "class"; + /// C# member: `M:LibreMetaverse.PrimMesher.Path.#ctor`. + pub fn new() -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Path.#ctor") + } + /// C# member: `M:LibreMetaverse.PrimMesher.Path.Create(LibreMetaverse.PrimMesher.PathType,System.Int32)`. + pub fn create( + &self, + path_type: libremetaverse_prim_mesher::PathType, + steps: i32, + ) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Path.Create(LibreMetaverse.PrimMesher.PathType,System.Int32)", + ) + } } -/// `struct` shim for C# `LibreMetaverse.PrimMesher.PathNode`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct PathNode; -impl PathNode { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.PathNode"; - pub const CSHARP_KIND: &'static str = "struct"; +/// C# type: `T:LibreMetaverse.PrimMesher.PathNode`. +pub struct PathNode { + /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.percentOfPath`. + pub percent_of_path: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.position`. + pub position: libremetaverse_prim_mesher::Coord, + /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.rotation`. + pub rotation: libremetaverse_prim_mesher::Quat, + /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.xScale`. + pub x_scale: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.yScale`. + pub y_scale: f32, +} +impl PathNode {} + +/// C# type: `T:LibreMetaverse.PrimMesher.PathType`. +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] +#[repr(i32)] +pub enum PathType { + /// C# member: `F:LibreMetaverse.PrimMesher.PathType.Circular`. + Circular = 1, + /// C# member: `F:LibreMetaverse.PrimMesher.PathType.Flexible`. + Flexible = 2, + /// C# member: `F:LibreMetaverse.PrimMesher.PathType.Linear`. + Linear = 0, } -/// `enum` shim for C# `LibreMetaverse.PrimMesher.PathType`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct PathType; -impl PathType { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.PathType"; - pub const CSHARP_KIND: &'static str = "enum"; +/// C# type: `T:LibreMetaverse.PrimMesher.PrimMesh`. +pub struct PrimMesh { + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.calcVertexNormals`. + pub calc_vertex_normals: bool, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.coords`. + pub coords: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.dimpleBegin`. + pub dimple_begin: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.dimpleEnd`. + pub dimple_end: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.errorMessage`. + pub error_message: String, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.faces`. + pub faces: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.holeSizeX`. + pub hole_size_x: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.holeSizeY`. + pub hole_size_y: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.normals`. + pub normals: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.numPrimFaces`. + pub num_prim_faces: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.pathCutBegin`. + pub path_cut_begin: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.pathCutEnd`. + pub path_cut_end: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.radius`. + pub radius: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.revolutions`. + pub revolutions: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.skew`. + pub skew: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.sphereMode`. + pub sphere_mode: bool, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.stepsPerRevolution`. + pub steps_per_revolution: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.taperX`. + pub taper_x: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.taperY`. + pub taper_y: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.topShearX`. + pub top_shear_x: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.topShearY`. + pub top_shear_y: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.twistBegin`. + pub twist_begin: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.twistEnd`. + pub twist_end: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.viewerFaces`. + pub viewer_faces: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.viewerMode`. + pub viewer_mode: bool, } - -/// `class` shim for C# `LibreMetaverse.PrimMesher.PrimMesh`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct PrimMesh; impl PrimMesh { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.PrimMesh"; - pub const CSHARP_KIND: &'static str = "class"; + /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.#ctor(System.Int32,System.Single,System.Single,System.Single,System.Int32)`. + pub fn new( + sides: i32, + profile_start: f32, + profile_end: f32, + hollow: f32, + hollow_sides: i32, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.PrimMesh.#ctor(System.Int32,System.Single,System.Single,System.Single,System.Int32)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.AddPos(System.Single,System.Single,System.Single)`. + pub fn add_pos(&self, x: f32, y: f32, z: f32) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.PrimMesh.AddPos(System.Single,System.Single,System.Single)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.AddRot(LibreMetaverse.PrimMesher.Quat)`. + pub fn add_rot(&self, q: libremetaverse_prim_mesher::Quat) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.PrimMesh.AddRot(LibreMetaverse.PrimMesher.Quat)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.CalcNormals`. + pub fn calc_normals(&self) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.PrimMesh.CalcNormals") + } + /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.Copy`. + pub fn copy(&self) -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.PrimMesh.Copy") + } + /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.DumpRaw(System.String,System.String,System.String)`. + pub fn dump_raw(&self, path: String, name: String, title: String) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.PrimMesh.DumpRaw(System.String,System.String,System.String)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.Extrude(LibreMetaverse.PrimMesher.PathType)`. + pub fn extrude( + &self, + path_type: libremetaverse_prim_mesher::PathType, + ) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.PrimMesh.Extrude(LibreMetaverse.PrimMesher.PathType)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.GetVertexIndexer`. + pub fn get_vertex_indexer( + &self, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.PrimMesh.GetVertexIndexer", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.ParamsToDisplayString`. + pub fn params_to_display_string(&self) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.PrimMesh.ParamsToDisplayString", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.Scale(System.Single,System.Single,System.Single)`. + pub fn scale(&self, x: f32, y: f32, z: f32) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.PrimMesh.Scale(System.Single,System.Single,System.Single)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.SurfaceNormal(System.Int32)`. + pub fn surface_normal( + &self, + face_index: i32, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.PrimMesh.SurfaceNormal(System.Int32)", + ) + } + /// C# member: `P:LibreMetaverse.PrimMesher.PrimMesh.HasHollow`. + pub fn has_hollow(&self) -> bool { + libremetaverse_types::unimplemented_api!("P:LibreMetaverse.PrimMesher.PrimMesh.HasHollow") + } + /// Setter for C# member: `P:LibreMetaverse.PrimMesher.PrimMesh.HasHollow`. + pub fn set_has_hollow(&mut self, value: bool) { + libremetaverse_types::unimplemented_api!("P:LibreMetaverse.PrimMesher.PrimMesh.HasHollow") + } + /// C# member: `P:LibreMetaverse.PrimMesher.PrimMesh.HasProfileCut`. + pub fn has_profile_cut(&self) -> bool { + libremetaverse_types::unimplemented_api!( + "P:LibreMetaverse.PrimMesher.PrimMesh.HasProfileCut" + ) + } + /// Setter for C# member: `P:LibreMetaverse.PrimMesher.PrimMesh.HasProfileCut`. + pub fn set_has_profile_cut(&mut self, value: bool) { + libremetaverse_types::unimplemented_api!( + "P:LibreMetaverse.PrimMesher.PrimMesh.HasProfileCut" + ) + } + /// C# member: `P:LibreMetaverse.PrimMesher.PrimMesh.ProfileHollowFaceNumber`. + pub fn profile_hollow_face_number(&self) -> i32 { + libremetaverse_types::unimplemented_api!( + "P:LibreMetaverse.PrimMesher.PrimMesh.ProfileHollowFaceNumber" + ) + } + /// Setter for C# member: `P:LibreMetaverse.PrimMesher.PrimMesh.ProfileHollowFaceNumber`. + pub fn set_profile_hollow_face_number(&mut self, value: i32) { + libremetaverse_types::unimplemented_api!( + "P:LibreMetaverse.PrimMesher.PrimMesh.ProfileHollowFaceNumber" + ) + } + /// C# member: `P:LibreMetaverse.PrimMesher.PrimMesh.ProfileOuterFaceNumber`. + pub fn profile_outer_face_number(&self) -> i32 { + libremetaverse_types::unimplemented_api!( + "P:LibreMetaverse.PrimMesher.PrimMesh.ProfileOuterFaceNumber" + ) + } + /// Setter for C# member: `P:LibreMetaverse.PrimMesher.PrimMesh.ProfileOuterFaceNumber`. + pub fn set_profile_outer_face_number(&mut self, value: i32) { + libremetaverse_types::unimplemented_api!( + "P:LibreMetaverse.PrimMesher.PrimMesh.ProfileOuterFaceNumber" + ) + } } -/// `class` shim for C# `LibreMetaverse.PrimMesher.Profile`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct Profile; +/// C# type: `T:LibreMetaverse.PrimMesher.Profile`. +pub struct Profile { + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.bottomFaceNumber`. + pub bottom_face_number: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.calcVertexNormals`. + pub calc_vertex_normals: bool, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.coords`. + pub coords: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.cut1CoordIndices`. + pub cut1_coord_indices: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.cut2CoordIndices`. + pub cut2_coord_indices: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.cutNormal1`. + pub cut_normal1: libremetaverse_prim_mesher::Coord, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.cutNormal2`. + pub cut_normal2: libremetaverse_prim_mesher::Coord, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.errorMessage`. + pub error_message: String, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.faceNormal`. + pub face_normal: libremetaverse_prim_mesher::Coord, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.faceNumbers`. + pub face_numbers: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.faceUVs`. + pub face_u_vs: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.faces`. + pub faces: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.hollowCoordIndices`. + pub hollow_coord_indices: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.hollowFaceNumber`. + pub hollow_face_number: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.numHollowVerts`. + pub num_hollow_verts: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.numOuterVerts`. + pub num_outer_verts: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.numPrimFaces`. + pub num_prim_faces: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.outerCoordIndices`. + pub outer_coord_indices: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.outerFaceNumber`. + pub outer_face_number: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.us`. + pub us: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.Profile.vertexNormals`. + pub vertex_normals: Vec, +} impl Profile { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.Profile"; - pub const CSHARP_KIND: &'static str = "class"; + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.#ctor`. + pub fn new_with_constructor() -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Profile.#ctor") + } + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.#ctor(System.Int32,System.Single,System.Single,System.Single,System.Int32,System.Boolean,System.Boolean)`. + pub fn new_with_int32_single_single_single_int32_boolean_boolean( + sides: i32, + profile_start: f32, + profile_end: f32, + hollow: f32, + hollow_sides: i32, + create_faces: bool, + calc_vertex_normals: bool, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Profile.#ctor(System.Int32,System.Single,System.Single,System.Single,System.Int32,System.Boolean,System.Boolean)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.AddPos(LibreMetaverse.PrimMesher.Coord)`. + pub fn add_pos_with_coord( + &self, + v: libremetaverse_prim_mesher::Coord, + ) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Profile.AddPos(LibreMetaverse.PrimMesher.Coord)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.AddPos(System.Single,System.Single,System.Single)`. + pub fn add_pos_with_single_single_single( + &self, + x: f32, + y: f32, + z: f32, + ) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Profile.AddPos(System.Single,System.Single,System.Single)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.AddRot(LibreMetaverse.PrimMesher.Quat)`. + pub fn add_rot(&self, q: libremetaverse_prim_mesher::Quat) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Profile.AddRot(LibreMetaverse.PrimMesher.Quat)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.AddValue2FaceNormalIndices(System.Int32)`. + pub fn add_value2_face_normal_indices(&self, num: i32) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Profile.AddValue2FaceNormalIndices(System.Int32)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.AddValue2FaceVertexIndices(System.Int32)`. + pub fn add_value2_face_vertex_indices(&self, num: i32) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Profile.AddValue2FaceVertexIndices(System.Int32)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.Copy`. + pub fn copy_with_method(&self) -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Profile.Copy") + } + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.Copy(System.Boolean)`. + pub fn copy_with_boolean( + &self, + need_faces: bool, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Profile.Copy(System.Boolean)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.DumpRaw(System.String,System.String,System.String)`. + pub fn dump_raw(&self, path: String, name: String, title: String) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Profile.DumpRaw(System.String,System.String,System.String)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.FlipNormals`. + pub fn flip_normals(&self) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Profile.FlipNormals") + } + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.MakeFaceUVs`. + pub fn make_face_u_vs(&self) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Profile.MakeFaceUVs") + } + /// C# member: `M:LibreMetaverse.PrimMesher.Profile.Scale(System.Single,System.Single)`. + pub fn scale(&self, x: f32, y: f32) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Profile.Scale(System.Single,System.Single)", + ) + } } -/// `struct` shim for C# `LibreMetaverse.PrimMesher.Quat`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct Quat; +/// C# type: `T:LibreMetaverse.PrimMesher.Quat`. +pub struct Quat { + /// C# member: `F:LibreMetaverse.PrimMesher.Quat.W`. + pub w: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Quat.X`. + pub x: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Quat.Y`. + pub y: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.Quat.Z`. + pub z: f32, +} impl Quat { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.Quat"; - pub const CSHARP_KIND: &'static str = "struct"; + /// C# member: `M:LibreMetaverse.PrimMesher.Quat.#ctor(LibreMetaverse.PrimMesher.Coord,System.Single)`. + pub fn new_with_coord_single( + axis: libremetaverse_prim_mesher::Coord, + angle: f32, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Quat.#ctor(LibreMetaverse.PrimMesher.Coord,System.Single)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Quat.#ctor(System.Single,System.Single,System.Single,System.Single)`. + pub fn new_with_single_single_single_single( + x: f32, + y: f32, + z: f32, + w: f32, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.Quat.#ctor(System.Single,System.Single,System.Single,System.Single)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.Quat.Length`. + pub fn length(&mut self) -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Quat.Length") + } + /// C# member: `M:LibreMetaverse.PrimMesher.Quat.Normalize`. + pub fn normalize(&mut self) -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Quat.Normalize") + } + /// C# member: `M:LibreMetaverse.PrimMesher.Quat.ToString`. + pub fn to_string(&self) -> String { + libremetaverse_types::unimplemented_api!("M:LibreMetaverse.PrimMesher.Quat.ToString") + } + /// C# member: `M:LibreMetaverse.PrimMesher.Quat.op_Multiply(LibreMetaverse.PrimMesher.Quat,LibreMetaverse.PrimMesher.Quat)`. + pub fn mul( + q1: libremetaverse_prim_mesher::Quat, + q2: libremetaverse_prim_mesher::Quat, + ) -> libremetaverse_prim_mesher::Quat { + libremetaverse_types::unimplemented_api!( + "M:LibreMetaverse.PrimMesher.Quat.op_Multiply(LibreMetaverse.PrimMesher.Quat,LibreMetaverse.PrimMesher.Quat)" + ) + } } -/// `class` shim for C# `LibreMetaverse.PrimMesher.SculptMap`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct SculptMap; +/// C# type: `T:LibreMetaverse.PrimMesher.SculptMap`. +pub struct SculptMap { + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMap.blueBytes`. + pub blue_bytes: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMap.greenBytes`. + pub green_bytes: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMap.height`. + pub height: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMap.redBytes`. + pub red_bytes: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMap.width`. + pub width: i32, +} impl SculptMap { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.SculptMap"; - pub const CSHARP_KIND: &'static str = "class"; + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMap.#ctor`. + pub fn new_with_constructor() -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.SculptMap.#ctor") + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMap.#ctor(LibreMetaverse.Imaging.ManagedImage,System.Int32)`. + pub fn new_with_managed_image_int32( + image: libremetaverse_imaging::ManagedImage, + lod: i32, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMap.#ctor(LibreMetaverse.Imaging.ManagedImage,System.Int32)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMap.ToRows(System.Boolean)`. + pub fn to_rows( + &self, + mirror: bool, + ) -> Result>, crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMap.ToRows(System.Boolean)", + ) + } } -/// `class` shim for C# `LibreMetaverse.PrimMesher.SculptMesh`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct SculptMesh; +/// C# type: `T:LibreMetaverse.PrimMesher.SculptMesh`. +pub struct SculptMesh { + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.coords`. + pub coords: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.faces`. + pub faces: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.normals`. + pub normals: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.uvs`. + pub uvs: Vec, + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.viewerFaces`. + pub viewer_faces: Vec, +} impl SculptMesh { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.SculptMesh"; - pub const CSHARP_KIND: &'static str = "class"; + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Int32,System.Boolean)`. + pub fn new_with_managed_image_sculpt_type_int32_boolean( + sculpt_image: libremetaverse_imaging::ManagedImage, + sculpt_type: libremetaverse_prim_mesher::SculptMeshSculptType, + lod: i32, + viewer_mode: bool, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Int32,System.Boolean)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Int32,System.Boolean,System.Boolean,System.Boolean)`. + pub fn new_with_managed_image_sculpt_type_int32_boolean_boolean_boolean( + sculpt_image: libremetaverse_imaging::ManagedImage, + sculpt_type: libremetaverse_prim_mesher::SculptMeshSculptType, + lod: i32, + viewer_mode: bool, + mirror: bool, + invert: bool, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Int32,System.Boolean,System.Boolean,System.Boolean)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(LibreMetaverse.PrimMesher.SculptMesh)`. + pub fn new_with_sculpt_mesh( + sm: libremetaverse_prim_mesher::SculptMesh, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(LibreMetaverse.PrimMesher.SculptMesh)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(System.Collections.Generic.List{System.Collections.Generic.List{LibreMetaverse.PrimMesher.Coord}},LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Boolean,System.Boolean,System.Boolean)`. + pub fn new_with_list_sculpt_type_boolean_boolean_boolean( + rows: Vec>, + sculpt_type: libremetaverse_prim_mesher::SculptMeshSculptType, + viewer_mode: bool, + mirror: bool, + invert: bool, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(System.Collections.Generic.List{System.Collections.Generic.List{LibreMetaverse.PrimMesher.Coord}},LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Boolean,System.Boolean,System.Boolean)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(System.Single[0:,0:],System.Single,System.Single,System.Single,System.Single,System.Boolean)`. + pub fn new_with_single_array_single_single_single_single_boolean( + z_map: Vec, + x_begin: f32, + x_end: f32, + y_begin: f32, + y_end: f32, + viewer_mode: bool, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(System.Single[0:,0:],System.Single,System.Single,System.Single,System.Single,System.Boolean)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(System.String,LibreMetaverse.Imaging.ITextureCodec,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)`. + pub fn new_with_string_i_texture_codec_int32_int32_int32_int32_int32( + file_name: String, + codec: Box, + sculpt_type: i32, + lod: i32, + viewer_mode: i32, + mirror: i32, + invert: i32, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(System.String,LibreMetaverse.Imaging.ITextureCodec,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.AddPos(System.Single,System.Single,System.Single)`. + pub fn add_pos(&self, x: f32, y: f32, z: f32) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMesh.AddPos(System.Single,System.Single,System.Single)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.AddRot(LibreMetaverse.PrimMesher.Quat)`. + pub fn add_rot(&self, q: libremetaverse_prim_mesher::Quat) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMesh.AddRot(LibreMetaverse.PrimMesher.Quat)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.Copy`. + pub fn copy(&self) -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.SculptMesh.Copy") + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.DumpRaw(System.String,System.String,System.String)`. + pub fn dump_raw(&self, path: String, name: String, title: String) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMesh.DumpRaw(System.String,System.String,System.String)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.Scale(System.Single,System.Single,System.Single)`. + pub fn scale(&self, x: f32, y: f32, z: f32) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMesh.Scale(System.Single,System.Single,System.Single)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.SculptMeshFromFile(System.String,LibreMetaverse.Imaging.ITextureCodec,LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Int32,System.Boolean)`. + pub fn sculpt_mesh_from_file( + &self, + file_name: String, + codec: Box, + sculpt_type: libremetaverse_prim_mesher::SculptMeshSculptType, + lod: i32, + viewer_mode: bool, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.SculptMesh.SculptMeshFromFile(System.String,LibreMetaverse.Imaging.ITextureCodec,LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Int32,System.Boolean)", + ) + } } -/// `enum` shim for C# `LibreMetaverse.PrimMesher.SculptType`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct SculptType; -impl SculptType { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.SculptType"; - pub const CSHARP_KIND: &'static str = "enum"; +/// C# type: `T:LibreMetaverse.PrimMesher.SculptMesh.SculptType`. +#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] +#[repr(i32)] +pub enum SculptMeshSculptType { + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.SculptType.cylinder`. + Cylinder = 4, + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.SculptType.plane`. + Plane = 3, + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.SculptType.sphere`. + Sphere = 1, + /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.SculptType.torus`. + Torus = 2, } -/// `struct` shim for C# `LibreMetaverse.PrimMesher.UVCoord`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct UVCoord; +/// C# type: `T:LibreMetaverse.PrimMesher.UVCoord`. +pub struct UVCoord { + /// C# member: `F:LibreMetaverse.PrimMesher.UVCoord.U`. + pub u: f32, + /// C# member: `F:LibreMetaverse.PrimMesher.UVCoord.V`. + pub v: f32, +} impl UVCoord { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.UVCoord"; - pub const CSHARP_KIND: &'static str = "struct"; + /// C# member: `M:LibreMetaverse.PrimMesher.UVCoord.#ctor(System.Single,System.Single)`. + pub fn new(u: f32, v: f32) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.UVCoord.#ctor(System.Single,System.Single)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.UVCoord.Flip`. + pub fn flip(&mut self) -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.UVCoord.Flip") + } } -/// `class` shim for C# `LibreMetaverse.PrimMesher.VertexIndexer`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct VertexIndexer; +/// C# type: `T:LibreMetaverse.PrimMesher.VertexIndexer`. +pub struct VertexIndexer { + /// C# member: `F:LibreMetaverse.PrimMesher.VertexIndexer.numPrimFaces`. + pub num_prim_faces: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.VertexIndexer.viewerPolygons`. + pub viewer_polygons: Vec>, + /// C# member: `F:LibreMetaverse.PrimMesher.VertexIndexer.viewerVertices`. + pub viewer_vertices: Vec>, +} impl VertexIndexer { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.VertexIndexer"; - pub const CSHARP_KIND: &'static str = "class"; + /// C# member: `M:LibreMetaverse.PrimMesher.VertexIndexer.#ctor`. + pub fn new_with_constructor() -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.VertexIndexer.#ctor") + } + /// C# member: `M:LibreMetaverse.PrimMesher.VertexIndexer.#ctor(LibreMetaverse.PrimMesher.PrimMesh)`. + pub fn new_with_prim_mesh( + prim_mesh: libremetaverse_prim_mesher::PrimMesh, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.VertexIndexer.#ctor(LibreMetaverse.PrimMesher.PrimMesh)", + ) + } } -/// `struct` shim for C# `LibreMetaverse.PrimMesher.ViewerFace`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct ViewerFace; +/// C# type: `T:LibreMetaverse.PrimMesher.ViewerFace`. +pub struct ViewerFace { + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.coordIndex1`. + pub coord_index1: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.coordIndex2`. + pub coord_index2: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.coordIndex3`. + pub coord_index3: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.n1`. + pub n1: libremetaverse_prim_mesher::Coord, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.n2`. + pub n2: libremetaverse_prim_mesher::Coord, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.n3`. + pub n3: libremetaverse_prim_mesher::Coord, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.primFaceNumber`. + pub prim_face_number: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.uv1`. + pub uv1: libremetaverse_prim_mesher::UVCoord, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.uv2`. + pub uv2: libremetaverse_prim_mesher::UVCoord, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.uv3`. + pub uv3: libremetaverse_prim_mesher::UVCoord, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.v1`. + pub v1: libremetaverse_prim_mesher::Coord, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.v2`. + pub v2: libremetaverse_prim_mesher::Coord, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.v3`. + pub v3: libremetaverse_prim_mesher::Coord, +} impl ViewerFace { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.ViewerFace"; - pub const CSHARP_KIND: &'static str = "struct"; + /// C# member: `M:LibreMetaverse.PrimMesher.ViewerFace.#ctor(System.Int32)`. + pub fn new(prim_face_number: i32) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.ViewerFace.#ctor(System.Int32)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.ViewerFace.AddPos(System.Single,System.Single,System.Single)`. + pub fn add_pos(&mut self, x: f32, y: f32, z: f32) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.ViewerFace.AddPos(System.Single,System.Single,System.Single)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.ViewerFace.AddRot(LibreMetaverse.PrimMesher.Quat)`. + pub fn add_rot(&mut self, q: libremetaverse_prim_mesher::Quat) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.ViewerFace.AddRot(LibreMetaverse.PrimMesher.Quat)", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.ViewerFace.CalcSurfaceNormal`. + pub fn calc_surface_normal(&mut self) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.ViewerFace.CalcSurfaceNormal", + ) + } + /// C# member: `M:LibreMetaverse.PrimMesher.ViewerFace.Scale(System.Single,System.Single,System.Single)`. + pub fn scale(&mut self, x: f32, y: f32, z: f32) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.ViewerFace.Scale(System.Single,System.Single,System.Single)", + ) + } } -/// `struct` shim for C# `LibreMetaverse.PrimMesher.ViewerPolygon`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct ViewerPolygon; +/// C# type: `T:LibreMetaverse.PrimMesher.ViewerPolygon`. +pub struct ViewerPolygon { + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerPolygon.v1`. + pub v1: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerPolygon.v2`. + pub v2: i32, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerPolygon.v3`. + pub v3: i32, +} impl ViewerPolygon { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.ViewerPolygon"; - pub const CSHARP_KIND: &'static str = "struct"; + /// C# member: `M:LibreMetaverse.PrimMesher.ViewerPolygon.#ctor(System.Int32,System.Int32,System.Int32)`. + pub fn new(v1: i32, v2: i32, v3: i32) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.ViewerPolygon.#ctor(System.Int32,System.Int32,System.Int32)", + ) + } } -/// `struct` shim for C# `LibreMetaverse.PrimMesher.ViewerVertex`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] -pub struct ViewerVertex; -impl ViewerVertex { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.PrimMesher.ViewerVertex"; - pub const CSHARP_KIND: &'static str = "struct"; +/// C# type: `T:LibreMetaverse.PrimMesher.ViewerVertex`. +pub struct ViewerVertex { + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerVertex.n`. + pub n: libremetaverse_prim_mesher::Coord, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerVertex.uv`. + pub uv: libremetaverse_prim_mesher::UVCoord, + /// C# member: `F:LibreMetaverse.PrimMesher.ViewerVertex.v`. + pub v: libremetaverse_prim_mesher::Coord, +} +impl ViewerVertex { + /// C# member: `M:LibreMetaverse.PrimMesher.ViewerVertex.#ctor(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.UVCoord)`. + pub fn new( + coord: libremetaverse_prim_mesher::Coord, + normal: libremetaverse_prim_mesher::Coord, + uv: libremetaverse_prim_mesher::UVCoord, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.PrimMesher.ViewerVertex.#ctor(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.UVCoord)", + ) + } } diff --git a/crates/libremetaverse-prim-mesher/src/lib.rs b/crates/libremetaverse-prim-mesher/src/lib.rs index 5ea6ff2..0a4c655 100644 --- a/crates/libremetaverse-prim-mesher/src/lib.rs +++ b/crates/libremetaverse-prim-mesher/src/lib.rs @@ -1,5 +1,7 @@ //! Primitive mesher corresponding to `LibreMetaverse.PrimMesher`. +extern crate self as libremetaverse_prim_mesher; + mod generated; pub use generated::*; diff --git a/crates/libremetaverse-rendering-mesh-foundry/src/generated.rs b/crates/libremetaverse-rendering-mesh-foundry/src/generated.rs index e113128..6639cf3 100644 --- a/crates/libremetaverse-rendering-mesh-foundry/src/generated.rs +++ b/crates/libremetaverse-rendering-mesh-foundry/src/generated.rs @@ -1,11 +1,154 @@ -// @generated by tools/generate_surface.py; do not edit by hand. -// Source: LibreMetaverse 2aa70bb68513b39795da5d13c88f31b86e85a3ba +// @generated by tools/generate_api_shims.py; do not edit by hand. +#![allow(clippy::missing_errors_doc)] +#![allow(clippy::must_use_candidate)] +#![allow(clippy::all, clippy::pedantic, dead_code, unused_variables)] #![allow(non_camel_case_types)] +#![allow(non_snake_case)] -/// `class` shim for C# `LibreMetaverse.Rendering.MeshFoundry`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +/// C# type: `T:LibreMetaverse.Rendering.MeshFoundry`. pub struct MeshFoundry; impl MeshFoundry { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.Rendering.MeshFoundry"; - pub const CSHARP_KIND: &'static str = "class"; + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.#ctor`. + pub fn new() -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.Rendering.MeshFoundry.#ctor") + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`. + pub fn generate_faceted_mesh( + &self, + prim: libremetaverse::Primitive, + lod: libremetaverse::rendering::DetailLevel, + ) -> Result, crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive,System.Byte[])`. + pub fn generate_faceted_mesh_mesh_with_primitive_bytes( + &self, + prim: libremetaverse::Primitive, + mesh_data: Vec, + ) -> Result, crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive,System.Byte[])", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive,System.Byte[],LibreMetaverse.Rendering.DetailLevel)`. + pub fn generate_faceted_mesh_mesh_with_primitive_bytes_detail_level( + &self, + prim: libremetaverse::Primitive, + mesh_data: Vec, + lod: libremetaverse::rendering::DetailLevel, + ) -> Result, crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive,System.Byte[],LibreMetaverse.Rendering.DetailLevel)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)`. + pub fn generate_faceted_sculpt_mesh( + &self, + prim: libremetaverse::Primitive, + sculpt_texture: libremetaverse_imaging::ManagedImage, + lod: libremetaverse::rendering::DetailLevel, + ) -> Result, crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`. + pub fn generate_simple_mesh( + &self, + prim: libremetaverse::Primitive, + lod: libremetaverse::rendering::DetailLevel, + ) -> Result, crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMeshWithNormals(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`. + pub fn generate_simple_mesh_with_normals( + &self, + prim: libremetaverse::Primitive, + lod: libremetaverse::rendering::DetailLevel, + ) -> Result, crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMeshWithNormals(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)`. + pub fn generate_simple_sculpt_mesh( + &self, + prim: libremetaverse::Primitive, + sculpt_texture: libremetaverse_imaging::ManagedImage, + lod: libremetaverse::rendering::DetailLevel, + ) -> Result, crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive,System.Byte[])`. + pub fn mesh_sub_mesh_as_convex_hulls_with_primitive_bytes( + &self, + prim: libremetaverse::Primitive, + compressed_mesh_data: Vec, + ) -> Result>, crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive,System.Byte[])", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive,System.Byte[],System.Collections.Generic.List{LibreMetaverse.Vector3}@)`. + pub fn mesh_sub_mesh_as_convex_hulls_with_primitive_bytes_list( + &self, + prim: libremetaverse::Primitive, + compressed_mesh_data: Vec, + bounding_hull: &mut Vec, + ) -> Result>, crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive,System.Byte[],System.Collections.Generic.List{LibreMetaverse.Vector3}@)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsSimpleMesh(LibreMetaverse.Primitive,System.Byte[])`. + pub fn mesh_sub_mesh_as_simple_mesh( + &self, + prim: libremetaverse::Primitive, + compressed_mesh_data: Vec, + ) -> Result, crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsSimpleMesh(LibreMetaverse.Primitive,System.Byte[])", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.TerrainMesh(System.Single[0:,0:],System.Single,System.Single,System.Single,System.Single)`. + pub fn terrain_mesh( + &self, + z_map: Vec, + x_begin: f32, + x_end: f32, + y_begin: f32, + y_end: f32, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.TerrainMesh(System.Single[0:,0:],System.Single,System.Single,System.Single,System.Single)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.TransformTexCoords(System.Collections.Generic.List{LibreMetaverse.Rendering.Vertex},LibreMetaverse.Vector3,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Vector3)`. + pub fn transform_tex_coords( + &self, + vertices: Vec, + center: libremetaverse_types::Vector3, + te_face: libremetaverse::PrimitiveTextureEntryFace, + prim_scale: libremetaverse_types::Vector3, + ) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.TransformTexCoords(System.Collections.Generic.List{LibreMetaverse.Rendering.Vertex},LibreMetaverse.Vector3,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Vector3)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.UnpackMesh(System.Byte[])`. + pub fn unpack_mesh( + &self, + asset_data: Vec, + ) -> Result, crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.MeshFoundry.UnpackMesh(System.Byte[])", + ) + } } +impl libremetaverse::rendering::IRendering for MeshFoundry {} diff --git a/crates/libremetaverse-rendering-mesh-foundry/src/lib.rs b/crates/libremetaverse-rendering-mesh-foundry/src/lib.rs index b078d82..c55339e 100644 --- a/crates/libremetaverse-rendering-mesh-foundry/src/lib.rs +++ b/crates/libremetaverse-rendering-mesh-foundry/src/lib.rs @@ -1,5 +1,7 @@ //! `MeshFoundry` renderer corresponding to `LibreMetaverse.Rendering.MeshFoundry`. +extern crate self as libremetaverse_rendering_mesh_foundry; + mod generated; pub use generated::*; diff --git a/crates/libremetaverse-rendering-simple/Cargo.toml b/crates/libremetaverse-rendering-simple/Cargo.toml index f378053..c218802 100644 --- a/crates/libremetaverse-rendering-simple/Cargo.toml +++ b/crates/libremetaverse-rendering-simple/Cargo.toml @@ -9,6 +9,7 @@ description = "Simple renderer shims for the MetaCrate LibreMetaverse rewrite" [dependencies] libremetaverse = { path = "../libremetaverse" } +libremetaverse-imaging = { path = "../libremetaverse-imaging" } libremetaverse-types = { path = "../libremetaverse-types" } [lints] diff --git a/crates/libremetaverse-rendering-simple/src/generated.rs b/crates/libremetaverse-rendering-simple/src/generated.rs index c9c3d22..c02b3ca 100644 --- a/crates/libremetaverse-rendering-simple/src/generated.rs +++ b/crates/libremetaverse-rendering-simple/src/generated.rs @@ -1,11 +1,70 @@ -// @generated by tools/generate_surface.py; do not edit by hand. -// Source: LibreMetaverse 2aa70bb68513b39795da5d13c88f31b86e85a3ba +// @generated by tools/generate_api_shims.py; do not edit by hand. +#![allow(clippy::missing_errors_doc)] +#![allow(clippy::must_use_candidate)] +#![allow(clippy::all, clippy::pedantic, dead_code, unused_variables)] #![allow(non_camel_case_types)] +#![allow(non_snake_case)] -/// `class` shim for C# `LibreMetaverse.Rendering.SimpleRenderer`; members remain intentionally unimplemented. -#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)] +/// C# type: `T:LibreMetaverse.Rendering.SimpleRenderer`. pub struct SimpleRenderer; impl SimpleRenderer { - pub const CSHARP_NAME: &'static str = "LibreMetaverse.Rendering.SimpleRenderer"; - pub const CSHARP_KIND: &'static str = "class"; + /// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.#ctor`. + pub fn new() -> Result { + libremetaverse_types::not_implemented("M:LibreMetaverse.Rendering.SimpleRenderer.#ctor") + } + /// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`. + pub fn generate_faceted_mesh( + &self, + prim: libremetaverse::Primitive, + lod: libremetaverse::rendering::DetailLevel, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)`. + pub fn generate_faceted_sculpt_mesh( + &self, + prim: libremetaverse::Primitive, + sculpt_texture: libremetaverse_imaging::ManagedImage, + lod: libremetaverse::rendering::DetailLevel, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`. + pub fn generate_simple_mesh( + &self, + prim: libremetaverse::Primitive, + lod: libremetaverse::rendering::DetailLevel, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)`. + pub fn generate_simple_sculpt_mesh( + &self, + prim: libremetaverse::Primitive, + sculpt_texture: libremetaverse_imaging::ManagedImage, + lod: libremetaverse::rendering::DetailLevel, + ) -> Result { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)", + ) + } + /// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.TransformTexCoords(System.Collections.Generic.List{LibreMetaverse.Rendering.Vertex},LibreMetaverse.Vector3,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Vector3)`. + pub fn transform_tex_coords( + &self, + vertices: Vec, + center: libremetaverse_types::Vector3, + te_face: libremetaverse::PrimitiveTextureEntryFace, + prim_scale: libremetaverse_types::Vector3, + ) -> Result<(), crate::Error> { + libremetaverse_types::not_implemented( + "M:LibreMetaverse.Rendering.SimpleRenderer.TransformTexCoords(System.Collections.Generic.List{LibreMetaverse.Rendering.Vertex},LibreMetaverse.Vector3,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Vector3)", + ) + } } +impl libremetaverse::rendering::IRendering for SimpleRenderer {} diff --git a/crates/libremetaverse-rendering-simple/src/lib.rs b/crates/libremetaverse-rendering-simple/src/lib.rs index 19c0574..15c6834 100644 --- a/crates/libremetaverse-rendering-simple/src/lib.rs +++ b/crates/libremetaverse-rendering-simple/src/lib.rs @@ -1,5 +1,7 @@ //! Simple renderer corresponding to `LibreMetaverse.Rendering.Simple`. +extern crate self as libremetaverse_rendering_simple; + mod generated; pub use generated::*; diff --git a/crates/libremetaverse-types/src/compat.rs b/crates/libremetaverse-types/src/compat.rs index 6ba8245..cce1338 100644 --- a/crates/libremetaverse-types/src/compat.rs +++ b/crates/libremetaverse-types/src/compat.rs @@ -54,6 +54,9 @@ pub struct IEqualityComparer(pub PhantomData); #[derive(Clone, Debug, Eq, PartialEq)] pub struct StringReader(pub String); +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct StreamReader(pub Vec); + #[derive(Clone, Debug, Eq, PartialEq)] pub struct StringWriter(pub String); diff --git a/crates/libremetaverse/src/lib.rs b/crates/libremetaverse/src/lib.rs index ed69271..63d6b66 100644 --- a/crates/libremetaverse/src/lib.rs +++ b/crates/libremetaverse/src/lib.rs @@ -2,6 +2,7 @@ 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; diff --git a/tests/compat/tests/rendering_shims.rs b/tests/compat/tests/rendering_shims.rs new file mode 100644 index 0000000..756b8a4 --- /dev/null +++ b/tests/compat/tests/rendering_shims.rs @@ -0,0 +1,42 @@ +use libremetaverse::Primitive; +use libremetaverse::rendering::{DetailLevel, SimpleMesh}; +use libremetaverse_prim_mesher::PrimMesh; +use libremetaverse_rendering_mesh_foundry::MeshFoundry; +use libremetaverse_rendering_simple::SimpleRenderer; + +#[test] +fn mesh_and_renderer_calls_compile_with_typed_elements() { + let _: fn(i32, f32, f32, f32, i32) -> Result = + PrimMesh::new; + let _: fn( + &SimpleRenderer, + Primitive, + DetailLevel, + ) -> Result = + SimpleRenderer::generate_simple_mesh; + let _: fn( + &MeshFoundry, + Primitive, + DetailLevel, + ) -> Result, libremetaverse_rendering_mesh_foundry::Error> = + MeshFoundry::generate_simple_mesh; +} + +#[test] +fn owned_constructors_fail_with_exact_member_ids() { + let Err(prim_error) = PrimMesh::new(4, 0.0, 1.0, 0.0, 4) else { + panic!("failure-only PrimMesh constructor unexpectedly returned a value"); + }; + assert_eq!( + prim_error.csharp_member(), + "M:LibreMetaverse.PrimMesher.PrimMesh.#ctor(System.Int32,System.Single,System.Single,System.Single,System.Int32)" + ); + + let Err(renderer_error) = SimpleRenderer::new() else { + panic!("failure-only renderer constructor unexpectedly returned a value"); + }; + assert_eq!( + renderer_error.csharp_member(), + "M:LibreMetaverse.Rendering.SimpleRenderer.#ctor" + ); +} diff --git a/tools/generate_api_shims.py b/tools/generate_api_shims.py index 465bf26..d9c20b9 100644 --- a/tools/generate_api_shims.py +++ b/tools/generate_api_shims.py @@ -19,6 +19,11 @@ LEDGER = ROOT / "api/RUST-MAPPING.tsv" COVERAGE = ROOT / "api/SHIM-COVERAGE.md" TARGETS = { + "LibreMetaverse.Imaging.Abstractions": ROOT / "crates/libremetaverse-imaging/src/generated.rs", + "LibreMetaverse.Imaging.Skia": ROOT / "crates/libremetaverse-imaging-skia/src/generated.rs", + "LibreMetaverse.PrimMesher": ROOT / "crates/libremetaverse-prim-mesher/src/generated.rs", + "LibreMetaverse.Rendering.MeshFoundry": ROOT / "crates/libremetaverse-rendering-mesh-foundry/src/generated.rs", + "LibreMetaverse.Rendering.Simple": ROOT / "crates/libremetaverse-rendering-simple/src/generated.rs", "LibreMetaverse.Types": ROOT / "crates/libremetaverse-types/src/generated.rs", "LibreMetaverse.StructuredData": ROOT / "crates/libremetaverse-structured-data/src/generated.rs", } @@ -52,6 +57,7 @@ PRIVATE_LAYOUTS = { "T:LibreMetaverse.StructuredData.OSDString": [("value", "String")], "T:LibreMetaverse.StructuredData.OSDUUID": [("value", "libremetaverse_types::UUID")], "T:LibreMetaverse.StructuredData.OSDUri": [("value", "libremetaverse_types::compat::Uri")], + "T:LibreMetaverse.Imaging.ManagedImage": [("data", "Vec")], } @@ -65,8 +71,10 @@ def format_rust(source: str) -> str: input=source, text=True, capture_output=True, - check=True, + check=False, ) + if result.returncode: + raise ValueError(result.stderr.strip()) return result.stdout @@ -183,7 +191,7 @@ def render_type(item: dict, type_row: dict, member_rows: dict[str, dict[str, str if not trait: for interface in item.get("interfaces", []): base, arguments, _ = mapping.type_parts(interface) - if base not in mapper.interfaces: + if base not in mapper.interfaces or not base.startswith("LibreMetaverse."): continue mapped_arguments = [mapper.type(argument, None, set(names)) for argument in arguments] trait_path = mapper.resolved[base] + generic_suffix(mapped_arguments) @@ -194,7 +202,14 @@ def render_type(item: dict, type_row: dict, member_rows: dict[str, dict[str, str def generate_sources(catalog: dict) -> tuple[dict[Path, str], dict[str, tuple[int, int]]]: type_rows, resolved = mapping.build_type_rows(catalog) type_by_id = {row["csharp_type_id"]: row for row in type_rows} - interfaces = {mapping.type_parts(item["signature"])[0] for assembly in catalog["assemblies"] for item in assembly["types"] if item["kind"] == "interface"} + interfaces = { + *{mapping.type_parts(item["signature"])[0] for assembly in catalog["assemblies"] for item in assembly["types"] if item["kind"] == "interface"}, + *{ + mapping.type_parts(item["signature"])[0] + for item in catalog["external_types"] + if item["kind"] == "interface" and not item["assembly"]["name"].startswith("System") + }, + } mapper = mapping.Mapper(resolved, interfaces) member_rows = {row["csharp_id"]: row for row in csv.DictReader(LEDGER.open(), delimiter="\t")} outputs = {} diff --git a/tools/generate_rust_mapping.py b/tools/generate_rust_mapping.py index b95399f..66d26ff 100644 --- a/tools/generate_rust_mapping.py +++ b/tools/generate_rust_mapping.py @@ -826,7 +826,14 @@ def coverage_report(catalog: dict, type_rows: list[dict[str, str]], member_rows: def generate() -> dict[Path, str]: catalog = json.loads(CATALOG.read_text()) type_rows, resolved = build_type_rows(catalog) - interfaces = {type_parts(item["signature"])[0] for assembly in catalog["assemblies"] for item in assembly["types"] if item["kind"] == "interface"} + interfaces = { + *{type_parts(item["signature"])[0] for assembly in catalog["assemblies"] for item in assembly["types"] if item["kind"] == "interface"}, + *{ + type_parts(item["signature"])[0] + for item in catalog["external_types"] + if item["kind"] == "interface" and not item["assembly"]["name"].startswith("System") + }, + } mapper = Mapper(resolved, interfaces) member_rows = build_member_rows(catalog, mapper) validate(catalog, type_rows, member_rows, mapper)