public static List <SyncedData> Decode(byte[] data) { List <SyncedData> @new = SyncedData.poolList.GetNew(); @new.Clear(); int i = 0; int num = BitConverter.ToInt32(data, i); i += 4; byte ownerID = data[i++]; byte b = data[i++]; bool flag = data[i++] == 1; int num2 = num; while (i < data.Length) { SyncedData new2 = SyncedData.pool.GetNew(); new2.Init(ownerID, num2--); new2.inputData.Deserialize(data, ref i); @new.Add(new2); } bool flag2 = @new.Count > 0; if (flag2) { @new[0].dropPlayer = flag; @new[0].dropFromPlayerId = b; } return(@new); }
private SyncedData UpdateData() { bool flag = this.replayMode == ReplayMode.LOAD_REPLAY; SyncedData result; if (flag) // 加载回放模式 { result = null; } else // 非加载回放模式 { SyncedData @new = SyncedData.pool.GetNew(); // 从池中获取 @new.Init(this.localPlayer.ID, this.ticks); this.GetLocalData(@new.inputData); // 把玩家操作数据放入SyncedData实例中 this.localPlayer.AddData(@new); // 把SyncedData实例放入本地玩家的操作数据字典中 bool flag2 = this.communicator != null; if (flag2) // 有通信器 { this.localPlayer.GetSendData(this.ticks, this._syncedDataCacheUpdateData); // 把最新的操作数据放入_syncedDataCacheUpdateData中 this.communicator.OpRaiseEvent(199, SyncedData.Encode(this._syncedDataCacheUpdateData), true, this.auxActivePlayersIds); // 发送操作数据 } result = @new; } return(result); }
public SyncedData clone() { SyncedData @new = SyncedData.pool.GetNew(); @new.Init(this.inputData.ownerID, this.tick); @new.inputData.CopyFrom(this.inputData); return(@new); }