Implement MeshFoundry pipeline (#77)
Some checks failed
Native code generation / deterministic (push) Failing after 1m58s
Imaging and meshing gate / native (push) Failing after 4m10s
JPEG 2000 feature / linux (push) Successful in 3m0s
Native Rust workspace compile / compile (push) Failing after 6m12s
Skia feature / linux (push) Has been cancelled

This commit is contained in:
2026-08-10 22:37:43 +00:00
parent 611db567a0
commit 88408c9680
17 changed files with 2402 additions and 50 deletions

View File

@@ -6,11 +6,11 @@
#![allow(non_snake_case)]
/// C# type: `T:LibreMetaverse.Rendering.MeshFoundry`.
pub struct MeshFoundry;
pub use crate::mesh_foundry::MeshFoundry;
impl MeshFoundry {
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.#ctor`.
pub fn new() -> Result<Self, crate::Error> {
libremetaverse_types::not_implemented("M:LibreMetaverse.Rendering.MeshFoundry.#ctor")
Self::native_new()
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`.
pub fn generate_faceted_mesh(
@@ -18,9 +18,7 @@ impl MeshFoundry {
prim: libremetaverse::Primitive,
lod: libremetaverse::rendering::DetailLevel,
) -> Result<Option<libremetaverse::rendering::FacetedMesh>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)",
)
self.native_generate_faceted_mesh(prim, lod)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive,System.Byte[])`.
pub fn generate_faceted_mesh_mesh_with_primitive_bytes(
@@ -28,8 +26,10 @@ impl MeshFoundry {
prim: libremetaverse::Primitive,
mesh_data: Vec<u8>,
) -> Result<Option<libremetaverse::rendering::FacetedMesh>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive,System.Byte[])",
self.native_generate_faceted_mesh_mesh(
prim,
mesh_data,
libremetaverse::rendering::DetailLevel::Highest,
)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive,System.Byte[],LibreMetaverse.Rendering.DetailLevel)`.
@@ -39,9 +39,7 @@ impl MeshFoundry {
mesh_data: Vec<u8>,
lod: libremetaverse::rendering::DetailLevel,
) -> Result<Option<libremetaverse::rendering::FacetedMesh>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedMeshMesh(LibreMetaverse.Primitive,System.Byte[],LibreMetaverse.Rendering.DetailLevel)",
)
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)`.
pub fn generate_faceted_sculpt_mesh(
@@ -50,9 +48,7 @@ impl MeshFoundry {
sculpt_texture: libremetaverse_imaging::ManagedImage,
lod: libremetaverse::rendering::DetailLevel,
) -> Result<Option<libremetaverse::rendering::FacetedMesh>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.GenerateFacetedSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)",
)
self.native_generate_faceted_sculpt_mesh(prim, sculpt_texture, lod)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`.
pub fn generate_simple_mesh(
@@ -60,9 +56,7 @@ impl MeshFoundry {
prim: libremetaverse::Primitive,
lod: libremetaverse::rendering::DetailLevel,
) -> Result<Option<libremetaverse::rendering::SimpleMesh>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)",
)
self.native_generate_simple_mesh(prim, lod, false)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMeshWithNormals(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`.
pub fn generate_simple_mesh_with_normals(
@@ -70,9 +64,7 @@ impl MeshFoundry {
prim: libremetaverse::Primitive,
lod: libremetaverse::rendering::DetailLevel,
) -> Result<Option<libremetaverse::rendering::SimpleMesh>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleMeshWithNormals(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)",
)
self.native_generate_simple_mesh(prim, lod, true)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)`.
pub fn generate_simple_sculpt_mesh(
@@ -81,9 +73,7 @@ impl MeshFoundry {
sculpt_texture: libremetaverse_imaging::ManagedImage,
lod: libremetaverse::rendering::DetailLevel,
) -> Result<Option<libremetaverse::rendering::SimpleMesh>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.GenerateSimpleSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)",
)
self.native_generate_simple_sculpt_mesh(prim, sculpt_texture, lod)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive,System.Byte[])`.
pub fn mesh_sub_mesh_as_convex_hulls_with_primitive_bytes(
@@ -91,9 +81,7 @@ impl MeshFoundry {
prim: libremetaverse::Primitive,
compressed_mesh_data: Vec<u8>,
) -> Result<Vec<Vec<libremetaverse_types::Vector3>>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive,System.Byte[])",
)
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}@)`.
pub fn mesh_sub_mesh_as_convex_hulls_with_primitive_bytes_list(
@@ -102,9 +90,7 @@ impl MeshFoundry {
compressed_mesh_data: Vec<u8>,
bounding_hull: &mut Vec<libremetaverse_types::Vector3>,
) -> Result<Vec<Vec<libremetaverse_types::Vector3>>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsConvexHulls(LibreMetaverse.Primitive,System.Byte[],System.Collections.Generic.List{LibreMetaverse.Vector3}@)",
)
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[])`.
pub fn mesh_sub_mesh_as_simple_mesh(
@@ -112,9 +98,7 @@ impl MeshFoundry {
prim: libremetaverse::Primitive,
compressed_mesh_data: Vec<u8>,
) -> Result<Option<libremetaverse::rendering::SimpleMesh>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.MeshSubMeshAsSimpleMesh(LibreMetaverse.Primitive,System.Byte[])",
)
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)`.
pub fn terrain_mesh(
@@ -125,9 +109,7 @@ impl MeshFoundry {
y_begin: f32,
y_end: f32,
) -> Result<libremetaverse::rendering::Face, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.TerrainMesh(System.Single[0:,0:],System.Single,System.Single,System.Single,System.Single)",
)
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)`.
pub fn transform_tex_coords(
@@ -137,18 +119,13 @@ impl MeshFoundry {
te_face: libremetaverse::PrimitiveTextureEntryFace,
prim_scale: libremetaverse_types::Vector3,
) -> Result<(), crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.TransformTexCoords(System.Collections.Generic.List{LibreMetaverse.Rendering.Vertex},LibreMetaverse.Vector3,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Vector3)",
)
self.native_transform_tex_coords(vertices, center, te_face, prim_scale)
}
/// C# member: `M:LibreMetaverse.Rendering.MeshFoundry.UnpackMesh(System.Byte[])`.
pub fn unpack_mesh(
&self,
asset_data: Vec<u8>,
) -> Result<Option<libremetaverse_structured_data::OSDMap>, crate::Error> {
libremetaverse_types::not_implemented(
"M:LibreMetaverse.Rendering.MeshFoundry.UnpackMesh(System.Byte[])",
)
self.native_unpack_mesh(asset_data).map(Some)
}
}
impl libremetaverse::rendering::IRendering for MeshFoundry {}