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')
})
})
}