public void RestoreState(IStateSnippet savedState) { var state = (PlayerControllerStateSnippet)savedState; _warmthLevelTimeoutCounter = state.WarmthLevelTimeoutCounter; _wetnessLevelTimeoutCounter = state.WetnessLevelTimeoutCounter; _warmthLerpTarget = state.WarmthLerpTarget; _warmthLerpCounter = state.WarmthLerpCounter; _warmthLerpBase = state.WarmthLerpBase; _sleepingCounter = state.SleepingCounter; _sleepDurationGameHours = state.SleepDurationGameHours; _sleepHealthCheckPeriod = state.SleepHealthCheckPeriod; _sleepHealthChecksLeft = state.SleepHealthChecksLeft; _sleepStartTime = state.SleepStartTime; _fatigueValueAfterSleep = state.FatigueValueAfterSleep; _wetnessController.RestoreState((WetnessControllerSnippet)state.ChildStates["WetnessController"]); Clothes.Clear(); foreach (var clothesItem in state.Clothes) { var newId = state.InventoryData.ItemsMapping.ContainsKey(clothesItem) ? state.InventoryData.ItemsMapping[clothesItem] : (Guid?)null; var item = newId.HasValue ? _gc.Inventory.Items.FirstOrDefault(x => x.Id == newId.Value) : null; if (item as ClothesItemBase != null) { Clothes.Add((ClothesItemBase)item); } } Appliances.Clear(); foreach (var applianceItem in state.Appliances) { var newId = state.InventoryData.ItemsMapping.ContainsKey(applianceItem.ItemId) ? state.InventoryData.ItemsMapping[applianceItem.ItemId] : (Guid?)null; var item = newId.HasValue ? _gc.Inventory.Items.FirstOrDefault(x => x.Id == newId.Value) : null; if (item as InventoryMedicalItemBase != null) { Appliances.Add(new MedicalBodyAppliance { BodyPart = applianceItem.BodyPart, Item = (InventoryMedicalItemBase)item }); } } }