diff --git a/MareSynchronos/MareConfiguration/Configurations/MareConfig.cs b/MareSynchronos/MareConfiguration/Configurations/MareConfig.cs
index 6047545..3d4ee44 100644
--- a/MareSynchronos/MareConfiguration/Configurations/MareConfig.cs
+++ b/MareSynchronos/MareConfiguration/Configurations/MareConfig.cs
@@ -7,6 +7,7 @@ namespace MareSynchronos.MareConfiguration.Configurations;
[Serializable]
public class MareConfig : IMareConfiguration
{
+ public bool SortSyncshellsByVRAM { get; set; } = false;
public int ExpectedTOSVersion = 2;
public int AcceptedTOSVersion { get; set; } = 0;
public bool AcceptedAgreement { get; set; } = false;
diff --git a/MareSynchronos/MareSynchronos.csproj b/MareSynchronos/MareSynchronos.csproj
index 179d63f..b10b01e 100644
--- a/MareSynchronos/MareSynchronos.csproj
+++ b/MareSynchronos/MareSynchronos.csproj
@@ -14,10 +14,12 @@
-
+
-
+
+
+
all
runtime; build; native; contentfiles; analyzers; buildtransitive
@@ -29,6 +31,8 @@
runtime; build; native; contentfiles; analyzers; buildtransitive
+
+
diff --git a/MareSynchronos/Snowcloak.json b/MareSynchronos/Snowcloak.json
index 39b04e3..03f8f97 100644
--- a/MareSynchronos/Snowcloak.json
+++ b/MareSynchronos/Snowcloak.json
@@ -9,6 +9,6 @@
"customization"
],
"IconUrl": "https://raw.githubusercontent.com/Eauldane/SnowcloakClient/refs/heads/main/MareSynchronos/images/logo.png",
- "RepoUrl": "https://github.com/Eauldane/SnowcloakClient",
+ "RepoUrl": "https://git.snowcloak-sync.com/Eauldane/SnowcloakClient",
"CanUnloadAsync": true
}
diff --git a/MareSynchronos/UI/Components/DrawGroupPair.cs b/MareSynchronos/UI/Components/DrawGroupPair.cs
index 64db21f..7f546f0 100644
--- a/MareSynchronos/UI/Components/DrawGroupPair.cs
+++ b/MareSynchronos/UI/Components/DrawGroupPair.cs
@@ -20,6 +20,7 @@ public class DrawGroupPair : DrawPairBase
private readonly GroupPairFullInfoDto _fullInfoDto;
private readonly GroupFullInfoDto _group;
private readonly CharaDataManager _charaDataManager;
+ public long _VRAMBytes;
public DrawGroupPair(string id, Pair entry, ApiController apiController,
MareMediator mareMediator, GroupFullInfoDto group, GroupPairFullInfoDto fullInfoDto,
@@ -80,11 +81,13 @@ public class DrawGroupPair : DrawPairBase
}
if (_pair.LastAppliedDataBytes >= 0)
{
+
presenceText += UiSharedService.TooltipSeparator;
presenceText += ((!_pair.IsVisible) ? "(Last) " : string.Empty) + "Mods Info" + Environment.NewLine;
presenceText += "Files Size: " + UiSharedService.ByteToString(_pair.LastAppliedDataBytes, true);
if (_pair.LastAppliedApproximateVRAMBytes >= 0)
{
+ _VRAMBytes = _pair.LastAppliedApproximateVRAMBytes;
presenceText += Environment.NewLine + "Approx. VRAM Usage: " + UiSharedService.ByteToString(_pair.LastAppliedApproximateVRAMBytes, true);
}
if (_pair.LastAppliedDataTris >= 0)
diff --git a/MareSynchronos/UI/Components/GroupPanel.cs b/MareSynchronos/UI/Components/GroupPanel.cs
index 067d591..10010ab 100644
--- a/MareSynchronos/UI/Components/GroupPanel.cs
+++ b/MareSynchronos/UI/Components/GroupPanel.cs
@@ -452,7 +452,16 @@ internal sealed class GroupPanel
{
ImGui.TextUnformatted("Visible");
ImGui.Separator();
- _uidDisplayHandler.RenderPairList(visibleUsers);
+ if (_mareConfig.Current.SortSyncshellsByVRAM)
+ {
+ List sortedVisibleUsers = visibleUsers.OrderBy(o=>o._VRAMBytes).ToList();
+ _uidDisplayHandler.RenderPairList(sortedVisibleUsers);
+ }
+ else
+ {
+ _uidDisplayHandler.RenderPairList(visibleUsers);
+
+ }
}
if (onlineUsers.Count > 0)
diff --git a/MareSynchronos/UI/SettingsUi.cs b/MareSynchronos/UI/SettingsUi.cs
index a6ae0bb..1b3788b 100644
--- a/MareSynchronos/UI/SettingsUi.cs
+++ b/MareSynchronos/UI/SettingsUi.cs
@@ -956,6 +956,7 @@ public class SettingsUi : WindowMediatorSubscriberBase
_uiShared.BigText("UI");
var showCharacterNames = _configService.Current.ShowCharacterNames;
var showVisibleSeparate = _configService.Current.ShowVisibleUsersSeparately;
+ var sortSyncshellByVRAM = _configService.Current.SortSyncshellsByVRAM;
var showOfflineSeparate = _configService.Current.ShowOfflineUsersSeparately;
var showProfiles = _configService.Current.ProfilesShow;
var showNsfwProfiles = _configService.Current.ProfilesAllowNsfw;
@@ -1074,7 +1075,12 @@ public class SettingsUi : WindowMediatorSubscriberBase
_configService.Save();
}
_uiShared.DrawHelpText("This will show all currently visible users in a special 'Visible' group in the main UI.");
-
+ if (ImGui.Checkbox("Sort visible syncshell users by VRAM usage", ref sortSyncshellByVRAM))
+ {
+ _configService.Current.SortSyncshellsByVRAM = sortSyncshellByVRAM;
+ _configService.Save();
+ }
+ _uiShared.DrawHelpText("This will put users using the most VRAM in a syncshell at the top of the list.");
if (ImGui.Checkbox("Show separate Offline group", ref showOfflineSeparate))
{
_configService.Current.ShowOfflineUsersSeparately = showOfflineSeparate;
diff --git a/MareSynchronos/packages.lock.json b/MareSynchronos/packages.lock.json
index c478ce3..dc085cb 100644
--- a/MareSynchronos/packages.lock.json
+++ b/MareSynchronos/packages.lock.json
@@ -10,9 +10,9 @@
},
"DalamudPackager": {
"type": "Direct",
- "requested": "[13.0.0, )",
- "resolved": "13.0.0",
- "contentHash": "Mb3cUDSK/vDPQ8gQIeuCw03EMYrej1B4J44a1AvIJ9C759p9XeqdU9Hg4WgOmlnlPe0G7ILTD32PKSUpkQNa8w=="
+ "requested": "[13.1.0, )",
+ "resolved": "13.1.0",
+ "contentHash": "XdoNhJGyFby5M/sdcRhnc5xTop9PHy+H50PTWpzLhJugjB19EDBiHD/AsiDF66RETM+0qKUdJBZrNuebn7qswQ=="
},
"DotNet.ReproducibleBuilds": {
"type": "Direct",
@@ -22,11 +22,11 @@
},
"Downloader": {
"type": "Direct",
- "requested": "[3.3.4, )",
- "resolved": "3.3.4",
- "contentHash": "/M/c80e1L0WW1XrLSSiQhgFxk8rrfbpWiWDn2CeBg1tPD393Neo+v184yG/ThyhE9rrNp36yCrugiCmEbRf+VQ==",
+ "requested": "[4.0.3, )",
+ "resolved": "4.0.3",
+ "contentHash": "Vg1+UqPDstpMw2CKXV9XvB8jKHC95KQfbqPxQXvOMRMFnTov4Ixvvw6GZV5DXLnKuL2sfnmVYX9CaQtcURia1Q==",
"dependencies": {
- "Microsoft.Extensions.Logging.Abstractions": "8.0.1"
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.3"
}
},
"Glamourer.Api": {
@@ -55,11 +55,28 @@
"System.IO.Pipelines": "6.0.3"
}
},
+ "MessagePack": {
+ "type": "Direct",
+ "requested": "[3.1.4, )",
+ "resolved": "3.1.4",
+ "contentHash": "BH0wlHWmVoZpbAPyyt2Awbq30C+ZsS3eHSkYdnyUAbqVJ22fAJDzn2xTieBeoT5QlcBzp61vHcv878YJGfi3mg==",
+ "dependencies": {
+ "MessagePack.Annotations": "3.1.4",
+ "MessagePackAnalyzer": "3.1.4",
+ "Microsoft.NET.StringTools": "17.11.4"
+ }
+ },
+ "MessagePack.Annotations": {
+ "type": "Direct",
+ "requested": "[3.1.4, )",
+ "resolved": "3.1.4",
+ "contentHash": "aVWrDAkCdqxwQsz/q0ldPh2EFn48M99YUzE9OvZjMq2RNLKz4o2z88iGFvSvbMqOWRweRvKPHBJZe22PRqzslQ=="
+ },
"Meziantou.Analyzer": {
"type": "Direct",
- "requested": "[2.0.212, )",
- "resolved": "2.0.212",
- "contentHash": "U91ktjjTRTccUs3Lk+hrLD9vW+2+lhnsOf4G1GpRSJi1pLn3uK5CU6wGP9Bmz1KlJs6Oz1GGoMhxQBoqQsmAuQ=="
+ "requested": "[2.0.213, )",
+ "resolved": "2.0.213",
+ "contentHash": "LHnFGBqhlBjbf8Uo4OIzGM0llRxFrIMuo/hP9oHq+aldS+28G4LqG12LK0co9b+S0yj1Vbf0rclDHN0Ji2DTkA=="
},
"Microsoft.AspNetCore.SignalR.Client": {
"type": "Direct",
@@ -133,6 +150,12 @@
"Microsoft.IdentityModel.Tokens": "8.14.0"
}
},
+ "System.IO.Pipelines": {
+ "type": "Direct",
+ "requested": "[9.0.8, )",
+ "resolved": "9.0.8",
+ "contentHash": "6vPmJt73mgUo1gzc/OcXlJvClz/2jxZ4TQPRfriVaLoGRH2mye530D9WHJYbFQRNMxF3PWCoeofsFdCyN7fLzA=="
+ },
"K4os.Compression.LZ4": {
"type": "Transitive",
"resolved": "1.3.8",
@@ -143,19 +166,10 @@
"resolved": "1.0.8",
"contentHash": "Wp2F7BamQ2Q/7Hk834nV9vRQapgcr8kgv9Jvfm8J3D0IhDqZMMl+a2yxUq5ltJitvXvQfB8W6K4F4fCbw/P6YQ=="
},
- "MessagePack": {
+ "MessagePackAnalyzer": {
"type": "Transitive",
- "resolved": "2.5.187",
- "contentHash": "uW4j8m4Nc+2Mk5n6arOChavJ9bLjkis0qWASOj2h2OwmfINuzYv+mjCHUymrYhmyyKTu3N+ObtTXAY4uQ7jIhg==",
- "dependencies": {
- "MessagePack.Annotations": "2.5.187",
- "Microsoft.NET.StringTools": "17.6.3"
- }
- },
- "MessagePack.Annotations": {
- "type": "Transitive",
- "resolved": "2.5.198",
- "contentHash": "3U9OvqQGTra+Mz1k1zfNAScSdNHobnqtQ51qdMGUZppkNDZJl0X/igq6Qz5zDBLEZoYqZrFtZwFx6wBJHHI8BA=="
+ "resolved": "3.1.4",
+ "contentHash": "CTaSsN/liJ7MhLCAB7Z4ZLBNuVGCq9lt2BT/cbrc9vzGv89yK3CqIA+z9T19a11eQYl9etZHL6MQJgCqECRVpg=="
},
"Microsoft.AspNetCore.Connections.Abstractions": {
"type": "Transitive",
@@ -499,19 +513,14 @@
},
"Microsoft.NET.StringTools": {
"type": "Transitive",
- "resolved": "17.6.3",
- "contentHash": "N0ZIanl1QCgvUumEL1laasU0a7sOE5ZwLZVTn0pAePnfhq8P7SvTjF8Axq+CnavuQkmdQpGNXQ1efZtu5kDFbA=="
+ "resolved": "17.11.4",
+ "contentHash": "mudqUHhNpeqIdJoUx2YDWZO/I9uEDYVowan89R6wsomfnUJQk6HteoQTlNjZDixhT2B4IXMkMtgZtoceIjLRmA=="
},
"System.Diagnostics.EventLog": {
"type": "Transitive",
"resolved": "9.0.8",
"contentHash": "gebRF3JLLJ76jz1CQpvwezNapZUjFq20JQsaGHzBH0DzlkHBLpdhwkOei9usiOkIGMwU/L0ALWpNe1JE+5/itw=="
},
- "System.IO.Pipelines": {
- "type": "Transitive",
- "resolved": "6.0.3",
- "contentHash": "ryTgF+iFkpGZY1vRQhfCzX0xTdlV3pyaTTqRu2ETbEv+HlV7O6y7hyQURnghNIXvctl5DuZ//Dpks6HdL/Txgw=="
- },
"System.Net.ServerSentEvents": {
"type": "Transitive",
"resolved": "9.0.8",
@@ -525,7 +534,7 @@
"maresynchronos.api": {
"type": "Project",
"dependencies": {
- "MessagePack.Annotations": "[2.5.198, )"
+ "MessagePack.Annotations": "[3.1.4, )"
}
}
}