Skip to content

Camera

Purpose

Owns camera-related editor workflows, shared camera settings models, and camera utility helpers used throughout Snap Studio Pro.

This territory is responsible for storing camera-facing configuration data, lightweight camera preference persistence, and reusable camera framing/orientation helpers without owning preview orchestration or rendering implementation.

Owns

  • Camera settings models
  • Camera orientation models
  • Camera-related editor preferences
  • Camera fitting utilities
  • Shared camera workflow helpers
  • Shared camera projection/orientation IMGUI controls (CameraUIUtils)
  • Camera-facing configuration persistence

Does NOT Own

  • Preview camera orchestration
  • Rendering implementation
  • Render pipeline ownership
  • Export workflow orchestration
  • Panel UI layout ownership
  • Preview scene lifecycle ownership

Allowed Dependencies

Camera may depend on:

  • Models
  • Enums
  • Infrastructure preference services
  • Unity camera/math APIs

Camera should avoid depending on:

  • rendering implementation systems
  • preview orchestration systems
  • panel orchestration systems
  • export workflow systems

Notes

This folder intentionally acts as a shared camera-domain territory rather than a rendering or preview territory.

Camera owns: - reusable camera-facing configuration - camera helper logic - camera preference state - camera fitting helpers

Preview owns: - live preview coordination

Rendering owns: - actual rendering implementation

This distinction helps prevent rendering logic, preview orchestration, and reusable camera-domain logic from collapsing into the same systems.

Future Candidates

  • Continue separating reusable camera helpers from preview orchestration.
  • Avoid allowing rendering implementation into Features.Camera.
  • Maintain lightweight and reusable camera-domain utilities.