37 lines
1.2 KiB
GDScript
37 lines
1.2 KiB
GDScript
@tool
|
|
extends EditorScenePostImport
|
|
|
|
const OUT_PATH: String = "res://wireframes/"
|
|
|
|
func _post_import(scene: Node) -> Object:
|
|
var children: Array[Node] = scene.get_children()
|
|
print('Updating meshes to wireframe ', scene.name)
|
|
|
|
for child: Node in children:
|
|
if not is_instance_of(child, MeshInstance3D):
|
|
continue
|
|
|
|
var mesh_in: ArrayMesh = child.mesh
|
|
|
|
assert(mesh_in.surface_get_primitive_type(0) == Mesh.PRIMITIVE_TRIANGLES)
|
|
var mesh_out := MeshUtils.unroll_vertices(mesh_in, [Mesh.ARRAY_VERTEX, Mesh.ARRAY_TEX_UV, Mesh.ARRAY_CUSTOM0])
|
|
assert(mesh_out.surface_get_primitive_type(0) == Mesh.PRIMITIVE_TRIANGLES)
|
|
|
|
var material := ShaderMaterial.new()
|
|
material.shader = preload("res://shader.gdshader")
|
|
mesh_out.surface_set_material(0, material)
|
|
|
|
#child.mesh = mesh_out
|
|
#child.set_surface_override_material(0, material)
|
|
#print('Updated ', child)
|
|
|
|
var filename_out := OUT_PATH + scene.name + ".res"
|
|
#mesh_out.take_over_path(filename_out)
|
|
ResourceSaver.save(mesh_out, filename_out)
|
|
# doesn't seem to help
|
|
#, ResourceSaver.SaverFlags.FLAG_CHANGE_PATH | ResourceSaver.SaverFlags.FLAG_REPLACE_SUBRESOURCE_PATHS)
|
|
|
|
break # only export first mesh
|
|
|
|
return scene # Return the modified root node when you're done.
|