Laser Reflection System
You can set the maximum of reflected laser beams.
You can customize the color on each beam effect separately and some other parameters through Blueprint. All visual effects are stored in the Niagara system, where you can set more in-depth customization.
With one simple tag (ignore or reflect) you can ignore, reflect or block an Actor with a laser. By default, all Actors are blocked. You can use the checkbox to reflect all Actors in a scene for testing or other reasons.
There are 8 prepared Laser Blueprints with different colors, 1 Glass Blueprint that ignores the laser and 1 Mirror Blueprint that reflects the laser.
There is good well commented C++ code with documentation on variables and functions.
There is an OnLaserHit function that is called every tick for every hit Actor with a pointer to this Actor and a boolean of whether this Actor reflected or blocked the laser. You can override the OnLaserHit function through C++ or Blueprint code for your own logic.
There is a variable that determines whether laser will work or not. You can edit its value in runtime or implement your own activation/deactivation system which will edit this value.
The plugin can be used in multiplayer if needed as the laser works locally both on server and clients.