// @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.Rendering.SimpleRenderer`.
///
/// Native Rust mapping of C# `LibreMetaverse.Rendering.SimpleRenderer` using decision
/// `native_metacrate_type`. See the [pinned C# source](https://github.com/cinderblocks/libremetaverse/tree/2aa70bb68513b39795da5d13c88f31b86e85a3ba).
pub use crate::simple_renderer::SimpleRenderer;
impl SimpleRenderer {
    /// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.#ctor`.
    ///
    /// C# signature: `LibreMetaverse.Rendering.SimpleRenderer()`.
    /// Mapping contract: ownership `none`; async `sync`;
    /// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
    pub fn new() -> Result<Self, crate::Error> {
        /* reviewed native compatibility body */
        Self::native_new()
    }
    /// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`.
    ///
    /// C# signature: `LibreMetaverse.Rendering.FacetedMesh LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedMesh(LibreMetaverse.Primitive prim, LibreMetaverse.Rendering.DetailLevel lod)`.
    /// Mapping contract: ownership `shared_self,owned,owned`; async `sync`;
    /// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
    pub fn generate_faceted_mesh(
        &self,
        prim: libremetaverse::Primitive,
        lod: libremetaverse::rendering::DetailLevel,
    ) -> Result<libremetaverse::rendering::FacetedMesh, crate::Error> {
        /* reviewed native compatibility body */
        self.native_generate_faceted_mesh(prim, lod)
    }
    /// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)`.
    ///
    /// C# signature: `LibreMetaverse.Rendering.FacetedMesh LibreMetaverse.Rendering.SimpleRenderer.GenerateFacetedSculptMesh(LibreMetaverse.Primitive prim, LibreMetaverse.Imaging.ManagedImage sculptTexture, LibreMetaverse.Rendering.DetailLevel lod)`.
    /// Mapping contract: ownership `shared_self,owned,owned,owned`; async `sync`;
    /// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
    pub fn generate_faceted_sculpt_mesh(
        &self,
        prim: libremetaverse::Primitive,
        sculpt_texture: libremetaverse_imaging::ManagedImage,
        lod: libremetaverse::rendering::DetailLevel,
    ) -> Result<libremetaverse::rendering::FacetedMesh, crate::Error> {
        /* reviewed native compatibility body */
        self.native_generate_faceted_sculpt_mesh(prim, sculpt_texture, lod)
    }
    /// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleMesh(LibreMetaverse.Primitive,LibreMetaverse.Rendering.DetailLevel)`.
    ///
    /// C# signature: `LibreMetaverse.Rendering.SimpleMesh LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleMesh(LibreMetaverse.Primitive prim, LibreMetaverse.Rendering.DetailLevel lod)`.
    /// Mapping contract: ownership `shared_self,owned,owned`; async `sync`;
    /// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
    pub fn generate_simple_mesh(
        &self,
        prim: libremetaverse::Primitive,
        lod: libremetaverse::rendering::DetailLevel,
    ) -> Result<libremetaverse::rendering::SimpleMesh, crate::Error> {
        /* reviewed native compatibility body */
        self.native_generate_simple_mesh(prim, lod)
    }
    /// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleSculptMesh(LibreMetaverse.Primitive,LibreMetaverse.Imaging.ManagedImage,LibreMetaverse.Rendering.DetailLevel)`.
    ///
    /// C# signature: `LibreMetaverse.Rendering.SimpleMesh LibreMetaverse.Rendering.SimpleRenderer.GenerateSimpleSculptMesh(LibreMetaverse.Primitive prim, LibreMetaverse.Imaging.ManagedImage sculptTexture, LibreMetaverse.Rendering.DetailLevel lod)`.
    /// Mapping contract: ownership `shared_self,owned,owned,owned`; async `sync`;
    /// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
    pub fn generate_simple_sculpt_mesh(
        &self,
        prim: libremetaverse::Primitive,
        sculpt_texture: libremetaverse_imaging::ManagedImage,
        lod: libremetaverse::rendering::DetailLevel,
    ) -> Result<libremetaverse::rendering::SimpleMesh, crate::Error> {
        /* reviewed native compatibility body */
        self.native_generate_simple_sculpt_mesh(prim, sculpt_texture, lod)
    }
    /// C# member: `M:LibreMetaverse.Rendering.SimpleRenderer.TransformTexCoords(System.Collections.Generic.List{LibreMetaverse.Rendering.Vertex},LibreMetaverse.Vector3,LibreMetaverse.Primitive.TextureEntryFace,LibreMetaverse.Vector3)`.
    ///
    /// C# signature: `System.Void LibreMetaverse.Rendering.SimpleRenderer.TransformTexCoords(System.Collections.Generic.List<LibreMetaverse.Rendering.Vertex> vertices, LibreMetaverse.Vector3 center, LibreMetaverse.Primitive.TextureEntryFace teFace, LibreMetaverse.Vector3 primScale)`.
    /// Mapping contract: ownership `shared_self,mutable_borrow,owned,owned,owned`; async `sync`;
    /// errors `Result<_, crate::Error>`; overload `direct_snake_case`; kind `method`.
    pub fn transform_tex_coords(
        &self,
        vertices: &mut Vec<libremetaverse::rendering::Vertex>,
        center: libremetaverse_types::Vector3,
        te_face: libremetaverse::PrimitiveTextureEntryFace,
        prim_scale: libremetaverse_types::Vector3,
    ) -> Result<(), crate::Error> {
        /* reviewed native compatibility body */
        self.native_transform_tex_coords(vertices, center, te_face, prim_scale)
    }
}
