'Bounce' a trace off of something?

How do I get it so a trace will reflect off a surface, like a laser off a mirror?

The best I can think of is to take the normal of the trace, and rotate it 180 degrees around the surface’s normal. I’m not sure how to do it off the top of my head, but it’s just a matter of a little research on the wiki. Maybe some testing, too.

function (dir, normal)
return dir - 2 * (normal:DotProduct(dir) * normal)

This thread might be useful to you

Tanks Wizard!