public override void Read(NetIncomingMessage inInputStream) { bool stateBit; //Debug.Log($"GameMode read"); stateBit = inInputStream.ReadBoolean(); if (stateBit) { mEntries.Clear(); int entryCount = inInputStream.ReadInt32(); //just replace everything that's here, it don't matter... for (int i = 0; i < entryCount; ++i) { var entry = new core.Entry(); entry.Read(inInputStream); mEntries.Add(entry); } } stateBit = inInputStream.ReadBoolean(); if (stateBit) { var mode = (core.GameModeType)inInputStream.ReadUInt32(MaxGameModeTypeBits); game_mode = CreateGameMode(mode); game_mode.Read(inInputStream); mGameModeData = ACDC.GameModeData[(int)mode]; } stateBit = inInputStream.ReadBoolean(); if (stateBit) { state = (GameModeState)inInputStream.ReadUInt32(MaxGameModeStateBits); if (state == GameModeState.End) { game_mode.ReadGameResult(inInputStream, this); OnGameEnd(); } //Debug.Log($"GameMode state {state}"); } stateBit = inInputStream.ReadBoolean(); if (stateBit) { // 최대 RTT 보정 if (NetworkManager.Instance.GetRoundTripTimeClientSide() > 1f) { StartTime = core.Timing.sInstance.GetFrameStartTime() + inInputStream.ReadFloat() - (1f * 0.5f); } else { StartTime = core.Timing.sInstance.GetFrameStartTime() + inInputStream.ReadFloat() - (NetworkManager.Instance.GetRoundTripTimeClientSide() * 0.5f); } Debug.Log($"GameMode Start StartTime:{StartTime}, RemainTime:{RemainTime}, timestamp:{core.Timing.sInstance.GetFrameStartTime()}, RTT:{NetworkManager.Instance.GetRoundTripTimeClientSide()}"); IsSetPlayTime = true; } }