30 lines
754 B
GDScript
30 lines
754 B
GDScript
extends RefCounted
|
|
|
|
class_name Faces
|
|
|
|
var faces: Array[Face]
|
|
|
|
func _init(verts: PackedVector3Array, uvs: PackedVector2Array, normals: PackedVector3Array) -> void:
|
|
assert(len(verts) == len(uvs), "number of verts vs uvs do not match")
|
|
assert(len(normals)*3 == len(verts), "missing normal data")
|
|
|
|
for i in range(0, len(normals)):
|
|
var start_index = i*3
|
|
|
|
var v0 = verts[start_index]
|
|
var v1 = verts[start_index+1]
|
|
var v2 = verts[start_index+2]
|
|
|
|
var varray = PackedVector3Array([v0, v1, v2])
|
|
|
|
var u0 = uvs[start_index]
|
|
var u1 = uvs[start_index+1]
|
|
var u2 = uvs[start_index+2]
|
|
|
|
var uarray = PackedVector2Array([u0, u1, u2])
|
|
|
|
self.faces.append(Face.new(varray, uarray, normals[i]))
|
|
|
|
func get_faces() -> Array[Face]:
|
|
return faces
|