Files
przygody-pana-cegly/addons/rmsmartshape/shapes/mesh.gd

81 lines
1.8 KiB
GDScript

@tool
extends RefCounted
class_name SS2D_Mesh
## Used to organize all requested meshes to be rendered by their textures.
var texture: Texture2D = null
var flip_texture: bool = false
var meshes: Array[ArrayMesh] = []
var mesh_transform: Transform2D = Transform2D()
var material: Material = null
var z_index: int = 0
var z_as_relative: bool = true
var show_behind_parent: bool = false
var force_no_tiling: bool = false
func _init(
t: Texture2D = null,
f: bool = false,
xform: Transform2D = Transform2D(),
m: Array[ArrayMesh] = [],
mat: Material = null
) -> void:
texture = t
flip_texture = f
meshes = m
mesh_transform = xform
material = mat
# Note: Not an override.
func duplicate(subresources: bool = false) -> SS2D_Mesh:
var copy := SS2D_Mesh.new()
copy.texture = texture
copy.flip_texture = flip_texture
copy.mesh_transform = mesh_transform
copy.material = material
copy.z_index = z_index
copy.z_as_relative = z_as_relative
copy.show_behind_parent = show_behind_parent
copy.force_no_tiling = force_no_tiling
copy.meshes = []
if subresources:
for m in meshes:
copy.meshes.push_back(m.duplicate(true))
return copy
func matches(tex: Texture2D, f: bool, t: Transform2D, m: Material, zi: int, zb: bool) -> bool:
return (
tex == texture
and f == flip_texture
and t == mesh_transform
and m == material
and zi == z_index
and zb == z_as_relative
)
func mesh_matches(m: SS2D_Mesh) -> bool:
return matches(
m.texture,
m.flip_texture,
m.mesh_transform,
m.material,
m.z_index,
m.z_as_relative
)
func debug_print_array_mesh(am: ArrayMesh) -> String:
var s := "Faces:%s | Surfs:%s | " % [am.get_faces(), am.get_surface_count()]
return s
func render(ci: CanvasItem) -> void:
#print("mesh count %s" % meshes.size())
for mesh in meshes:
ci.draw_mesh(mesh, texture)