Skip to content

Commit 8382c06

Browse files
Chau TranChau Tran
Chau Tran
authored and
Chau Tran
committed
feat(soba): add keyEvents to OrbitControls to match with drei
1 parent af45513 commit 8382c06

File tree

1 file changed

+14
-3
lines changed

1 file changed

+14
-3
lines changed

libs/soba/controls/src/orbit-controls/orbit-controls.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ export type NgtsOrbitControlsState = {
2626
makeDefault: boolean;
2727
regress: boolean;
2828
enableDamping: boolean;
29+
keyEvents: boolean | HTMLElement;
2930
};
3031

3132
declare global {
@@ -68,6 +69,10 @@ export class NgtsOrbitControls extends NgtSignalStore<NgtsOrbitControlsState> {
6869
this.set({ enableDamping });
6970
}
7071

72+
@Input() set keyEvents(keyEvents: boolean) {
73+
this.set({ keyEvents });
74+
}
75+
7176
@Output() change = new EventEmitter<THREE.Event>();
7277
@Output() start = new EventEmitter<THREE.Event>();
7378
@Output() end = new EventEmitter<THREE.Event>();
@@ -78,7 +83,7 @@ export class NgtsOrbitControls extends NgtSignalStore<NgtsOrbitControlsState> {
7883
readonly damping = this.select('enableDamping');
7984

8085
constructor() {
81-
super({ enableDamping: true, regress: false, makeDefault: false });
86+
super({ enableDamping: true, regress: false, makeDefault: false, keyEvents: false });
8287
injectBeforeRender(
8388
() => {
8489
const controls = this.controlsRef.untracked;
@@ -118,10 +123,12 @@ export class NgtsOrbitControls extends NgtSignalStore<NgtsOrbitControlsState> {
118123
const domElement = this.select('domElement');
119124
const regress = this.select('regress');
120125
const invalidate = this.#store.select('invalidate');
126+
const keyEvents = this.select('keyEvents');
121127

122128
const trigger = computed(() => {
123129
const eventsSource = this.#store.get('events', 'connected');
124130
return {
131+
keyEvents: keyEvents(),
125132
controls: this.controlsRef.nativeElement,
126133
domElement: domElement() || eventsSource || glDomElement(),
127134
regress: regress(),
@@ -130,9 +137,13 @@ export class NgtsOrbitControls extends NgtSignalStore<NgtsOrbitControlsState> {
130137
});
131138

132139
effect((onCleanup) => {
133-
const { domElement, controls } = trigger();
140+
const { domElement, controls, keyEvents } = trigger();
134141
if (!controls) return;
135-
controls.connect(domElement);
142+
if (keyEvents) {
143+
controls.connect(keyEvents === true ? domElement : keyEvents);
144+
} else {
145+
controls.connect(domElement);
146+
}
136147
onCleanup(() => void controls.dispose());
137148
});
138149
}

0 commit comments

Comments
 (0)