individual commits combined here:
send active plugins
compute plugin sha hash
single position for defining Hash type
request plugins from the server
Server sending the plugin to the client
store received plugin in file and use it
handle plugin data at the right place
pass config_dir to client init
load local plugins
operational plugin caching
simplify the interface
clippy suggestions
remove artifacts
fix compilation of test world
ChangeLog entry
code quality fixes
improve readability
adapt to multiple systems
return to the character screeen. And other related improvements.
* Uid now optional when removing an entity from IdMaps since that Uid
may have been transferred to the new entity created when the client
exits "in-game".
* Added notes about making sure to update the CharacterId mapping when
changing the `kind` field of `Presence`.
* Add a parameter to `delete_entity_recorded` that indicates whether it
is being called from `handle_exit_ingame` and that provides the `Uid`
that was removed from the entity so that we can more explicitly and
correctly handle that case.
* We now add the Uid of the client to the deleted entities list when it
exits "ingame". (still need to rework code so that the client doesn't
delete its own entity).
* Improved integration of possession code with ForceUpdate logic.
* Don't remove `Presence` component from old entity in possession so
that deleting that entity will properly handle updating the
CharacterId unmapping (if the old entity isn't going to be deleted we
still remove the `Presence` component so that it doesn't keep terrain
loaded).
* Added a couple TODOs on existing tangential things I noticed.
types.
* Add new `IdMaps` type that contains mappings to Entity from Uid, CharacterId, and
RtsimEntity.
* Add PresenceKind::LoadingCharacter variant for when the CharacterId
has not actually been confirmed to exist and belong to the logged in
client. Switches to the regular PresenceKind::Character once the
character is loaded from the database and that is used to update the
entity.
* Start refactoring `delete_entity_recorded` to check for CharacterId
and RtsimEntity values that may need to be removed from the map (just
very start, not near complete).
* Other misc tweaks.