Skip to content

[Feature] Support large-world and scene-aware navigation modes #785

Description

@JeanPhilippeKernel

Type

  • Bug
  • Feature
  • Refactor / cleanup
  • Task / chore

Overview

The initial editor camera is free-fly/orbit oriented. Large production scenes require predictable depth precision, scene-aware navigation, and optional walk/ground-constrained movement.

Context

This is a follow-up after real scene raycasts and robust input ownership. It should not add large-world precision complexity to the current viewport correctness fixes.

Depends on #781 and #782.

What needs to be done

  1. Define near/far-plane and depth-precision policy for editor cameras.
  2. Evaluate and implement editor origin rebasing or high-precision camera/world coordinates where scene scale requires it.
  3. Add optional terrain/geometry collision, ground lock, and walk mode.
  4. Define Free, Orbit, and Walk navigation modes with visible state/UI feedback.
  5. Use selection bounds or cursor-hit results for scene-aware pivots.
  6. Document behavior, limits, and migration implications for existing scenes.

Resources

  • ZEngine/ZEngine/Rendering/Cameras/FlyCamera.cpp
  • Tetragrama/Controllers/EditorCameraController.cpp
  • ZEngine/ZEngine/Rendering/Scenes/RenderScene.h
  • ZEngine/docs/future-plan/fly-camera-redesign.md

Testing

  • Add numeric stability tests for configured large-world ranges.
  • Add CPU tests for navigation-mode transitions and collision/ground-lock behavior.
  • Manually test free, orbit, and walk workflows on representative large scenes.

Acceptance criteria

  • Camera depth policy is documented and validated for target scene scales.
  • Large-world precision strategy is selected and implemented where needed.
  • Free, Orbit, and optional Walk modes have explicit, testable behavior.
  • Scene-aware pivots and optional collision are available through the ray-query layer.
  • Existing free-fly workflow remains available.
  • Builds without warnings in Debug and Release.
  • All relevant unit tests pass.
  • No regression in existing functionality.

Estimated effort

2–4 weeks

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions