Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- @tool # Needed so it runs in editor.
- extends EditorScenePostImport
- # Called right after the scene is imported and gets the root node.
- func _post_import(scene):
- # Iterate through the scene and duplicate materials for SurfaceMaterial sub-resources.
- iterate(scene)
- return scene # Remember to return the imported scene
- # Recursive function that is called on every node.
- func iterate(node):
- if node != null:
- if node is MeshInstance3D:
- var node_internal = node.duplicate()
- var processed_node = process_mesh_instance(node_internal)
- processed_node.set_rotation_degrees(Vector3(90,0,0))
- node.replace_by(processed_node)
- for child in node.get_children():
- iterate(child)
- # Function to process a MeshInstance3D node.
- func process_mesh_instance(mesh_instance):
- var mesh = mesh_instance.duplicate()
- for i in range(mesh.get_surface_override_material_count()):
- var surface_material = mesh.get_active_material(i)
- if surface_material != null:
- var new_material = surface_material.duplicate()
- new_material.set_render_priority(i)
- new_material.set_texture_filter(0) # nearest neighbor
- new_material.albedo_texture_force_srgb = true
- new_material.set_transparency(2) # Alpha_Scissor
- new_material.set_alpha_scissor_threshold(0.15)
- mesh.mesh.surface_set_material(i, new_material)
- mesh_instance.replace_by(mesh)
- return mesh_instance
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement