Style nit: we avoid explicitly specifying private, since it is the default for classes.

I didn't catch this earlier, but you should be querying/calling traits by your new interface instead of calling the shroud directly. The following should do this, and also includes the world actor:

```
void GenerateEvents(Actor a)
{
	var actors = a.World.Players.Select(p => p.PlayerActor)
		.Append(a.World.WorldActor);

	foreach (var actor in actors)
		foreach (var t in actor.TraitsImplementing<INotifyActorMovement>())
			t.OnMovement(actor, a);
}
```