The above specifically adds it to JUST the first player.
This may help:
var PlayersCustomCanvas: [player]canvas = map{}
[...]
# after building a canvas 'NewCanvas' I give each player their own copy
for (thisPlayer: Self.GetPlayspace().GetPlayers()):
# lots of stuff deleted
if:
set PlayersCustomCanvas[thisPlayer] = NewCanvas
# lots of stuff deleted
then:
SetCanvasVisiblity(thisPlayer, true)
# lots of stuff deleted
# hide/display the Custom UI canvas
SetCanvasVisiblity(thisPlayer: player, bVisible: logic): void =
if (CustomCanvas := PlayersCustomCanvas[thisPlayer]):
if (bVisible?):
CustomCanvas.SetVisibility(widget_visibility.Visible)
else:
CustomCanvas.SetVisibility(widget_visibility.Hidden)
You have to map a canvas to each player, and assign each player their canvas. I cannot recall if I HAD to make the canvas visible at the start, but I turn it on and off, so I may have turned it on at first for clarity.