This is a mind which only registers the world, and then is responsible
to send what it knows about the world to any external mind that's
connected to the character.
Currently it only sends the thoughts that's been sent to the character.
Though we need to alter the way the MindProperty requests possessions,
as we don't want to generate possession requests for anything that's
handled by a client anyway. Problem right now is that we won't know that
at the time of MindProperty being applied.
We now register a an external mind with the ExternalMindsManager and
then let the manager make sure that there's an external mind connected.
When the external client is disconnected the manager will try to find a
new client to handle the mind.
What we want is instead some kind of "mind managing" instance which
keeps track of the thoughts sent to the entity, and makes sure that any
new mind gets these thoughts (so that it's possible to send thoughts to
entities which haven't yet had any minds attached to them).
So that authoring tools can recognize entities with minds.
This should of course not be sent to regular entities in SIGHT
operations, but that should be handled with the attribute visibility
feature (yet to be written) instead.
If a Sight of a Delete operation of the BaseMind was received (i.e. the
character was deleted) it would result in the instance being deleted
twice. Avoid this by increasing the reference count by one.
All IG code should use the interface of LocatedEntity when dealing
with any entity, rather than sometimes requiring Entity. Add virtual
functions to the interface where required, and modify all other interfaces
to stop them using Entity. This makes the code way cleaner, and much better
de-coupled.