// <auto-generated>
// This file is generated by Ghost.NativeWrapperGen. Do not edit manually.
// </auto-generated>

namespace Ghost.MeshOptimizer;

public unsafe partial struct meshopt_Meshlet
{
    /// <summary>
    /// From: <see cref="Api.meshopt_buildMeshlets(meshopt_Meshlet*, uint*, byte*, uint*, nuint, float*, nuint, nuint, nuint, nuint, float)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public nuint Builds(uint* meshlet_vertices, byte* meshlet_triangles, uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, nuint max_vertices, nuint max_triangles, float cone_weight)
    {
        return Api.meshopt_buildMeshlets(
            (meshopt_Meshlet*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            meshlet_vertices,
            meshlet_triangles,
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            max_vertices,
            max_triangles,
            cone_weight);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_buildMeshletsScan(meshopt_Meshlet*, uint*, byte*, uint*, nuint, nuint, nuint, nuint)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public nuint BuildsScan(uint* meshlet_vertices, byte* meshlet_triangles, uint* indices, nuint index_count, nuint vertex_count, nuint max_vertices, nuint max_triangles)
    {
        return Api.meshopt_buildMeshletsScan(
            (meshopt_Meshlet*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            meshlet_vertices,
            meshlet_triangles,
            indices,
            index_count,
            vertex_count,
            max_vertices,
            max_triangles);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_buildMeshletsFlex(meshopt_Meshlet*, uint*, byte*, uint*, nuint, float*, nuint, nuint, nuint, nuint, nuint, float, float)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public nuint BuildsFlex(uint* meshlet_vertices, byte* meshlet_triangles, uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, nuint max_vertices, nuint min_triangles, nuint max_triangles, float cone_weight, float split_factor)
    {
        return Api.meshopt_buildMeshletsFlex(
            (meshopt_Meshlet*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            meshlet_vertices,
            meshlet_triangles,
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            max_vertices,
            min_triangles,
            max_triangles,
            cone_weight,
            split_factor);
    }

    /// <summary>
    /// From: <see cref="Api.meshopt_buildMeshletsSpatial(meshopt_Meshlet*, uint*, byte*, uint*, nuint, float*, nuint, nuint, nuint, nuint, nuint, float)" />
    /// </summary>
    [System.Runtime.CompilerServices.MethodImpl(System.Runtime.CompilerServices.MethodImplOptions.AggressiveInlining)]
    public nuint BuildsSpatial(uint* meshlet_vertices, byte* meshlet_triangles, uint* indices, nuint index_count, float* vertex_positions, nuint vertex_count, nuint vertex_positions_stride, nuint max_vertices, nuint min_triangles, nuint max_triangles, float fill_weight)
    {
        return Api.meshopt_buildMeshletsSpatial(
            (meshopt_Meshlet*)System.Runtime.CompilerServices.Unsafe.AsPointer(ref this),
            meshlet_vertices,
            meshlet_triangles,
            indices,
            index_count,
            vertex_positions,
            vertex_count,
            vertex_positions_stride,
            max_vertices,
            min_triangles,
            max_triangles,
            fill_weight);
    }
}
