import { BaseComponent } from './BaseComponent';
import { EventType } from '../const';
const cEnableViewportTag = '__cEnableViewportTag__';
/**
* @class CameraControlEventDispatcherComponent
* The camera controller event dispatcher component.
* @memberof THING
* @extends THING.BaseComponent
*/
class CameraControlEventDispatcherComponent extends BaseComponent {
/**
* The controller to manage event dispatch.
*/
constructor() {
super();
}
// #region BaseComponent Interface
// #endregion
get enable() {
return this.object.hasEvent(EventType.EnableViewport, cEnableViewportTag);
}
set enable(value) {
if (value) {
// Stop controller when camera disable render to viewport
this.object.on(EventType.EnableViewport, (ev) => {
let stateGroup = this.object.control.stateGroup;
if (ev.value) {
stateGroup.enable(true, 'changeCamera');
}
else {
stateGroup.enable(false, 'changeCamera', 100000);
}
}, cEnableViewportTag);
}
else {
this.object.off(EventType.EnableViewport, cEnableViewportTag);
}
}
}
export { CameraControlEventDispatcherComponent }