12345678910111213141516171819202122232425262728293031 |
- import * as THREE from 'three'
- export class HightlightMesh extends THREE.Mesh {
- type = 'HightlightMesh'
- createTime: number
- invalidate: (frames?: number) => void
- constructor( invalidate: (frames?: number) => void, ...args: THREE.Mesh['args']) {
- super(...args)
- this.createTime = Date.now()
- this.invalidate = invalidate
- invalidate()
- }
- onBeforeRender() {
- const currentTime = Date.now()
- const time = (currentTime - this.createTime) / 1000
- // Pulsing effect parameters
- const scaleAmplitude = 0.07 // Amplitude of the scale pulsation
- const pulseSpeed = 2.5 // Speed of the pulsation
- // Calculate the scale factor with a sine function for pulsing effect
- const scaleFactor = 1 + scaleAmplitude * Math.sin(pulseSpeed * time)
- // Apply the scale factor
- this.scale.set(scaleFactor, scaleFactor, scaleFactor)
- this.invalidate()
- }
-
- }
|