When you execute .npc delete, the NPC doesn’t disappear right away, it actually takes a second or two before it fades away. Gameobjecter, however, starts fading away instantly when it is deleted.
What is causing said delay? I tried setting newly generated GUID for a creature, which had its location changed beforehand with Relocate(…), while deleting old GUID from Map’s object store and player’s client GUIDs - the result was that the creature instantly phased in at the new location but its old copy still stayed at the old location for a second or two before fading away.
This is somewhat related to the issue I created: https://github.com/TrinityCore/TrinityCore/issues/17679
However, I am mostly interested in how object visual update system works. I would greatly appreciate if someone could explain how communication between client and server happens to do visual updates for objects.