Skip to content

@ue-too/board / index / PanControlStateMachine

クラス: PanControlStateMachine

定義: packages/board/src/camera/camera-mux/animation-and-lock/pan-control-state-machine.ts:129

State machine controlling pan input flow and animations.

Remarks

This state machine manages the lifecycle of pan operations:

  • User input handling: Accepts or blocks user pan gestures based on state
  • Animation control: Manages smooth pan-to animations
  • Object tracking: Supports locking camera to follow objects

State transitions:

  • ACCEPTING_USER_INPUTTRANSITION: Start animation (initateTransition)
  • ACCEPTING_USER_INPUTLOCKED_ON_OBJECT: Lock to object (lockedOnObjectPan...)
  • TRANSITIONACCEPTING_USER_INPUT: User input interrupts animation
  • LOCKED_ON_OBJECTACCEPTING_USER_INPUT: Unlock (unlock event)

Helper methods simplify event dispatching without memorizing event names.

typescript
const stateMachine = createDefaultPanControlStateMachine(cameraRig);

// User pans - accepted in ACCEPTING_USER_INPUT state
const result = stateMachine.notifyPanInput({ x: 50, y: 30 });

// Start animation - transitions to TRANSITION state
stateMachine.notifyPanToAnimationInput({ x: 1000, y: 500 });

// User input now blocked while animating

参照

createDefaultPanControlStateMachine for factory function

拡張

コンストラクター

コンストラクター

new PanControlStateMachine(states, initialState, context): PanControlStateMachine

定義: packages/board/src/camera/camera-mux/animation-and-lock/pan-control-state-machine.ts:135

パラメータ

states

Record<PanControlStates, State<PanEventPayloadMapping, BaseContext, PanControlStates, PanControlOutputMapping>>

initialState

PanControlStates

context

BaseContext

戻り値

PanControlStateMachine

上書き

TemplateStateMachine< PanEventPayloadMapping, BaseContext, PanControlStates, PanControlOutputMapping >.constructor

プロパティ

_context

protected _context: BaseContext

定義: packages/being/dist/interface.d.ts:384

継承元

TemplateStateMachine._context


_currentState

protected _currentState: PanControlStates | "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"] | ["initateTransition"] | ["userPanByInput", PanByInputEventPayload] | ["userPanToInput", PanToInputEventPayload] | ["transitionPanByInput", PanByInputEventPayload] | ["transitionPanToInput", PanToInputEventPayload] | ["lockedOnObjectPanByInput", PanByInputEventPayload] | ["lockedOnObjectPanToInput", PanToInputEventPayload] | [string, unknown]

context

BaseContext

戻り値

void

継承元

TemplateStateMachine._happensCallbacks


_initialState

protected _initialState: PanControlStates

定義: packages/being/dist/interface.d.ts:389

継承元

TemplateStateMachine._initialState


_stateChangeCallbacks

protected _stateChangeCallbacks: StateChangeCallback<PanControlStates>[]

定義: 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: PanControlStates[]

定義: packages/being/dist/interface.d.ts:385

継承元

TemplateStateMachine._statesArray


_timeouts

protected _timeouts: number | undefined

定義: packages/being/dist/interface.d.ts:388

継承元

KmtInputStateMachineWebWorkerProxy._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<PanControlStates, K extends keyof PanControlOutputMapping ? PanControlOutputMapping[K<K>] : void>

定義: packages/being/dist/interface.d.ts:395

型パラメーター
K

K extends keyof PanEventPayloadMapping

パラメータ
args

...EventArgs<PanEventPayloadMapping, K>

戻り値

EventResult<PanControlStates, K extends keyof PanControlOutputMapping ? PanControlOutputMapping[K<K>] : void>

継承元

TemplateStateMachine.happens

コールシグネチャ

happens<K>(...args): EventResult<PanControlStates, unknown>

定義: packages/being/dist/interface.d.ts:396

型パラメーター
K

K extends string

パラメータ
args

...EventArgs<PanEventPayloadMapping, K>

戻り値

EventResult<PanControlStates, unknown>

継承元

TemplateStateMachine.happens


initateTransition()

initateTransition(): EventResult<PanControlStates, void>

定義: packages/board/src/camera/camera-mux/animation-and-lock/pan-control-state-machine.ts:186

Initiates transition to TRANSITION state.

戻り値

EventResult<PanControlStates, void>

Remarks

Forces state change to begin animation or transition sequence. Called when starting programmatic camera movements.


notifyPanInput()

notifyPanInput(diff): EventResult<PanControlStates, PanControlOutputEvent>

定義: packages/board/src/camera/camera-mux/animation-and-lock/pan-control-state-machine.ts:161

Notifies the state machine of user pan input.

パラメータ

diff

Point

Pan displacement in viewport coordinates

戻り値

EventResult<PanControlStates, PanControlOutputEvent>

Event handling result with output event

Remarks

Dispatches userPanByInput event. Accepted in ACCEPTING_USER_INPUT and TRANSITION states, where it may transition back to ACCEPTING_USER_INPUT (user interrupting animation).


notifyPanToAnimationInput()

notifyPanToAnimationInput(target): EventResult<PanControlStates, PanControlOutputEvent>

定義: packages/board/src/camera/camera-mux/animation-and-lock/pan-control-state-machine.ts:175

Initiates a pan animation to a target position.

パラメータ

target

Point

Target position in world coordinates

戻り値

EventResult<PanControlStates, PanControlOutputEvent>

Event handling result

Remarks

Dispatches transitionPanToInput event, starting a pan 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<PanControlStates>

戻り値

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

PanControlStates | "INITIAL" | "TERMINAL"

戻り値

void

継承元

TemplateStateMachine.switchTo


wrapup()

wrapup(): void

定義: packages/being/dist/interface.d.ts:393

戻り値

void

継承元

TemplateStateMachine.wrapup