code: def _new_explosion(self):
      # New centerpos
      centerpos = np.random.uniform(-0.5, 0.5, (3,))
      self._program["u_centerPosition"] = centerpos
  
      # New color, scale alpha with N
      alpha = 1.0 / N**0.08
      color = np.random.uniform(0.1, 0.9, (3,))
  
      self._program["u_color"] = tuple(color) + (alpha,)
  
      # Create new vertex data
      data["a_lifetime"] = np.random.normal(2.0, 0.5, (N,))
      data["a_startPosition"] = np.random.normal(0.0, 0.2, (N, 3))
      data["a_endPosition"] = np.random.normal(0.0, 1.2, (N, 3))
  
      # Set time to zero
      self._starttime = time.time()
  
file_path: vispy/examples/demo/gloo/fireworks.py
imports: import time
  import numpy
  from vispy import gloo, app
label_desc: Use image node_id 4 for calling the Canvas obj's underlying member method code with example usage: obj._new_explosion() without return types