OverviewFilesCommitsIssuesDocsReleasesPeers

hyper-tps / scenes / test / liquid_dump.gd

42 lines · gd ref:
extends SceneTree

## Headless diagnostic: run the Quake importer on START.MAP and dump the recovered
## liquid_volumes (count + per-volume AABB size) so we can see whether the swim volumes
## are real 3D boxes or collapsed/degenerate. Run:
##   "$HYPER_TPS_GODOT" --headless --script res://scenes/test/liquid_dump.gd

class StubTerrain extends Node:
	func edit_terrain_box(_c, _h, _s, _i, _m) -> void: pass
	func edit_terrain_convex(_planes, _c, _r, _s, _i, _m, _fp) -> void: pass

func _init() -> void:
	var map_path := "/storage/projects/gamedev/quake/quakemash/START.MAP"
	var importer := QuakeMapImporter.new()
	var stub := StubTerrain.new()
	var n := importer.import_file(stub, map_path, 0.028, Vector3(0, 20, 0), 1.0, null, true, {})
	print("stamped=%d  liquids=%d  teleports=%d" % [n, importer.liquid_volumes.size(), importer.teleport_volumes.size()])
	var by_class := {}
	var i := 0
	for v in importer.liquid_volumes:
		var sz: Vector3 = (v.aabb_max as Vector3) - (v.aabb_min as Vector3)
		by_class[v.get("class", "?")] = int(by_class.get(v.get("class", "?"), 0)) + 1
		if i < 12:
			print("  [%d] %s tex=%s  size(m)=%s  top_y=%.2f  min=%s max=%s" % [
				i, v.get("class", "?"), v.get("tex", ""), str(sz.round()),
				float(v.get("top_y", 0.0)), str((v.aabb_min as Vector3).round()),
				str((v.aabb_max as Vector3).round())])
		i += 1
	print("by_class=", by_class)
	print("teleport_triggers=%d  destinations=%d" % [
		importer.teleport_triggers.size(), importer.teleport_destinations.size()])
	for t in importer.teleport_triggers:
		var d = importer.teleport_destinations.get(t.get("target", ""), null)
		print("  trig target=%s -> %s" % [t.get("target", "?"),
			("dest " + str((d.pos as Vector3).round()) + " yaw=%.2f" % d.yaw) if d != null else "NO DEST"])
	print("doors=%d" % importer.doors.size())
	for d in importer.doors:
		print("  door tex=%s move_dir=%s dist=%.2f speed=%.2f wait=%s tgt=%s" % [
			d.get("tex","?"), str((d.move_dir as Vector3).round()), float(d.move_distance),
			float(d.speed), str(d.wait), str(d.targetname)])
	quit()