qa: walkable demo fixed — terrain collision root cause, spawn, and a scripted QA pass #7

Closed
zwitschi wants to merge 13 commits from qa-input-collision-fix-0.1.0 into main
pull from: qa-input-collision-fix-0.1.0
9 changed files with 20 additions and 11 deletions
Showing only changes of commit eb199ccce6 - Show all commits

No files matched your search

Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+7 -4
View File
@@ -372,11 +372,14 @@ def build():
# sidewalk is at Y -1912..-1053 and the SOUTH sidewalk at Y +718..+1447. # sidewalk is at Y -1912..-1053 and the SOUTH sidewalk at Y +718..+1447.
# The hero facade is on the SOUTH side at Y +1307. Stand on the north # The hero facade is on the SOUTH side at Y +1307. Stand on the north
# sidewalk and face south (+Y, yaw 90) across the road at it. # sidewalk and face south (+Y, yaw 90) across the road at it.
# Z 200 is clear air so the capsule settles onto the pavement instead of # Z: the terrain here is ~Z 99-138. The capsule half-height is 87.5 cm, so
# spawning embedded or below grade (the fall-through QA finding). # feet must start ABOVE the surface or the point is embedded and UE rejects
spawn(unreal.PlayerStart, unreal.Vector(-13336.0, -1700.0, 200.0), "Demo_PlayerStart", # the PlayerStart ("NO PLAYERSTART with positive rating"), dropping the pawn
# at the world origin to fall through. Cap feet ~80 cm above grade: centre
# ~138+80+87 = 305, so Z 300 lets it drop cleanly and gravity settles it.
spawn(unreal.PlayerStart, unreal.Vector(-13336.0, -1700.0, 300.0), "Demo_PlayerStart",
unreal.Rotator(pitch=0.0, yaw=90.0, roll=0.0)) unreal.Rotator(pitch=0.0, yaw=90.0, roll=0.0))
log("staged: Demo_PlayerStart on the north sidewalk facing south (+Y)") log("staged: Demo_PlayerStart on the north sidewalk (cap above grade), facing south (+Y)")
# A lockable LFS .umap checks out read-only, which makes save_map silently # A lockable LFS .umap checks out read-only, which makes save_map silently
# return False — chmod u+w first or the staged actors never persist. # return False — chmod u+w first or the staged actors never persist.
+6
View File
@@ -50,6 +50,12 @@ def import_fbx(path, name, collision="complex"):
smd.convert_scene_unit = False smd.convert_scene_unit = False
smd.force_front_x_axis = False smd.force_front_x_axis = False
smd.normal_import_method = unreal.FBXNormalImportMethod.FBXNIM_IMPORT_NORMALS smd.normal_import_method = unreal.FBXNormalImportMethod.FBXNIM_IMPORT_NORMALS
# Generate collision at import. A default FBX static-mesh import creates NO
# collision primitives, so CTF_USE_COMPLEX_AS_SIMPLE later has nothing to use
# and the player falls through the walkable surfaces (observed at runtime:
# ground trace under the spawn hits nothing). auto_generate_collision bakes
# collision geometry into the mesh so the walkable plane actually blocks.
smd.auto_generate_collision = True
task.options = ui task.options = ui
unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks([task]) unreal.AssetToolsHelpers.get_asset_tools().import_asset_tasks([task])