Skip to content

Commit fc58e47

Browse files
committed
fix(soba): add granular camrea controls outputs
1 parent 9e190eb commit fc58e47

File tree

1 file changed

+54
-22
lines changed

1 file changed

+54
-22
lines changed

libs/soba/controls/src/lib/camera-controls.ts

Lines changed: 54 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,14 @@ export class NgtsCameraControls {
3939
options = input(defaultOptions, { transform: mergeInputs(defaultOptions) });
4040
protected parameters = omit(this.options, ['makeDefault', 'camera', 'regress', 'domElement']);
4141

42-
changed = output<any>();
43-
started = output<any>();
44-
ended = output<any>();
42+
control = output<any>();
43+
controlStart = output<any>();
44+
controlEnd = output<any>();
45+
transitionStart = output<any>();
46+
update = output<any>();
47+
wake = output<any>();
48+
rest = output<any>();
49+
sleep = output<any>();
4550

4651
private store = injectStore();
4752

@@ -86,9 +91,7 @@ export class NgtsCameraControls {
8691
beforeRender(
8792
({ delta }) => {
8893
const controls = this.controls();
89-
if (controls?.enabled) {
90-
controls.update(delta);
91-
}
94+
controls?.update(delta);
9295
},
9396
{ priority: -1 },
9497
);
@@ -114,29 +117,58 @@ export class NgtsCameraControls {
114117
this.store.invalidate(),
115118
];
116119

117-
const callback = (e: any) => {
120+
const invalidateAndRegress = () => {
118121
invalidate();
119122
if (regress) performanceRegress();
120-
this.changed.emit(e);
121123
};
122124

123-
const startCallback = this.started.emit.bind(this.started);
124-
const endCallback = this.ended.emit.bind(this.ended);
125+
const control = (e: any) => {
126+
invalidateAndRegress();
127+
this.control.emit(e);
128+
};
129+
130+
const controlStart = (e: any) => {
131+
invalidateAndRegress();
132+
this.controlStart.emit(e);
133+
};
134+
135+
const transitionStart = (e: any) => {
136+
invalidateAndRegress();
137+
this.transitionStart.emit(e);
138+
};
139+
140+
const update = (e: any) => {
141+
invalidateAndRegress();
142+
this.update.emit(e);
143+
};
144+
145+
const wake = (e: any) => {
146+
invalidateAndRegress();
147+
this.wake.emit(e);
148+
};
149+
150+
const controlEnd = this.controlEnd.emit.bind(this.controlEnd);
151+
const rest = this.rest.emit.bind(this.rest);
152+
const sleep = this.sleep.emit.bind(this.sleep);
125153

126-
controls.addEventListener('update', callback);
127-
controls.addEventListener('controlstart', startCallback);
128-
controls.addEventListener('controlend', endCallback);
129-
controls.addEventListener('control', callback);
130-
controls.addEventListener('transitionstart', callback);
131-
controls.addEventListener('wake', callback);
154+
controls.addEventListener('update', update);
155+
controls.addEventListener('controlstart', controlStart);
156+
controls.addEventListener('controlend', controlEnd);
157+
controls.addEventListener('control', control);
158+
controls.addEventListener('transitionstart', transitionStart);
159+
controls.addEventListener('wake', wake);
160+
controls.addEventListener('rest', rest);
161+
controls.addEventListener('sleep', sleep);
132162

133163
onCleanup(() => {
134-
controls.removeEventListener('update', callback);
135-
controls.removeEventListener('controlstart', startCallback);
136-
controls.removeEventListener('controlend', endCallback);
137-
controls.removeEventListener('control', callback);
138-
controls.removeEventListener('transitionstart', callback);
139-
controls.removeEventListener('wake', callback);
164+
controls.removeEventListener('update', update);
165+
controls.removeEventListener('controlstart', controlStart);
166+
controls.removeEventListener('controlend', controlEnd);
167+
controls.removeEventListener('control', control);
168+
controls.removeEventListener('transitionstart', transitionStart);
169+
controls.removeEventListener('wake', wake);
170+
controls.removeEventListener('rest', rest);
171+
controls.removeEventListener('sleep', sleep);
140172
});
141173
});
142174
}

0 commit comments

Comments
 (0)