Files
NTSH-Control/frontend/views/control/ts/lighting.ts

118 lines
3.3 KiB
TypeScript

import { Main, UnityWebSocketStatus } from './main';
export class Lighting {
private _Main: Main;
autoLightingInput: HTMLInputElement = document.querySelector(
'.ntsh-autolighting input',
);
gainInput: HTMLInputElement = document.querySelector(
'.ntsh_lightingsettings-gain',
);
exposureInput: HTMLInputElement = document.querySelector(
'.ntsh_lightingsettings-exposure',
);
whiteBalanceInput: HTMLInputElement = document.querySelector(
'.ntsh_lightingsettings-whitebalance',
);
constructor(Main: Main) {
this._Main = Main;
this.registerListeners();
}
update(state: UnityWebSocketStatus) {
if (state?.parameters?.advancedSliders == null) return;
const autoExposureIndex = state.parameters?.advancedSliders.findIndex(
(slider) => slider.sliderName === 'AutoExposure',
);
const autoExposureSlider =
state.parameters?.advancedSliders[autoExposureIndex ?? -1];
const gainSliderIndex = state.parameters?.advancedSliders.findIndex(
(slider) => slider.sliderName === 'Gain',
);
const gainSlider =
state.parameters?.advancedSliders[gainSliderIndex ?? -1];
const exposureSliderIndex = state.parameters?.advancedSliders.findIndex(
(slider) => slider.sliderName === 'Exposure',
);
const exposureSlider =
state.parameters?.advancedSliders[exposureSliderIndex ?? -1];
const whiteBalanceSliderIndex =
state.parameters?.advancedSliders.findIndex(
(slider) => slider.sliderName === 'Whitebalance',
);
const whiteBalanceSlider =
state.parameters?.advancedSliders[whiteBalanceSliderIndex ?? -1];
this.autoLightingInput.checked = autoExposureSlider?.outputValue === 1;
this.gainInput.valueAsNumber =
gainSlider?.outputValue ?? this.gainInput.valueAsNumber;
this.exposureInput.valueAsNumber =
exposureSlider?.outputValue ?? this.exposureInput.valueAsNumber;
this.whiteBalanceInput.valueAsNumber =
whiteBalanceSlider?.outputValue ??
this.whiteBalanceInput.valueAsNumber;
this.autoLightingInput.setAttribute(
'index',
autoExposureIndex?.toString() ?? '-1',
);
this.gainInput.setAttribute(
'index',
gainSliderIndex?.toString() ?? '-1',
);
this.exposureInput.setAttribute(
'index',
exposureSliderIndex?.toString() ?? '-1',
);
this.whiteBalanceInput.setAttribute(
'index',
whiteBalanceSliderIndex?.toString() ?? '-1',
);
}
private registerListeners() {
this.autoLightingInput.onchange = () => {
this._Main.socket.emit(
'unityWebSocket',
'advancedParameterValue',
parseInt(this.autoLightingInput.getAttribute('index') ?? '-1'),
this.autoLightingInput.checked ? 1 : 0,
);
};
this.gainInput.onchange = () => {
this._Main.socket.emit(
'unityWebSocket',
'advancedParameterValue',
parseInt(this.gainInput.getAttribute('index') ?? '-1'),
this.gainInput.valueAsNumber,
);
};
this.exposureInput.onchange = () => {
this._Main.socket.emit(
'unityWebSocket',
'advancedParameterValue',
parseInt(this.exposureInput.getAttribute('index') ?? '-1'),
this.exposureInput.valueAsNumber,
);
};
this.whiteBalanceInput.onchange = () => {
this._Main.socket.emit(
'unityWebSocket',
'advancedParameterValue',
parseInt(this.whiteBalanceInput.getAttribute('index') ?? '-1'),
this.whiteBalanceInput.valueAsNumber,
);
};
}
}