merge: bring main (v0.1.6) into anim-body-0.2.0
Conflicts resolved by union, not by picking a side: - AGENTS.md keeps the stronger visual-review rule (README updated with every visual change; a stale section is a defect). - render_screenshots.sh keeps the absolute engine path from main and adds -thirdperson from this branch - both were needed and neither alone worked. - Screenshots/README.md now lists six shots, retail and third-person both embedded; the known-issues tables merged, with the animation defect and unproven camera collision added to main's rows. - visual_targets.json carries both expectations. - Architecture docs: ADR-8 (realistic buildings) and ADR-9 (third-person body) both present and in numeric order; ADR-8 was mis-placed before the Quality Requirements heading in the combined document by an earlier edit, now fixed. - Binary conflicts resolved to main's content, since the retail trim only exists there. Checks: 82 tool tests, prettier clean, six embeds resolve.
This commit is contained in:
commit
50e023f15d
61 files changed
+936
-79
No files matched your search
@@ -0,0 +1,32 @@
|
||||
"""Tests for the pure layout helper in Tools/retail_frontage_build.py.
|
||||
|
||||
The builder itself needs Blender; `bay_centres` does not, so the bay rhythm the
|
||||
façade depends on is checkable without starting Blender or Unreal.
|
||||
"""
|
||||
|
||||
import unittest
|
||||
|
||||
from Tools._common import bay_centres
|
||||
|
||||
|
||||
class BayCentreTests(unittest.TestCase):
|
||||
def test_centres_stay_inside_the_margins(self):
|
||||
centres = bay_centres(-33.20, -14.37, margin=1.2)
|
||||
self.assertGreaterEqual(min(centres), -33.20 + 1.2 - 1e-9)
|
||||
self.assertLessEqual(max(centres), -14.37 - 1.2 + 1e-9)
|
||||
|
||||
def test_bays_are_evenly_spaced(self):
|
||||
centres = bay_centres(-66.08, -33.07, margin=1.0)
|
||||
steps = {round(b - a, 6) for a, b in zip(centres, centres[1:])}
|
||||
self.assertEqual(len(steps), 1, f"uneven bay spacing: {steps}")
|
||||
|
||||
def test_bay_count_is_the_round_of_span_over_bay(self):
|
||||
# 33.01 m frontage, 1.0 m margin each end -> 31.01 m -> 14 bays at 2.2 m.
|
||||
self.assertEqual(len(bay_centres(-66.08, -33.07, margin=1.0)), 14)
|
||||
|
||||
def test_degenerate_frontage_returns_nothing(self):
|
||||
self.assertEqual(bay_centres(0.0, 1.0, margin=1.0), [])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in new issue
Block a user