/// <summary> /// Set position of objects in message /// </summary> /// <param name="message"></param> /// <param name="broadcast"></param> public void SetPositions(string message, bool broadcast = false) { BatchedPositionRequest data = JsonUtility.FromJson <BatchedPositionRequest>(message); foreach (var entry in data.Requests) { if (entry.Priority == Servicer.Instance.Netcode.ConnectionID) { continue; } if (PlayerPositionTrackedObjects.ContainsKey(entry.Id)) { PlayerPositionTrackedObjects[entry.Id].transform.DOMove(entry.Position, 0.1f); } else { Servicer.Instance.Spawn.SpawnDummy(entry.Id, entry.Position); } //PositionTrackedObjects[entry.Id].transform.position = entry.Position; } if (broadcast) { Servicer.Instance.Netcode.SendDataUnreliable( (short)NetcodeMsgType.BatchedPositionUpdate, message); } PositionBatch.Clear(); }
public void SyncAllDynamicPositions(int targetClient) { var list = PlayerPositionTrackedObjects.Select(entry => new PositionRequest() { Id = entry.Key, Priority = 0, Position = entry.Value.transform.position }).ToList(); var data = new BatchedPositionRequest { Requests = list }; Servicer.Instance.Netcode.SendDataUnreliable( (short)NetcodeMsgType.BatchedPositionUpdate, JsonUtility.ToJson(data), targetConn: targetClient); }
void Update() { // Do we have local position changes to send this frame? if (PositionBatch.Count != 0) { if (Servicer.Instance.Netcode.IsServer) { var list = PositionBatch.Select(entry => new PositionRequest() { Id = entry.Key, Priority = entry.Value.Priority, Position = entry.Value.Value }).ToList(); var data = new BatchedPositionRequest { Requests = list }; SetPositions(JsonUtility.ToJson(data), true); } else { var list = PositionBatch.Select(entry => new PositionRequest { Id = entry.Key, Priority = entry.Value.Priority, Position = entry.Value.Value }).ToList(); var data = new BatchedPositionRequest { Requests = list }; Servicer.Instance.Netcode.SendDataUnreliable( (short)NetcodeMsgType.PositionUpdateRequest, JsonUtility.ToJson(data), targetConn: 0); PositionBatch.Clear(); } } }