@ue-too/board / index / ZoomControlStateMachine
クラス: ZoomControlStateMachine
定義: packages/board/src/camera/camera-mux/animation-and-lock/zoom-control-state-machine.ts:436
State machine controlling zoom input flow and animations.
Remarks
This state machine manages the lifecycle of zoom operations:
- User input handling: Accepts or blocks user zoom gestures based on state
- Animation control: Manages smooth zoom-to animations
- Object tracking: Supports locking camera to follow objects with zoom
State transitions:
ACCEPTING_USER_INPUT→TRANSITION: Start animation (initiateTransition)ACCEPTING_USER_INPUT→LOCKED_ON_OBJECT: Lock to object (lockedOnObjectZoom...)TRANSITION→ACCEPTING_USER_INPUT: User input interrupts animationLOCKED_ON_OBJECT→ACCEPTING_USER_INPUT: User input unlocks
Helper methods simplify event dispatching without memorizing event names.
例
const stateMachine = createDefaultZoomControlStateMachine(cameraRig);
// User zooms - accepted in ACCEPTING_USER_INPUT state
const result = stateMachine.notifyZoomByAtInput(1.2, { x: 400, y: 300 });
// Start animation - transitions to TRANSITION state
stateMachine.notifyZoomToAtWorldInput(2.0, { x: 1000, y: 500 });
// User input now may interrupt animation参照
createDefaultZoomControlStateMachine for factory function
拡張
TemplateStateMachine<ZoomEventPayloadMapping,BaseContext,ZoomControlStates,ZoomControlOutputMapping>
コンストラクター
コンストラクター
new ZoomControlStateMachine(
states,initialState,context):ZoomControlStateMachine
定義: packages/board/src/camera/camera-mux/animation-and-lock/zoom-control-state-machine.ts:442
パラメータ
states
Record<ZoomControlStates, State<ZoomEventPayloadMapping, BaseContext, ZoomControlStates, ZoomControlOutputMapping>>
initialState
context
BaseContext
戻り値
ZoomControlStateMachine
上書き
TemplateStateMachine< ZoomEventPayloadMapping, BaseContext, ZoomControlStates, ZoomControlOutputMapping >.constructor
プロパティ
_context
protected_context:BaseContext
定義: packages/being/dist/interface.d.ts:384
継承元
TemplateStateMachine._context
_currentState
protected_currentState:ZoomControlStates|"INITIAL"|"TERMINAL"
定義: packages/being/dist/interface.d.ts:382
継承元
TemplateStateMachine._currentState
_happensCallbacks
protected_happensCallbacks: (args,context) =>void[]
定義: packages/being/dist/interface.d.ts:387
パラメータ
args
["unlock"] | [string, unknown] | ["userZoomByAtInput", ZoomByAtInputPayload] | ["userZoomToAtInput", ZoomToAtInputPayload] | ["transitionZoomByAtInput", ZoomByAtInputPayload] | ["transitionZoomToAtInput", ZoomToAtInputPayload] | ["transitionZoomByAtCenterInput", ZoomByPayload] | ["transitionZoomToAtCenterInput", ZoomToAtInputPayload] | ["transitionZoomToAtWorldInput", ZoomToAtInputPayload] | ["lockedOnObjectZoomByAtInput", ZoomByAtInputPayload] | ["lockedOnObjectZoomToAtInput", ZoomToAtInputPayload] | ["initiateTransition"]
context
BaseContext
戻り値
void
継承元
TemplateStateMachine._happensCallbacks
_initialState
protected_initialState:ZoomControlStates
定義: packages/being/dist/interface.d.ts:389
継承元
TemplateStateMachine._initialState
_stateChangeCallbacks
protected_stateChangeCallbacks:StateChangeCallback<ZoomControlStates>[]
定義: packages/being/dist/interface.d.ts:386
継承元
TemplateStateMachine._stateChangeCallbacks
_states
protected_states:Record<States,State<EventPayloadMapping,Context,States,EventOutputMapping>>
定義: packages/being/dist/interface.d.ts:383
継承元
TemplateStateMachine._states
_statesArray
protected_statesArray:ZoomControlStates[]
定義: packages/being/dist/interface.d.ts:385
継承元
TemplateStateMachine._statesArray
_timeouts
protected_timeouts:number|undefined
定義: packages/being/dist/interface.d.ts:388
継承元
TemplateStateMachine._timeouts
アクセッサー
currentState
署名を取得する
get currentState():
States|"INITIAL"|"TERMINAL"
定義: packages/being/dist/interface.d.ts:399
戻り値
States | "INITIAL" | "TERMINAL"
継承元
TemplateStateMachine.currentState
possibleStates
署名を取得する
get possibleStates():
States[]
定義: packages/being/dist/interface.d.ts:401
戻り値
States[]
継承元
TemplateStateMachine.possibleStates
states
署名を取得する
get states():
Record<States,State<EventPayloadMapping,Context,States,EventOutputMapping>>
定義: packages/being/dist/interface.d.ts:402
戻り値
Record<States, State<EventPayloadMapping, Context, States, EventOutputMapping>>
継承元
TemplateStateMachine.states
メソッド
happens()
コールシグネチャ
happens<
K>(...args):EventResult<ZoomControlStates,Kextends keyofZoomControlOutputMapping?ZoomControlOutputMapping[K<K>] :void>
定義: packages/being/dist/interface.d.ts:395
型パラメーター
K
K extends keyof ZoomEventPayloadMapping
パラメータ
args
...EventArgs<ZoomEventPayloadMapping, K>
戻り値
EventResult<ZoomControlStates, K extends keyof ZoomControlOutputMapping ? ZoomControlOutputMapping[K<K>] : void>
継承元
TemplateStateMachine.happens
コールシグネチャ
happens<
K>(...args):EventResult<ZoomControlStates,unknown>
定義: packages/being/dist/interface.d.ts:396
型パラメーター
K
K extends string
パラメータ
args
...EventArgs<ZoomEventPayloadMapping, K>
戻り値
EventResult<ZoomControlStates, unknown>
継承元
TemplateStateMachine.happens
initateTransition()
initateTransition():
EventResult<ZoomControlStates,void>
定義: packages/board/src/camera/camera-mux/animation-and-lock/zoom-control-state-machine.ts:533
Initiates transition to TRANSITION state.
戻り値
EventResult<ZoomControlStates, void>
Remarks
Forces state change to begin animation or transition sequence. Called when starting programmatic camera movements.
notifyZoomByAtInput()
notifyZoomByAtInput(
delta,at):EventResult<ZoomControlStates,ZoomControlOutputEvent>
定義: packages/board/src/camera/camera-mux/animation-and-lock/zoom-control-state-machine.ts:468
Notifies the state machine of user zoom input around an anchor point.
パラメータ
delta
number
Zoom delta (multiplier)
at
Point
Anchor point for zoom
戻り値
EventResult<ZoomControlStates, ZoomControlOutputEvent>
Event handling result with output event
Remarks
Dispatches userZoomByAtInput event. Accepted in ACCEPTING_USER_INPUT and TRANSITION states.
notifyZoomByAtInputAnimation()
notifyZoomByAtInputAnimation(
delta,at):EventResult<ZoomControlStates,ZoomControlOutputEvent>
定義: packages/board/src/camera/camera-mux/animation-and-lock/zoom-control-state-machine.ts:485
Initiates a zoom animation around an anchor point.
パラメータ
delta
number
Zoom delta (multiplier)
at
Point
Anchor point for zoom
戻り値
EventResult<ZoomControlStates, ZoomControlOutputEvent>
Event handling result
Remarks
Dispatches transitionZoomByAtInput event, starting a zoom animation.
notifyZoomToAtCenterInput()
notifyZoomToAtCenterInput(
targetZoom,at):EventResult<ZoomControlStates,ZoomControlOutputEvent>
定義: packages/board/src/camera/camera-mux/animation-and-lock/zoom-control-state-machine.ts:502
Initiates a zoom animation to target level around center anchor.
パラメータ
targetZoom
number
Target zoom level
at
Point
Anchor point for zoom
戻り値
EventResult<ZoomControlStates, ZoomControlOutputEvent>
Event handling result
Remarks
Dispatches transitionZoomToAtCenterInput event for center-anchored zoom animation.
notifyZoomToAtWorldInput()
notifyZoomToAtWorldInput(
targetZoom,at):EventResult<ZoomControlStates,ZoomControlOutputEvent>
定義: packages/board/src/camera/camera-mux/animation-and-lock/zoom-control-state-machine.ts:519
Initiates a zoom animation to target level around world anchor.
パラメータ
targetZoom
number
Target zoom level
at
Point
World anchor point for zoom
戻り値
EventResult<ZoomControlStates, ZoomControlOutputEvent>
Event handling result
Remarks
Dispatches transitionZoomToAtWorldInput event for world-anchored zoom animation.
onHappens()
onHappens(
callback):void
定義: packages/being/dist/interface.d.ts:398
パラメータ
callback
(args, context) => void
戻り値
void
継承元
TemplateStateMachine.onHappens
onStateChange()
onStateChange(
callback):void
定義: packages/being/dist/interface.d.ts:397
パラメータ
callback
StateChangeCallback<ZoomControlStates>
戻り値
void
継承元
TemplateStateMachine.onStateChange
reset()
reset():
void
定義: packages/being/dist/interface.d.ts:391
戻り値
void
継承元
TemplateStateMachine.reset
setContext()
setContext(
context):void
定義: packages/being/dist/interface.d.ts:400
パラメータ
context
BaseContext
戻り値
void
継承元
TemplateStateMachine.setContext
start()
start():
void
定義: packages/being/dist/interface.d.ts:392
戻り値
void
継承元
TemplateStateMachine.start
switchTo()
switchTo(
state):void
定義: packages/being/dist/interface.d.ts:394
パラメータ
state
ZoomControlStates | "INITIAL" | "TERMINAL"
戻り値
void
継承元
TemplateStateMachine.switchTo
wrapup()
wrapup():
void
定義: packages/being/dist/interface.d.ts:393
戻り値
void
継承元
TemplateStateMachine.wrapup