# To Do

If anyone would like to do one of these, go for it! I might get to them eventually.

## API

- Make Source and Vertex work in inline mode
- Bouncing off multiple nearby or intersecting domains is broken (see Waterfall). Solve with constraints.
- Bouncing and avoiding of PDUnion domains.
- Bounce off cylinders
- Way points - like OrbitPoint, but once a particle is close enough, it is attracted to the next way point
- Voxelized vector fields
- Particle-particle collisions
- Smoothed Particle Hydrodynamics
- Make actions conditional on domains. Let Jet, but generalized.
- Make the API more generic so many API calls can apply to any different attribute. Make attributes generic.
- Have a secondary color for each particle.
- DensityColor - color is f(density)
- PositionColor - color is f(position)
- RandomColor - random domain is added to color
- VelocityColor - color is f(velocity)
- VelocitySize - size is f(velocity)
- Organize particle groups as structures of arrays instead of arrays of structures for stream processing

## Demos

- Fix fireworks to use inline actions
- Get rid of KillOld so all the particles don't just disappear when changing demos
- Smiley face image restore default
- Add resiliency cutoff so it bounces 100% if below cutoff and clean up friction
- Force inside / outside a 3D domain
- Constraints
- Verlet integration
- Fireworks that explode
- Image pixels to color cube and vice-versa
- User interaction
- Texture and light the butterflies
- Change pVec to not do x(),y(),z()
- Environment reflected water drops
- Make demos that use a wider variety of actions
- Demo where you put particles all over the surface of a statue, explode the statue, and then suck the particles back to the original position.

## Documentation