public override void CopyFrom(InputDataBase fromBase) { InputData from = (InputData)fromBase; var stringTableEnum = from.stringTable.GetEnumerator(); while (stringTableEnum.MoveNext()) { var kv = stringTableEnum.Current; this.stringTable.Add(kv.Key, kv.Value); } var byteTableEnum = from.byteTable.GetEnumerator(); while (byteTableEnum.MoveNext()) { var kv = byteTableEnum.Current; this.byteTable.Add(kv.Key, kv.Value); } var intTableEnum = from.intTable.GetEnumerator(); while (intTableEnum.MoveNext()) { var kv = intTableEnum.Current; this.intTable.Add(kv.Key, kv.Value); } var fpTableEnum = from.fpTable.GetEnumerator(); while (fpTableEnum.MoveNext()) { var kv = fpTableEnum.Current; this.fpTable.Add(kv.Key, kv.Value); } var byteArrayTableEnum = from.byteArrayTable.GetEnumerator(); while (byteArrayTableEnum.MoveNext()) { var kv = byteArrayTableEnum.Current; this.byteArrayTable.Add(kv.Key, kv.Value); } var tsVectorTableEnum = from.tsVectorTable.GetEnumerator(); while (tsVectorTableEnum.MoveNext()) { var kv = tsVectorTableEnum.Current; this.tsVectorTable.Add(kv.Key, kv.Value); } var tsVectorTable2Enum = from.tsVectorTable2.GetEnumerator(); while (tsVectorTable2Enum.MoveNext()) { var kv = tsVectorTable2Enum.Current; this.tsVectorTable2.Add(kv.Key, kv.Value); } }
public void UpdateAllCoroutines() { InputDataBase oldInputData = TrueSyncInput.CurrentSimulationData; UpdateAllCoroutines(lockStep.Ticks, TrueSyncManager.Time); TrueSyncInput.CurrentSimulationData = (InputData)oldInputData; }
void GetLocalData(InputDataBase playerInputData) { TrueSyncInput.CurrentInputData = (InputData) playerInputData; if (behaviorsByPlayer.ContainsKey(playerInputData.ownerID)) { List<TrueSyncManagedBehaviour> managedBehavioursByPlayer = behaviorsByPlayer[playerInputData.ownerID]; for (int index = 0, length = managedBehavioursByPlayer.Count; index < length; index++) { TrueSyncManagedBehaviour bh = managedBehavioursByPlayer[index]; if (bh != null && !bh.disabled) { bh.OnSyncedInput(); } } } TrueSyncInput.CurrentInputData = null; }
/** * @brief Returns true if this {@link SyncedData} has all actions information equals to the provided one. **/ public override bool EqualsData(InputDataBase otherBase) { InputData other = (InputData)otherBase; if (this.stringTable.Count != other.stringTable.Count || this.byteTable.Count != other.byteTable.Count || this.intTable.Count != other.intTable.Count || this.fpTable.Count != other.fpTable.Count || this.byteArrayTable.Count != other.byteArrayTable.Count || this.tsVectorTable.Count != other.tsVectorTable.Count || this.tsVectorTable2.Count != other.tsVectorTable2.Count) { return(false); } if (!checkEqualsTable(this, other)) { return(false); } return(true); }
public SyncedData() { this.inputData = AbstractLockstep.instance.InputDataProvider(); }
void OnStepUpdate(List <InputDataBase> allInputData) { time += lockedTimeStep; if (ReplayRecord.replayMode != ReplayMode.LOAD_REPLAY) { CheckGameObjectsSafeMap(); } TrueSyncInput.SetAllInputs(null); for (int index = 0, length = generalBehaviours.Count; index < length; index++) { TrueSyncManagedBehaviour bh = generalBehaviours[index]; if (bh != null && !bh.disabled) { bh.OnPreSyncedUpdate(); instance.scheduler.UpdateAllCoroutines(); } } for (int index = 0, length = allInputData.Count; index < length; index++) { InputDataBase playerInputData = allInputData[index]; if (behaviorsByPlayer.ContainsKey(playerInputData.ownerID)) { List <TrueSyncManagedBehaviour> managedBehavioursByPlayer = behaviorsByPlayer[playerInputData.ownerID]; for (int index2 = 0, length2 = managedBehavioursByPlayer.Count; index2 < length2; index2++) { TrueSyncManagedBehaviour bh = managedBehavioursByPlayer[index2]; if (bh != null && !bh.disabled) { bh.OnPreSyncedUpdate(); instance.scheduler.UpdateAllCoroutines(); } } } } TrueSyncInput.SetAllInputs(allInputData); TrueSyncInput.CurrentSimulationData = null; for (int index = 0, length = generalBehaviours.Count; index < length; index++) { TrueSyncManagedBehaviour bh = generalBehaviours[index]; if (bh != null && !bh.disabled) { bh.OnSyncedUpdate(); instance.scheduler.UpdateAllCoroutines(); } } for (int index = 0, length = allInputData.Count; index < length; index++) { InputDataBase playerInputData = allInputData[index]; if (behaviorsByPlayer.ContainsKey(playerInputData.ownerID)) { TrueSyncInput.CurrentSimulationData = (InputData)playerInputData; List <TrueSyncManagedBehaviour> managedBehavioursByPlayer = behaviorsByPlayer[playerInputData.ownerID]; for (int index2 = 0, length2 = managedBehavioursByPlayer.Count; index2 < length2; index2++) { TrueSyncManagedBehaviour bh = managedBehavioursByPlayer[index2]; if (bh != null && !bh.disabled) { bh.OnSyncedUpdate(); instance.scheduler.UpdateAllCoroutines(); } } } TrueSyncInput.CurrentSimulationData = null; } CheckQueuedBehaviours(); }
/// <summary> ///DV 帧更新 ///是在lockstep创建的时候传这个方法给他 /// </summary> void OnStepUpdate(List <InputDataBase> allInputData) { // 添加当前时间 time += lockedTimeStep; if (ReplayRecord.replayMode != ReplayMode.LOAD_REPLAY) { // 非录像模式, 检测GameObject CheckGameObjectsSafeMap(); CheckGameObjectsSafeMap(); } TrueSyncInput.SetAllInputs(null); // 遍历generalBehaviours普通行为列表,调行为的OnPreSyncedUpdate()。还会调协程更新instance.scheduler.UpdateAllCoroutines(); for (int index = 0, length = generalBehaviours.Count; index < length; index++) { TrueSyncManagedBehaviour bh = generalBehaviours[index]; if (bh != null && !bh.disabled) { bh.OnPreSyncedUpdate(); instance.scheduler.UpdateAllCoroutines(); } } // 遍历allInputData,和对应玩家的行为列表behaviorsByPlayer。 调行为的OnPreSyncedUpdate()。还会调协程更新instance.scheduler.UpdateAllCoroutines(); for (int index = 0, length = allInputData.Count; index < length; index++) { InputDataBase playerInputData = allInputData[index]; if (behaviorsByPlayer.ContainsKey(playerInputData.ownerID)) { List <TrueSyncManagedBehaviour> managedBehavioursByPlayer = behaviorsByPlayer[playerInputData.ownerID]; for (int index2 = 0, length2 = managedBehavioursByPlayer.Count; index2 < length2; index2++) { TrueSyncManagedBehaviour bh = managedBehavioursByPlayer[index2]; if (bh != null && !bh.disabled) { bh.OnPreSyncedUpdate(); instance.scheduler.UpdateAllCoroutines(); } } } } TrueSyncInput.SetAllInputs(allInputData); TrueSyncInput.CurrentSimulationData = null; // 遍历generalBehaviours普通行为列表,调行为的OnSyncedUpdate()。还会调协程更新instance.scheduler.UpdateAllCoroutines(); for (int index = 0, length = generalBehaviours.Count; index < length; index++) { TrueSyncManagedBehaviour bh = generalBehaviours[index]; if (bh != null && !bh.disabled) { bh.OnSyncedUpdate(); instance.scheduler.UpdateAllCoroutines(); } } // 遍历allInputData,和对应玩家的行为列表behaviorsByPlayer。 调行为的OnSyncedUpdate()。还会调协程更新instance.scheduler.UpdateAllCoroutines(); for (int index = 0, length = allInputData.Count; index < length; index++) { InputDataBase playerInputData = allInputData[index]; if (behaviorsByPlayer.ContainsKey(playerInputData.ownerID)) { TrueSyncInput.CurrentSimulationData = (InputData)playerInputData; List <TrueSyncManagedBehaviour> managedBehavioursByPlayer = behaviorsByPlayer[playerInputData.ownerID]; for (int index2 = 0, length2 = managedBehavioursByPlayer.Count; index2 < length2; index2++) { TrueSyncManagedBehaviour bh = managedBehavioursByPlayer[index2]; if (bh != null && !bh.disabled) { bh.OnSyncedUpdate(); instance.scheduler.UpdateAllCoroutines(); } } } TrueSyncInput.CurrentSimulationData = null; } // 检测占存行为列表CheckQueuedBehaviours()。给他们分配拥有者和调同步开始方法 CheckQueuedBehaviours(); }
public abstract void CopyFrom(InputDataBase fromBase);
public abstract bool EqualsData(InputDataBase otherBase);
public SyncedData() { this.inputData = AbstractLockstep.instance.InputDataProvider(); //TrueSyncManager:ProvideInputData{new InputData} }