Advertisement
Guest User

Untitled

a guest
Jun 25th, 2024
46
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.38 KB | None | 0 0
  1. @tool # Needed so it runs in editor.
  2. extends EditorScenePostImport
  3.  
  4. # Called right after the scene is imported and gets the root node.
  5. func _post_import(scene):
  6. # Iterate through the scene and duplicate materials for SurfaceMaterial sub-resources.
  7. iterate(scene)
  8. return scene # Remember to return the imported scene
  9.  
  10. # Recursive function that is called on every node.
  11. func iterate(node):
  12.  
  13. if node != null:
  14. if node is MeshInstance3D:
  15. var node_internal = node.duplicate()
  16. var processed_node = process_mesh_instance(node_internal)
  17. processed_node.set_rotation_degrees(Vector3(90,0,0))
  18. node.replace_by(processed_node)
  19.  
  20.  
  21. for child in node.get_children():
  22. iterate(child)
  23.  
  24. # Function to process a MeshInstance3D node.
  25. func process_mesh_instance(mesh_instance):
  26. var mesh = mesh_instance.duplicate()
  27.  
  28. for i in range(mesh.get_surface_override_material_count()):
  29. var surface_material = mesh.get_active_material(i)
  30. if surface_material != null:
  31. var new_material = surface_material.duplicate()
  32. new_material.set_render_priority(i)
  33. new_material.set_texture_filter(0) # nearest neighbor
  34. new_material.albedo_texture_force_srgb = true
  35. new_material.set_transparency(2) # Alpha_Scissor
  36. new_material.set_alpha_scissor_threshold(0.15)
  37. mesh.mesh.surface_set_material(i, new_material)
  38.  
  39. mesh_instance.replace_by(mesh)
  40.  
  41. return mesh_instance
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement