@ue-too/board / index / RotateControlStateMachine
類別: RotateControlStateMachine
定義於: packages/board/src/camera/camera-mux/animation-and-lock/rotation-control-state-machine.ts:128
State machine controlling rotation input flow and animations.
備註
This state machine manages the lifecycle of rotation operations:
- User input handling: Accepts or blocks user rotation gestures based on state
- Animation control: Manages smooth rotate-to animations
- Object tracking: Supports locking camera to follow objects with rotation
State transitions:
ACCEPTING_USER_INPUT→TRANSITION: Start animation (initateTransition)ACCEPTING_USER_INPUT→LOCKED_ON_OBJECT: Lock to object (lockedOnObjectRotate...)TRANSITION→ACCEPTING_USER_INPUT: User input interrupts animationLOCKED_ON_OBJECT→ACCEPTING_USER_INPUT: Unlock (unlockevent)
Helper methods simplify event dispatching without memorizing event names.
範例
const stateMachine = createDefaultRotateControlStateMachine(cameraRig);
// User rotates - accepted in ACCEPTING_USER_INPUT state
const result = stateMachine.notifyRotateByInput(Math.PI / 4);
// Start animation - transitions to TRANSITION state
stateMachine.notifyRotateToAnimationInput(Math.PI);
// User input now blocked while animating參閱
createDefaultRotateControlStateMachine for factory function
Extends
TemplateStateMachine<RotateEventPayloadMapping,BaseContext,RotateControlStates,RotateControlOutputMapping>
建構函式
建構函式
new RotateControlStateMachine(
states,initialState,context):RotateControlStateMachine
定義於: packages/board/src/camera/camera-mux/animation-and-lock/rotation-control-state-machine.ts:134
參數
states
Record<RotateControlStates, State<RotateEventPayloadMapping, BaseContext, RotateControlStates, RotateControlOutputMapping>>
initialState
context
BaseContext
回傳
RotateControlStateMachine
覆寫了
TemplateStateMachine< RotateEventPayloadMapping, BaseContext, RotateControlStates, RotateControlOutputMapping >.constructor
屬性
_context
protected_context:BaseContext
定義於: packages/being/dist/interface.d.ts:384
繼承自
TemplateStateMachine._context
_currentState
protected_currentState:RotateControlStates|"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
["userRotateByInput", RotateByInputEventPayload] | ["userRotateToInput", RotateToInputEventPayload] | ["transitionRotateByInput", RotateByInputEventPayload] | ["transitionRotateToInput", RotateToInputEventPayload] | ["lockedOnObjectRotateByInput", RotateByInputEventPayload] | ["lockedOnObjectRotateToInput", RotateToInputEventPayload] | ["unlock"] | ["initateTransition"] | [string, unknown]
context
BaseContext
回傳
void
繼承自
TemplateStateMachine._happensCallbacks
_initialState
protected_initialState:RotateControlStates
定義於: packages/being/dist/interface.d.ts:389
繼承自
TemplateStateMachine._initialState
_stateChangeCallbacks
protected_stateChangeCallbacks:StateChangeCallback<RotateControlStates>[]
定義於: 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:RotateControlStates[]
定義於: packages/being/dist/interface.d.ts:385
繼承自
TemplateStateMachine._statesArray
_timeouts
protected_timeouts:number|undefined
定義於: packages/being/dist/interface.d.ts:388
繼承自
KmtInputStateMachineWebWorkerProxy._timeouts
存取器
currentState
Getter 簽章
get currentState():
States|"INITIAL"|"TERMINAL"
定義於: packages/being/dist/interface.d.ts:399
回傳
States | "INITIAL" | "TERMINAL"
繼承自
TemplateStateMachine.currentState
possibleStates
Getter 簽章
get possibleStates():
States[]
定義於: packages/being/dist/interface.d.ts:401
回傳
States[]
繼承自
TemplateStateMachine.possibleStates
states
Getter 簽章
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<RotateControlStates,Kextends keyofRotateControlOutputMapping?RotateControlOutputMapping[K<K>] :void>
定義於: packages/being/dist/interface.d.ts:395
型別參數
K
K extends keyof RotateEventPayloadMapping
參數
args
...EventArgs<RotateEventPayloadMapping, K>
回傳
EventResult<RotateControlStates, K extends keyof RotateControlOutputMapping ? RotateControlOutputMapping[K<K>] : void>
繼承自
TemplateStateMachine.happens
呼叫簽章
happens<
K>(...args):EventResult<RotateControlStates,unknown>
定義於: packages/being/dist/interface.d.ts:396
型別參數
K
K extends string
參數
args
...EventArgs<RotateEventPayloadMapping, K>
回傳
EventResult<RotateControlStates, unknown>
繼承自
TemplateStateMachine.happens
initateTransition()
initateTransition():
void
定義於: packages/board/src/camera/camera-mux/animation-and-lock/rotation-control-state-machine.ts:185
Initiates transition to TRANSITION state.
回傳
void
備註
Forces state change to begin animation or transition sequence. Called when starting programmatic camera movements.
notifyRotateByInput()
notifyRotateByInput(
diff):EventResult<RotateControlStates,RotateControlOutputEvent>
定義於: packages/board/src/camera/camera-mux/animation-and-lock/rotation-control-state-machine.ts:160
Notifies the state machine of user rotation input.
參數
diff
number
Rotation angle delta in radians
回傳
EventResult<RotateControlStates, RotateControlOutputEvent>
Event handling result with output event
備註
Dispatches userRotateByInput event. Accepted in ACCEPTING_USER_INPUT and TRANSITION states, where it may transition back to ACCEPTING_USER_INPUT (user interrupting animation).
notifyRotateToAnimationInput()
notifyRotateToAnimationInput(
target):EventResult<RotateControlStates,RotateControlOutputEvent>
定義於: packages/board/src/camera/camera-mux/animation-and-lock/rotation-control-state-machine.ts:174
Initiates a rotation animation to a target angle.
參數
target
number
Target rotation angle in radians
回傳
EventResult<RotateControlStates, RotateControlOutputEvent>
Event handling result
備註
Dispatches transitionRotateToInput event, starting a rotation animation. Transitions to TRANSITION state where animation updates occur.
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<RotateControlStates>
回傳
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
RotateControlStates | "INITIAL" | "TERMINAL"
回傳
void
繼承自
TemplateStateMachine.switchTo
wrapup()
wrapup():
void
定義於: packages/being/dist/interface.d.ts:393
回傳
void
繼承自
TemplateStateMachine.wrapup