- 
                Notifications
    
You must be signed in to change notification settings  - Fork 38
 
Description
I'd like the ability to not only be able to define which entities are visible to specific clients (possible with the bevy_replicon::server::VisibilityPolicy) but also be able to define what components are visible for each client.
An example: A client can see the stats of his own troops but not the ones of his enemies.
@Shatur and I had a discussion on bevy discord in the the bevy_replicon ecosystem-crates channel.
Here is a little summary from what Shatur wrote:
The API was originally suggested by @NiseVoid. The idea is to have component access levels via bitmasks like in physics engine. User define their meaning. Some examples:
- "Owner", "Party member", "Allied", "Neutral", "Hostile"
 - "Very close", "Close", "Far away", "Very far away", "Extremely far away"
 - "Friend", "Guild Member", "Alliance member", "Stranger"
 
To achieve this, we assign a mask to each component. Like "send this component only to owner and party members". And assign masks to client entities.
To achieve this we can turn hashset for whitelist policy into a hashmap and for blacklist policy add additional hashmap. Both hashmaps will map entity to its mask for a client. We also need to store last processed value into order to detect changes. So the map will be entity -> (mask, mask).
Should this API be per component or per component group (i.e. per replication rule)?