import {TypedLightObjNode} from './_BaseLight'; import {Light} from 'three/src/lights/Light'; // import {CoreTransform} from '../../../core/Transform'; import {NodeParamsConfig} from '../utils/params/ParamsConfig'; import {TransformController, TransformedParamConfig} from './utils/TransformController'; import {FlagsControllerD} from '../utils/FlagsController'; import {HierarchyController} from './utils/HierarchyController'; // import {Transformed} from './Concerns/Transformed'; class TransformedObjParamConfig extends TransformedParamConfig(NodeParamsConfig) {} export abstract class BaseLightTransformedObjNode< L extends Light, K extends TransformedObjParamConfig > extends TypedLightObjNode { public readonly flags: FlagsControllerD = new FlagsControllerD(this); readonly hierarchy_controller: HierarchyController = new HierarchyController(this); readonly transform_controller: TransformController = new TransformController(this); initializeBaseNode() { super.initializeBaseNode(); this.hierarchy_controller.initializeNode(); this.transform_controller.initializeNode(); } cook() { this.transform_controller.update(); this.update_light_params(); this.update_shadow_params(); this.cookController.end_cook(); } }