Implement PrimMesher extrusion geometry (#42)
Some checks failed
JPEG 2000 feature / linux (push) Has been cancelled
JPEG 2000 feature / macos (push) Has been cancelled
JPEG 2000 feature / windows (push) Has been cancelled
Skia feature / linux (push) Has been cancelled
Skia feature / macos (push) Has been cancelled
Skia feature / windows (push) Has been cancelled

This commit is contained in:
2026-08-09 04:40:54 +00:00
parent 4849bbda7b
commit 5b3950c421
8 changed files with 2316 additions and 637 deletions

View File

@@ -158,5 +158,12 @@ dimensions, strides, and allocations bounded. See
[`crates/libremetaverse-imaging-skia/README.md`](crates/libremetaverse-imaging-skia/README.md) [`crates/libremetaverse-imaging-skia/README.md`](crates/libremetaverse-imaging-skia/README.md)
for native prerequisites, cache/source-build controls, licenses, and packaging for native prerequisites, cache/source-build controls, licenses, and packaging
details. Default workspace builds do not compile or link Skia. details. Default workspace builds do not compile or link Skia.
Primitive profile and path meshing is implemented in native Rust from the
pinned `PrimMesher.cs` reference. It covers checked linear, flexible, and
circular extrusion; profile cuts and hollows; twist, taper, shear, skew,
radius, and revolutions; cap and side winding; normals, UVs, viewer faces, and
prim-face indexing. Geometry allocation and index arithmetic are bounded, and
identical finite inputs produce deterministic mesh output on every supported
platform.
The controlled audit aggregates every expected failure by standardized C# The controlled audit aggregates every expected failure by standardized C#
member ID and rejects unrelated fixture, assertion, compile, or symbol errors. member ID and rejects unrelated fixture, assertion, compile, or symbol errors.

View File

@@ -8,7 +8,7 @@ Generated by `python3 tools/generate_api_shims.py`; do not edit by hand.
| `LibreMetaverse.Imaging.Abstractions` | 3 | 20 | native implementation: 3 types / 20 members; no generated shims remain | | `LibreMetaverse.Imaging.Abstractions` | 3 | 20 | native implementation: 3 types / 20 members; no generated shims remain |
| `LibreMetaverse.Imaging.Skia` | 1 | 3 | native implementation: 1 type / 3 members; no generated shims remain | | `LibreMetaverse.Imaging.Skia` | 1 | 3 | native implementation: 1 type / 3 members; no generated shims remain |
| `LibreMetaverse.LslTools` | 164 | 768 | callable failure-only shim | | `LibreMetaverse.LslTools` | 164 | 768 | callable failure-only shim |
| `LibreMetaverse.PrimMesher` | 17 | 207 | callable failure-only shim | | `LibreMetaverse.PrimMesher` | 17 | 207 | native implementation: 9 types / 155 members; remaining surface is callable failure-only shims |
| `LibreMetaverse.RLV` | 28 | 499 | callable failure-only shim | | `LibreMetaverse.RLV` | 28 | 499 | callable failure-only shim |
| `LibreMetaverse.Rendering.MeshFoundry` | 1 | 14 | callable failure-only shim | | `LibreMetaverse.Rendering.MeshFoundry` | 1 | 14 | callable failure-only shim |
| `LibreMetaverse.Rendering.Simple` | 1 | 6 | callable failure-only shim | | `LibreMetaverse.Rendering.Simple` | 1 | 6 | callable failure-only shim |

View File

@@ -6,128 +6,35 @@
#![allow(non_snake_case)] #![allow(non_snake_case)]
/// C# type: `T:LibreMetaverse.PrimMesher.Coord`. /// C# type: `T:LibreMetaverse.PrimMesher.Coord`.
pub struct Coord { /// C# member: `F:LibreMetaverse.PrimMesher.Coord.X`.
/// C# member: `F:LibreMetaverse.PrimMesher.Coord.X`. /// C# member: `F:LibreMetaverse.PrimMesher.Coord.Y`.
pub x: f32, /// C# member: `F:LibreMetaverse.PrimMesher.Coord.Z`.
/// C# member: `F:LibreMetaverse.PrimMesher.Coord.Y`. /// C# member: `M:LibreMetaverse.PrimMesher.Coord.#ctor(System.Single,System.Single,System.Single)`.
pub y: f32, /// C# member: `M:LibreMetaverse.PrimMesher.Coord.Cross(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord)`.
/// C# member: `F:LibreMetaverse.PrimMesher.Coord.Z`. /// C# member: `M:LibreMetaverse.PrimMesher.Coord.Invert`.
pub z: f32, /// C# member: `M:LibreMetaverse.PrimMesher.Coord.Length`.
} /// C# member: `M:LibreMetaverse.PrimMesher.Coord.Normalize`.
impl Coord { /// C# member: `M:LibreMetaverse.PrimMesher.Coord.ToString`.
/// C# member: `M:LibreMetaverse.PrimMesher.Coord.#ctor(System.Single,System.Single,System.Single)`. /// C# member: `M:LibreMetaverse.PrimMesher.Coord.op_Addition(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord)`.
pub fn new(x: f32, y: f32, z: f32) -> Result<Self, crate::Error> { /// C# member: `M:LibreMetaverse.PrimMesher.Coord.op_Multiply(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord)`.
libremetaverse_types::not_implemented( /// C# member: `M:LibreMetaverse.PrimMesher.Coord.op_Multiply(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Quat)`.
"M:LibreMetaverse.PrimMesher.Coord.#ctor(System.Single,System.Single,System.Single)", pub use crate::prim_mesher::Coord;
)
}
/// 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_prim_mesher::Coord, crate::Error> {
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_prim_mesher::Coord, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Coord.Invert")
}
/// C# member: `M:LibreMetaverse.PrimMesher.Coord.Length`.
pub fn length(&self) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Coord.Length")
}
/// C# member: `M:LibreMetaverse.PrimMesher.Coord.Normalize`.
pub fn normalize(&mut self) -> Result<libremetaverse_prim_mesher::Coord, crate::Error> {
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)"
)
}
}
/// C# type: `T:LibreMetaverse.PrimMesher.Face`. /// C# type: `T:LibreMetaverse.PrimMesher.Face`.
pub struct Face { /// C# member: `F:LibreMetaverse.PrimMesher.Face.n1`.
/// C# member: `F:LibreMetaverse.PrimMesher.Face.n1`. /// C# member: `F:LibreMetaverse.PrimMesher.Face.n2`.
pub n1: i32, /// C# member: `F:LibreMetaverse.PrimMesher.Face.n3`.
/// C# member: `F:LibreMetaverse.PrimMesher.Face.n2`. /// C# member: `F:LibreMetaverse.PrimMesher.Face.primFace`.
pub n2: i32, /// C# member: `F:LibreMetaverse.PrimMesher.Face.uv1`.
/// C# member: `F:LibreMetaverse.PrimMesher.Face.n3`. /// C# member: `F:LibreMetaverse.PrimMesher.Face.uv2`.
pub n3: i32, /// C# member: `F:LibreMetaverse.PrimMesher.Face.uv3`.
/// C# member: `F:LibreMetaverse.PrimMesher.Face.primFace`. /// C# member: `F:LibreMetaverse.PrimMesher.Face.v1`.
pub prim_face: i32, /// C# member: `F:LibreMetaverse.PrimMesher.Face.v2`.
/// C# member: `F:LibreMetaverse.PrimMesher.Face.uv1`. /// C# member: `F:LibreMetaverse.PrimMesher.Face.v3`.
pub uv1: i32, /// C# member: `M:LibreMetaverse.PrimMesher.Face.#ctor(System.Int32,System.Int32,System.Int32)`.
/// C# member: `F:LibreMetaverse.PrimMesher.Face.uv2`. /// C# member: `M:LibreMetaverse.PrimMesher.Face.#ctor(System.Int32,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)`.
pub uv2: i32, /// C# member: `M:LibreMetaverse.PrimMesher.Face.SurfaceNormal(System.Collections.Generic.List{LibreMetaverse.PrimMesher.Coord})`.
/// C# member: `F:LibreMetaverse.PrimMesher.Face.uv3`. pub use crate::prim_mesher::Face;
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 {
/// 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<Self, crate::Error> {
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<Self, crate::Error> {
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<libremetaverse_prim_mesher::Coord>,
) -> Result<libremetaverse_prim_mesher::Coord, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.PrimMesher.Face.SurfaceNormal(System.Collections.Generic.List{LibreMetaverse.PrimMesher.Coord})",
)
}
}
/// C# type: `T:LibreMetaverse.PrimMesher.ObjMesh`. /// C# type: `T:LibreMetaverse.PrimMesher.ObjMesh`.
pub struct ObjMesh { pub struct ObjMesh {
@@ -166,73 +73,34 @@ impl ObjMesh {
} }
/// C# type: `T:LibreMetaverse.PrimMesher.Path`. /// C# type: `T:LibreMetaverse.PrimMesher.Path`.
pub struct Path { /// C# member: `F:LibreMetaverse.PrimMesher.Path.dimpleBegin`.
/// C# member: `F:LibreMetaverse.PrimMesher.Path.dimpleBegin`. /// C# member: `F:LibreMetaverse.PrimMesher.Path.dimpleEnd`.
pub dimple_begin: f32, /// C# member: `F:LibreMetaverse.PrimMesher.Path.holeSizeX`.
/// C# member: `F:LibreMetaverse.PrimMesher.Path.dimpleEnd`. /// C# member: `F:LibreMetaverse.PrimMesher.Path.holeSizeY`.
pub dimple_end: f32, /// C# member: `F:LibreMetaverse.PrimMesher.Path.pathCutBegin`.
/// C# member: `F:LibreMetaverse.PrimMesher.Path.holeSizeX`. /// C# member: `F:LibreMetaverse.PrimMesher.Path.pathCutEnd`.
pub hole_size_x: f32, /// C# member: `F:LibreMetaverse.PrimMesher.Path.pathNodes`.
/// C# member: `F:LibreMetaverse.PrimMesher.Path.holeSizeY`. /// C# member: `F:LibreMetaverse.PrimMesher.Path.radius`.
pub hole_size_y: f32, /// C# member: `F:LibreMetaverse.PrimMesher.Path.revolutions`.
/// C# member: `F:LibreMetaverse.PrimMesher.Path.pathCutBegin`. /// C# member: `F:LibreMetaverse.PrimMesher.Path.skew`.
pub path_cut_begin: f32, /// C# member: `F:LibreMetaverse.PrimMesher.Path.stepsPerRevolution`.
/// C# member: `F:LibreMetaverse.PrimMesher.Path.pathCutEnd`. /// C# member: `F:LibreMetaverse.PrimMesher.Path.taperX`.
pub path_cut_end: f32, /// C# member: `F:LibreMetaverse.PrimMesher.Path.taperY`.
/// C# member: `F:LibreMetaverse.PrimMesher.Path.pathNodes`. /// C# member: `F:LibreMetaverse.PrimMesher.Path.topShearX`.
pub path_nodes: Vec<libremetaverse_prim_mesher::PathNode>, /// C# member: `F:LibreMetaverse.PrimMesher.Path.topShearY`.
/// C# member: `F:LibreMetaverse.PrimMesher.Path.radius`. /// C# member: `F:LibreMetaverse.PrimMesher.Path.twistBegin`.
pub radius: f32, /// C# member: `F:LibreMetaverse.PrimMesher.Path.twistEnd`.
/// C# member: `F:LibreMetaverse.PrimMesher.Path.revolutions`. /// C# member: `M:LibreMetaverse.PrimMesher.Path.#ctor`.
pub revolutions: f32, /// C# member: `M:LibreMetaverse.PrimMesher.Path.Create(LibreMetaverse.PrimMesher.PathType,System.Int32)`.
/// C# member: `F:LibreMetaverse.PrimMesher.Path.skew`. pub use crate::prim_mesher::Path;
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 {
/// C# member: `M:LibreMetaverse.PrimMesher.Path.#ctor`.
pub fn new() -> Result<Self, crate::Error> {
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)",
)
}
}
/// C# type: `T:LibreMetaverse.PrimMesher.PathNode`. /// C# type: `T:LibreMetaverse.PrimMesher.PathNode`.
pub struct PathNode { /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.percentOfPath`.
/// C# member: `F:LibreMetaverse.PrimMesher.PathNode.percentOfPath`. /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.position`.
pub percent_of_path: f32, /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.rotation`.
/// C# member: `F:LibreMetaverse.PrimMesher.PathNode.position`. /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.xScale`.
pub position: libremetaverse_prim_mesher::Coord, /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.yScale`.
/// C# member: `F:LibreMetaverse.PrimMesher.PathNode.rotation`. pub use crate::prim_mesher::PathNode;
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`. /// C# type: `T:LibreMetaverse.PrimMesher.PathType`.
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)] #[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
@@ -247,372 +115,97 @@ pub enum PathType {
} }
/// C# type: `T:LibreMetaverse.PrimMesher.PrimMesh`. /// C# type: `T:LibreMetaverse.PrimMesher.PrimMesh`.
pub struct PrimMesh { /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.calcVertexNormals`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.calcVertexNormals`. /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.coords`.
pub calc_vertex_normals: bool, /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.dimpleBegin`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.coords`. /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.dimpleEnd`.
pub coords: Vec<libremetaverse_prim_mesher::Coord>, /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.errorMessage`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.dimpleBegin`. /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.faces`.
pub dimple_begin: f32, /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.holeSizeX`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.dimpleEnd`. /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.holeSizeY`.
pub dimple_end: f32, /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.normals`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.errorMessage`. /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.numPrimFaces`.
pub error_message: String, /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.pathCutBegin`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.faces`. /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.pathCutEnd`.
pub faces: Vec<libremetaverse_prim_mesher::Face>, /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.radius`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.holeSizeX`. /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.revolutions`.
pub hole_size_x: f32, /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.skew`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.holeSizeY`. /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.sphereMode`.
pub hole_size_y: f32, /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.stepsPerRevolution`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.normals`. /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.taperX`.
pub normals: Vec<libremetaverse_prim_mesher::Coord>, /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.taperY`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.numPrimFaces`. /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.topShearX`.
pub num_prim_faces: i32, /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.topShearY`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.pathCutBegin`. /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.twistBegin`.
pub path_cut_begin: f32, /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.twistEnd`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.pathCutEnd`. /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.viewerFaces`.
pub path_cut_end: f32, /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.viewerMode`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.radius`. /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.#ctor(System.Int32,System.Single,System.Single,System.Single,System.Int32)`.
pub radius: f32, /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.AddPos(System.Single,System.Single,System.Single)`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.revolutions`. /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.AddRot(LibreMetaverse.PrimMesher.Quat)`.
pub revolutions: f32, /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.CalcNormals`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.skew`. /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.Copy`.
pub skew: f32, /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.DumpRaw(System.String,System.String,System.String)`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.sphereMode`. /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.Extrude(LibreMetaverse.PrimMesher.PathType)`.
pub sphere_mode: bool, /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.GetVertexIndexer`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.stepsPerRevolution`. /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.ParamsToDisplayString`.
pub steps_per_revolution: i32, /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.Scale(System.Single,System.Single,System.Single)`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.taperX`. /// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.SurfaceNormal(System.Int32)`.
pub taper_x: f32, /// C# member: `P:LibreMetaverse.PrimMesher.PrimMesh.HasHollow`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.taperY`. /// C# member: `P:LibreMetaverse.PrimMesher.PrimMesh.HasProfileCut`.
pub taper_y: f32, /// C# member: `P:LibreMetaverse.PrimMesher.PrimMesh.ProfileHollowFaceNumber`.
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.topShearX`. /// C# member: `P:LibreMetaverse.PrimMesher.PrimMesh.ProfileOuterFaceNumber`.
pub top_shear_x: f32, pub use crate::prim_mesher::PrimMesh;
/// 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<libremetaverse_prim_mesher::ViewerFace>,
/// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.viewerMode`.
pub viewer_mode: bool,
}
impl PrimMesh {
/// 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<Self, crate::Error> {
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(&mut 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(&mut 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(&mut 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_prim_mesher::PrimMesh, crate::Error> {
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(
&mut 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<Option<libremetaverse_prim_mesher::VertexIndexer>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.PrimMesher.PrimMesh.GetVertexIndexer",
)
}
/// C# member: `M:LibreMetaverse.PrimMesher.PrimMesh.ParamsToDisplayString`.
pub fn params_to_display_string(&self) -> Result<String, crate::Error> {
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(&mut 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_prim_mesher::Coord, crate::Error> {
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"
)
}
}
/// C# type: `T:LibreMetaverse.PrimMesher.Profile`. /// C# type: `T:LibreMetaverse.PrimMesher.Profile`.
pub struct Profile { /// C# member: `F:LibreMetaverse.PrimMesher.Profile.bottomFaceNumber`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.bottomFaceNumber`. /// C# member: `F:LibreMetaverse.PrimMesher.Profile.calcVertexNormals`.
pub bottom_face_number: i32, /// C# member: `F:LibreMetaverse.PrimMesher.Profile.coords`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.calcVertexNormals`. /// C# member: `F:LibreMetaverse.PrimMesher.Profile.cut1CoordIndices`.
pub calc_vertex_normals: bool, /// C# member: `F:LibreMetaverse.PrimMesher.Profile.cut2CoordIndices`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.coords`. /// C# member: `F:LibreMetaverse.PrimMesher.Profile.cutNormal1`.
pub coords: Vec<libremetaverse_prim_mesher::Coord>, /// C# member: `F:LibreMetaverse.PrimMesher.Profile.cutNormal2`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.cut1CoordIndices`. /// C# member: `F:LibreMetaverse.PrimMesher.Profile.errorMessage`.
pub cut1_coord_indices: Vec<i32>, /// C# member: `F:LibreMetaverse.PrimMesher.Profile.faceNormal`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.cut2CoordIndices`. /// C# member: `F:LibreMetaverse.PrimMesher.Profile.faceNumbers`.
pub cut2_coord_indices: Vec<i32>, /// C# member: `F:LibreMetaverse.PrimMesher.Profile.faceUVs`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.cutNormal1`. /// C# member: `F:LibreMetaverse.PrimMesher.Profile.faces`.
pub cut_normal1: libremetaverse_prim_mesher::Coord, /// C# member: `F:LibreMetaverse.PrimMesher.Profile.hollowCoordIndices`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.cutNormal2`. /// C# member: `F:LibreMetaverse.PrimMesher.Profile.hollowFaceNumber`.
pub cut_normal2: libremetaverse_prim_mesher::Coord, /// C# member: `F:LibreMetaverse.PrimMesher.Profile.numHollowVerts`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.errorMessage`. /// C# member: `F:LibreMetaverse.PrimMesher.Profile.numOuterVerts`.
pub error_message: String, /// C# member: `F:LibreMetaverse.PrimMesher.Profile.numPrimFaces`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.faceNormal`. /// C# member: `F:LibreMetaverse.PrimMesher.Profile.outerCoordIndices`.
pub face_normal: libremetaverse_prim_mesher::Coord, /// C# member: `F:LibreMetaverse.PrimMesher.Profile.outerFaceNumber`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.faceNumbers`. /// C# member: `F:LibreMetaverse.PrimMesher.Profile.us`.
pub face_numbers: Vec<i32>, /// C# member: `F:LibreMetaverse.PrimMesher.Profile.vertexNormals`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.faceUVs`. /// C# member: `M:LibreMetaverse.PrimMesher.Profile.#ctor`.
pub face_u_vs: Vec<libremetaverse_prim_mesher::UVCoord>, /// C# member: `M:LibreMetaverse.PrimMesher.Profile.#ctor(System.Int32,System.Single,System.Single,System.Single,System.Int32,System.Boolean,System.Boolean)`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.faces`. /// C# member: `M:LibreMetaverse.PrimMesher.Profile.AddPos(LibreMetaverse.PrimMesher.Coord)`.
pub faces: Vec<libremetaverse_prim_mesher::Face>, /// C# member: `M:LibreMetaverse.PrimMesher.Profile.AddPos(System.Single,System.Single,System.Single)`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.hollowCoordIndices`. /// C# member: `M:LibreMetaverse.PrimMesher.Profile.AddRot(LibreMetaverse.PrimMesher.Quat)`.
pub hollow_coord_indices: Vec<i32>, /// C# member: `M:LibreMetaverse.PrimMesher.Profile.AddValue2FaceNormalIndices(System.Int32)`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.hollowFaceNumber`. /// C# member: `M:LibreMetaverse.PrimMesher.Profile.AddValue2FaceVertexIndices(System.Int32)`.
pub hollow_face_number: i32, /// C# member: `M:LibreMetaverse.PrimMesher.Profile.Copy`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.numHollowVerts`. /// C# member: `M:LibreMetaverse.PrimMesher.Profile.Copy(System.Boolean)`.
pub num_hollow_verts: i32, /// C# member: `M:LibreMetaverse.PrimMesher.Profile.DumpRaw(System.String,System.String,System.String)`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.numOuterVerts`. /// C# member: `M:LibreMetaverse.PrimMesher.Profile.FlipNormals`.
pub num_outer_verts: i32, /// C# member: `M:LibreMetaverse.PrimMesher.Profile.MakeFaceUVs`.
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.numPrimFaces`. /// C# member: `M:LibreMetaverse.PrimMesher.Profile.Scale(System.Single,System.Single)`.
pub num_prim_faces: i32, pub use crate::prim_mesher::Profile;
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.outerCoordIndices`.
pub outer_coord_indices: Vec<i32>,
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.outerFaceNumber`.
pub outer_face_number: i32,
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.us`.
pub us: Vec<f32>,
/// C# member: `F:LibreMetaverse.PrimMesher.Profile.vertexNormals`.
pub vertex_normals: Vec<libremetaverse_prim_mesher::Coord>,
}
impl Profile {
/// C# member: `M:LibreMetaverse.PrimMesher.Profile.#ctor`.
pub fn new_with_constructor() -> Result<Self, crate::Error> {
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<Self, crate::Error> {
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_prim_mesher::Profile, crate::Error> {
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_prim_mesher::Profile, crate::Error> {
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)",
)
}
}
/// C# type: `T:LibreMetaverse.PrimMesher.Quat`. /// C# type: `T:LibreMetaverse.PrimMesher.Quat`.
pub struct Quat { /// C# member: `F:LibreMetaverse.PrimMesher.Quat.W`.
/// C# member: `F:LibreMetaverse.PrimMesher.Quat.W`. /// C# member: `F:LibreMetaverse.PrimMesher.Quat.X`.
pub w: f32, /// C# member: `F:LibreMetaverse.PrimMesher.Quat.Y`.
/// C# member: `F:LibreMetaverse.PrimMesher.Quat.X`. /// C# member: `F:LibreMetaverse.PrimMesher.Quat.Z`.
pub x: f32, /// C# member: `M:LibreMetaverse.PrimMesher.Quat.#ctor(LibreMetaverse.PrimMesher.Coord,System.Single)`.
/// C# member: `F:LibreMetaverse.PrimMesher.Quat.Y`. /// C# member: `M:LibreMetaverse.PrimMesher.Quat.#ctor(System.Single,System.Single,System.Single,System.Single)`.
pub y: f32, /// C# member: `M:LibreMetaverse.PrimMesher.Quat.Length`.
/// C# member: `F:LibreMetaverse.PrimMesher.Quat.Z`. /// C# member: `M:LibreMetaverse.PrimMesher.Quat.Normalize`.
pub z: f32, /// C# member: `M:LibreMetaverse.PrimMesher.Quat.ToString`.
} /// C# member: `M:LibreMetaverse.PrimMesher.Quat.op_Multiply(LibreMetaverse.PrimMesher.Quat,LibreMetaverse.PrimMesher.Quat)`.
impl Quat { pub use crate::prim_mesher::Quat;
/// 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<Self, crate::Error> {
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<Self, crate::Error> {
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(&self) -> Result<f32, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.Quat.Length")
}
/// C# member: `M:LibreMetaverse.PrimMesher.Quat.Normalize`.
pub fn normalize(&mut self) -> Result<libremetaverse_prim_mesher::Quat, crate::Error> {
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)"
)
}
}
/// C# type: `T:LibreMetaverse.PrimMesher.SculptMap`. /// C# type: `T:LibreMetaverse.PrimMesher.SculptMap`.
pub struct SculptMap { pub struct SculptMap {
@@ -795,24 +388,11 @@ pub enum SculptMeshSculptType {
} }
/// C# type: `T:LibreMetaverse.PrimMesher.UVCoord`. /// C# type: `T:LibreMetaverse.PrimMesher.UVCoord`.
pub struct UVCoord { /// C# member: `F:LibreMetaverse.PrimMesher.UVCoord.U`.
/// C# member: `F:LibreMetaverse.PrimMesher.UVCoord.U`. /// C# member: `F:LibreMetaverse.PrimMesher.UVCoord.V`.
pub u: f32, /// C# member: `M:LibreMetaverse.PrimMesher.UVCoord.#ctor(System.Single,System.Single)`.
/// C# member: `F:LibreMetaverse.PrimMesher.UVCoord.V`. /// C# member: `M:LibreMetaverse.PrimMesher.UVCoord.Flip`.
pub v: f32, pub use crate::prim_mesher::UVCoord;
}
impl UVCoord {
/// C# member: `M:LibreMetaverse.PrimMesher.UVCoord.#ctor(System.Single,System.Single)`.
pub fn new(u: f32, v: f32) -> Result<Self, crate::Error> {
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_prim_mesher::UVCoord, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.UVCoord.Flip")
}
}
/// C# type: `T:LibreMetaverse.PrimMesher.VertexIndexer`. /// C# type: `T:LibreMetaverse.PrimMesher.VertexIndexer`.
pub struct VertexIndexer { pub struct VertexIndexer {
@@ -839,66 +419,25 @@ impl VertexIndexer {
} }
/// C# type: `T:LibreMetaverse.PrimMesher.ViewerFace`. /// C# type: `T:LibreMetaverse.PrimMesher.ViewerFace`.
pub struct ViewerFace { /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.coordIndex1`.
/// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.coordIndex1`. /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.coordIndex2`.
pub coord_index1: i32, /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.coordIndex3`.
/// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.coordIndex2`. /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.n1`.
pub coord_index2: i32, /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.n2`.
/// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.coordIndex3`. /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.n3`.
pub coord_index3: i32, /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.primFaceNumber`.
/// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.n1`. /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.uv1`.
pub n1: libremetaverse_prim_mesher::Coord, /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.uv2`.
/// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.n2`. /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.uv3`.
pub n2: libremetaverse_prim_mesher::Coord, /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.v1`.
/// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.n3`. /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.v2`.
pub n3: libremetaverse_prim_mesher::Coord, /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.v3`.
/// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.primFaceNumber`. /// C# member: `M:LibreMetaverse.PrimMesher.ViewerFace.#ctor(System.Int32)`.
pub prim_face_number: i32, /// C# member: `M:LibreMetaverse.PrimMesher.ViewerFace.AddPos(System.Single,System.Single,System.Single)`.
/// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.uv1`. /// C# member: `M:LibreMetaverse.PrimMesher.ViewerFace.AddRot(LibreMetaverse.PrimMesher.Quat)`.
pub uv1: libremetaverse_prim_mesher::UVCoord, /// C# member: `M:LibreMetaverse.PrimMesher.ViewerFace.CalcSurfaceNormal`.
/// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.uv2`. /// C# member: `M:LibreMetaverse.PrimMesher.ViewerFace.Scale(System.Single,System.Single,System.Single)`.
pub uv2: libremetaverse_prim_mesher::UVCoord, pub use crate::prim_mesher::ViewerFace;
/// 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 {
/// C# member: `M:LibreMetaverse.PrimMesher.ViewerFace.#ctor(System.Int32)`.
pub fn new(prim_face_number: i32) -> Result<Self, crate::Error> {
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)",
)
}
}
/// C# type: `T:LibreMetaverse.PrimMesher.ViewerPolygon`. /// C# type: `T:LibreMetaverse.PrimMesher.ViewerPolygon`.
pub struct ViewerPolygon { pub struct ViewerPolygon {

View File

@@ -3,6 +3,7 @@
extern crate self as libremetaverse_prim_mesher; extern crate self as libremetaverse_prim_mesher;
mod generated; mod generated;
mod prim_mesher;
pub use generated::*; pub use generated::*;
pub use libremetaverse_imaging as imaging; pub use libremetaverse_imaging as imaging;

File diff suppressed because it is too large Load Diff

View File

@@ -23,16 +23,11 @@ fn mesh_and_renderer_calls_compile_with_typed_elements() {
} }
#[test] #[test]
fn owned_constructors_fail_with_exact_member_ids() { fn native_mesher_and_remaining_shims_report_their_current_status() {
let Err(prim_error) = PrimMesh::new(4, 0.0, 1.0, 0.0, 4) else { let mesh = PrimMesh::new(4, 0.0, 1.0, 0.0, 4)
panic!("failure-only PrimMesh constructor unexpectedly returned a value"); .expect("native PrimMesh constructor should create a checked mesh");
}; assert!(mesh.coords.is_empty());
assert_eq!( assert!(mesh.faces.is_empty());
prim_error.csharp_member(),
Some(
"M:LibreMetaverse.PrimMesher.PrimMesh.#ctor(System.Int32,System.Single,System.Single,System.Single,System.Int32)"
)
);
let Err(renderer_error) = SimpleRenderer::new() else { let Err(renderer_error) = SimpleRenderer::new() else {
panic!("failure-only renderer constructor unexpectedly returned a value"); panic!("failure-only renderer constructor unexpectedly returned a value");

View File

@@ -11,6 +11,51 @@
"unreviewed": 0 "unreviewed": 0
}, },
"allowed_parity_passes": [ "allowed_parity_passes": [
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::CoordTests.Coord_Length_KnownVector::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::CoordTests.Coord_Length_UnitVector::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::CoordTests.Coord_Normalize_GivesUnitLength::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::CoordTests.Coord_Normalize_ZeroVector_DoesNotThrow::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::CoordTests.Coord_Normalize_ZeroVector_GivesZero::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::CoordTests.Coord_Cross_XaxisTimesYaxis_GivesZaxis::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::CoordTests.Coord_Cross_YaxisTimesXaxis_GivesNegZaxis::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::CoordTests.Coord_Add_IsCommutative::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::QuatTests.Quat_AxisAngle_IsNormalized::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::QuatTests.Quat_Identity_RotatesCoordUnchanged::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::QuatTests.Coord_RotateByQuat_90DegAroundXaxis_YbecomesZ::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::QuatTests.Coord_RotateByQuat_90DegAroundXaxis_ZbecomesNegY_BugRegression::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::QuatTests.Coord_RotateByQuat_90DegAroundZaxis_XbecomesY::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::QuatTests.Coord_RotateByQuat_90DegAroundYaxis_ZbecomesX::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::QuatTests.Coord_RotateByQuat_180DegAroundZaxis_NegatesXandY::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::QuatTests.Coord_RotateByQuat_PreservesLength::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::QuatTests.Quat_Multiply_TwoNineties_AroundZ_Gives180::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/CoordQuatTests.cs::QuatTests.Quat_Multiply_IsAssociative::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Box_Linear_HasVerticesAndFaces::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Box_Linear_AllFaceIndicesInRange::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Cylinder_Linear_HasGeometry::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Prism_Linear_HasGeometry::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Torus_Circular_HasGeometry::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Torus_Circular_AllFaceIndicesInRange::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Box_WithHollow_HasGeometry::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Box_WithProfileCut_HasGeometry::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Box_ViewerMode_HasViewerFaces::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Box_ViewerMode_AllViewerFaceVerticesFinite::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Box_ViewerMode_NumPrimFaces_Is6::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Cylinder_ViewerMode_NumPrimFaces_AtLeast2::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Torus_ViewerMode_NumPrimFaces_Is1::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Sphere_ViewerMode_NumPrimFaces_Is1::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Extrude_Torus_ViewerMode_HasViewerFaces::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.CalcNormals_Box_ProducesOneNormalPerFace::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.CalcNormals_Box_AllNonZeroNormalsUnitLength::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.CalcNormals_CalledTwice_IsIdempotent::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.VertexIndexer_Box_IsNotNull::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.VertexIndexer_NonViewerMode_ReturnsNull::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.VertexIndexer_Box_AllPolygonIndicesInRange::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Copy_Box_ProducesIndependentInstance::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.AddPos_ShiftsAllCoords::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.Scale_ScalesAllCoords::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.AddRot_ByIdentity_DoesNotChangeCoords::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.SurfaceNormal_Box_FirstFace_IsUnitLength::test",
"LibreMetaverse.Rendering.Tests/PrimMesher/PrimMeshTests.cs::PrimMeshTests.SurfaceNormal_InvalidIndex_Throws::test",
"LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BAKED_TEXTURE_COUNT_Is11::test", "LibreMetaverse.Tests/AppearanceManagerTests.cs::AppearanceManagerTests.BAKED_TEXTURE_COUNT_Is11::test",
"LibreMetaverse.Tests/BinaryLLSDTests.cs::BinarySDTests.DeserializeArray::test", "LibreMetaverse.Tests/BinaryLLSDTests.cs::BinarySDTests.DeserializeArray::test",
"LibreMetaverse.Tests/BinaryLLSDTests.cs::BinarySDTests.DeserializeBool::test", "LibreMetaverse.Tests/BinaryLLSDTests.cs::BinarySDTests.DeserializeBool::test",
@@ -101,5 +146,5 @@
"LibreMetaverse.Tests/XmlLLSDTests.cs::XmlSDTests.DeserializeUUID::test", "LibreMetaverse.Tests/XmlLLSDTests.cs::XmlSDTests.DeserializeUUID::test",
"LibreMetaverse.Tests/XmlLLSDTests.cs::XmlSDTests.DeserializeUndef::test" "LibreMetaverse.Tests/XmlLLSDTests.cs::XmlSDTests.DeserializeUndef::test"
], ],
"support_passes": 119 "support_passes": 123
} }

View File

@@ -38,6 +38,15 @@ TARGETS = {
# implementations. The generated module keeps catalog markers and re-exports # implementations. The generated module keeps catalog markers and re-exports
# the hand-written type so coverage remains deterministic. # the hand-written type so coverage remains deterministic.
NATIVE_TYPES = { NATIVE_TYPES = {
"T:LibreMetaverse.PrimMesher.Coord": "crate::prim_mesher::Coord",
"T:LibreMetaverse.PrimMesher.Face": "crate::prim_mesher::Face",
"T:LibreMetaverse.PrimMesher.Path": "crate::prim_mesher::Path",
"T:LibreMetaverse.PrimMesher.PathNode": "crate::prim_mesher::PathNode",
"T:LibreMetaverse.PrimMesher.PrimMesh": "crate::prim_mesher::PrimMesh",
"T:LibreMetaverse.PrimMesher.Profile": "crate::prim_mesher::Profile",
"T:LibreMetaverse.PrimMesher.Quat": "crate::prim_mesher::Quat",
"T:LibreMetaverse.PrimMesher.UVCoord": "crate::prim_mesher::UVCoord",
"T:LibreMetaverse.PrimMesher.ViewerFace": "crate::prim_mesher::ViewerFace",
"T:LibreMetaverse.Imaging.Skia.SkiaTextureCodec": "crate::skia_codec::SkiaTextureCodec", "T:LibreMetaverse.Imaging.Skia.SkiaTextureCodec": "crate::skia_codec::SkiaTextureCodec",
"T:LibreMetaverse.Imaging.ManagedImageCreator": "crate::j2k::ManagedImageCreator", "T:LibreMetaverse.Imaging.ManagedImageCreator": "crate::j2k::ManagedImageCreator",
"T:LibreMetaverse.Imaging.ManagedImageInterleavedExtensions": "crate::j2k::ManagedImageInterleavedExtensions", "T:LibreMetaverse.Imaging.ManagedImageInterleavedExtensions": "crate::j2k::ManagedImageInterleavedExtensions",