public override void ReceiveMessage(IGameMessage msg) { // TODO : handle ForcedMovement in Transform, // TODO : handle ForcedMovement movement over time in a separate component switch (msg.EventId) { case (int)MessageId.FrameBegin: { OnUpdate(); break; } case (int)MessageId.BeginMovePath: { OnBeginMovePath(msg.AsBeginMovePath()); break; } case (int)MessageId.Move: { OnMove(msg.AsMove()); break; } case (int)MessageId.NewPlayerFollowTarget: { OnNewFollowPlayer(msg.AsNewPlayerFollowTarget()); break; } case (int)MessageId.SyncLocalsToGlobals: { SyncLocalsToGlobals(Parent.AssertGetClientPosition()); break; } } }