Skip to content

Commit 1918ae1

Browse files
committed
added capped framerate set
1 parent 4ecc40a commit 1918ae1

File tree

13 files changed

+3974
-6622
lines changed

13 files changed

+3974
-6622
lines changed

Basis/Assets/AddressableAssetsData/link.xml

Lines changed: 384 additions & 0 deletions
Large diffs are not rendered by default.

Basis/Assets/AddressableAssetsData/link.xml.meta

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Basis/Assets/Basis/Settings/Quality Settiings/Modified - Desktop.asset

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ MonoBehaviour:
2626
m_SupportsHDR: 1
2727
m_HDRColorBufferPrecision: 1
2828
m_MSAA: 2
29-
m_RenderScale: 0.7622722
29+
m_RenderScale: 1.002028
3030
m_UpscalingFilter: 0
3131
m_FsrOverrideSharpness: 0
3232
m_FsrSharpness: 0.92

Basis/Packages/com.basis.framework/BasisUI/BasisSettingsDefaults.cs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -426,6 +426,16 @@ public static class BasisSettingsDefaults
426426
public static BasisSettingsBinding<bool> FBIKRightShoulderEuroRot =>
427427
new("FBIKRightShoulderEuroRot", new BasisPlatformDefault<bool>(false));
428428

429+
// Optional: a real persistent setting for the master toggle.
430+
public static BasisSettingsBinding<string> VSyncCapFps =>
431+
new("vsynccappedset", new BasisPlatformDefault<string>
432+
{
433+
windows = "120",
434+
android = "60",
435+
linux = "120",
436+
other = "120"
437+
});
438+
429439
// Optional: a real persistent setting for the master toggle.
430440
public static readonly BasisSettingsBinding<bool> FBIKEuroAll =
431441
new BasisSettingsBinding<bool>("EuroAll");

Basis/Packages/com.basis.framework/BasisUI/Menus/Main Menu Providers/SettingsProvider.cs

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -413,15 +413,22 @@ public static PanelTabPage GraphicsTab(PanelTabGroup tabGroup)
413413
// VSync
414414
PanelDropdown dropdownVSync = PanelDropdown.CreateNewEntry(qualityGroup.ContentParent);
415415
dropdownVSync.Descriptor.SetTitle("Vertical Sync");
416-
dropdownVSync.AssignEntries(new List<string>
417-
{
418-
"On",
419-
"Capped",
420-
"Off",
421-
"Half",
422-
});
416+
dropdownVSync.Descriptor.SetDescription("VR uses headset refreshrate");
417+
dropdownVSync.AssignEntries(new List<string> { "On", "Capped", "Off", "Half" });
423418
dropdownVSync.AssignBinding(BasisSettingsDefaults.VSync);
424419

420+
PanelTextField fpsCapField = PanelTextField.CreateNewEntry(qualityGroup.ContentParent);
421+
fpsCapField.Descriptor.SetTitle("Frame Rate Cap (FPS)");
422+
fpsCapField.Descriptor.SetDescription("Used only when Vertical Sync is set to Capped.");
423+
fpsCapField.AssignBinding(BasisSettingsDefaults.VSyncCapFps);
424+
// Force numeric entry
425+
TMP_InputField fpsInput = fpsCapField._inputField;
426+
if (fpsInput != null)
427+
{
428+
fpsInput.contentType = TMP_InputField.ContentType.IntegerNumber;
429+
fpsInput.lineType = TMP_InputField.LineType.SingleLine;
430+
}
431+
425432
// RENDERING GROUP
426433
PanelElementDescriptor renderingGroup =
427434
PanelElementDescriptor.CreateNew(PanelElementDescriptor.ElementStyles.Group, container);

Basis/Packages/com.basis.framework/BasisUI/PanelComponents/PanelTextField.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ namespace Basis.BasisUI
66
public class PanelTextField : PanelDataComponent<string>
77
{
88

9-
[SerializeField] protected TMP_InputField _inputField;
10-
[SerializeField] protected TextMeshProUGUI _placeholderLabel;
9+
[SerializeField] public TMP_InputField _inputField;
10+
[SerializeField] public TextMeshProUGUI _placeholderLabel;
1111
[SerializeField] protected string _placeholderText;
1212
[SerializeField] protected string _defaultValue;
1313
[SerializeField] protected TMP_InputField.ContentType _contentType = TMP_InputField.ContentType.Alphanumeric;
Lines changed: 84 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,44 +1,103 @@
11
using Basis.Scripts.Device_Management;
22
using UnityEngine;
3+
34
public class BasisVerticalSyncModule : BasisSettingsBase
45
{
6+
public static int CappedFrameRateSelected = 120;
7+
8+
private enum VSyncMode { On, Capped, Half, Off }
9+
private static VSyncMode _requestedMode = VSyncMode.On;
10+
511
public override void ValidSettingsChange(string matchedSettingName, string optionValue)
612
{
7-
Application.targetFrameRate = -1;
8-
QualitySettings.maxQueuedFrames = -1;
913
#if UNITY_SERVER
10-
QualitySettings.vSyncCount = 0;
11-
Application.targetFrameRate = 25;
14+
// Server ignores client settings entirely
15+
return;
1216
#endif
13-
if (BasisDeviceManagement.StaticCurrentMode == BasisConstants.Desktop)
17+
18+
// Non-desktop devices force vsync off
19+
if (BasisDeviceManagement.StaticCurrentMode != BasisConstants.Desktop)
20+
{
21+
_requestedMode = VSyncMode.Off;
22+
return;
23+
}
24+
25+
// Cap value setting
26+
if (matchedSettingName == "vsynccappedset")
1427
{
15-
BasisDebug.Log($"Vertical Sync Changed to {optionValue}", BasisDebug.LogTag.Local);
16-
switch (optionValue.ToLower())
28+
if (int.TryParse(
29+
optionValue,
30+
System.Globalization.NumberStyles.Integer,
31+
System.Globalization.CultureInfo.InvariantCulture,
32+
out CappedFrameRateSelected))
1733
{
18-
case "on":
19-
QualitySettings.vSyncCount = 1;
20-
Application.targetFrameRate = -1;
21-
break;
22-
case "capped":
23-
QualitySettings.vSyncCount = 0;
24-
Application.targetFrameRate = (int)Screen.currentResolution.refreshRateRatio.value;
25-
break;
26-
case "half":
27-
QualitySettings.vSyncCount = 2;
28-
Application.targetFrameRate = -1;
29-
break;
30-
case "off":
31-
QualitySettings.vSyncCount = 0;
32-
Application.targetFrameRate = -1;
33-
break;
34+
BasisDebug.Log(
35+
$"Target Framerate set to {CappedFrameRateSelected}",
36+
BasisDebug.LogTag.Local);
3437
}
38+
return;
3539
}
36-
else
40+
41+
switch (optionValue.ToLower())
3742
{
38-
QualitySettings.vSyncCount = 0;
43+
case "on":
44+
_requestedMode = VSyncMode.On;
45+
break;
46+
case "capped":
47+
_requestedMode = VSyncMode.Capped;
48+
break;
49+
case "half":
50+
_requestedMode = VSyncMode.Half;
51+
break;
52+
case "off":
53+
_requestedMode = VSyncMode.Off;
54+
break;
3955
}
4056
}
57+
4158
public override void ChangedSettings()
4259
{
60+
#if UNITY_SERVER
61+
QualitySettings.vSyncCount = 0;
62+
Application.targetFrameRate = 25;
63+
return;
64+
#endif
65+
66+
if (BasisDeviceManagement.StaticCurrentMode != BasisConstants.Desktop)
67+
{
68+
QualitySettings.vSyncCount = 0;
69+
Application.targetFrameRate = -1;
70+
return;
71+
}
72+
73+
ApplyMode(_requestedMode);
74+
}
75+
76+
private static void ApplyMode(VSyncMode mode)
77+
{
78+
QualitySettings.maxQueuedFrames = -1;
79+
80+
switch (mode)
81+
{
82+
case VSyncMode.On:
83+
QualitySettings.vSyncCount = 1;
84+
Application.targetFrameRate = -1;
85+
break;
86+
87+
case VSyncMode.Capped:
88+
QualitySettings.vSyncCount = 0;
89+
Application.targetFrameRate = CappedFrameRateSelected;
90+
break;
91+
92+
case VSyncMode.Half:
93+
QualitySettings.vSyncCount = 2;
94+
Application.targetFrameRate = -1;
95+
break;
96+
97+
case VSyncMode.Off:
98+
QualitySettings.vSyncCount = 0;
99+
Application.targetFrameRate = -1;
100+
break;
101+
}
43102
}
44103
}

0 commit comments

Comments
 (0)