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); }); }
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); }
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>(); }