From fbf6e4bc3c1a9440625dddc99811d8807f612889 Mon Sep 17 00:00:00 2001 From: cinder Date: Sat, 28 Jan 2023 20:17:50 -0600 Subject: [PATCH 01/18] Sync lmv --- libremetaverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libremetaverse b/libremetaverse index e62a949e..1941e38c 160000 --- a/libremetaverse +++ b/libremetaverse @@ -1 +1 @@ -Subproject commit e62a949e5e707ac3492aceeb287ae025084742d4 +Subproject commit 1941e38c8f6f6f3efdb04939e220752bb7749708 From 06386853e38ef27914263281d4f6410266347095 Mon Sep 17 00:00:00 2001 From: cinder Date: Sun, 29 Jan 2023 16:10:45 -0600 Subject: [PATCH 02/18] Sync lmv --- libremetaverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libremetaverse b/libremetaverse index 1941e38c..9299a221 160000 --- a/libremetaverse +++ b/libremetaverse @@ -1 +1 @@ -Subproject commit 1941e38c8f6f6f3efdb04939e220752bb7749708 +Subproject commit 9299a22195dd5f2e461421b65584129294b800f7 From 53098d77731c1a3ac2978c62b5ab698938b73c4c Mon Sep 17 00:00:00 2001 From: cinder Date: Thu, 2 Feb 2023 22:37:45 -0600 Subject: [PATCH 03/18] Sync lmv --- libremetaverse | 2 +- .../RadSpeech/Conversation/Control.cs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/libremetaverse b/libremetaverse index 9299a221..8119fe80 160000 --- a/libremetaverse +++ b/libremetaverse @@ -1 +1 @@ -Subproject commit 9299a22195dd5f2e461421b65584129294b800f7 +Subproject commit 8119fe8057bf576ae1c84965c2928d5e9ea85cdf diff --git a/plugins/Radegast.Plugin.Speech/RadSpeech/Conversation/Control.cs b/plugins/Radegast.Plugin.Speech/RadSpeech/Conversation/Control.cs index b5efdf76..04a42b50 100644 --- a/plugins/Radegast.Plugin.Speech/RadSpeech/Conversation/Control.cs +++ b/plugins/Radegast.Plugin.Speech/RadSpeech/Conversation/Control.cs @@ -481,10 +481,10 @@ private void Network_Disconnected(object sender, DisconnectedEventArgs e) switch (e.Reason) { case NetworkManager.DisconnectType.ClientInitiated: - Talker.Say("You are disconnected."); + Talker.Say("You have been disconnected."); break; case NetworkManager.DisconnectType.SimShutdown: - Talker.Say("The region you were in has been shut down. You are disconnected.", + Talker.Say("You have been disconnected from the current region.", Talk.BeepType.Bad); break; case NetworkManager.DisconnectType.NetworkTimeout: @@ -492,7 +492,7 @@ private void Network_Disconnected(object sender, DisconnectedEventArgs e) Talk.BeepType.Bad); break; case NetworkManager.DisconnectType.ServerInitiated: - Talker.Say("The server has disconnected you. " + e.Message, + Talker.Say("You have been disconnected by the server with the message " + e.Message, Talk.BeepType.Bad); break; } From 50a2613eff54972c253b425f4a02643dd7d7bc2f Mon Sep 17 00:00:00 2001 From: cinder Date: Sun, 29 Dec 2024 11:58:10 -0600 Subject: [PATCH 04/18] Woggle submodule --- .gitmodules | 4 ++++ libremetaverse | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) create mode 100644 .gitmodules diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 00000000..1831134c --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "libremetaverse"] + path = libremetaverse + url = ../libremetaverse + branch = master diff --git a/libremetaverse b/libremetaverse index 8119fe80..2d09df0b 160000 --- a/libremetaverse +++ b/libremetaverse @@ -1 +1 @@ -Subproject commit 8119fe8057bf576ae1c84965c2928d5e9ea85cdf +Subproject commit 2d09df0b128f4e31a8d9a9fa6d301bc74e073410 From 4eb4675dce6885747ec10bea2b050578bfdd8487 Mon Sep 17 00:00:00 2001 From: cinder Date: Sun, 29 Dec 2024 12:41:50 -0600 Subject: [PATCH 05/18] Update csproj files for localbuild --- Radegast.sln | 100 ++++++------------ Radegast/Radegast.csproj | 3 +- .../Radegast.Plugin.Alice.csproj | 2 +- .../Radegast.Plugin.IRC.csproj | 2 +- .../Radegast.Plugin.SimpleBuilder.csproj | 2 +- .../RadSpeech/Radegast.Plugin.Speech.csproj | 2 +- .../RadSpeechLin/RadSpeechLin.csproj | 3 +- .../RadSpeechMac/RadSpeechMac.csproj | 3 +- .../RadSpeechWin/RadSpeechWin.csproj | 3 +- 9 files changed, 44 insertions(+), 76 deletions(-) diff --git a/Radegast.sln b/Radegast.sln index 28c879a7..db175445 100644 --- a/Radegast.sln +++ b/Radegast.sln @@ -1,17 +1,15 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 16 -VisualStudioVersion = 16.0.29403.142 +# Visual Studio Version 17 +VisualStudioVersion = 17.12.35527.113 d17.12 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Radegast", "Radegast\Radegast.csproj", "{F02F3C44-DCFC-964F-0516-85F7F141CCDD}" ProjectSection(ProjectDependencies) = postProject {1266CE08-0000-0000-0000-000000000000} = {1266CE08-0000-0000-0000-000000000000} - {EC6A1211-E959-4E24-862A-373EC0A3219B} = {EC6A1211-E959-4E24-862A-373EC0A3219B} {95479B1D-0000-0000-0000-000000000000} = {95479B1D-0000-0000-0000-000000000000} {27C70F3A-0000-0000-0000-000000000000} = {27C70F3A-0000-0000-0000-000000000000} {2E2B643F-F18B-4791-BA4B-6E82D0E794B6} = {2E2B643F-F18B-4791-BA4B-6E82D0E794B6} {B37B02AD-0000-0000-0000-000000000000} = {B37B02AD-0000-0000-0000-000000000000} - {09C292AF-0000-0000-0000-000000000000} = {09C292AF-0000-0000-0000-000000000000} {B74A9FDD-934A-4082-B881-6D49D36559F7} = {B74A9FDD-934A-4082-B881-6D49D36559F7} {89D7A3E5-0000-0000-0000-000000000000} = {89D7A3E5-0000-0000-0000-000000000000} EndProjectSection @@ -80,8 +78,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse", "libremetaverse\LibreMetaverse\LibreMetaverse.csproj", "{27C70F3A-0000-0000-0000-000000000000}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.GUI", "libremetaverse\LibreMetaverse.GUI\LibreMetaverse.GUI.csproj", "{09C292AF-0000-0000-0000-000000000000}" -EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.Rendering.Meshmerizer", "libremetaverse\LibreMetaverse.Rendering.Meshmerizer\LibreMetaverse.Rendering.Meshmerizer.csproj", "{95479B1D-0000-0000-0000-000000000000}" EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.StructuredData", "libremetaverse\LibreMetaverse.StructuredData\LibreMetaverse.StructuredData.csproj", "{89D7A3E5-0000-0000-0000-000000000000}" @@ -94,7 +90,7 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.Types", "lib EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.LslTools", "libremetaverse\LibreMetaverse.LslTools\LibreMetaverse.LslTools.csproj", "{B74A9FDD-934A-4082-B881-6D49D36559F7}" EndProject -Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "LibreMetaverse.Voice", "libremetaverse\LibreMetaverse.Voice\LibreMetaverse.Voice.csproj", "{EC6A1211-E959-4E24-862A-373EC0A3219B}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibreMetaverse.Voice.Vivox", "libremetaverse\LibreMetaverse.Voice.Vivox\LibreMetaverse.Voice.Vivox.csproj", "{EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -411,36 +407,6 @@ Global {27C70F3A-0000-0000-0000-000000000000}.ReleaseWindows|x64.Build.0 = Release|x64 {27C70F3A-0000-0000-0000-000000000000}.ReleaseWindows|x86.ActiveCfg = Release|x86 {27C70F3A-0000-0000-0000-000000000000}.ReleaseWindows|x86.Build.0 = Release|x86 - {09C292AF-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {09C292AF-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU - {09C292AF-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|x64 - {09C292AF-0000-0000-0000-000000000000}.Debug|x64.Build.0 = Debug|x64 - {09C292AF-0000-0000-0000-000000000000}.Debug|x86.ActiveCfg = Debug|x86 - {09C292AF-0000-0000-0000-000000000000}.Debug|x86.Build.0 = Debug|x86 - {09C292AF-0000-0000-0000-000000000000}.Release|Any CPU.ActiveCfg = Release|Any CPU - {09C292AF-0000-0000-0000-000000000000}.Release|Any CPU.Build.0 = Release|Any CPU - {09C292AF-0000-0000-0000-000000000000}.Release|x64.ActiveCfg = Release|x64 - {09C292AF-0000-0000-0000-000000000000}.Release|x64.Build.0 = Release|x64 - {09C292AF-0000-0000-0000-000000000000}.Release|x86.ActiveCfg = Release|x86 - {09C292AF-0000-0000-0000-000000000000}.Release|x86.Build.0 = Release|x86 - {09C292AF-0000-0000-0000-000000000000}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU - {09C292AF-0000-0000-0000-000000000000}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU - {09C292AF-0000-0000-0000-000000000000}.ReleaseLinux|x64.ActiveCfg = Release|x64 - {09C292AF-0000-0000-0000-000000000000}.ReleaseLinux|x64.Build.0 = Release|x64 - {09C292AF-0000-0000-0000-000000000000}.ReleaseLinux|x86.ActiveCfg = Release|x86 - {09C292AF-0000-0000-0000-000000000000}.ReleaseLinux|x86.Build.0 = Release|x86 - {09C292AF-0000-0000-0000-000000000000}.ReleaseMacOS|Any CPU.ActiveCfg = Release|Any CPU - {09C292AF-0000-0000-0000-000000000000}.ReleaseMacOS|Any CPU.Build.0 = Release|Any CPU - {09C292AF-0000-0000-0000-000000000000}.ReleaseMacOS|x64.ActiveCfg = Release|x64 - {09C292AF-0000-0000-0000-000000000000}.ReleaseMacOS|x64.Build.0 = Release|x64 - {09C292AF-0000-0000-0000-000000000000}.ReleaseMacOS|x86.ActiveCfg = Release|x86 - {09C292AF-0000-0000-0000-000000000000}.ReleaseMacOS|x86.Build.0 = Release|x86 - {09C292AF-0000-0000-0000-000000000000}.ReleaseWindows|Any CPU.ActiveCfg = Release|Any CPU - {09C292AF-0000-0000-0000-000000000000}.ReleaseWindows|Any CPU.Build.0 = Release|Any CPU - {09C292AF-0000-0000-0000-000000000000}.ReleaseWindows|x64.ActiveCfg = Release|x64 - {09C292AF-0000-0000-0000-000000000000}.ReleaseWindows|x64.Build.0 = Release|x64 - {09C292AF-0000-0000-0000-000000000000}.ReleaseWindows|x86.ActiveCfg = Release|x86 - {09C292AF-0000-0000-0000-000000000000}.ReleaseWindows|x86.Build.0 = Release|x86 {95479B1D-0000-0000-0000-000000000000}.Debug|Any CPU.ActiveCfg = Debug|Any CPU {95479B1D-0000-0000-0000-000000000000}.Debug|Any CPU.Build.0 = Debug|Any CPU {95479B1D-0000-0000-0000-000000000000}.Debug|x64.ActiveCfg = Debug|x64 @@ -621,36 +587,36 @@ Global {B74A9FDD-934A-4082-B881-6D49D36559F7}.ReleaseWindows|x64.Build.0 = Release|x64 {B74A9FDD-934A-4082-B881-6D49D36559F7}.ReleaseWindows|x86.ActiveCfg = Release|x86 {B74A9FDD-934A-4082-B881-6D49D36559F7}.ReleaseWindows|x86.Build.0 = Release|x86 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU - {EC6A1211-E959-4E24-862A-373EC0A3219B}.Debug|Any CPU.Build.0 = Debug|Any CPU - {EC6A1211-E959-4E24-862A-373EC0A3219B}.Debug|x64.ActiveCfg = Debug|x64 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.Debug|x64.Build.0 = Debug|x64 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.Debug|x86.ActiveCfg = Debug|x86 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.Debug|x86.Build.0 = Debug|x86 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.Release|Any CPU.ActiveCfg = Release|Any CPU - {EC6A1211-E959-4E24-862A-373EC0A3219B}.Release|Any CPU.Build.0 = Release|Any CPU - {EC6A1211-E959-4E24-862A-373EC0A3219B}.Release|x64.ActiveCfg = Release|x64 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.Release|x64.Build.0 = Release|x64 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.Release|x86.ActiveCfg = Release|x86 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.Release|x86.Build.0 = Release|x86 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseLinux|x64.ActiveCfg = Release|x64 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseLinux|x64.Build.0 = Release|x64 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseLinux|x86.ActiveCfg = Release|x86 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseLinux|x86.Build.0 = Release|x86 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseMacOS|Any CPU.ActiveCfg = Release|Any CPU - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseMacOS|Any CPU.Build.0 = Release|Any CPU - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseMacOS|x64.ActiveCfg = Release|x64 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseMacOS|x64.Build.0 = Release|x64 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseMacOS|x86.ActiveCfg = Release|x86 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseMacOS|x86.Build.0 = Release|x86 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseWindows|Any CPU.ActiveCfg = Release|Any CPU - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseWindows|Any CPU.Build.0 = Release|Any CPU - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseWindows|x64.ActiveCfg = Release|x64 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseWindows|x64.Build.0 = Release|x64 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseWindows|x86.ActiveCfg = Release|x86 - {EC6A1211-E959-4E24-862A-373EC0A3219B}.ReleaseWindows|x86.Build.0 = Release|x86 + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.Debug|Any CPU.Build.0 = Debug|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.Debug|x64.ActiveCfg = Debug|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.Debug|x64.Build.0 = Debug|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.Debug|x86.ActiveCfg = Debug|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.Debug|x86.Build.0 = Debug|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.Release|Any CPU.ActiveCfg = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.Release|Any CPU.Build.0 = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.Release|x64.ActiveCfg = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.Release|x64.Build.0 = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.Release|x86.ActiveCfg = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.Release|x86.Build.0 = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseLinux|Any CPU.ActiveCfg = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseLinux|Any CPU.Build.0 = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseLinux|x64.ActiveCfg = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseLinux|x64.Build.0 = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseLinux|x86.ActiveCfg = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseLinux|x86.Build.0 = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseMacOS|Any CPU.ActiveCfg = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseMacOS|Any CPU.Build.0 = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseMacOS|x64.ActiveCfg = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseMacOS|x64.Build.0 = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseMacOS|x86.ActiveCfg = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseMacOS|x86.Build.0 = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseWindows|Any CPU.ActiveCfg = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseWindows|Any CPU.Build.0 = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseWindows|x64.ActiveCfg = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseWindows|x64.Build.0 = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseWindows|x86.ActiveCfg = Release|Any CPU + {EBA4BE7A-447B-4B0E-B61E-6E2A46E74005}.ReleaseWindows|x86.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE diff --git a/Radegast/Radegast.csproj b/Radegast/Radegast.csproj index b0dd99e0..123a4dbe 100644 --- a/Radegast/Radegast.csproj +++ b/Radegast/Radegast.csproj @@ -2024,13 +2024,12 @@ - - + diff --git a/plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj b/plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj index 629970f2..05da9c1f 100644 --- a/plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj +++ b/plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj @@ -3,7 +3,7 @@ net48 true false - AnyCPU;x64;x86 + AnyCPU full diff --git a/plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj b/plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj index fa0fb8fe..d6dce251 100644 --- a/plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj +++ b/plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj @@ -3,7 +3,7 @@ net48 true false - AnyCPU;x64;x86 + AnyCPU full diff --git a/plugins/Radegast.Plugin.SimpleBuilder/Radegast.Plugin.SimpleBuilder.csproj b/plugins/Radegast.Plugin.SimpleBuilder/Radegast.Plugin.SimpleBuilder.csproj index ee769d67..428f6dbd 100644 --- a/plugins/Radegast.Plugin.SimpleBuilder/Radegast.Plugin.SimpleBuilder.csproj +++ b/plugins/Radegast.Plugin.SimpleBuilder/Radegast.Plugin.SimpleBuilder.csproj @@ -3,7 +3,7 @@ net48 true false - AnyCPU;x64;x86 + AnyCPU full diff --git a/plugins/Radegast.Plugin.Speech/RadSpeech/Radegast.Plugin.Speech.csproj b/plugins/Radegast.Plugin.Speech/RadSpeech/Radegast.Plugin.Speech.csproj index e229ed25..124f5284 100644 --- a/plugins/Radegast.Plugin.Speech/RadSpeech/Radegast.Plugin.Speech.csproj +++ b/plugins/Radegast.Plugin.Speech/RadSpeech/Radegast.Plugin.Speech.csproj @@ -3,7 +3,7 @@ net48 true false - AnyCPU;x64;x86 + AnyCPU full diff --git a/plugins/Radegast.Plugin.Speech/RadSpeechLin/RadSpeechLin.csproj b/plugins/Radegast.Plugin.Speech/RadSpeechLin/RadSpeechLin.csproj index 31990b1a..891f952a 100644 --- a/plugins/Radegast.Plugin.Speech/RadSpeechLin/RadSpeechLin.csproj +++ b/plugins/Radegast.Plugin.Speech/RadSpeechLin/RadSpeechLin.csproj @@ -2,7 +2,7 @@ net48 false - AnyCPU;x64;x86 + AnyCPU full @@ -57,6 +57,7 @@ + diff --git a/plugins/Radegast.Plugin.Speech/RadSpeechMac/RadSpeechMac.csproj b/plugins/Radegast.Plugin.Speech/RadSpeechMac/RadSpeechMac.csproj index 946e5d71..787b1f0b 100644 --- a/plugins/Radegast.Plugin.Speech/RadSpeechMac/RadSpeechMac.csproj +++ b/plugins/Radegast.Plugin.Speech/RadSpeechMac/RadSpeechMac.csproj @@ -2,7 +2,7 @@ net48 false - AnyCPU;x64;x86 + AnyCPU full @@ -65,6 +65,7 @@ + diff --git a/plugins/Radegast.Plugin.Speech/RadSpeechWin/RadSpeechWin.csproj b/plugins/Radegast.Plugin.Speech/RadSpeechWin/RadSpeechWin.csproj index 355b008c..4877c830 100644 --- a/plugins/Radegast.Plugin.Speech/RadSpeechWin/RadSpeechWin.csproj +++ b/plugins/Radegast.Plugin.Speech/RadSpeechWin/RadSpeechWin.csproj @@ -2,7 +2,7 @@ net48 false - AnyCPU;x64;x86 + AnyCPU full @@ -60,6 +60,7 @@ + From 648705cdb94361ff24d247793d8e1783d4aa59f7 Mon Sep 17 00:00:00 2001 From: cinder Date: Sun, 29 Dec 2024 18:31:35 -0600 Subject: [PATCH 06/18] Fix deadlocking in Landmark console --- Radegast/GUI/Consoles/Assets/Landmark.cs | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/Radegast/GUI/Consoles/Assets/Landmark.cs b/Radegast/GUI/Consoles/Assets/Landmark.cs index f32e3c84..263c6cae 100644 --- a/Radegast/GUI/Consoles/Assets/Landmark.cs +++ b/Radegast/GUI/Consoles/Assets/Landmark.cs @@ -19,6 +19,7 @@ */ using System; +using System.Threading; using System.Windows.Forms; using OpenMetaverse; using OpenMetaverse.Assets; @@ -116,11 +117,11 @@ void Parcels_ParcelInfoReply(object sender, ParcelInfoReplyEventArgs e) txtParcelDescription.Text = parcel.Description; } - void Grid_RegionHandleReply(object sender, RegionHandleReplyEventArgs e) + async void Grid_RegionHandleReply(object sender, RegionHandleReplyEventArgs e) { if (decodedLandmark == null || decodedLandmark.RegionID != e.RegionID) return; - parcelID = client.Parcels.RequestRemoteParcelID(decodedLandmark.Position, e.RegionHandle, e.RegionID); + parcelID = await client.Parcels.RequestRemoteParcelIDAsync(decodedLandmark.Position, e.RegionHandle, e.RegionID, CancellationToken.None); if (parcelID != UUID.Zero) { client.Parcels.RequestParcelInfo(parcelID); From 516d29de30403a94681166d6e816d1c2df935a15 Mon Sep 17 00:00:00 2001 From: cinder Date: Sun, 29 Dec 2024 21:36:45 -0600 Subject: [PATCH 07/18] LMV sync --- libremetaverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libremetaverse b/libremetaverse index 2d09df0b..a64b3ae7 160000 --- a/libremetaverse +++ b/libremetaverse @@ -1 +1 @@ -Subproject commit 2d09df0b128f4e31a8d9a9fa6d301bc74e073410 +Subproject commit a64b3ae7107bdd11f000a00ddcf5aa398748a126 From 969db9b63706a8e81683915c47c0dfd2d59b702c Mon Sep 17 00:00:00 2001 From: cinder Date: Sat, 4 Jan 2025 19:42:17 -0600 Subject: [PATCH 08/18] Update LMV --- libremetaverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libremetaverse b/libremetaverse index a64b3ae7..a9c840a7 160000 --- a/libremetaverse +++ b/libremetaverse @@ -1 +1 @@ -Subproject commit a64b3ae7107bdd11f000a00ddcf5aa398748a126 +Subproject commit a9c840a7fc135aa4834f526553530ab1f07ac43a From e203f13058aba5ce950ca06a5f2f6241fcfe2d93 Mon Sep 17 00:00:00 2001 From: cinder Date: Wed, 15 Jan 2025 08:32:45 -0600 Subject: [PATCH 09/18] Update LMV to 2.1.9 --- libremetaverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libremetaverse b/libremetaverse index a9c840a7..e6a65469 160000 --- a/libremetaverse +++ b/libremetaverse @@ -1 +1 @@ -Subproject commit a9c840a7fc135aa4834f526553530ab1f07ac43a +Subproject commit e6a65469554925aaff19c4c51afdd91e7b8e3403 From 2985168652d09ef062287f80871dddb3990107c1 Mon Sep 17 00:00:00 2001 From: cinder Date: Wed, 15 Jan 2025 09:56:18 -0600 Subject: [PATCH 10/18] Update to LMV 2.1.10 --- libremetaverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libremetaverse b/libremetaverse index e6a65469..ff595e72 160000 --- a/libremetaverse +++ b/libremetaverse @@ -1 +1 @@ -Subproject commit e6a65469554925aaff19c4c51afdd91e7b8e3403 +Subproject commit ff595e72f5fb6a6405bf768cd2af7e723cbf9eaf From 84a40989e6fcdece423c2d9cd79c33d8b5e83898 Mon Sep 17 00:00:00 2001 From: cinder Date: Wed, 15 Jan 2025 17:26:42 -0600 Subject: [PATCH 11/18] Update from vulnerable System.Text.RegularExpressions --- Radegast/Radegast.csproj | 1 + plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj | 1 + plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj | 1 + .../Radegast.Plugin.SimpleBuilder.csproj | 1 + .../RadSpeech/Radegast.Plugin.Speech.csproj | 1 + plugins/Radegast.Plugin.Speech/RadSpeechLin/RadSpeechLin.csproj | 1 + plugins/Radegast.Plugin.Speech/RadSpeechMac/RadSpeechMac.csproj | 1 + plugins/Radegast.Plugin.Speech/RadSpeechWin/RadSpeechWin.csproj | 1 + 8 files changed, 8 insertions(+) diff --git a/Radegast/Radegast.csproj b/Radegast/Radegast.csproj index c0188e78..6df911db 100644 --- a/Radegast/Radegast.csproj +++ b/Radegast/Radegast.csproj @@ -80,6 +80,7 @@ + diff --git a/plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj b/plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj index 05da9c1f..d394a580 100644 --- a/plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj +++ b/plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj @@ -57,6 +57,7 @@ + diff --git a/plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj b/plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj index d6dce251..0a5bbbef 100644 --- a/plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj +++ b/plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj @@ -58,6 +58,7 @@ + diff --git a/plugins/Radegast.Plugin.SimpleBuilder/Radegast.Plugin.SimpleBuilder.csproj b/plugins/Radegast.Plugin.SimpleBuilder/Radegast.Plugin.SimpleBuilder.csproj index 428f6dbd..7b2d3fe8 100644 --- a/plugins/Radegast.Plugin.SimpleBuilder/Radegast.Plugin.SimpleBuilder.csproj +++ b/plugins/Radegast.Plugin.SimpleBuilder/Radegast.Plugin.SimpleBuilder.csproj @@ -56,6 +56,7 @@ + diff --git a/plugins/Radegast.Plugin.Speech/RadSpeech/Radegast.Plugin.Speech.csproj b/plugins/Radegast.Plugin.Speech/RadSpeech/Radegast.Plugin.Speech.csproj index 124f5284..496b168a 100644 --- a/plugins/Radegast.Plugin.Speech/RadSpeech/Radegast.Plugin.Speech.csproj +++ b/plugins/Radegast.Plugin.Speech/RadSpeech/Radegast.Plugin.Speech.csproj @@ -58,6 +58,7 @@ + diff --git a/plugins/Radegast.Plugin.Speech/RadSpeechLin/RadSpeechLin.csproj b/plugins/Radegast.Plugin.Speech/RadSpeechLin/RadSpeechLin.csproj index 891f952a..c2302ad8 100644 --- a/plugins/Radegast.Plugin.Speech/RadSpeechLin/RadSpeechLin.csproj +++ b/plugins/Radegast.Plugin.Speech/RadSpeechLin/RadSpeechLin.csproj @@ -55,6 +55,7 @@ + diff --git a/plugins/Radegast.Plugin.Speech/RadSpeechMac/RadSpeechMac.csproj b/plugins/Radegast.Plugin.Speech/RadSpeechMac/RadSpeechMac.csproj index 787b1f0b..c24ce000 100644 --- a/plugins/Radegast.Plugin.Speech/RadSpeechMac/RadSpeechMac.csproj +++ b/plugins/Radegast.Plugin.Speech/RadSpeechMac/RadSpeechMac.csproj @@ -55,6 +55,7 @@ + diff --git a/plugins/Radegast.Plugin.Speech/RadSpeechWin/RadSpeechWin.csproj b/plugins/Radegast.Plugin.Speech/RadSpeechWin/RadSpeechWin.csproj index 4877c830..7888c307 100644 --- a/plugins/Radegast.Plugin.Speech/RadSpeechWin/RadSpeechWin.csproj +++ b/plugins/Radegast.Plugin.Speech/RadSpeechWin/RadSpeechWin.csproj @@ -55,6 +55,7 @@ + From 60d933853d710f44e86bd3052bb323d7d6bcd8cd Mon Sep 17 00:00:00 2001 From: cinder Date: Wed, 15 Jan 2025 17:31:40 -0600 Subject: [PATCH 12/18] More microsoft update dependencies --- Radegast/Radegast.csproj | 6 +++--- plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj | 2 +- plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj | 2 +- .../Radegast.Plugin.SimpleBuilder.csproj | 2 +- .../RadSpeech/Radegast.Plugin.Speech.csproj | 4 ++-- 5 files changed, 8 insertions(+), 8 deletions(-) diff --git a/Radegast/Radegast.csproj b/Radegast/Radegast.csproj index 6df911db..46917cba 100644 --- a/Radegast/Radegast.csproj +++ b/Radegast/Radegast.csproj @@ -52,7 +52,7 @@ - + @@ -60,7 +60,7 @@ - + @@ -72,7 +72,7 @@ - + diff --git a/plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj b/plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj index d394a580..5e4f66da 100644 --- a/plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj +++ b/plugins/Radegast.Plugin.Alice/Radegast.Plugin.Alice.csproj @@ -56,7 +56,7 @@ - + diff --git a/plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj b/plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj index 0a5bbbef..1d841580 100644 --- a/plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj +++ b/plugins/Radegast.Plugin.IRC/Radegast.Plugin.IRC.csproj @@ -55,7 +55,7 @@ ..\..\bin\$(Configuration)\ - + diff --git a/plugins/Radegast.Plugin.SimpleBuilder/Radegast.Plugin.SimpleBuilder.csproj b/plugins/Radegast.Plugin.SimpleBuilder/Radegast.Plugin.SimpleBuilder.csproj index 7b2d3fe8..c3883ddd 100644 --- a/plugins/Radegast.Plugin.SimpleBuilder/Radegast.Plugin.SimpleBuilder.csproj +++ b/plugins/Radegast.Plugin.SimpleBuilder/Radegast.Plugin.SimpleBuilder.csproj @@ -55,7 +55,7 @@ ..\..\bin\$(Configuration)\ - + diff --git a/plugins/Radegast.Plugin.Speech/RadSpeech/Radegast.Plugin.Speech.csproj b/plugins/Radegast.Plugin.Speech/RadSpeech/Radegast.Plugin.Speech.csproj index 496b168a..c4ae8e46 100644 --- a/plugins/Radegast.Plugin.Speech/RadSpeech/Radegast.Plugin.Speech.csproj +++ b/plugins/Radegast.Plugin.Speech/RadSpeech/Radegast.Plugin.Speech.csproj @@ -55,9 +55,9 @@ ..\..\bin\$(Configuration)\ - + - + From 0e6a3db087eda8eea15c297e7e5cf0c231726722 Mon Sep 17 00:00:00 2001 From: cinder Date: Sat, 18 Jan 2025 08:04:19 -0600 Subject: [PATCH 13/18] Improvements to MeshUploadConsole --- Radegast/GUI/Consoles/MeshUploadConsole.cs | 89 +++++++++------------- 1 file changed, 36 insertions(+), 53 deletions(-) diff --git a/Radegast/GUI/Consoles/MeshUploadConsole.cs b/Radegast/GUI/Consoles/MeshUploadConsole.cs index 848ca844..02832bd5 100644 --- a/Radegast/GUI/Consoles/MeshUploadConsole.cs +++ b/Radegast/GUI/Consoles/MeshUploadConsole.cs @@ -1,7 +1,7 @@ -/** +/* * Radegast Metaverse Client * Copyright(c) 2009-2014, Radegast Development Team - * Copyright(c) 2016-2020, Sjofn, LLC + * Copyright(c) 2016-2025, Sjofn, LLC * All rights reserved. * * Radegast is free software: you can redistribute it and/or modify @@ -31,10 +31,10 @@ namespace Radegast { public partial class MeshUploadConsole : RadegastTabControl { - bool Running = false; - bool UploadImages; - Queue FileNames = new Queue(); - CancellationTokenSource uploadCancelToken; + private bool Running = false; + private bool UploadImages; + private Queue FileNames = new Queue(); + private CancellationTokenSource uploadCts; public MeshUploadConsole() { @@ -53,22 +53,21 @@ public MeshUploadConsole(RadegastInstance instance) instance.Netcom.ClientDisconnected += Netcom_ClientDisconnected; UpdateButtons(); - uploadCancelToken = new CancellationTokenSource(); - GUI.GuiHelpers.ApplyGuiFixes(this); } - void MeshUploadConsole_Disposed(object sender, EventArgs e) + private void MeshUploadConsole_Disposed(object sender, EventArgs e) { - try + if (uploadCts != null) { - uploadCancelToken.Cancel(); - uploadCancelToken.Dispose(); - } catch (ObjectDisposedException) { } + uploadCts.Cancel(); + uploadCts.Dispose(); + } + Running = false; } - void Netcom_ClientDisconnected(object sender, DisconnectedEventArgs e) + private void Netcom_ClientDisconnected(object sender, DisconnectedEventArgs e) { if (InvokeRequired) { @@ -78,18 +77,14 @@ void Netcom_ClientDisconnected(object sender, DisconnectedEventArgs e) } return; } - try - { - uploadCancelToken.Cancel(); - uploadCancelToken.Dispose(); - } - catch (ObjectDisposedException) { } + + uploadCts?.Cancel(); Running = false; UpdateButtons(); } - void Netcom_ClientConnected(object sender, EventArgs e) + private void Netcom_ClientConnected(object sender, EventArgs e) { if (InvokeRequired) { @@ -103,7 +98,7 @@ void Netcom_ClientConnected(object sender, EventArgs e) UpdateButtons(); } - void Msg(string msg) + private void Msg(string msg) { if (InvokeRequired) { @@ -116,7 +111,8 @@ void Msg(string msg) txtUploadLog.AppendText(msg + "\n"); } - void UpdateButtons() + + private void UpdateButtons() { if (InvokeRequired) { @@ -153,7 +149,7 @@ void UpdateButtons() lock (FileNames) { - lblStatus.Text = string.Format("{0} files remaining", FileNames.Count); + lblStatus.Text = $"{FileNames.Count} files remaining"; } } @@ -193,12 +189,11 @@ private void btnStart_Click(object sender, EventArgs e) } } - Task uploadTask = Task.Run(PerformUpload, uploadCancelToken.Token); - - txtUploadLog.Clear(); + uploadCts = new CancellationTokenSource(TimeSpan.FromMinutes(4)); + Task task = PerformUpload(uploadCts.Token).ContinueWith(delegate { txtUploadLog.Clear(); }); } - void PerformUpload() + private async Task PerformUpload(CancellationToken cancellationToken) { try { @@ -220,44 +215,32 @@ void PerformUpload() var prims = parser.Load(filename, UploadImages); if (prims == null || prims.Count == 0) { - Msg("Error: Failed to parse collada file"); + Msg("Error: Failed to parse collada file."); continue; } Msg($"Parse collada file success, found {prims.Count} objects"); Msg("Uploading..."); - uploadCancelToken.Token.ThrowIfCancellationRequested(); - - var uploader = new OpenMetaverse.ImportExport.ModelUploader(client, prims, Path.GetFileNameWithoutExtension(filename), "Radegast " + DateTime.Now.ToString(CultureInfo.InvariantCulture)); - var uploadDone = new AutoResetEvent(false); + cancellationToken.ThrowIfCancellationRequested(); - uploader.IncludePhysicsStub = true; - uploader.UseModelAsPhysics = false; - - uploader.Upload((res => - { - if (res == null) + var uploader = new OpenMetaverse.ImportExport.ModelUploader(client, prims, + Path.GetFileNameWithoutExtension(filename), "Radegast " + DateTime.Now.ToString(CultureInfo.InvariantCulture)) { - Msg("Upload failed."); - } - else - { - Msg("Upload success."); - } - - uploadDone.Set(); - }), CancellationToken.None); + IncludePhysicsStub = true, + UseModelAsPhysics = false + }; - if (!uploadDone.WaitOne(4 * 60 * 1000)) + await uploader.Upload((res => { - Msg("Message upload timeout"); - } + Msg(res == null ? "Upload failed." : "Upload success."); + + }), cancellationToken); } } - catch (OperationCanceledException) + catch (OperationCanceledException ex) { - Msg("Operation cancelled"); + Msg("Upload cancelled."); } Running = false; From 8b09770f6d503847d80307393fb97d31f3dea5da Mon Sep 17 00:00:00 2001 From: cinder Date: Sat, 18 Jan 2025 08:24:10 -0600 Subject: [PATCH 14/18] English --- Radegast/GUI/Consoles/ObjectsConsole.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Radegast/GUI/Consoles/ObjectsConsole.cs b/Radegast/GUI/Consoles/ObjectsConsole.cs index 4883ea82..67913579 100644 --- a/Radegast/GUI/Consoles/ObjectsConsole.cs +++ b/Radegast/GUI/Consoles/ObjectsConsole.cs @@ -314,7 +314,7 @@ void UpdateObjectContents() void UpdateContentsList(List items) { - //object inventory in liste reinlesen + //object inventory in items List lstContents.Items.Clear(); btnOpen.Enabled = false; Primitive prim = (Primitive)lstContents.Tag; From e5eba661c6c44988f1b27d593174b8b731d646b9 Mon Sep 17 00:00:00 2001 From: cinder Date: Sat, 18 Jan 2025 14:49:34 -0600 Subject: [PATCH 15/18] Quiet some noisy logging in MapControl --- Radegast/GUI/Controls/MapControl.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Radegast/GUI/Controls/MapControl.cs b/Radegast/GUI/Controls/MapControl.cs index a4cd8f96..1d808138 100644 --- a/Radegast/GUI/Controls/MapControl.cs +++ b/Radegast/GUI/Controls/MapControl.cs @@ -188,7 +188,7 @@ public float Zoom zoom = value; pixelsPerMeter = 1f / zoom; PixRegS = (int)(regionSize / zoom); - Logger.DebugLog("Region tile size = " + PixRegS); + //Logger.DebugLog("Region tile size = " + PixRegS); Invalidate(); } } From 981e5e1fa47e7fd6e0e663e2c8269f6ee8fee78a Mon Sep 17 00:00:00 2001 From: cinder Date: Sat, 18 Jan 2025 20:30:17 -0600 Subject: [PATCH 16/18] Resolve exception in GroupsConsole when window hasn't been created yet --- Radegast/GUI/Consoles/GroupsConsole.cs | 33 +++++++++++--------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/Radegast/GUI/Consoles/GroupsConsole.cs b/Radegast/GUI/Consoles/GroupsConsole.cs index d9acb2ae..c3d9a93b 100644 --- a/Radegast/GUI/Consoles/GroupsConsole.cs +++ b/Radegast/GUI/Consoles/GroupsConsole.cs @@ -1,7 +1,7 @@ -/** +/* * Radegast Metaverse Client * Copyright(c) 2009-2014, Radegast Development Team - * Copyright(c) 2016-2020, Sjofn, LLC + * Copyright(c) 2016-2025, Sjofn, LLC * All rights reserved. * * Radegast is free software: you can redistribute it and/or modify @@ -66,13 +66,12 @@ void Groups_GroupRoleDataReply(object sender, GroupRolesDataReplyEventArgs e) return; } - if (!(txtKeys.Tag is Group)) return; - Group g = (Group)txtKeys.Tag; - if (g.ID != e.GroupID) return; + if (!(txtKeys.Tag is Group group)) { return; } + if (group.ID != e.GroupID) return; foreach (var r in e.Roles) { - txtKeys.AppendText(string.Format("Role \"{0}\": {1}{2}", r.Value.Name, r.Key, Environment.NewLine)); + txtKeys.AppendText($"Role \"{r.Value.Name}\": {r.Key}{Environment.NewLine}"); } } @@ -88,7 +87,7 @@ void Groups_GroupCreatedReply(object sender, GroupCreatedReplyEventArgs e) { BeginInvoke(new MethodInvoker(() => { - lblCreateStatus.Text = string.Format("Group creation failed: {0}", e.Message); + lblCreateStatus.Text = $"Group creation failed: {e.Message}"; } )); } @@ -96,7 +95,10 @@ void Groups_GroupCreatedReply(object sender, GroupCreatedReplyEventArgs e) void Groups_CurrentGroups(object sender, CurrentGroupsEventArgs e) { - BeginInvoke(new MethodInvoker(UpdateDisplay)); + if (IsHandleCreated) + { + BeginInvoke(new MethodInvoker(UpdateDisplay)); + } } private object DisplaySyncRoot = new object(); @@ -125,15 +127,8 @@ public void UpdateDisplay() } } - lblGroupNr.Text = string.Format("{0} groups", instance.Groups.Count); - if (client.Network.MaxAgentGroups > 0) - { - lblGrpMax.Text = string.Format("max {0} groups", client.Network.MaxAgentGroups); - } - else - { - lblGrpMax.Text = string.Empty; - } + lblGroupNr.Text = $"{instance.Groups.Count} groups"; + lblGrpMax.Text = client.Network.MaxAgentGroups > 0 ? $"max {client.Network.MaxAgentGroups} groups" : string.Empty; if (newGrpID != UUID.Zero) { @@ -165,7 +160,7 @@ private void leaveBtn_Click(object sender, EventArgs e) return; } - if(MessageBox.Show(string.Format("Leave {0}?", g.Name), "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes) + if(MessageBox.Show($"Leave {g.Name}?", "Confirmation", MessageBoxButtons.YesNo, MessageBoxIcon.Asterisk) == DialogResult.Yes) { client.Groups.LeaveGroup(g.ID); listBox1.Items.Remove(g); @@ -352,7 +347,7 @@ private void btnKeys_Click(object sender, EventArgs e) { txtKeys.Text = string.Empty; txtKeys.Tag = g; - txtKeys.AppendText(string.Format("Group \"{0}\": {1}{2}", g.Name, g.ID, Environment.NewLine)); + txtKeys.AppendText($"Group \"{g.Name}\": {g.ID}{Environment.NewLine}"); client.Groups.RequestGroupRoles(g.ID); } } From a0ea94b9a63ddc9166fa6a3e5eece514f4f32bc6 Mon Sep 17 00:00:00 2001 From: cinder Date: Sun, 19 Jan 2025 06:58:32 -0600 Subject: [PATCH 17/18] Update LMV to 2.1.11 --- libremetaverse | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libremetaverse b/libremetaverse index ff595e72..ada98b73 160000 --- a/libremetaverse +++ b/libremetaverse @@ -1 +1 @@ -Subproject commit ff595e72f5fb6a6405bf768cd2af7e723cbf9eaf +Subproject commit ada98b73dcf3c88fd462547c6c0e395b17b61be4 From 528efd7366788464d5bcfe9a4c415ae98addf62c Mon Sep 17 00:00:00 2001 From: cinder Date: Sun, 19 Jan 2025 06:59:13 -0600 Subject: [PATCH 18/18] Inventory work --- Radegast/Core/InitialOutfit.cs | 73 +++---- .../Consoles/Inventory/CurrentOutfitFolder.cs | 14 +- .../Consoles/Inventory/InventoryConsole.cs | 202 +++++++++--------- 3 files changed, 131 insertions(+), 158 deletions(-) diff --git a/Radegast/Core/InitialOutfit.cs b/Radegast/Core/InitialOutfit.cs index 05932b24..314d4c73 100644 --- a/Radegast/Core/InitialOutfit.cs +++ b/Radegast/Core/InitialOutfit.cs @@ -1,7 +1,7 @@ -/** +/* * Radegast Metaverse Client * Copyright(c) 2009-2014, Radegast Development Team - * Copyright(c) 2016-2020, Sjofn, LLC + * Copyright(c) 2016-2025, Sjofn, LLC * All rights reserved. * * Radegast is free software: you can redistribute it and/or modify @@ -20,6 +20,7 @@ using System; using System.Collections.Generic; +using System.Linq; using System.Threading; using OpenMetaverse; @@ -27,10 +28,9 @@ namespace Radegast { public class InitialOutfit { - - RadegastInstance Instance; - GridClient Client => Instance.Client; - Inventory Store; + private RadegastInstance Instance; + private GridClient Client => Instance.Client; + private Inventory Store; public InitialOutfit(RadegastInstance instance) { @@ -38,23 +38,15 @@ public InitialOutfit(RadegastInstance instance) Store = Client.Inventory.Store; } - public static InventoryNode FindNodeMyName(InventoryNode root, string name) + public static InventoryNode FindNodeByName(InventoryNode root, string name) { if (root.Data.Name == name) { return root; } - foreach (var node in root.Nodes.Values) - { - var ret = FindNodeMyName(node, name); - if (ret != null) - { - return ret; - } - } - - return null; + return root.Nodes.Values.Select(node => FindNodeByName(node, name)) + .FirstOrDefault(ret => ret != null); } public UUID CreateFolder(UUID parent, string name, FolderType type) @@ -64,30 +56,23 @@ public UUID CreateFolder(UUID parent, string name, FolderType type) EventHandler handler = (sender, e) => { - if (e.Obj.Name == name && e.Obj is InventoryFolder && ((InventoryFolder)e.Obj).PreferredType == type) + if (e.Obj.Name == name && e.Obj is InventoryFolder folder && folder.PreferredType == type) { - ret = e.Obj.UUID; + ret = folder.UUID; folderCreated.Set(); - Logger.Log("Created folder " + e.Obj.Name, Helpers.LogLevel.Info); + Logger.Log("Created folder " + folder.Name, Helpers.LogLevel.Info); } }; Client.Inventory.Store.InventoryObjectAdded += handler; ret = Client.Inventory.CreateFolder(parent, name, type); - bool success = folderCreated.WaitOne(20 * 1000, false); + bool success = folderCreated.WaitOne(TimeSpan.FromSeconds(20), false); Client.Inventory.Store.InventoryObjectAdded -= handler; - if (success) - { - return ret; - } - else - { - return UUID.Zero; - } + return success ? ret : UUID.Zero; } - List FetchFolder(InventoryFolder folder) + private List FetchFolder(InventoryFolder folder) { List ret = new List(); @@ -103,7 +88,7 @@ List FetchFolder(InventoryFolder folder) }; Client.Inventory.FolderUpdated += handler; - Client.Inventory.RequestFolderContents(folder.UUID, folder.OwnerID, true, true, InventorySortOrder.ByName); + var task = Client.Inventory.RequestFolderContents(folder.UUID, folder.OwnerID, true, true, InventorySortOrder.ByName); bool success = folderFetched.WaitOne(20 * 1000, false); Client.Inventory.FolderUpdated -= handler; return ret; @@ -141,7 +126,7 @@ public UUID CopyFolder(InventoryFolder folder, UUID destination) { itemCopied.Set(); }); - if (itemCopied.WaitOne(20 * 1000, false)) + if (itemCopied.WaitOne(TimeSpan.FromSeconds(20), false)) { Logger.Log("Copied item " + item.Name, Helpers.LogLevel.Info); } @@ -150,9 +135,9 @@ public UUID CopyFolder(InventoryFolder folder, UUID destination) Logger.Log("Failed to copy item " + item.Name, Helpers.LogLevel.Warning); } } - else if (item is InventoryFolder) + else if (item is InventoryFolder inventoryFolder) { - CopyFolder((InventoryFolder)item, newFolderID); + CopyFolder(inventoryFolder, newFolderID); } } @@ -166,10 +151,10 @@ public void SetInitialOutfit(string outfit) t.Start(); } - void PerformInit(string initialOutfitName) + private void PerformInit(string initialOutfitName) { Logger.Log("Starting initial outfit thread (first login)", Helpers.LogLevel.Debug); - var outfitFolder = FindNodeMyName(Store.LibraryRootNode, initialOutfitName); + var outfitFolder = FindNodeByName(Store.LibraryRootNode, initialOutfitName); if (outfitFolder == null) { @@ -178,19 +163,15 @@ void PerformInit(string initialOutfitName) CheckFolders(); - UUID newClothingFolder = CopyFolder((InventoryFolder)outfitFolder.Data, Client.Inventory.FindFolderForType(AssetType.Clothing)); + UUID newClothingFolder = CopyFolder((InventoryFolder)outfitFolder.Data, + Client.Inventory.FindFolderForType(AssetType.Clothing)); - List newOutfit = new List(); - foreach (var item in Store.GetContents(newClothingFolder)) - { - if (item is InventoryWearable || item is InventoryAttachment || item is InventoryObject) - { - newOutfit.Add((InventoryItem)item); - } - } + List newOutfit = Store.GetContents(newClothingFolder) + .Where(item => item is InventoryWearable || item is InventoryAttachment || item is InventoryObject) + .Cast().ToList(); Instance.COF.ReplaceOutfit(newOutfit); - Logger.Log("Intial outfit thread (first login) exiting", Helpers.LogLevel.Debug); + Logger.Log("Initial outfit thread (first login) exiting", Helpers.LogLevel.Debug); } } } diff --git a/Radegast/GUI/Consoles/Inventory/CurrentOutfitFolder.cs b/Radegast/GUI/Consoles/Inventory/CurrentOutfitFolder.cs index 1f03169d..5349c930 100644 --- a/Radegast/GUI/Consoles/Inventory/CurrentOutfitFolder.cs +++ b/Radegast/GUI/Consoles/Inventory/CurrentOutfitFolder.cs @@ -1,7 +1,7 @@ /** * Radegast Metaverse Client * Copyright(c) 2009-2014, Radegast Development Team - * Copyright(c) 2016-2022, Sjofn, LLC + * Copyright(c) 2016-2025, Sjofn, LLC * All rights reserved. * * Radegast is free software: you can redistribute it and/or modify @@ -22,6 +22,7 @@ using System.Collections.Generic; using System.Linq; using System.Threading; +using System.Threading.Tasks; using OpenMetaverse; namespace Radegast @@ -179,11 +180,6 @@ private void Network_EventQueueRunning(object sender, EventQueueRunningEventArgs #region Private methods - private void RequestDescendants(UUID folderID) - { - Client.Inventory.RequestFolderContents(folderID, Client.Self.AgentID, true, true, InventorySortOrder.ByDate); - } - private void InitCOF() { var rootContent = Client.Inventory.Store.GetContents(Client.Inventory.Store.RootFolder.UUID); @@ -202,13 +198,15 @@ private void InitCOF() } else { - RequestDescendants(COF.UUID); + Task task = Client.Inventory.RequestFolderContents(COF.UUID, Client.Self.AgentID, + true, true, InventorySortOrder.ByDate); } } private void CreateCOF() { - UUID cofID = Client.Inventory.CreateFolder(Client.Inventory.Store.RootFolder.UUID, "Current Outfit", FolderType.CurrentOutfit); + UUID cofID = Client.Inventory.CreateFolder(Client.Inventory.Store.RootFolder.UUID, + "Current Outfit", FolderType.CurrentOutfit); if (Client.Inventory.Store.Contains(cofID) && Client.Inventory.Store[cofID] is InventoryFolder folder) { COF = folder; diff --git a/Radegast/GUI/Consoles/Inventory/InventoryConsole.cs b/Radegast/GUI/Consoles/Inventory/InventoryConsole.cs index 420cd97b..5e2b7e12 100644 --- a/Radegast/GUI/Consoles/Inventory/InventoryConsole.cs +++ b/Radegast/GUI/Consoles/Inventory/InventoryConsole.cs @@ -1,7 +1,7 @@ /* * Radegast Metaverse Client * Copyright(c) 2009-2014, Radegast Development Team - * Copyright(c) 2016-2024, Sjofn, LLC + * Copyright(c) 2016-2025, Sjofn, LLC * All rights reserved. * * Radegast is free software: you can redistribute it and/or modify @@ -38,10 +38,10 @@ namespace Radegast public partial class InventoryConsole : UserControl { - private const int updateInterval = 1000; + private const int UPDATE_INTERVAL = 1000; private readonly RadegastInstance instance; - GridClient Client => instance.Client; + private GridClient Client => instance.Client; private InventoryManager Manager; private readonly Inventory Inventory; @@ -73,7 +73,7 @@ public InventoryConsole(RadegastInstance instance) TreeUpdateTimer = new System.Timers.Timer() { - Interval = updateInterval, + Interval = UPDATE_INTERVAL, Enabled = false, SynchronizingObject = invTree }; @@ -104,6 +104,8 @@ public void Init() return; } + AddFolderFromStore(invRootNode, Inventory.RootFolder); + sorter = new InvNodeSorter(); if (!instance.GlobalSettings.ContainsKey("inv_sort_bydate")) @@ -167,7 +169,7 @@ public void Init() Client.Appearance.AppearanceSet += Appearance_AppearanceSet; } - void InventoryConsole_Disposed(object sender, EventArgs e) + private void InventoryConsole_Disposed(object sender, EventArgs e) { GestureManager.Instance.StopMonitoring(); @@ -177,12 +179,6 @@ void InventoryConsole_Disposed(object sender, EventArgs e) TreeUpdateTimer.Dispose(); TreeUpdateTimer = null; } - try - { - inventoryUpdateCancelToken.Cancel(); - inventoryUpdateCancelToken.Dispose(); - } - catch (ObjectDisposedException) { } Inventory.InventoryObjectAdded -= Inventory_InventoryObjectAdded; Inventory.InventoryObjectUpdated -= Inventory_InventoryObjectUpdated; @@ -195,7 +191,8 @@ void InventoryConsole_Disposed(object sender, EventArgs e) #endregion #region Network callbacks - void Appearance_AppearanceSet(object sender, AppearanceSetEventArgs e) + + private void Appearance_AppearanceSet(object sender, AppearanceSetEventArgs e) { UpdateWornLabels(); if (appearanceWasBusy) @@ -205,7 +202,7 @@ void Appearance_AppearanceSet(object sender, AppearanceSetEventArgs e) } } - void Objects_KillObject(object sender, KillObjectEventArgs e) + private void Objects_KillObject(object sender, KillObjectEventArgs e) { AttachmentInfo attachment = null; lock (attachments) @@ -226,7 +223,7 @@ void Objects_KillObject(object sender, KillObjectEventArgs e) } } - void Objects_AttachmentUpdate(object sender, PrimEventArgs e) + private void Objects_AttachmentUpdate(object sender, PrimEventArgs e) { Primitive prim = e.Prim; @@ -288,7 +285,7 @@ void Objects_AttachmentUpdate(object sender, PrimEventArgs e) } } - void Inventory_InventoryObjectAdded(object sender, InventoryObjectAddedEventArgs e) + private void Inventory_InventoryObjectAdded(object sender, InventoryObjectAddedEventArgs e) { if (e.Obj is InventoryFolder folder && folder.PreferredType == FolderType.Trash) @@ -309,7 +306,7 @@ void Inventory_InventoryObjectAdded(object sender, InventoryObjectAddedEventArgs } } - void Exec_OnInventoryObjectAdded(InventoryBase obj) + private void Exec_OnInventoryObjectAdded(InventoryBase obj) { if (InvokeRequired) { @@ -323,13 +320,13 @@ void Exec_OnInventoryObjectAdded(InventoryBase obj) lock (attachments) { - if (attachments.ContainsKey(obj.UUID)) + if (attachments.TryGetValue(obj.UUID, out var attachment)) { - attachments[obj.UUID].Item = (InventoryItem)obj; + attachment.Item = (InventoryItem)obj; } } - TreeNode parent = findNodeForItem(obj.ParentUUID); + TreeNode parent = FindNodeForItem(obj.ParentUUID); if (parent != null) { @@ -349,7 +346,7 @@ void Exec_OnInventoryObjectAdded(InventoryBase obj) newItemName = string.Empty; } - void Inventory_InventoryObjectRemoved(object sender, InventoryObjectRemovedEventArgs e) + private void Inventory_InventoryObjectRemoved(object sender, InventoryObjectRemovedEventArgs e) { if (InvokeRequired) { @@ -365,14 +362,14 @@ void Inventory_InventoryObjectRemoved(object sender, InventoryObjectRemovedEvent } } - TreeNode currentNode = findNodeForItem(e.Obj.UUID); + TreeNode currentNode = FindNodeForItem(e.Obj.UUID); if (currentNode != null) { - removeNode(currentNode); + RemoveNode(currentNode); } } - void Inventory_InventoryObjectUpdated(object sender, InventoryObjectUpdatedEventArgs e) + private void Inventory_InventoryObjectUpdated(object sender, InventoryObjectUpdatedEventArgs e) { if (TreeUpdateInProgress) { @@ -380,7 +377,7 @@ void Inventory_InventoryObjectUpdated(object sender, InventoryObjectUpdatedEvent { if (e.NewObject is InventoryFolder) { - TreeNode currentNode = findNodeForItem(e.NewObject.UUID); + TreeNode currentNode = FindNodeForItem(e.NewObject.UUID); if (currentNode != null && currentNode.Text == e.NewObject.Name) return; } @@ -396,7 +393,7 @@ void Inventory_InventoryObjectUpdated(object sender, InventoryObjectUpdatedEvent } } - void Exec_OnInventoryObjectUpdated(InventoryBase oldObject, InventoryBase newObject) + private void Exec_OnInventoryObjectUpdated(InventoryBase oldObject, InventoryBase newObject) { if (newObject == null) return; @@ -408,17 +405,17 @@ void Exec_OnInventoryObjectUpdated(InventoryBase oldObject, InventoryBase newObj lock (attachments) { - if (attachments.ContainsKey(newObject.UUID)) + if (attachments.TryGetValue(newObject.UUID, out var attachment)) { - attachments[newObject.UUID].Item = (InventoryItem)newObject; + attachment.Item = (InventoryItem)newObject; } } // Find our current node in the tree - TreeNode currentNode = findNodeForItem(newObject.UUID); + TreeNode currentNode = FindNodeForItem(newObject.UUID); - // Find which node should be our parrent - TreeNode parent = findNodeForItem(newObject.ParentUUID); + // Find which node should be our parent + TreeNode parent = FindNodeForItem(newObject.ParentUUID); if (parent == null) return; @@ -430,8 +427,8 @@ void Exec_OnInventoryObjectUpdated(InventoryBase oldObject, InventoryBase newObj TreeNode movedNode = (TreeNode)currentNode.Clone(); movedNode.Tag = newObject; parent.Nodes.Add(movedNode); - removeNode(currentNode); - cacheNode(movedNode); + RemoveNode(currentNode); + CacheNode(movedNode); } else // Update { @@ -481,7 +478,7 @@ public static int GetItemImageIndex(string t) return res; } - TreeNode AddBase(TreeNode parent, InventoryBase obj) + private TreeNode AddBase(TreeNode parent, InventoryBase obj) { if (obj is InventoryItem item) { @@ -491,7 +488,7 @@ TreeNode AddBase(TreeNode parent, InventoryBase obj) return AddDir(parent, (InventoryFolder)obj); } - TreeNode AddDir(TreeNode parentNode, InventoryFolder f) + private TreeNode AddDir(TreeNode parentNode, InventoryFolder f) { TreeNode dirNode = new TreeNode { @@ -515,6 +512,7 @@ TreeNode AddDir(TreeNode parentNode, InventoryFolder f) { parentNode.Nodes.RemoveByKey(f.UUID.ToString()); } + Logger.DebugLog($"== 4 '{dirNode.Text}' '{parentNode.Text}'"); parentNode.Nodes.Add(dirNode); } lock (UUID2NodeCache) @@ -525,7 +523,7 @@ TreeNode AddDir(TreeNode parentNode, InventoryFolder f) } - TreeNode AddItem(TreeNode parent, InventoryItem item) + private TreeNode AddItem(TreeNode parent, InventoryItem item) { TreeNode itemNode = new TreeNode { @@ -533,7 +531,7 @@ TreeNode AddItem(TreeNode parent, InventoryItem item) Text = ItemLabel(item, false), Tag = item }; - int img = -1; + InventoryItem linkedItem = null; if (item.IsLink() && Inventory.Contains(item.AssetUUID) && Inventory[item.AssetUUID] is InventoryItem) @@ -545,6 +543,7 @@ TreeNode AddItem(TreeNode parent, InventoryItem item) linkedItem = item; } + int img; if (linkedItem is InventoryWearable wearable) { img = GetItemImageIndex(wearable.WearableType.ToString().ToLower()); @@ -564,26 +563,26 @@ TreeNode AddItem(TreeNode parent, InventoryItem item) return itemNode; } - TreeNode findNodeForItem(UUID itemID) + private TreeNode FindNodeForItem(UUID itemID) { lock (UUID2NodeCache) { - if (UUID2NodeCache.ContainsKey(itemID)) + if (UUID2NodeCache.TryGetValue(itemID, out var item)) { - return UUID2NodeCache[itemID]; + return item; } } return null; } - void cacheNode(TreeNode node) + private void CacheNode(TreeNode node) { InventoryBase item = (InventoryBase)node.Tag; if (item == null) return; foreach (TreeNode child in node.Nodes) { - cacheNode(child); + CacheNode(child); } lock (UUID2NodeCache) { @@ -591,7 +590,7 @@ void cacheNode(TreeNode node) } } - void removeNode(TreeNode node) + private void RemoveNode(TreeNode node) { InventoryBase item = (InventoryBase)node.Tag; if (item != null) @@ -599,7 +598,7 @@ void removeNode(TreeNode node) foreach (TreeNode child in node.Nodes) { if (child != null) - removeNode(child); + RemoveNode(child); } lock (UUID2NodeCache) @@ -637,7 +636,7 @@ private void UpdateNodeLabel(UUID itemID) return; } - TreeNode node = findNodeForItem(itemID); + TreeNode node = FindNodeForItem(itemID); if (node != null) { node.Text = ItemLabel((InventoryBase)node.Tag, false); @@ -681,12 +680,9 @@ private void TraverseAndQueueNodes(InventoryNode start) } } - foreach (InventoryBase item in Inventory.GetContents((InventoryFolder)start.Data)) + foreach (var item in Inventory.GetContents((InventoryFolder)start.Data).OfType()) { - if (item is InventoryFolder) - { - TraverseAndQueueNodes(Inventory.GetNodeFor(item.UUID)); - } + TraverseAndQueueNodes(Inventory.GetNodeFor(item.UUID)); } } @@ -723,12 +719,9 @@ void FolderUpdatedCB(object sender, FolderUpdatedEventArgs ea) } } - foreach (InventoryBase item in Inventory.GetContents((InventoryFolder)start.Data)) + foreach (var item in Inventory.GetContents((InventoryFolder)start.Data).OfType()) { - if (item is InventoryFolder) - { - TraverseNodes(Inventory.GetNodeFor(item.UUID)); - } + TraverseNodes(Inventory.GetNodeFor(item.UUID)); } } @@ -744,7 +737,7 @@ void RunningHandler(object sender, EventQueueRunningEventArgs e) } Client.Network.EventQueueRunning += RunningHandler; - EQRunning.WaitOne(10 * 1000, false); + EQRunning.WaitOne(TimeSpan.FromSeconds(10), false); Client.Network.EventQueueRunning -= RunningHandler; } @@ -769,10 +762,10 @@ void RunningHandler(object sender, EventQueueRunningEventArgs e) QueuedFolders.Clear(); } TraverseAndQueueNodes(Inventory.RootNode); - if (QueuedFolders.Count == 0) break; + if (QueuedFolders.Count == 0) { break; } Logger.DebugLog($"Queued {QueuedFolders.Count} folders for update"); - System.Threading.Tasks.Parallel.ForEach(QueuedFolders, folderID => + System.Threading.Tasks.Parallel.ForEach(QueuedFolders, folderID => { bool success = false; @@ -787,8 +780,9 @@ void updateHandler(object sender, FolderUpdatedEventArgs ev) } Client.Inventory.FolderUpdated += updateHandler; - Client.Inventory.RequestFolderContents(folderID, Client.Self.AgentID, true, true, InventorySortOrder.ByDate); - if (!gotFolder.WaitOne(15 * 1000, false)) + Task task = Client.Inventory.RequestFolderContents(folderID, Client.Self.AgentID, + true, true, InventorySortOrder.ByDate, inventoryUpdateCancelToken.Token); + if (!gotFolder.WaitOne(TimeSpan.FromSeconds(15), false)) { success = false; } @@ -819,18 +813,17 @@ void updateHandler(object sender, FolderUpdatedEventArgs ev) // Update attachments now that we are done lock (attachments) { - foreach (AttachmentInfo a in attachments.Values) + foreach (var attachment in attachments.Values.Where(a => a.Item == null)) { - if (a.Item != null) continue; - if (Inventory.Contains(a.InventoryID)) + if (Inventory.Contains(attachment.InventoryID)) { - a.MarkedAttached = true; - a.Item = (InventoryItem)Inventory[a.InventoryID]; - UpdateNodeLabel(a.InventoryID); + attachment.MarkedAttached = true; + attachment.Item = (InventoryItem)Inventory[attachment.InventoryID]; + UpdateNodeLabel(attachment.InventoryID); } else { - Client.Inventory.RequestFetchInventory(a.InventoryID, Client.Self.AgentID); + Client.Inventory.RequestFetchInventory(attachment.InventoryID, Client.Self.AgentID); return; } } @@ -889,7 +882,7 @@ private void TreeUpdateTimerTick(object sender, EventArgs e) while (ItemsToAdd.Count > 0) { InventoryBase item = ItemsToAdd.Dequeue(); - TreeNode node = findNodeForItem(item.ParentUUID); + TreeNode node = FindNodeForItem(item.ParentUUID); if (node != null) { AddBase(node, item); @@ -923,7 +916,7 @@ private void btnProfile_Click(object sender, EventArgs e) instance.MainForm.ShowAgentProfile(txtCreator.Text, txtCreator.AgentID); } - void UpdateItemInfo(InventoryItem item) + private void UpdateItemInfo(InventoryItem item) { foreach (Control c in pnlDetail.Controls) { @@ -1010,7 +1003,7 @@ void UpdateItemInfo(InventoryItem item) tabsInventory.SelectedTab = tabDetail; } - void cbNextOwnerUpdate_CheckedChanged(object sender, EventArgs e) + private void cbNextOwnerUpdate_CheckedChanged(object sender, EventArgs e) { InventoryItem item = null; if (pnlItemProperties.Tag is InventoryItem tag) @@ -1059,7 +1052,7 @@ private void txtItemDescription_Leave(object sender, EventArgs e) Client.Inventory.RequestFetchInventory(item.UUID, item.OwnerID); } - void invTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) + private void invTree_NodeMouseDoubleClick(object sender, TreeNodeMouseClickEventArgs e) { if (!(invTree.SelectedNode.Tag is InventoryItem item)) { return; } item = instance.COF.RealInventoryItem(item); @@ -1124,7 +1117,8 @@ private void FetchFolder(UUID folderID, UUID ownerID, bool force) fetchedFolders.Add(folderID); } - Client.Inventory.RequestFolderContents(folderID, ownerID, true, true, InventorySortOrder.ByDate); + Task task = Client.Inventory.RequestFolderContents(folderID, ownerID, + true, true, InventorySortOrder.ByDate, inventoryUpdateCancelToken.Token); } } @@ -1135,7 +1129,9 @@ public bool IsWorn(InventoryItem item) lock (WornItems) { if (worn && !WornItems.Contains(item.UUID)) + { WornItems.Add(item.UUID); + } } return worn; } @@ -1144,9 +1140,9 @@ public AttachmentPoint AttachedTo(InventoryItem item) { lock (attachments) { - if (attachments.ContainsKey(item.UUID)) + if (attachments.TryGetValue(item.UUID, out var attachment)) { - return attachments[item.UUID].Point; + return attachment.Point; } } @@ -1264,7 +1260,7 @@ public static bool IsFullPerm(InventoryItem item) (item.Permissions.OwnerMask & PermissionMask.Transfer) != 0; } - void invTree_MouseClick(object sender, TreeNodeMouseClickEventArgs e) + private void invTree_MouseClick(object sender, TreeNodeMouseClickEventArgs e) { TreeNode node = e.Node; @@ -1672,7 +1668,7 @@ private void OnInvContextClick(object sender, EventArgs e) { if (old != null && !(old.Tag is InventoryFolder)) { - removeNode(old); + RemoveNode(old); } } FetchFolder(folder.UUID, folder.OwnerID, true); @@ -1963,7 +1959,8 @@ private void OnInvContextClick(object sender, EventArgs e) #endregion } } - List GetInventoryItemsForOutFit(InventoryFolder folder) + + private List GetInventoryItemsForOutFit(InventoryFolder folder) { List outfitItems = new List(); foreach (InventoryBase item in Inventory.GetContents(folder)) @@ -1980,7 +1977,7 @@ List GetInventoryItemsForOutFit(InventoryFolder folder) return outfitItems; } - void NotecardCreated(bool success, InventoryItem item) + private void NotecardCreated(bool success, InventoryItem item) { if (InvokeRequired) { @@ -1995,9 +1992,9 @@ void NotecardCreated(bool success, InventoryItem item) } instance.TabConsole.DisplayNotificationInChat("New notecard created, enter notecard name and press enter", ChatBufferTextStyle.Invisible); - var node = findNodeForItem(item.ParentUUID); + var node = FindNodeForItem(item.ParentUUID); node?.Expand(); - node = findNodeForItem(item.UUID); + node = FindNodeForItem(item.UUID); if (node != null) { invTree.SelectedNode = node; @@ -2005,7 +2002,7 @@ void NotecardCreated(bool success, InventoryItem item) } } - void ScriptCreated(bool success, InventoryItem item) + private void ScriptCreated(bool success, InventoryItem item) { if (InvokeRequired) { @@ -2020,9 +2017,9 @@ void ScriptCreated(bool success, InventoryItem item) } instance.TabConsole.DisplayNotificationInChat("New script created, enter script name and press enter", ChatBufferTextStyle.Invisible); - var node = findNodeForItem(item.ParentUUID); + var node = FindNodeForItem(item.ParentUUID); node?.Expand(); - node = findNodeForItem(item.UUID); + node = FindNodeForItem(item.UUID); if (node != null) { invTree.SelectedNode = node; @@ -2030,7 +2027,7 @@ void ScriptCreated(bool success, InventoryItem item) } } - void PerformClipboardOperation(InventoryFolder dest) + private void PerformClipboardOperation(InventoryFolder dest) { if (instance.InventoryClipboard == null) return; @@ -2104,7 +2101,7 @@ void PerformClipboardOperation(InventoryFolder dest) } } - void PerformLinkOperation(InventoryFolder dest) + private void PerformLinkOperation(InventoryFolder dest) { if (instance.InventoryClipboard == null || dest == null) return; @@ -2129,14 +2126,14 @@ private void UpdateWornLabels() } invTree.BeginUpdate(); - foreach (var node in WornItems.Select(findNodeForItem).Where(node => node != null)) + foreach (var node in WornItems.Select(FindNodeForItem).Where(node => node != null)) { node.Text = ItemLabel((InventoryBase)node.Tag, false); } WornItems.Clear(); foreach (var wearable in Client.Appearance.GetWearables()) { - TreeNode node = findNodeForItem(wearable.ItemID); + TreeNode node = FindNodeForItem(wearable.ItemID); if (node != null) { node.Text = ItemLabel((InventoryBase) node.Tag, false); @@ -2146,7 +2143,7 @@ private void UpdateWornLabels() invTree.EndUpdate(); } - void TreeView_AfterExpand(object sender, TreeViewEventArgs e) + private void TreeView_AfterExpand(object sender, TreeViewEventArgs e) { // Check if we need to go into edit mode for new items if (newItemName == string.Empty) return; @@ -2329,7 +2326,7 @@ private void invTree_DragEnter(object sender, DragEventArgs e) } } - TreeNode highlightedNode = null; + private TreeNode highlightedNode = null; private void invTree_DragOver(object sender, DragEventArgs e) { @@ -2416,13 +2413,13 @@ public SearchResult(InventoryBase inv, int level) } } - List searchRes; - string searchString; - readonly Dictionary searchItemCache = new Dictionary(); - ListViewItem emptyItem = null; - int found; + private List searchRes; + private string searchString; + private readonly Dictionary searchItemCache = new Dictionary(); + private ListViewItem emptyItem = null; + private int found; - void PerformRecursiveSearch(int level, UUID folderID) + private void PerformRecursiveSearch(int level, UUID folderID) { var folder = Inventory[folderID]; searchRes.Add(new SearchResult(folder, level)); @@ -2683,9 +2680,8 @@ private void lstInventorySearch_KeyDown(object sender, KeyEventArgs e) /// Inventory of ID of the item to select public void SelectInventoryNode(UUID itemID) { - TreeNode node = findNodeForItem(itemID); - if (node == null) - return; + TreeNode node = FindNodeForItem(itemID); + if (node == null) { return; } invTree.SelectedNode = node; if (node.Tag is InventoryItem tag) { @@ -2701,9 +2697,8 @@ private void lstInventorySearch_MouseClick(object sender, MouseEventArgs e) try { SearchResult res = searchRes[lstInventorySearch.SelectedIndices[0]]; - TreeNode node = findNodeForItem(res.Inv.UUID); - if (node == null) - return; + TreeNode node = FindNodeForItem(res.Inv.UUID); + if (node == null) { return; } invTree.SelectedNode = node; if (e.Button == MouseButtons.Right) { @@ -2721,9 +2716,8 @@ private void lstInventorySearch_MouseDoubleClick(object sender, MouseEventArgs e try { SearchResult res = searchRes[lstInventorySearch.SelectedIndices[0]]; - TreeNode node = findNodeForItem(res.Inv.UUID); - if (node == null) - return; + TreeNode node = FindNodeForItem(res.Inv.UUID); + if (node == null) { return; } invTree.SelectedNode = node; invTree_NodeMouseDoubleClick(null, null); } @@ -2755,7 +2749,7 @@ private void copyInitialOutfitsToolStripMenuItem_Click(object sender, EventArgs // Create a node sorter that implements the IComparer interface. public class InvNodeSorter : System.Collections.IComparer { - int CompareFolders(InventoryFolder x, InventoryFolder y) + private int CompareFolders(InventoryFolder x, InventoryFolder y) { if (!SystemFoldersFirst) return string.CompareOrdinal(x.Name, y.Name);