/// <summary> /// 주기적인 동기화를 위한 직렬화 /// </summary> /// <param name="dataWriter">직렬화 데이터</param> /// <param name="syncType">주기적 동기화 타입</param> /// <returns>다른 유저에게 동기화될지 여부</returns> public bool OnViewPeriodicSyncSerialize(NetDataWriter dataWriter, PeriodicSyncType syncType) { var firstPos = dataWriter.Length; bool isExist = false; for (int i = 0; i < _viewPeriodicSyncs.Length; ++i) { var sync = _viewPeriodicSyncs[i]; var prevPos = dataWriter.Length; dataWriter.Write(true); var result = sync.OnViewPeriodicSyncSerialize(dataWriter); int hash = 0; if (syncType == PeriodicSyncType.Changed) { hash = dataWriter.GetHashCode(prevPos, dataWriter.Length - prevPos); } if (result == true && (syncType == PeriodicSyncType.Always || (syncType == PeriodicSyncType.Changed && _viewPeriodicSyncHashs[i] != hash))) { _viewPeriodicSyncHashs[i] = hash; isExist = true; } else { dataWriter.Length = prevPos; dataWriter.Write(false); } } if (isExist == false) { dataWriter.Length = firstPos; } return(isExist); }