public override void SetupPanel() { panel.QualityInView.Options = SettingsManager.QualityLevelsInView; panel.QualityInView.Index = (int)SettingsManager.QualityInView; panel.QualityInView.Interactable = SettingsManager.SupportsView; panel.QualityInAr.Options = SettingsManager.QualityLevelsInAR; panel.QualityInAr.Index = (int)SettingsManager.QualityInAr; panel.QualityInAr.Interactable = SettingsManager.SupportsAR; panel.TargetFps.Options = TargetFpsOptions; panel.NetworkProcessing.Options = NetworkProcessingOptions; panel.SunDirection.SetMinValue(-60).SetMaxValue(60).SetIntegerOnly(true); panel.BackgroundColor.Value = SettingsManager.BackgroundColor.WithAlpha(1); panel.BackgroundColor.Interactable = SettingsManager.SupportsView; panel.SunDirection.Value = SettingsManager.SunDirection; if (SettingsManager.TargetFps == Settings.DefaultFps) { panel.TargetFps.Index = 0; } else if (SettingsManager.TargetFps <= 15) { panel.TargetFps.Index = 3; } else if (SettingsManager.TargetFps <= 30) { panel.TargetFps.Index = 2; } else if (SettingsManager.TargetFps <= 60) { panel.TargetFps.Index = 1; } else { panel.TargetFps.Index = 0; } switch (SettingsManager.NetworkFrameSkip) { case 1: panel.NetworkProcessing.Index = 0; break; case 2: panel.NetworkProcessing.Index = 1; break; default: panel.NetworkProcessing.Index = 2; break; } panel.ModelCacheLabel.text = $"<b>Model Cache:</b> {Resource.External.ResourceCount} files"; panel.SavedFilesLabel.text = $"<b>Saved Files:</b> {ModuleListPanel.NumSavedFiles} files"; panel.HostHistoryLabel.text = $"<b>Host History:</b> {ModuleListPanel.Instance.NumMastersInCache} entries"; panel.ModelService.Options = ModelServerModesNames; panel.ModelService.Label = UpdateModelServiceLabel(); panel.ModelService.Interactable = !Settings.IsMobile; panel.QualityInView.ValueChanged += (f, _) => { SettingsManager.QualityInView = (QualityType)f; ModuleListPanel.UpdateSettings(); }; panel.QualityInAr.ValueChanged += (f, _) => { SettingsManager.QualityInAr = (QualityType)f; ModuleListPanel.UpdateSettings(); }; panel.BackgroundColor.ValueChanged += c => { SettingsManager.BackgroundColor = c; ModuleListPanel.UpdateSettings(); }; panel.TargetFps.ValueChanged += (i, _) => { switch (i) { case 0: SettingsManager.TargetFps = Settings.DefaultFps; break; case 1: SettingsManager.TargetFps = 60; break; case 2: SettingsManager.TargetFps = 30; break; case 3: SettingsManager.TargetFps = 15; break; } ModuleListPanel.UpdateSettings(); }; panel.NetworkProcessing.ValueChanged += (i, _) => { switch (i) { case 0: SettingsManager.NetworkFrameSkip = 1; break; case 1: SettingsManager.NetworkFrameSkip = 2; break; case 2: SettingsManager.NetworkFrameSkip = 4; break; } ModuleListPanel.UpdateSettings(); }; panel.SunDirection.ValueChanged += f => { SettingsManager.SunDirection = (int)f; ModuleListPanel.UpdateSettings(); }; panel.Close.Clicked += Close; panel.ClearModelCacheClicked += async() => { Logger.Info("Settings: Clearing model cache."); await Resource.External.ClearModelCacheAsync(); panel.ModelCacheLabel.text = $"<b>Model Cache:</b> {Resource.External.ResourceCount} files"; }; panel.ClearHostHistoryClicked += async() => { Logger.Info("Settings: Clearing cache of master uris."); await ModuleListPanel.Instance.ClearMastersCacheAsync(); panel.HostHistoryLabel.text = $"<b>Host History:</b> {ModuleListPanel.Instance.NumMastersInCache} entries"; }; panel.ClearSavedFilesClicked += () => { Logger.Info("Settings: Clearing saved files."); ModuleListPanel.ClearSavedFiles(); panel.SavedFilesLabel.text = $"<b>Saved:</b> {ModuleListPanel.NumSavedFiles} files"; }; panel.ModelService.ValueChanged += async(i, s) => { switch ((ModelServerModes)i) { case ModelServerModes.Off: ModuleListPanel.ModelService.Dispose(); break; case ModelServerModes.On: await ModuleListPanel.ModelService.Restart(false); break; case ModelServerModes.OnWithFile: await ModuleListPanel.ModelService.Restart(true); break; default: break; } panel.ModelService.Label = UpdateModelServiceLabel(); }; }