import { Main, UnityWebSocketStatus } from './main'; export class Lighting { private _Main: Main; 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?.dataAdvancedSliders == null) return; const gainSliderIndex = state.parameters?.dataAdvancedSliders.findIndex( (slider) => slider.sliderName === 'Gain', ); const gainSlider = state.parameters?.dataAdvancedSliders[gainSliderIndex ?? -1]; const exposureSliderIndex = state.parameters?.dataAdvancedSliders.findIndex( (slider) => slider.sliderName === 'Exposure', ); const exposureSlider = state.parameters?.dataAdvancedSliders[exposureSliderIndex ?? -1]; const whiteBalanceSliderIndex = state.parameters?.dataAdvancedSliders.findIndex( (slider) => slider.sliderName === 'WhiteBalance', ); const whiteBalanceSlider = state.parameters?.dataAdvancedSliders[ whiteBalanceSliderIndex ?? -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.gainInput.setAttribute( 'index', gainSliderIndex?.toString() ?? '-1', ); this.exposureInput.setAttribute( 'index', exposureSliderIndex?.toString() ?? '-1', ); this.whiteBalanceInput.setAttribute( 'index', whiteBalanceSliderIndex?.toString() ?? '-1', ); } private registerListeners() { this.gainInput.onchange = () => { this._Main.socket.emit( 'unityWebSocket', 'dataAdvancedParameterValue', parseInt(this.gainInput.getAttribute('index') ?? '-1'), this.gainInput.valueAsNumber, ); }; } }