Skip to content

Instantly share code, notes, and snippets.

@aoisensi
Created December 6, 2025 07:14
Show Gist options
  • Select an option

  • Save aoisensi/f544d06602cafca7f915c777459c653e to your computer and use it in GitHub Desktop.

Select an option

Save aoisensi/f544d06602cafca7f915c777459c653e to your computer and use it in GitHub Desktop.
@tool
class_name DynamicArrayMesh extends ArrayMesh
@export_tool_button('Add Surface')
var add := func(): surface_count += 1
@export_tool_button('Remove Surface')
var remove := func(): surface_count -= 1
@export var surface_count: int = 1:
set(value):
surface_count = clamp(value, 0, 8)
_generate()
get:
return surface_count
func _generate() -> void:
clear_surfaces()
for i in range(surface_count):
var array := []
array.resize(Mesh.ARRAY_MAX)
array[Mesh.ARRAY_INDEX] = PackedInt32Array([0, 1, 2, 2, 1, 3])
array[Mesh.ARRAY_VERTEX] = PackedVector3Array([
Vector3(-0.5, -0.5, float(i)),
Vector3(-0.5, +0.5, float(i)),
Vector3(+0.5, -0.5, float(i)),
Vector3(+0.5, +0.5, float(i)),
])
add_surface_from_arrays(Mesh.PRIMITIVE_TRIANGLES, array)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment