The function at the top of the following playgrounds will reflect a mesh in a plane passing through the origin.
Use is
const reflectedShape = reflection(mesh, planeNormal, reflectRotation, reflectU, reflectV, dispose)
//mesh, the mesh to be reflected, required
//planeNormal a vector3 normal to the plane of reflection
//reflectU, default true, u of uv values, vertex value remains u, texture will reflect with vertex, when false becomes 1 - u
//reflectV, default true, v of uv values, vertex value remains v, texture will reflect with vertex; when false becomes 1 - v
//dispose, default false, when true original mesh is disposed
PG with defaults non symmetric mesh
PG with Plane, texture affected only by reflection of vertices
PG with Plane, u of uvs not affected by reflection of vertices
PG with Plane, v of uvs not affected by reflection of vertices
PG with Plane, u and v of uvs not affected by reflection of vertices
Please give it a good testing, feel free to edit/improve.
EDIT Original PGs did not work if mesh rotated and plane not XY, XZ, YZ planes. All corrected.