Beispiel #1
0
 public NetworkReplicator(IMessageSender messageSender, MessagePool messagePool)
 {
     _messageSender  = messageSender;
     _createMessages = messagePool.GetPool <BasicMessage.CreateObject>();
     _deleteMessages = messagePool.GetPool <BasicMessage.DeleteObject>();
     _replicatePreExistingMessages = messagePool.GetPool <BasicMessage.ReplicatePreExistingObject>();
 }
//            public static Action<IPEndPoint, BasicMessage.Ping> UnconnectedPing(
//                IClock clock,
//                IClock fixedClock,
//                INetworkMessagePool<BasicMessage.Pong> messagePool,
//                IConnectionlessMessageSender messageSender) {
//
//                return (endpoint, ping) => {
//                    var pong = messagePool.Create();
//                    pong.Content.SenderTimestamp = ping.Timestamp;
//                    pong.Content.SenderFixedTimestamp = ping.FixedTimestamp;
//                    pong.Content.Timestamp = clock.CurrentTime;
//                    pong.Content.FixedTimestamp = fixedClock.CurrentTime;
//                    messageSender.Send(endpoint, pong);
//                };
//            }

            public static Action <MessageMetaData, BasicMessage.RequestHostInfo> HostInfoRequest(
                INetworkMessagePool <BasicMessage.HostInfoResponse> messagePool,
                Func <ushort> playerCount,
                IConnectionlessMessageSender messageSender)
            {
                return((metadata, message) => {
                    var response = messagePool.Create();
                    response.Content.SenderTimestamp = message.Timestamp;
                    response.Content.PlayerCount = playerCount();
                    messageSender.Send(metadata.EndPoint, response);
                });
            }
 public static Action <MessageMetaData, BasicMessage.Ping> Ping(
     IClock clock,
     IClock fixedClock,
     INetworkMessagePool <BasicMessage.Pong> messagePool,
     IMessageSender messageSender)
 {
     return((metadata, ping) => {
         var pong = messagePool.Create();
         pong.Content.FrameId = ping.FrameId;
         pong.Content.Timestamp = clock.CurrentTime;
         pong.Content.FixedTimestamp = fixedClock.CurrentTime;
         messageSender.Send(metadata.ConnectionId, pong);
     });
 }
 public static Action <IPEndPoint, BasicMessage.Ping> UnconnectedPing(
     IClock clock,
     IClock fixedClock,
     INetworkMessagePool <BasicMessage.Pong> messagePool,
     IConnectionlessMessageSender messageSender)
 {
     return((endpoint, ping) => {
         var pong = messagePool.Create();
         pong.Content.SenderTimestamp = ping.Timestamp;
         pong.Content.SenderFixedTimestamp = ping.FixedTimestamp;
         pong.Content.Timestamp = clock.CurrentTime;
         pong.Content.FixedTimestamp = fixedClock.CurrentTime;
         messageSender.Send(endpoint, pong);
     });
 }
 public static Action <ConnectionId, BasicMessage.Ping> Ping(
     IClock clock,
     IClock fixedClock,
     INetworkMessagePool <BasicMessage.Pong> messagePool,
     IMessageSender messageSender)
 {
     return((connectionId, ping) => {
         var pong = messagePool.Create();
         pong.Content.SenderTimestamp = ping.Timestamp;
         pong.Content.SenderFixedTimestamp = ping.FixedTimestamp;
         pong.Content.Timestamp = clock.CurrentTime;
         pong.Content.FixedTimestamp = fixedClock.CurrentTime;
         messageSender.Send(connectionId, pong);
     });
 }
Beispiel #6
0
    private void Awake()
    {
        var dependencyContainer = new DependencyContainer(new Dictionary <string, object> {
            { "clock", _syncedGameClock },
            { "fixedClock", _syncedFixedClock },
        });

        var prefabs = new Dictionary <ObjectType, GameObject> {
            { ObjectTypes.Player, _playerPrefab },
        };

        _ramnet       = new RamnetBase(_coroutineScheduler, _transporter, _natFacilitatorEndpoint.ToIpEndPoint(), _messageTransporter, prefabs, dependencyContainer);
        _pongMessages = _ramnet.MessagePool.GetPool <BasicMessage.Pong>();
        _replicator   = new Replicator(_ramnet.ReplicatedObjectStore);
    }
Beispiel #7
0
    private void Awake()
    {
        //_gameClock.TimeScale = 0f;

        _updatePlayerPacketsReceived = new CircularBuffer <double>(500);
        var dependencyContainer = new DependencyContainer(new Dictionary <string, object> {
            { "clock", _synchedGameClock },
            { "fixedClock", _syncedFixedClock },
            { "updatePlayerPacketsCounter", _updatePlayerPacketsReceived }
        });

        var prefabs = new Dictionary <ObjectType, GameObject> {
            { ObjectTypes.Player, _playerPrefab },
        };

        _ramnet       = new RamnetBase(_coroutineScheduler, _transporter, _natFacilitatorEndpoint.ToIpEndPoint(), _messageTransporter, prefabs, dependencyContainer);
        _pingMessages = _ramnet.MessagePool.GetPool <BasicMessage.Ping>();
    }