Complete Rust API and migration documentation (#102)
Native code generation / deterministic (push) Failing after 2m5s
Concurrency and resource soak audit / soak (push) Failing after 6m22s
Documentation / documentation (push) Failing after 1m25s
Imaging and meshing gate / native (push) Failing after 2m47s
JPEG 2000 feature / linux (push) Successful in 3m54s
Release platform and feature matrix / audit (push) Successful in 37s
Native Rust workspace compile / compile (push) Failing after 1m14s
Skia feature / linux (push) Successful in 30m46s
Dependency and supply-chain audit / audit (push) Failing after 8m56s
Release platform and feature matrix / matrix (false, linux-stable-minimal, x86_64-unknown-linux-gnu, stable) (push) Failing after 9m16s
Release platform and feature matrix / matrix (false, macos-stable-portable, x86_64-apple-darwin, stable) (push) Failing after 1m20s
Release platform and feature matrix / matrix (false, windows-stable-portable, x86_64-pc-windows-gnu, stable) (push) Failing after 1m18s
Release platform and feature matrix / matrix (true, linux-stable-default, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-features, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-release-surface, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-msrv-portable, x86_64-unknown-linux-gnu, 1.96.0) (push) Has been cancelled

This commit is contained in:
hugo committed 2026-08-12 00:24:06 +00:00
1 parent 3db144da63
commit 5eb3f01122
37 files changed
+133519 -48

No files matched your search

@@ -6,7 +6,22 @@
#![allow(non_snake_case)]
/// C# type: `T:LibreMetaverse.Imaging.Skia.SkiaTextureCodec`.
///
/// Native Rust mapping of C# `LibreMetaverse.Imaging.Skia.SkiaTextureCodec` using decision
/// `native_metacrate_type`. See the [pinned C# source](https://github.com/cinderblocks/libremetaverse/tree/2aa70bb68513b39795da5d13c88f31b86e85a3ba).
/// C# member: `M:LibreMetaverse.Imaging.Skia.SkiaTextureCodec.#ctor`.
///
/// C# signature: `LibreMetaverse.Imaging.Skia.SkiaTextureCodec()`.
/// Mapping contract: ownership `none`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
/// C# member: `M:LibreMetaverse.Imaging.Skia.SkiaTextureCodec.Decode(System.IO.Stream)`.
///
/// C# signature: `LibreMetaverse.Imaging.ManagedImage LibreMetaverse.Imaging.Skia.SkiaTextureCodec.Decode(System.IO.Stream stream)`.
/// Mapping contract: ownership `shared_self,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
/// C# member: `M:LibreMetaverse.Imaging.Skia.SkiaTextureCodec.ToManagedImage(SkiaSharp.SKBitmap)`.
///
/// C# signature: `LibreMetaverse.Imaging.ManagedImage LibreMetaverse.Imaging.Skia.SkiaTextureCodec.ToManagedImage(SkiaSharp.SKBitmap bitmap)`.
/// Mapping contract: ownership `owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub use crate::skia_codec::SkiaTextureCodec;
@@ -1,4 +1,9 @@
//! Skia imaging adapter corresponding to `LibreMetaverse.Imaging.Skia`.
//! Optional Skia imaging adapter corresponding to `LibreMetaverse.Imaging.Skia`.
//!
//! Enable `skia` for bounded `BMP`, `GIF`, `ICO`, `JPEG`, `PNG`, `WBMP`, and
//! `WebP` decoding.
//! The default build remains inert. See the crate README for native cache,
//! source-build, licensing, and cross-platform prerequisite details.
extern crate self as libremetaverse_imaging_skia;
@@ -6,30 +6,119 @@
#![allow(non_snake_case)]
/// C# type: `T:LibreMetaverse.Imaging.ITextureCodec`.
///
/// Native Rust mapping of C# `LibreMetaverse.Imaging.ITextureCodec` using decision
/// `native_metacrate_type`. See the [pinned C# source](https://github.com/cinderblocks/libremetaverse/tree/2aa70bb68513b39795da5d13c88f31b86e85a3ba).
/// C# member: `M:LibreMetaverse.Imaging.ITextureCodec.Decode(System.IO.Stream)`.
///
/// C# signature: `LibreMetaverse.Imaging.ManagedImage LibreMetaverse.Imaging.ITextureCodec.Decode(System.IO.Stream stream)`.
/// Mapping contract: ownership `shared_self,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub use crate::managed_image::ITextureCodec;
/// C# type: `T:LibreMetaverse.Imaging.ManagedImage`.
///
/// Native Rust mapping of C# `LibreMetaverse.Imaging.ManagedImage` using decision
/// `native_metacrate_type`. See the [pinned C# source](https://github.com/cinderblocks/libremetaverse/tree/2aa70bb68513b39795da5d13c88f31b86e85a3ba).
/// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Alpha`.
///
/// C# signature: `System.Byte[] LibreMetaverse.Imaging.ManagedImage.Alpha`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
/// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Blue`.
///
/// C# signature: `System.Byte[] LibreMetaverse.Imaging.ManagedImage.Blue`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
/// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Bump`.
///
/// C# signature: `System.Byte[] LibreMetaverse.Imaging.ManagedImage.Bump`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
/// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Channels`.
///
/// C# signature: `LibreMetaverse.Imaging.ManagedImage.ImageChannels LibreMetaverse.Imaging.ManagedImage.Channels`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
/// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Green`.
///
/// C# signature: `System.Byte[] LibreMetaverse.Imaging.ManagedImage.Green`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
/// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Height`.
///
/// C# signature: `System.Int32 LibreMetaverse.Imaging.ManagedImage.Height`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
/// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Red`.
///
/// C# signature: `System.Byte[] LibreMetaverse.Imaging.ManagedImage.Red`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
/// C# member: `F:LibreMetaverse.Imaging.ManagedImage.Width`.
///
/// C# signature: `System.Int32 LibreMetaverse.Imaging.ManagedImage.Width`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
/// C# member: `M:LibreMetaverse.Imaging.ManagedImage.#ctor(System.Int32,System.Int32,LibreMetaverse.Imaging.ManagedImage.ImageChannels)`.
///
/// C# signature: `LibreMetaverse.Imaging.ManagedImage(System.Int32 width, System.Int32 height, LibreMetaverse.Imaging.ManagedImage.ImageChannels channels)`.
/// Mapping contract: ownership `owned,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
/// C# member: `M:LibreMetaverse.Imaging.ManagedImage.Clear`.
///
/// C# signature: `System.Void LibreMetaverse.Imaging.ManagedImage.Clear()`.
/// Mapping contract: ownership `mutable_self`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
/// C# member: `M:LibreMetaverse.Imaging.ManagedImage.Clone`.
///
/// C# signature: `LibreMetaverse.Imaging.ManagedImage LibreMetaverse.Imaging.ManagedImage.Clone()`.
/// Mapping contract: ownership `shared_self`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
/// C# member: `M:LibreMetaverse.Imaging.ManagedImage.ConvertChannels(LibreMetaverse.Imaging.ManagedImage.ImageChannels)`.
///
/// C# signature: `System.Void LibreMetaverse.Imaging.ManagedImage.ConvertChannels(LibreMetaverse.Imaging.ManagedImage.ImageChannels channels)`.
/// Mapping contract: ownership `mutable_self,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
/// C# member: `M:LibreMetaverse.Imaging.ManagedImage.ExportRaw`.
///
/// C# signature: `System.Byte[] LibreMetaverse.Imaging.ManagedImage.ExportRaw()`.
/// Mapping contract: ownership `shared_self`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
/// C# member: `M:LibreMetaverse.Imaging.ManagedImage.ResizeBilinear(System.Int32,System.Int32)`.
///
/// C# signature: `System.Void LibreMetaverse.Imaging.ManagedImage.ResizeBilinear(System.Int32 width, System.Int32 height)`.
/// Mapping contract: ownership `mutable_self,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
/// C# member: `M:LibreMetaverse.Imaging.ManagedImage.ResizeNearestNeighbor(System.Int32,System.Int32)`.
///
/// C# signature: `System.Void LibreMetaverse.Imaging.ManagedImage.ResizeNearestNeighbor(System.Int32 width, System.Int32 height)`.
/// Mapping contract: ownership `mutable_self,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub use crate::managed_image::ManagedImage;
/// C# type: `T:LibreMetaverse.Imaging.ManagedImage.ImageChannels`.
///
/// Native Rust mapping of C# `LibreMetaverse.Imaging.ManagedImage.ImageChannels` using decision
/// `native_metacrate_type`. See the [pinned C# source](https://github.com/cinderblocks/libremetaverse/tree/2aa70bb68513b39795da5d13c88f31b86e85a3ba).
/// C# member: `F:LibreMetaverse.Imaging.ManagedImage.ImageChannels.Alpha`.
///
/// C# signature: `LibreMetaverse.Imaging.ManagedImage.ImageChannels LibreMetaverse.Imaging.ManagedImage.ImageChannels.Alpha`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
/// C# member: `F:LibreMetaverse.Imaging.ManagedImage.ImageChannels.Bump`.
///
/// C# signature: `LibreMetaverse.Imaging.ManagedImage.ImageChannels LibreMetaverse.Imaging.ManagedImage.ImageChannels.Bump`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
/// C# member: `F:LibreMetaverse.Imaging.ManagedImage.ImageChannels.Color`.
///
/// C# signature: `LibreMetaverse.Imaging.ManagedImage.ImageChannels LibreMetaverse.Imaging.ManagedImage.ImageChannels.Color`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
/// C# member: `F:LibreMetaverse.Imaging.ManagedImage.ImageChannels.Gray`.
///
/// C# signature: `LibreMetaverse.Imaging.ManagedImage.ImageChannels LibreMetaverse.Imaging.ManagedImage.ImageChannels.Gray`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
pub use crate::managed_image::ManagedImageImageChannels;
+5 -1
View File
@@ -1,4 +1,8 @@
//! Imaging abstractions corresponding to `LibreMetaverse.Imaging.Abstractions`.
//! Image and texture abstractions corresponding to `LibreMetaverse.Imaging`.
//!
//! The default surface provides managed images plus native `TGA`/`DDS` handling.
//! Enable `jpeg2000` only when the audited system `OpenJPEG` adapter is available;
//! ordinary users can consume the traits without a native image dependency.
extern crate self as libremetaverse_imaging;
File diff suppressed because it is too large. Load diff
+5 -1
View File
@@ -1,4 +1,8 @@
//! LSL parsing tools corresponding to `LibreMetaverse.LslTools`.
//! Native `LSL` tooling corresponding to `LibreMetaverse.LslTools`.
//!
//! This crate provides the bounded lexer, parser, diagnostics, syntax model,
//! and deterministic source generation used by editor and migration tooling.
//! It is pure Rust and does not require a grid connection.
extern crate self as libremetaverse_lsl_tools;
File diff suppressed because it is too large. Load diff
+5 -1
View File
@@ -1,4 +1,8 @@
//! Primitive mesher corresponding to `LibreMetaverse.PrimMesher`.
//! Native primitive mesher corresponding to `LibreMetaverse.PrimMesher`.
//!
//! Use it to turn checked legacy prim and sculpt parameters into deterministic
//! geometry and `OBJ` output. Input bounds and topology validation apply before
//! allocation; no renderer, grid session, or native library is required.
extern crate self as libremetaverse_prim_mesher;
@@ -6,13 +6,24 @@
#![allow(non_snake_case)]
/// C# type: `T:LibreMetaverse.Rendering.MeshFoundry`.
///
/// Native Rust mapping of C# `LibreMetaverse.Rendering.MeshFoundry` using decision
/// `native_metacrate_type`. See the [pinned C# source](https://github.com/cinderblocks/libremetaverse/tree/2aa70bb68513b39795da5d13c88f31b86e85a3ba).
pub use crate::mesh_foundry::MeshFoundry;
impl MeshFoundry {
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.#ctor`.
///
/// C# signature: `LibreMetaverse.Rendering.MeshFoundry()`.
/// Mapping contract: ownership `none`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn new() -> Result<Self, crate::Error> {
Self::native_new()
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`.
///
/// C# signature: `LibreMetaverse.Rendering.FacetedMesh LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMesh(LibreMetaverse.Primitive prim, LibreMetaverse.Rendering.DetailLevel lod)`.
/// Mapping contract: ownership `shared_self,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn generate_faceted_mesh(
&self,
prim: libremetaverse::Primitive,
@@ -21,6 +32,10 @@ impl MeshFoundry {
self.native_generate_faceted_mesh(prim, lod)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive,System.Byte[])`.
///
/// C# signature: `LibreMetaverse.Rendering.FacetedMesh LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive prim, System.Byte[] meshData)`.
/// Mapping contract: ownership `shared_self,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `descriptive_overload_name`; kind `method`.
pub fn generate_faceted_mesh_mesh_with_primitive_bytes(
&self,
prim: libremetaverse::Primitive,
@@ -33,6 +48,10 @@ impl MeshFoundry {
)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive,System.Byte[],LibreMetaverse.Rendering.DetailLevel)`.
///
/// C# signature: `LibreMetaverse.Rendering.FacetedMesh LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive prim, System.Byte[] meshData, LibreMetaverse.Rendering.DetailLevel lod)`.
/// Mapping contract: ownership `shared_self,owned,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `descriptive_overload_name`; kind `method`.
pub fn generate_faceted_mesh_mesh_with_primitive_bytes_detail_level(
&self,
prim: libremetaverse::Primitive,
@@ -42,6 +61,10 @@ impl MeshFoundry {
self.native_generate_faceted_mesh_mesh(prim, mesh_data, lod)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)`.
///
/// C# signature: `LibreMetaverse.Rendering.FacetedMesh LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedSculptMesh(LibreMetaverse.Primitive prim, LibreMetaverse.Imaging.ManagedImage sculptTexture, LibreMetaverse.Rendering.DetailLevel lod)`.
/// Mapping contract: ownership `shared_self,owned,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn generate_faceted_sculpt_mesh(
&self,
prim: libremetaverse::Primitive,
@@ -51,6 +74,10 @@ impl MeshFoundry {
self.native_generate_faceted_sculpt_mesh(prim, sculpt_texture, lod)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`.
///
/// C# signature: `LibreMetaverse.Rendering.SimpleMesh LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMesh(LibreMetaverse.Primitive prim, LibreMetaverse.Rendering.DetailLevel lod)`.
/// Mapping contract: ownership `shared_self,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn generate_simple_mesh(
&self,
prim: libremetaverse::Primitive,
@@ -59,6 +86,10 @@ impl MeshFoundry {
self.native_generate_simple_mesh(prim, lod, false)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMeshWithNormals(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`.
///
/// C# signature: `LibreMetaverse.Rendering.SimpleMesh LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMeshWithNormals(LibreMetaverse.Primitive prim, LibreMetaverse.Rendering.DetailLevel lod)`.
/// Mapping contract: ownership `shared_self,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn generate_simple_mesh_with_normals(
&self,
prim: libremetaverse::Primitive,
@@ -67,6 +98,10 @@ impl MeshFoundry {
self.native_generate_simple_mesh(prim, lod, true)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)`.
///
/// C# signature: `LibreMetaverse.Rendering.SimpleMesh LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleSculptMesh(LibreMetaverse.Primitive prim, LibreMetaverse.Imaging.ManagedImage sculptTexture, LibreMetaverse.Rendering.DetailLevel lod)`.
/// Mapping contract: ownership `shared_self,owned,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn generate_simple_sculpt_mesh(
&self,
prim: libremetaverse::Primitive,
@@ -76,6 +111,10 @@ impl MeshFoundry {
self.native_generate_simple_sculpt_mesh(prim, sculpt_texture, lod)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive,System.Byte[])`.
///
/// C# signature: `System.Collections.Generic.List<System.Collections.Generic.List<LibreMetaverse.Vector3>> LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive prim, System.Byte[] compressedMeshData)`.
/// Mapping contract: ownership `shared_self,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `descriptive_overload_name`; kind `method`.
pub fn mesh_sub_mesh_as_convex_hulls_with_primitive_bytes(
&self,
prim: libremetaverse::Primitive,
@@ -84,6 +123,10 @@ impl MeshFoundry {
self.native_mesh_sub_mesh_as_convex_hulls(prim, compressed_mesh_data, None)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive,System.Byte[],System.Collections.Generic.List{LibreMetaverse.Vector3}@)`.
///
/// C# signature: `System.Collections.Generic.List<System.Collections.Generic.List<LibreMetaverse.Vector3>> LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive prim, System.Byte[] compressedMeshData, out System.Collections.Generic.List<LibreMetaverse.Vector3>& boundingHull)`.
/// Mapping contract: ownership `shared_self,owned,owned,mutable_output`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `descriptive_overload_name`; kind `method`.
pub fn mesh_sub_mesh_as_convex_hulls_with_primitive_bytes_list(
&self,
prim: libremetaverse::Primitive,
@@ -93,6 +136,10 @@ impl MeshFoundry {
self.native_mesh_sub_mesh_as_convex_hulls(prim, compressed_mesh_data, Some(bounding_hull))
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsSimpleMesh(LibreMetaverse.Primitive,System.Byte[])`.
///
/// C# signature: `LibreMetaverse.Rendering.SimpleMesh LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsSimpleMesh(LibreMetaverse.Primitive prim, System.Byte[] compressedMeshData)`.
/// Mapping contract: ownership `shared_self,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn mesh_sub_mesh_as_simple_mesh(
&self,
prim: libremetaverse::Primitive,
@@ -101,6 +148,10 @@ impl MeshFoundry {
self.native_mesh_sub_mesh_as_simple_mesh(prim, compressed_mesh_data)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.TerrainMesh(System.Single[0:,0:],System.Single,System.Single,System.Single,System.Single)`.
///
/// C# signature: `LibreMetaverse.Rendering.Face LibreMetaverse.Rendering.MeshFoundry.TerrainMesh(System.Single[,] zMap, System.Single xBegin, System.Single xEnd, System.Single yBegin, System.Single yEnd)`.
/// Mapping contract: ownership `shared_self,owned,owned,owned,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn terrain_mesh(
&self,
z_map: Vec<Vec<f32>>,
@@ -112,6 +163,10 @@ impl MeshFoundry {
self.native_terrain_mesh(z_map, x_begin, x_end, y_begin, y_end)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.TransformTexCoords(System.Collections.Generic.List{LibreMetaverse.Rendering.Vertex},LibreMetaverse.Vector3,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Vector3)`.
///
/// C# signature: `System.Void LibreMetaverse.Rendering.MeshFoundry.TransformTexCoords(System.Collections.Generic.List<LibreMetaverse.Rendering.Vertex> vertices, LibreMetaverse.Vector3 center, LibreMetaverse.Primitive.TextureEntryFace teFace, LibreMetaverse.Vector3 primScale)`.
/// Mapping contract: ownership `shared_self,mutable_borrow,owned,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn transform_tex_coords(
&self,
vertices: &mut Vec<libremetaverse::rendering::Vertex>,
@@ -122,6 +177,10 @@ impl MeshFoundry {
self.native_transform_tex_coords(vertices, center, te_face, prim_scale)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.UnpackMesh(System.Byte[])`.
///
/// C# signature: `LibreMetaverse.StructuredData.OSDMap LibreMetaverse.Rendering.MeshFoundry.UnpackMesh(System.Byte[] assetData)`.
/// Mapping contract: ownership `shared_self,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn unpack_mesh(
&self,
asset_data: Vec<u8>,
@@ -1,4 +1,8 @@
//! Bounded native prim, sculpt, terrain, and LLSD mesh-asset rendering.
//! Bounded native prim, sculpt, terrain, and `LLSD` mesh-asset rendering.
//!
//! `MeshFoundry` consumes public meshing/imaging abstractions and produces checked
//! render meshes without a graphics API. The crate `README` documents topology,
//! material, coordinate, allocation, and migration behavior.
extern crate self as libremetaverse_rendering_mesh_foundry;
@@ -6,13 +6,24 @@
#![allow(non_snake_case)]
/// C# type: `T:LibreMetaverse.Rendering.SimpleRenderer`.
///
/// Native Rust mapping of C# `LibreMetaverse.Rendering.SimpleRenderer` using decision
/// `native_metacrate_type`. See the [pinned C# source](https://github.com/cinderblocks/libremetaverse/tree/2aa70bb68513b39795da5d13c88f31b86e85a3ba).
pub use crate::simple_renderer::SimpleRenderer;
impl SimpleRenderer {
/// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.#ctor`.
///
/// C# signature: `LibreMetaverse.Rendering.SimpleRenderer()`.
/// Mapping contract: ownership `none`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn new() -> Result<Self, crate::Error> {
Self::native_new()
}
/// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`.
///
/// C# signature: `LibreMetaverse.Rendering.FacetedMesh LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedMesh(LibreMetaverse.Primitive prim, LibreMetaverse.Rendering.DetailLevel lod)`.
/// Mapping contract: ownership `shared_self,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn generate_faceted_mesh(
&self,
prim: libremetaverse::Primitive,
@@ -21,6 +32,10 @@ impl SimpleRenderer {
self.native_generate_faceted_mesh(prim, lod)
}
/// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)`.
///
/// C# signature: `LibreMetaverse.Rendering.FacetedMesh LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedSculptMesh(LibreMetaverse.Primitive prim, LibreMetaverse.Imaging.ManagedImage sculptTexture, LibreMetaverse.Rendering.DetailLevel lod)`.
/// Mapping contract: ownership `shared_self,owned,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn generate_faceted_sculpt_mesh(
&self,
prim: libremetaverse::Primitive,
@@ -30,6 +45,10 @@ impl SimpleRenderer {
self.native_generate_faceted_sculpt_mesh(prim, sculpt_texture, lod)
}
/// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`.
///
/// C# signature: `LibreMetaverse.Rendering.SimpleMesh LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleMesh(LibreMetaverse.Primitive prim, LibreMetaverse.Rendering.DetailLevel lod)`.
/// Mapping contract: ownership `shared_self,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn generate_simple_mesh(
&self,
prim: libremetaverse::Primitive,
@@ -38,6 +57,10 @@ impl SimpleRenderer {
self.native_generate_simple_mesh(prim, lod)
}
/// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)`.
///
/// C# signature: `LibreMetaverse.Rendering.SimpleMesh LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleSculptMesh(LibreMetaverse.Primitive prim, LibreMetaverse.Imaging.ManagedImage sculptTexture, LibreMetaverse.Rendering.DetailLevel lod)`.
/// Mapping contract: ownership `shared_self,owned,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn generate_simple_sculpt_mesh(
&self,
prim: libremetaverse::Primitive,
@@ -47,6 +70,10 @@ impl SimpleRenderer {
self.native_generate_simple_sculpt_mesh(prim, sculpt_texture, lod)
}
/// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.TransformTexCoords(System.Collections.Generic.List{LibreMetaverse.Rendering.Vertex},LibreMetaverse.Vector3,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Vector3)`.
///
/// C# signature: `System.Void LibreMetaverse.Rendering.SimpleRenderer.TransformTexCoords(System.Collections.Generic.List<LibreMetaverse.Rendering.Vertex> vertices, LibreMetaverse.Vector3 center, LibreMetaverse.Primitive.TextureEntryFace teFace, LibreMetaverse.Vector3 primScale)`.
/// Mapping contract: ownership `shared_self,mutable_borrow,owned,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn transform_tex_coords(
&self,
vertices: &mut Vec<libremetaverse::rendering::Vertex>,
@@ -1,7 +1,7 @@
//! Deterministic reference rendering for legacy prims and decoded sculpt maps.
//!
//! [`SimpleRenderer`] converts checked `PrimMesher` geometry into the shared
//! rendering types without a graphics backend. See the crate README for the
//! rendering types without a graphics backend. See the crate `README` for the
//! supported topology, resource bounds, and mesh-asset boundary.
extern crate self as libremetaverse_rendering_simple;
File diff suppressed because it is too large. Load diff
+5 -1
View File
@@ -1,4 +1,8 @@
//! Restrained Love Viewer support corresponding to `LibreMetaverse.RLV`.
//! Restrained Love Viewer (`RLV`) support corresponding to `LibreMetaverse.RLV`.
//!
//! The native implementation covers bounded command parsing, behavior state,
//! inventory resolution, attachment locks, camera policy, and permission
//! decisions. Applications retain control of transport and user consent.
extern crate self as libremetaverse_rlv;
File diff suppressed because it is too large. Load diff
@@ -1,4 +1,8 @@
//! Structured-data types corresponding to `LibreMetaverse.StructuredData`.
//! Bounded `LLSD`/`OSD` support corresponding to `LibreMetaverse.StructuredData`.
//!
//! `XML`, `JSON`, binary, and notation codecs share checked depth, node, and byte
//! limits. Choose this crate for standalone structured-data work without
//! constructing a grid client or enabling a native codec.
extern crate self as libremetaverse_structured_data;
File diff suppressed because it is too large. Load diff
+5 -1
View File
@@ -1,4 +1,8 @@
//! Core value types corresponding to `LibreMetaverse.Types`.
//! Native value and compatibility types corresponding to `LibreMetaverse.Types`.
//!
//! Use this crate directly for `UUID`s, vectors, matrices, colors, cancellation,
//! subscriptions, bounded collections, and protocol-neutral boundary types.
//! It has no grid login side effects and requires no native system library.
extern crate self as libremetaverse_types;
@@ -6,9 +6,16 @@
#![allow(non_snake_case)]
/// C# type: `T:LibreMetaverse.Utilities.ConnectionManager`.
///
/// Native Rust mapping of C# `LibreMetaverse.Utilities.ConnectionManager` using decision
/// `native_metacrate_type`. See the [pinned C# source](https://github.com/cinderblocks/libremetaverse/tree/2aa70bb68513b39795da5d13c88f31b86e85a3ba).
pub struct ConnectionManager;
impl ConnectionManager {
/// C# member: `M:LibreMetaverse.Utilities.ConnectionManager.#ctor(LibreMetaverse.GridClient,System.Int32)`.
///
/// C# signature: `LibreMetaverse.Utilities.ConnectionManager(LibreMetaverse.GridClient client, System.Int32 timerFrequency)`.
/// Mapping contract: ownership `owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn new(
client: libremetaverse::GridClient,
timer_frequency: i32,
@@ -18,6 +25,10 @@ impl ConnectionManager {
)
}
/// C# member: `M:LibreMetaverse.Utilities.ConnectionManager.PersistentLogin(LibreMetaverse.GridClient,System.String,System.String,System.String,System.String,System.String,System.String)`.
///
/// C# signature: `System.Threading.Tasks.Task<System.Boolean> LibreMetaverse.Utilities.ConnectionManager.PersistentLogin(LibreMetaverse.GridClient client, System.String firstName, System.String lastName, System.String password, System.String userAgent, System.String start, System.String author)`.
/// Mapping contract: ownership `owned,owned,owned,owned,owned,owned,owned`; async `async`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub async fn persistent_login(
client: libremetaverse::GridClient,
first_name: String,
@@ -32,6 +43,10 @@ impl ConnectionManager {
)
}
/// C# member: `M:LibreMetaverse.Utilities.ConnectionManager.StayInSim(System.UInt64,LibreMetaverse.Vector3)`.
///
/// C# signature: `System.Void LibreMetaverse.Utilities.ConnectionManager.StayInSim(System.UInt64 handle, LibreMetaverse.Vector3 desiredPosition)`.
/// Mapping contract: ownership `shared_self,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn stay_in_sim(
&self,
handle: u64,
@@ -42,15 +57,26 @@ impl ConnectionManager {
)
}
/// C# member: `M:LibreMetaverse.Utilities.ConnectionManager.Stop`.
///
/// C# signature: `System.Void LibreMetaverse.Utilities.ConnectionManager.Stop()`.
/// Mapping contract: ownership `shared_self`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
pub fn stop(&self) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Utilities.ConnectionManager.Stop")
}
}
/// C# type: `T:LibreMetaverse.Utilities.Realism`.
///
/// Native Rust mapping of C# `LibreMetaverse.Utilities.Realism` using decision
/// `native_metacrate_type`. See the [pinned C# source](https://github.com/cinderblocks/libremetaverse/tree/2aa70bb68513b39795da5d13c88f31b86e85a3ba).
pub struct Realism;
impl Realism {
/// C# member: `M:LibreMetaverse.Utilities.Realism.Chat(LibreMetaverse.GridClient,System.String)`.
///
/// C# signature: `System.Void LibreMetaverse.Utilities.Realism.Chat(LibreMetaverse.GridClient client, System.String message)`.
/// Mapping contract: ownership `owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `descriptive_overload_name`; kind `method`.
pub fn chat_with_grid_client_string(
client: libremetaverse::GridClient,
message: String,
@@ -60,6 +86,10 @@ impl Realism {
)
}
/// C# member: `M:LibreMetaverse.Utilities.Realism.Chat(LibreMetaverse.GridClient,System.String,LibreMetaverse.ChatType,System.Int32)`.
///
/// C# signature: `System.Void LibreMetaverse.Utilities.Realism.Chat(LibreMetaverse.GridClient client, System.String message, LibreMetaverse.ChatType type, System.Int32 cps)`.
/// Mapping contract: ownership `owned,owned,owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `descriptive_overload_name`; kind `method`.
pub fn chat_with_grid_client_string_chat_type_int32(
client: libremetaverse::GridClient,
message: String,
@@ -71,6 +101,10 @@ impl Realism {
)
}
/// C# member: `M:LibreMetaverse.Utilities.Realism.ChatAsync(LibreMetaverse.GridClient,System.String,LibreMetaverse.ChatType,System.Int32,System.Threading.CancellationToken)`.
///
/// C# signature: `System.Threading.Tasks.Task LibreMetaverse.Utilities.Realism.ChatAsync(LibreMetaverse.GridClient client, System.String message, LibreMetaverse.ChatType type, System.Int32 cps, System.Threading.CancellationToken cancellationToken = default)`.
/// Mapping contract: ownership `owned,owned,owned,owned,optional_owned`; async `async`;
/// errors `Result<_, crate::Error>`; overload `descriptive_overload_name`; kind `method`.
pub async fn chat_with_grid_client_string_chat_type_int32_cancellation_token(
client: libremetaverse::GridClient,
message: String,
@@ -83,6 +117,10 @@ impl Realism {
)
}
/// C# member: `M:LibreMetaverse.Utilities.Realism.Shoot(LibreMetaverse.GridClient)`.
///
/// C# signature: `System.Boolean LibreMetaverse.Utilities.Realism.Shoot(LibreMetaverse.GridClient client)`.
/// Mapping contract: ownership `owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `descriptive_overload_name`; kind `method`.
pub fn shoot_with_grid_client(
client: libremetaverse::GridClient,
) -> Result<bool, crate::Error> {
@@ -91,6 +129,10 @@ impl Realism {
)
}
/// C# member: `M:LibreMetaverse.Utilities.Realism.Shoot(LibreMetaverse.GridClient,LibreMetaverse.Vector3)`.
///
/// C# signature: `System.Boolean LibreMetaverse.Utilities.Realism.Shoot(LibreMetaverse.GridClient client, LibreMetaverse.Vector3 target)`.
/// Mapping contract: ownership `owned,owned`; async `sync`;
/// errors `Result<_, crate::Error>`; overload `descriptive_overload_name`; kind `method`.
pub fn shoot_with_grid_client_vector3(
client: libremetaverse::GridClient,
target: libremetaverse_types::Vector3,
@@ -102,15 +144,34 @@ impl Realism {
}
/// C# type: `T:LibreMetaverse.Utilities.WaterType`.
///
/// Native Rust mapping of C# `LibreMetaverse.Utilities.WaterType` using decision
/// `native_metacrate_type`. See the [pinned C# source](https://github.com/cinderblocks/libremetaverse/tree/2aa70bb68513b39795da5d13c88f31b86e85a3ba).
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
#[repr(i32)]
pub enum WaterType {
/// C# member: `F:LibreMetaverse.Utilities.WaterType.Dry`.
///
/// C# signature: `LibreMetaverse.Utilities.WaterType LibreMetaverse.Utilities.WaterType.Dry`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
Dry = 1,
/// C# member: `F:LibreMetaverse.Utilities.WaterType.Underwater`.
///
/// C# signature: `LibreMetaverse.Utilities.WaterType LibreMetaverse.Utilities.WaterType.Underwater`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
Underwater = 3,
/// C# member: `F:LibreMetaverse.Utilities.WaterType.Unknown`.
///
/// C# signature: `LibreMetaverse.Utilities.WaterType LibreMetaverse.Utilities.WaterType.Unknown`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
Unknown = 0,
/// C# member: `F:LibreMetaverse.Utilities.WaterType.Waterfront`.
///
/// C# signature: `LibreMetaverse.Utilities.WaterType LibreMetaverse.Utilities.WaterType.Waterfront`.
/// Mapping contract: ownership `owned_value`; async `sync`;
/// errors `none`; overload `direct_snake_case`; kind `direct`.
Waterfront = 2,
}
+5 -1
View File
@@ -1,4 +1,8 @@
//! Utilities corresponding to `LibreMetaverse.Utilities`.
//! Native utility APIs corresponding to `LibreMetaverse.Utilities`.
//!
//! Use this compatibility crate when ported code depends on the upstream helper
//! assembly. Public signatures use project-owned Rust boundary types and never
//! load the `CLR` or an upstream binary.
extern crate self as libremetaverse_utilities;
File diff suppressed because it is too large. Load diff
+5 -1
View File
@@ -1,4 +1,8 @@
//! Vivox adapter corresponding to `LibreMetaverse.Voice.Vivox`.
//! `Vivox` control adapter corresponding to `LibreMetaverse.Voice.Vivox`.
//!
//! The crate implements the bounded `XML` request/event protocol for an explicitly
//! supplied service endpoint. It neither bundles nor starts the proprietary
//! daemon, and its diagnostics redact account, session, and channel secrets.
extern crate self as libremetaverse_voice_vivox;
File diff suppressed because it is too large. Load diff
@@ -1,4 +1,9 @@
//! WebRTC voice adapter corresponding to `LibreMetaverse.Voice.WebRTC`.
//! Native `WebRTC` voice adapter corresponding to `LibreMetaverse.Voice.WebRTC`.
//!
//! `ICE`, `DTLS`, `SRTP`, `RTP`, `SCTP` data, `Opus` media, controls, and teardown
//! run in Rust. System `libopus` is required; the optional `real-audio` feature
//! adds the cross-platform `CPAL` hardware boundary while default tests use
//! virtual audio.
extern crate self as libremetaverse_voice_webrtc;
@@ -0,0 +1,14 @@
use libremetaverse_types::compat::CancellationTokenSource;
#[tokio::main(flavor = "current_thread")]
async fn main() -> Result<(), libremetaverse::Error> {
let source = CancellationTokenSource::new();
let token = source.token();
source.cancel();
token.cancelled().await;
assert!(matches!(
token.throw_if_cancellation_requested(),
Err(libremetaverse::Error::Cancelled)
));
Ok(())
}
@@ -0,0 +1,10 @@
use libremetaverse::{ClientLifecycleState, GridClient};
fn main() -> Result<(), libremetaverse::Error> {
let client = GridClient::new()?;
assert_eq!(client.lifecycle_state(), ClientLifecycleState::Active);
client.dispose_with_method()?;
client.dispose_with_method()?;
assert_eq!(client.lifecycle_state(), ClientLifecycleState::Disposed);
Ok(())
}
File diff suppressed because it is too large. Load diff
+7 -1
View File
@@ -1,4 +1,10 @@
//! Public rewrite shell corresponding to the main `LibreMetaverse` assembly.
//! Native Rust grid client corresponding to the main `LibreMetaverse` assembly.
//!
//! Start here for login, networking, agents, inventory, assets, appearance,
//! world, and social APIs. The appended guide covers crate selection, C# name
//! migration, ownership, cancellation, events, security, and `OpenSim` setup.
#![doc = include_str!("../../../docs/rust-api-guide.md")]
extern crate self as libremetaverse;