// @generated by tools/generate_api_shims.py; do not edit by hand.
#![allow(clippy::missing_errors_doc)]
#![allow(clippy::must_use_candidate)]
#![allow(clippy::all, clippy::pedantic, dead_code, unused_variables)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]

/// C# type: `T:LibreMetaverse.PrimMesher.Coord`.
pub struct Coord {
    /// C# member: `F:LibreMetaverse.PrimMesher.Coord.X`.
    pub x: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Coord.Y`.
    pub y: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Coord.Z`.
    pub z: f32,
}
impl Coord {
    /// C# member: `M:LibreMetaverse.PrimMesher.Coord.#ctor(System.Single,System.Single,System.Single)`.
    pub fn new(x: f32, y: f32, z: f32) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.Coord.#ctor(System.Single,System.Single,System.Single)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.Coord.Cross(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord)`.
    pub fn cross(
        c1: libremetaverse_prim_mesher::Coord,
        c2: libremetaverse_prim_mesher::Coord,
    ) -> Result<libremetaverse_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`.
pub struct Face {
    /// C# member: `F:LibreMetaverse.PrimMesher.Face.n1`.
    pub n1: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Face.n2`.
    pub n2: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Face.n3`.
    pub n3: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Face.primFace`.
    pub prim_face: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Face.uv1`.
    pub uv1: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Face.uv2`.
    pub uv2: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Face.uv3`.
    pub uv3: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Face.v1`.
    pub v1: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Face.v2`.
    pub v2: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Face.v3`.
    pub v3: i32,
}
impl Face {
    /// 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`.
pub struct ObjMesh {
    /// C# member: `F:LibreMetaverse.PrimMesher.ObjMesh.meshName`.
    pub mesh_name: String,
    /// C# member: `F:LibreMetaverse.PrimMesher.ObjMesh.numPrimFaces`.
    pub num_prim_faces: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.ObjMesh.viewerPolygons`.
    pub viewer_polygons: Vec<Vec<libremetaverse_prim_mesher::ViewerPolygon>>,
    /// C# member: `F:LibreMetaverse.PrimMesher.ObjMesh.viewerVertices`.
    pub viewer_vertices: Vec<Vec<libremetaverse_prim_mesher::ViewerVertex>>,
}
impl ObjMesh {
    /// C# member: `M:LibreMetaverse.PrimMesher.ObjMesh.#ctor(System.IO.StreamReader)`.
    pub fn new_with_stream_reader(
        sr: libremetaverse_types::compat::StreamReader,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.ObjMesh.#ctor(System.IO.StreamReader)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.ObjMesh.#ctor(System.String)`.
    pub fn new_with_string(path: String) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.ObjMesh.#ctor(System.String)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.ObjMesh.GetVertexIndexer`.
    pub fn get_vertex_indexer(
        &self,
    ) -> Result<libremetaverse_prim_mesher::VertexIndexer, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.ObjMesh.GetVertexIndexer",
        )
    }
}

/// C# type: `T:LibreMetaverse.PrimMesher.Path`.
pub struct Path {
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.dimpleBegin`.
    pub dimple_begin: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.dimpleEnd`.
    pub dimple_end: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.holeSizeX`.
    pub hole_size_x: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.holeSizeY`.
    pub hole_size_y: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.pathCutBegin`.
    pub path_cut_begin: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.pathCutEnd`.
    pub path_cut_end: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.pathNodes`.
    pub path_nodes: Vec<libremetaverse_prim_mesher::PathNode>,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.radius`.
    pub radius: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.revolutions`.
    pub revolutions: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.skew`.
    pub skew: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.stepsPerRevolution`.
    pub steps_per_revolution: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.taperX`.
    pub taper_x: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.taperY`.
    pub taper_y: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.topShearX`.
    pub top_shear_x: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.topShearY`.
    pub top_shear_y: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.twistBegin`.
    pub twist_begin: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Path.twistEnd`.
    pub twist_end: f32,
}
impl Path {
    /// 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`.
pub struct PathNode {
    /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.percentOfPath`.
    pub percent_of_path: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.position`.
    pub position: libremetaverse_prim_mesher::Coord,
    /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.rotation`.
    pub rotation: libremetaverse_prim_mesher::Quat,
    /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.xScale`.
    pub x_scale: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PathNode.yScale`.
    pub y_scale: f32,
}
impl PathNode {}

/// C# type: `T:LibreMetaverse.PrimMesher.PathType`.
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
#[repr(i32)]
pub enum PathType {
    /// C# member: `F:LibreMetaverse.PrimMesher.PathType.Circular`.
    Circular = 1,
    /// C# member: `F:LibreMetaverse.PrimMesher.PathType.Flexible`.
    Flexible = 2,
    /// C# member: `F:LibreMetaverse.PrimMesher.PathType.Linear`.
    Linear = 0,
}

/// C# type: `T:LibreMetaverse.PrimMesher.PrimMesh`.
pub struct PrimMesh {
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.calcVertexNormals`.
    pub calc_vertex_normals: bool,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.coords`.
    pub coords: Vec<libremetaverse_prim_mesher::Coord>,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.dimpleBegin`.
    pub dimple_begin: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.dimpleEnd`.
    pub dimple_end: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.errorMessage`.
    pub error_message: String,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.faces`.
    pub faces: Vec<libremetaverse_prim_mesher::Face>,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.holeSizeX`.
    pub hole_size_x: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.holeSizeY`.
    pub hole_size_y: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.normals`.
    pub normals: Vec<libremetaverse_prim_mesher::Coord>,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.numPrimFaces`.
    pub num_prim_faces: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.pathCutBegin`.
    pub path_cut_begin: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.pathCutEnd`.
    pub path_cut_end: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.radius`.
    pub radius: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.revolutions`.
    pub revolutions: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.skew`.
    pub skew: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.sphereMode`.
    pub sphere_mode: bool,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.stepsPerRevolution`.
    pub steps_per_revolution: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.taperX`.
    pub taper_x: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.taperY`.
    pub taper_y: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.topShearX`.
    pub top_shear_x: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.topShearY`.
    pub top_shear_y: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.twistBegin`.
    pub twist_begin: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.twistEnd`.
    pub twist_end: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.PrimMesh.viewerFaces`.
    pub viewer_faces: Vec<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`.
pub struct Profile {
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.bottomFaceNumber`.
    pub bottom_face_number: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.calcVertexNormals`.
    pub calc_vertex_normals: bool,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.coords`.
    pub coords: Vec<libremetaverse_prim_mesher::Coord>,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.cut1CoordIndices`.
    pub cut1_coord_indices: Vec<i32>,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.cut2CoordIndices`.
    pub cut2_coord_indices: Vec<i32>,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.cutNormal1`.
    pub cut_normal1: libremetaverse_prim_mesher::Coord,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.cutNormal2`.
    pub cut_normal2: libremetaverse_prim_mesher::Coord,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.errorMessage`.
    pub error_message: String,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.faceNormal`.
    pub face_normal: libremetaverse_prim_mesher::Coord,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.faceNumbers`.
    pub face_numbers: Vec<i32>,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.faceUVs`.
    pub face_u_vs: Vec<libremetaverse_prim_mesher::UVCoord>,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.faces`.
    pub faces: Vec<libremetaverse_prim_mesher::Face>,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.hollowCoordIndices`.
    pub hollow_coord_indices: Vec<i32>,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.hollowFaceNumber`.
    pub hollow_face_number: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.numHollowVerts`.
    pub num_hollow_verts: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.numOuterVerts`.
    pub num_outer_verts: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.numPrimFaces`.
    pub num_prim_faces: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Profile.outerCoordIndices`.
    pub outer_coord_indices: Vec<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`.
pub struct Quat {
    /// C# member: `F:LibreMetaverse.PrimMesher.Quat.W`.
    pub w: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Quat.X`.
    pub x: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Quat.Y`.
    pub y: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.Quat.Z`.
    pub z: f32,
}
impl Quat {
    /// 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`.
pub struct SculptMap {
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMap.blueBytes`.
    pub blue_bytes: Vec<u8>,
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMap.greenBytes`.
    pub green_bytes: Vec<u8>,
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMap.height`.
    pub height: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMap.redBytes`.
    pub red_bytes: Vec<u8>,
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMap.width`.
    pub width: i32,
}
impl SculptMap {
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMap.#ctor`.
    pub fn new_with_constructor() -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.SculptMap.#ctor")
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMap.#ctor(LibreMetaverse.Imaging.ManagedImage,System.Int32)`.
    pub fn new_with_managed_image_int32(
        image: libremetaverse_imaging::ManagedImage,
        lod: i32,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMap.#ctor(LibreMetaverse.Imaging.ManagedImage,System.Int32)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMap.ToRows(System.Boolean)`.
    pub fn to_rows(
        &self,
        mirror: bool,
    ) -> Result<Vec<Vec<libremetaverse_prim_mesher::Coord>>, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMap.ToRows(System.Boolean)",
        )
    }
}

/// C# type: `T:LibreMetaverse.PrimMesher.SculptMesh`.
pub struct SculptMesh {
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.coords`.
    pub coords: Vec<libremetaverse_prim_mesher::Coord>,
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.faces`.
    pub faces: Vec<libremetaverse_prim_mesher::Face>,
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.normals`.
    pub normals: Vec<libremetaverse_prim_mesher::Coord>,
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.uvs`.
    pub uvs: Vec<libremetaverse_prim_mesher::UVCoord>,
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.viewerFaces`.
    pub viewer_faces: Vec<libremetaverse_prim_mesher::ViewerFace>,
}
impl SculptMesh {
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Int32,System.Boolean)`.
    pub fn new_with_managed_image_sculpt_type_int32_boolean(
        sculpt_image: libremetaverse_imaging::ManagedImage,
        sculpt_type: libremetaverse_prim_mesher::SculptMeshSculptType,
        lod: i32,
        viewer_mode: bool,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Int32,System.Boolean)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Int32,System.Boolean,System.Boolean,System.Boolean)`.
    pub fn new_with_managed_image_sculpt_type_int32_boolean_boolean_boolean(
        sculpt_image: libremetaverse_imaging::ManagedImage,
        sculpt_type: libremetaverse_prim_mesher::SculptMeshSculptType,
        lod: i32,
        viewer_mode: bool,
        mirror: bool,
        invert: bool,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Int32,System.Boolean,System.Boolean,System.Boolean)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(LibreMetaverse.PrimMesher.SculptMesh)`.
    pub fn new_with_sculpt_mesh(
        sm: libremetaverse_prim_mesher::SculptMesh,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(LibreMetaverse.PrimMesher.SculptMesh)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(System.Collections.Generic.List{System.Collections.Generic.List{LibreMetaverse.PrimMesher.Coord}},LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Boolean,System.Boolean,System.Boolean)`.
    pub fn new_with_list_sculpt_type_boolean_boolean_boolean(
        rows: Vec<Vec<libremetaverse_prim_mesher::Coord>>,
        sculpt_type: libremetaverse_prim_mesher::SculptMeshSculptType,
        viewer_mode: bool,
        mirror: bool,
        invert: bool,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(System.Collections.Generic.List{System.Collections.Generic.List{LibreMetaverse.PrimMesher.Coord}},LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Boolean,System.Boolean,System.Boolean)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(System.Single[0:,0:],System.Single,System.Single,System.Single,System.Single,System.Boolean)`.
    pub fn new_with_single_array_single_single_single_single_boolean(
        z_map: Vec<f32>,
        x_begin: f32,
        x_end: f32,
        y_begin: f32,
        y_end: f32,
        viewer_mode: bool,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(System.Single[0:,0:],System.Single,System.Single,System.Single,System.Single,System.Boolean)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(System.String,LibreMetaverse.Imaging.ITextureCodec,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)`.
    pub fn new_with_string_i_texture_codec_int32_int32_int32_int32_int32(
        file_name: String,
        codec: Box<dyn libremetaverse_imaging::ITextureCodec>,
        sculpt_type: i32,
        lod: i32,
        viewer_mode: i32,
        mirror: i32,
        invert: i32,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMesh.#ctor(System.String,LibreMetaverse.Imaging.ITextureCodec,System.Int32,System.Int32,System.Int32,System.Int32,System.Int32)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.AddPos(System.Single,System.Single,System.Single)`.
    pub fn add_pos(&self, x: f32, y: f32, z: f32) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMesh.AddPos(System.Single,System.Single,System.Single)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.AddRot(LibreMetaverse.PrimMesher.Quat)`.
    pub fn add_rot(&self, q: libremetaverse_prim_mesher::Quat) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMesh.AddRot(LibreMetaverse.PrimMesher.Quat)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.Copy`.
    pub fn copy(&self) -> Result<libremetaverse_prim_mesher::SculptMesh, crate::Error> {
        libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.SculptMesh.Copy")
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.DumpRaw(System.String,System.String,System.String)`.
    pub fn dump_raw(&self, path: String, name: String, title: String) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMesh.DumpRaw(System.String,System.String,System.String)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.Scale(System.Single,System.Single,System.Single)`.
    pub fn scale(&self, x: f32, y: f32, z: f32) -> Result<(), crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMesh.Scale(System.Single,System.Single,System.Single)",
        )
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.SculptMesh.SculptMeshFromFile(System.String,LibreMetaverse.Imaging.ITextureCodec,LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Int32,System.Boolean)`.
    pub fn sculpt_mesh_from_file(
        &self,
        file_name: String,
        codec: Box<dyn libremetaverse_imaging::ITextureCodec>,
        sculpt_type: libremetaverse_prim_mesher::SculptMeshSculptType,
        lod: i32,
        viewer_mode: bool,
    ) -> Result<libremetaverse_prim_mesher::SculptMesh, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.SculptMesh.SculptMeshFromFile(System.String,LibreMetaverse.Imaging.ITextureCodec,LibreMetaverse.PrimMesher.SculptMesh.SculptType,System.Int32,System.Boolean)",
        )
    }
}

/// C# type: `T:LibreMetaverse.PrimMesher.SculptMesh.SculptType`.
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
#[repr(i32)]
pub enum SculptMeshSculptType {
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.SculptType.cylinder`.
    Cylinder = 4,
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.SculptType.plane`.
    Plane = 3,
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.SculptType.sphere`.
    Sphere = 1,
    /// C# member: `F:LibreMetaverse.PrimMesher.SculptMesh.SculptType.torus`.
    Torus = 2,
}

/// C# type: `T:LibreMetaverse.PrimMesher.UVCoord`.
pub struct UVCoord {
    /// C# member: `F:LibreMetaverse.PrimMesher.UVCoord.U`.
    pub u: f32,
    /// C# member: `F:LibreMetaverse.PrimMesher.UVCoord.V`.
    pub v: f32,
}
impl UVCoord {
    /// 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`.
pub struct VertexIndexer {
    /// C# member: `F:LibreMetaverse.PrimMesher.VertexIndexer.numPrimFaces`.
    pub num_prim_faces: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.VertexIndexer.viewerPolygons`.
    pub viewer_polygons: Vec<Option<Vec<libremetaverse_prim_mesher::ViewerPolygon>>>,
    /// C# member: `F:LibreMetaverse.PrimMesher.VertexIndexer.viewerVertices`.
    pub viewer_vertices: Vec<Vec<libremetaverse_prim_mesher::ViewerVertex>>,
}
impl VertexIndexer {
    /// C# member: `M:LibreMetaverse.PrimMesher.VertexIndexer.#ctor`.
    pub fn new_with_constructor() -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented("M:LibreMetaverse.PrimMesher.VertexIndexer.#ctor")
    }
    /// C# member: `M:LibreMetaverse.PrimMesher.VertexIndexer.#ctor(LibreMetaverse.PrimMesher.PrimMesh)`.
    pub fn new_with_prim_mesh(
        prim_mesh: libremetaverse_prim_mesher::PrimMesh,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.VertexIndexer.#ctor(LibreMetaverse.PrimMesher.PrimMesh)",
        )
    }
}

/// C# type: `T:LibreMetaverse.PrimMesher.ViewerFace`.
pub struct ViewerFace {
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.coordIndex1`.
    pub coord_index1: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.coordIndex2`.
    pub coord_index2: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.coordIndex3`.
    pub coord_index3: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.n1`.
    pub n1: libremetaverse_prim_mesher::Coord,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.n2`.
    pub n2: libremetaverse_prim_mesher::Coord,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.n3`.
    pub n3: libremetaverse_prim_mesher::Coord,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.primFaceNumber`.
    pub prim_face_number: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.uv1`.
    pub uv1: libremetaverse_prim_mesher::UVCoord,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.uv2`.
    pub uv2: libremetaverse_prim_mesher::UVCoord,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.uv3`.
    pub uv3: libremetaverse_prim_mesher::UVCoord,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.v1`.
    pub v1: libremetaverse_prim_mesher::Coord,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.v2`.
    pub v2: libremetaverse_prim_mesher::Coord,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerFace.v3`.
    pub v3: libremetaverse_prim_mesher::Coord,
}
impl ViewerFace {
    /// 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`.
pub struct ViewerPolygon {
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerPolygon.v1`.
    pub v1: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerPolygon.v2`.
    pub v2: i32,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerPolygon.v3`.
    pub v3: i32,
}
impl ViewerPolygon {
    /// C# member: `M:LibreMetaverse.PrimMesher.ViewerPolygon.#ctor(System.Int32,System.Int32,System.Int32)`.
    pub fn new(v1: i32, v2: i32, v3: i32) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.ViewerPolygon.#ctor(System.Int32,System.Int32,System.Int32)",
        )
    }
}

/// C# type: `T:LibreMetaverse.PrimMesher.ViewerVertex`.
pub struct ViewerVertex {
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerVertex.n`.
    pub n: libremetaverse_prim_mesher::Coord,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerVertex.uv`.
    pub uv: libremetaverse_prim_mesher::UVCoord,
    /// C# member: `F:LibreMetaverse.PrimMesher.ViewerVertex.v`.
    pub v: libremetaverse_prim_mesher::Coord,
}
impl ViewerVertex {
    /// C# member: `M:LibreMetaverse.PrimMesher.ViewerVertex.#ctor(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.UVCoord)`.
    pub fn new(
        coord: libremetaverse_prim_mesher::Coord,
        normal: libremetaverse_prim_mesher::Coord,
        uv: libremetaverse_prim_mesher::UVCoord,
    ) -> Result<Self, crate::Error> {
        libremetaverse_types::not_implemented(
            "M:LibreMetaverse.PrimMesher.ViewerVertex.#ctor(LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.Coord,LibreMetaverse.PrimMesher.UVCoord)",
        )
    }
}
