Skip to content

[Domain] flag walls and obstacles blocking connection passages#270

Open
SilverSupplier wants to merge 2 commits into
mainfrom
domain/obstacle-connection-validation
Open

[Domain] flag walls and obstacles blocking connection passages#270
SilverSupplier wants to merge 2 commits into
mainfrom
domain/obstacle-connection-validation

Conversation

@SilverSupplier
Copy link
Copy Markdown
Collaborator

Summary

  • Add layout import validation that flags a movement-blocking wall or obstacle whose geometry crosses the interior of a connection passage (new ImportIssueCode::ObstructedConnection, reported as a non-blocking warning). This closes the previously missing "walls/obstacles must not conflict with the space structure" validation item.
  • Crossings at span endpoints (doorways meeting flanking walls) and boundary-parallel walls are excluded so valid layouts are not falsely flagged.
  • Wire the new code into application-side live re-validation so it refreshes while the layout is edited.
  • Add tests/ImportValidationServiceTests.cpp: clean-layout baseline, a wall crossing a passage, a non-blocking barrier (ignored), and an endpoint-contact wall (ignored).

Area

  • Domain
  • Application

Architecture Check

  • I kept the dependency direction application -> domain -> engine.
  • I did not add Qt UI code to src/domain.
  • I did not add domain or application dependencies to src/engine.
  • I used src/ as the include root.

Verification

  • cmake --preset windows-debug
  • cmake --build --preset build-debug
  • ctest --preset test-debug
  • Not run (reason below)

Ran the release / no-app equivalents: cmake --preset windows-release-no-app, cmake --build --preset build-no-app-release, ctest --preset test-no-app-release -> 100% pass (includes the new ImportValidationServiceTests). The full Qt app build (cmake --build --preset build-release --target safecrowd_app) also succeeds.

Risks / Follow-up

  • The new issue is a non-blocking warning, so it surfaces for review without rejecting layouts. Tolerances exclude endpoint contact and boundary-parallel walls to avoid false positives on existing demo/test fixtures.

@SilverSupplier SilverSupplier requested a review from learncold as a code owner June 2, 2026 19:26
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant