Usage
- Hold F5 to open perspective wheel.
- Right click when holding F5 to enter configure mode, drag the icons to enable/disable
Perspective API
Perspective API is a camera perspective management framework for Minecraft client-side mods. It provides standardized interfaces using the JOML library to handle camera states (position, rotation, FOV), decoupled from Minecraft internals.
Documentation | 文档
Demo Mod
All Versions
+ Add Version| Name | Game version | Platforms | Published | Downloads | Actions |
|---|---|---|---|---|---|
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 3mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 | ||||
| 4mo ago | 1 |
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier perspective base state (7a1e37d)
- PerspectiveModifier.apply now receives PerspectiveModifierContext instead of PerspectiveContext.
Update modifier implementations to use PerspectiveModifierContext.
- fix(api): resolve perspective state during rendering (b6ef7e1)
- remove clientTickWhenActive from PerspectiveBehavior and PerspectiveSwitcherBehavior. Perspective availability is no longer cached per client tick.
Implementations that update state on client ticks must subscribe to their loader event and return cached values during rendering.
- refactor(api): rename PerspectiveBehavior camera state pipeline methods (b151b2f)
- PerspectiveBehavior.applyCameraState and
computeCameraState and afterCameraStateResolved
- refactor(api): rename toEulerRad to quatToEulerRad (7435eb2)
- PerspectiveMath.toEulerRad methods are renamed to quatToEulerRad
## Features
- feat(logic): add orbit switcher help tooltip (e5d3e53)
- feat(logic): dilute the vinegar (088a7fe)
- feat(logic): scale up hovered orbit actor in edit mode (4dcf79d)
## Bug Fixes
- fix(logic): ignore auxiliary camera updates (a83f2c6)
- fix(api): handle gimbal lock in quaternion-to-euler conversion (3b990c0)
- fix(logic): handle null previous perspective on transition (d42dd73)
- fix(logic): always show selected perspective label in orbit menu (50dd5da)
- fix(logic): show selection indicator only on active perspective in orbit editor (78a7135)
- fix(logic): show actor tooltip on hover in orbit editor (b7e70ce)
- fix(logic): smooth orbit actor scale transitions with ExpSmoothDouble (17ba3e0)
## Internationalization
- i18n: update orbit switcher help tooltip translations (afa4523)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Breaking Changes
- feat(api): add modifier pipeline phases (55b4bdd)
- PerspectiveModifierChain.register now requires a modifier ID and PerspectiveModifierPhase.
- refactor(api): align perspective control lifecycle (780ed86)
- PerspectiveAPI.getCurrent now returns null when no perspective actively controls the camera, and the internal Runtime contract now receives enabled-state changes.
- fix(impl): stabilize perspective transitions (d0ed807)
- Orthographic height now interpolates even when a transition changes projection mode.
- refactor(api): require camera entity in callbacks (6244046)
- PerspectiveContext.cameraEntity now has a non-null return contract.
- refactor(api): apply modifiers before transitions (1cdbd35)
- Remove PerspectiveModifierPhase and the phase parameter from PerspectiveModifierChain.register.
- refactor(api): isolate transition algorithms (715f6e4)
- remove Transition#getBlendPower and Transition#setBlendPower. The persisted blend-power key is now specific to the fixed-start chasing-rotation algorithm.
## Features
- feat(api): define controllable perspective semantics (5846076)
- feat(api): expose previous camera state (8b31405)
- feat(impl): add feed-forward transition algorithm (7e4fcae)
- feat(impl): add easing to feed-forward transitions (f53a752)
- feat(impl): allow runtime transition algorithm switching (f85f959)
- feat(api): add configurable easing function to transitions (e32ce42)
## Bug Fixes
- fix(logic): reevaluate perspectives after level changes (734ea1d)
- fix(logic): avoid repeating post-transition effects (24072c0)
- fix(logic): isolate final camera callbacks (15cb101)
## Features
- feat(logic): get dipped in vinegar (4ed4988)
## Bug Fixes
- fix(logic): ignore invalid vanilla FOV samples (4e53023)
- fix(impl): tolerate bounded quaternion drift (e5cf45d)
- fix(logic): simplify config category title (c2e3d03)
## Features
- feat(logic): get dipped in vinegar (4ed4988)
## Bug Fixes
- fix(logic): ignore invalid vanilla FOV samples (4e53023)
- fix(impl): tolerate bounded quaternion drift (e5cf45d)
- fix(logic): simplify config category title (c2e3d03)