public RailController( IRailStateConstruction stateCreator, ExternalEntityVisibility eVisibility, [CanBeNull] IRailNetPeer netPeer) { controlledEntities = new HashSet <RailEntityBase>(); NetPeer = netPeer; Scope = eVisibility == ExternalEntityVisibility.Scoped ? new RailScope(this, stateCreator) : null; }
protected RailPeer( RailResource resource, IRailNetPeer netPeer, ExternalEntityVisibility visibility, uint remoteSendRate, RailInterpreter interpreter, RailPacketIncoming reusableIncoming, RailPacketOutgoing reusableOutgoing) : base(resource, visibility, netPeer) { Resource = resource; RemoteClock = new RailClock(remoteSendRate); this.interpreter = interpreter; outgoingEvents = new Queue <RailEvent>(); this.reusableIncoming = reusableIncoming; this.reusableOutgoing = reusableOutgoing; lastQueuedEventId = SequenceId.Start.Next; eventHistory = new RailHistory(RailConfig.HISTORY_CHUNKS); LocalTick = Tick.START; netPeer.PayloadReceived += OnPayloadReceived; }