/// <inheritdoc /> public PlayerEntityMovementDataUpdateManager( [NotNull] IPlayerEntityGuidEnumerable playerGuids, [NotNull] INetworkMessageSender <EntityMovementMessageContext> movementUpdateMessageSender, [NotNull] IDirtyableMovementDataCollection movementCollection, [NotNull] GlobalEntityCollectionsLockingPolicy lockingPolicy) { PlayerGuids = playerGuids ?? throw new ArgumentNullException(nameof(playerGuids)); MovementUpdateMessageSender = movementUpdateMessageSender ?? throw new ArgumentNullException(nameof(movementUpdateMessageSender)); MovementCollection = movementCollection ?? throw new ArgumentNullException(nameof(movementCollection)); LockingPolicy = lockingPolicy ?? throw new ArgumentNullException(nameof(lockingPolicy)); }
/// <inheritdoc /> public DefaultInterestRadiusManager( [NotNull] IEntityInterestChangeEventSubscribable subscriptionService, [NotNull] ILog logger, [NotNull] IReadonlyEntityGuidMappable <InterestCollection> managedInterestCollections, [NotNull] INetworkMessageSender <EntityVisibilityChangeContext> visibilityMessageSender, [NotNull] GlobalEntityCollectionsLockingPolicy lockingPolicy) : base(subscriptionService, true, logger) { ManagedInterestCollections = managedInterestCollections ?? throw new ArgumentNullException(nameof(managedInterestCollections)); VisibilityMessageSender = visibilityMessageSender ?? throw new ArgumentNullException(nameof(visibilityMessageSender)); LockingPolicy = lockingPolicy ?? throw new ArgumentNullException(nameof(lockingPolicy)); }
/// <inheritdoc /> public PlayerEntityEntryManager( IPlayerSessionClaimedEventSubscribable subscriptionService, ISessionDisconnectionEventSubscribable disconnectionSubscriptionService, IFactoryCreatable <GameObject, PlayerEntityCreationContext> playerFactory, INetworkMessageSender <GenericSingleTargetMessageContext <PlayerSelfSpawnEventPayload> > spawnPayloadSender, ILog logger, GlobalEntityCollectionsLockingPolicy lockingPolicy) : base(subscriptionService, false, logger) { PlayerFactory = playerFactory; SpawnPayloadSender = spawnPayloadSender; LockingPolicy = lockingPolicy; disconnectionSubscriptionService.OnSessionDisconnection += OnSessionDisconnection; }
/// <inheritdoc /> public EntityDataUpdateManager( [NotNull] IPlayerEntityGuidEnumerable playerGuids, IReadonlyEntityGuidMappable <IPeerPayloadSendService <GameServerPacketPayload> > sessionMappable, IReadonlyEntityGuidMappable <InterestCollection> guidToInterestCollectionMappable, IFactoryCreatable <FieldValueUpdate, EntityFieldUpdateCreationContext> updateFactory, IReadonlyEntityGuidMappable <IChangeTrackableEntityDataCollection> changeTrackingCollections, [NotNull] GlobalEntityCollectionsLockingPolicy lockingPolicy) { PlayerGuids = playerGuids ?? throw new ArgumentNullException(nameof(playerGuids)); SessionMappable = sessionMappable; GuidToInterestCollectionMappable = guidToInterestCollectionMappable; UpdateFactory = updateFactory; ChangeTrackingCollections = changeTrackingCollections; LockingPolicy = lockingPolicy ?? throw new ArgumentNullException(nameof(lockingPolicy)); }
/// <inheritdoc /> public PlayerEntityExitManager( [NotNull] ISessionDisconnectionEventSubscribable subscriptionService, [NotNull] ILog logger, [NotNull] IObjectDestructorable <PlayerSessionDeconstructionContext> sessionDestructor, [NotNull] IZoneServerToGameServerClient zoneClientGameService, [NotNull] IConnectionEntityCollection connectionToEntityMap, [NotNull] GlobalEntityCollectionsLockingPolicy lockingPolicy, [NotNull] IEntityDataSaveable entitySaver) : base(subscriptionService, false, logger) { SessionDestructor = sessionDestructor ?? throw new ArgumentNullException(nameof(sessionDestructor)); ZoneClientGameService = zoneClientGameService ?? throw new ArgumentNullException(nameof(zoneClientGameService)); ConnectionToEntityMap = connectionToEntityMap ?? throw new ArgumentNullException(nameof(connectionToEntityMap)); LockingPolicy = lockingPolicy ?? throw new ArgumentNullException(nameof(lockingPolicy)); EntitySaver = entitySaver ?? throw new ArgumentNullException(nameof(entitySaver)); }