Decal spawned via C++ has always the same material

Unreal shooter game have pretty good decal spawning logic, you can look there for more info. You should also check if your decal has apropriate rotation.