package halfedge import "core:container/small_array" Vec3 :: [3]f32 Vertex :: struct { pos: Vec3, edge: i16, } Face :: struct { edge: i16, } Vertex_Index :: distinct u16 Face_Index :: distinct i16 Edge_Index :: distinct i16 Half_Edge :: struct { origin: Vertex_Index, twin: Edge_Index, face: Face_Index, next: Edge_Index, prev: Edge_Index, } Mesh :: struct { vertices: []Vertex, faces: []Face, edges: []Half_Edge, } mesh_from_vertex_index_list :: proc(vertices: []Vec3, indices: []u16, allocator := context.allocator) { vertices: [dynamic]Vertex faces: [dynamic]Face edges: [dynamic]Half_Edge temp_edges: map[[2]u16]small_array.Small_Array(2, Edge_Index) triangle_num := len(indices) / 3 for i in 0.. 0 { // small_array.push_back(Edge_Index(e1 + j)) } } } }