constructor()

in packages/layers/scatter/src/ScatterLayer.ts [77:144]


	constructor(props: Partial<ScatterLayerProps> = {}) {
		const _props = {
			...defaultProps,
			...props,
		}
		super(_props)

		this.props = _props

		this.mesh = new Mesh({ name: 'Scatter' })
		this.geom = new Geom({ mode: 'POINTS' })

		this.mesh.geometry = this.geom
		this.group.add(this.mesh)

		this.listenProps(['useColors', 'colors', 'sizeAttenuation'], () => {
			_props.useColors = this.getProps('useColors')
			_props.colors = this.getProps('colors')
			_props.sizeAttenuation = this.getProps('sizeAttenuation')

			this.matr = new ScatterMatr(_props)
			this.mesh.material = this.matr
		})

		this.listenProps(
			[
				'size',
				'opacity',
				'color',
				'enableBlending',
				'enableShining',
				'shiningSpeed',
				'colNumber',
				'rowNumber',
				'map',
			],
			() => {
				_props.size = this.getProps('size')
				_props.opacity = this.getProps('opacity')
				_props.enableBlending = this.getProps('enableBlending')
				_props.depthTest = this.getProps('depthTest')
				_props.color = this.getProps('color')
				_props.colNumber = this.getProps('colNumber')
				_props.rowNumber = this.getProps('rowNumber')
				_props.map = this.getProps('map')

				this.matr.setProps(_props)
			}
		)

		this.addEventListener('init', (e) => {
			this.resetShining(e.timeline)

			this.listenProps(['enableShining', 'baseAlt', 'data'], () => {
				this.createScattersGeom(this.getProps('data'))
				this.resetShining(e.timeline)
				// this.show()
			})

			this.listenProps(['renderOrder'], () => {
				this.group.renderOrder = this.mesh.renderOrder = this.getProps('renderOrder')
			})

			this.listenProps(['depthTest'], () => {
				this.matr.depthTest = this.getProps('depthTest')
			})
		})
	}