1. Replace 4k models with low-poly once 2. Use bare mixamo for testing 3. Add a basic menu 4. Add a map with collisions and spawn areas
65 lines
1.8 KiB
GDScript
65 lines
1.8 KiB
GDScript
@tool
|
|
extends EditorScript
|
|
|
|
|
|
# Called when the script is executed (using File -> Run in Script Editor).
|
|
func _run() -> void:
|
|
print("running")
|
|
# Path to the folder containing the .glb files (adjust as needed)
|
|
var glb_folder = "res://assets/models/kenney/RetroUrban/" # Change to your folder path
|
|
var files = []
|
|
|
|
# Get a list of all .glb files in the folder
|
|
var dir = DirAccess.open(glb_folder)
|
|
if dir:
|
|
dir.list_dir_begin()
|
|
while true:
|
|
var file_name = dir.get_next()
|
|
if file_name == "":
|
|
break
|
|
if file_name.ends_with(".glb"):
|
|
files.append(file_name)
|
|
dir.list_dir_end()
|
|
else:
|
|
print("Failed to open directory: " + glb_folder)
|
|
return
|
|
|
|
# Process each .glb file
|
|
for file_name in files:
|
|
var file_path = glb_folder + file_name
|
|
print("Processing: ", file_path)
|
|
|
|
# Load the .glb file
|
|
var scene: PackedScene = ResourceLoader.load(file_path)
|
|
if scene:
|
|
# Instance the scene and generate physics
|
|
var root = scene.instantiate()
|
|
if root:
|
|
generate_physics(root)
|
|
|
|
# Save the new scene
|
|
var save_path = file_path.replace(".glb", ".tscn")
|
|
ResourceSaver.save(save_path, root)
|
|
print("Saved: ", save_path)
|
|
else:
|
|
print("Failed to load: " + file_path)
|
|
|
|
# Generate static body physics for the mesh
|
|
func generate_physics(node):
|
|
for child in node.get_children():
|
|
if child is MeshInstance3D:
|
|
var static_body = StaticBody3D.new()
|
|
var collision_shape = CollisionShape3D.new()
|
|
|
|
# Generate collision shape from mesh
|
|
var shape = child.mesh.create_convex_shape()
|
|
if shape:
|
|
collision_shape.shape = shape
|
|
static_body.add_child(collision_shape)
|
|
static_body.global_transform = child.global_transform
|
|
node.add_child(static_body)
|
|
print("Added physics for: ", child.name)
|
|
|
|
# Recursively process child nodes
|
|
generate_physics(child)
|