From 3af190d5a00adc01883392f5e2948bcc1887d25d Mon Sep 17 00:00:00 2001 From: ChanyaKushima <63221603+ChanyaVRC@users.noreply.github.com> Date: Mon, 18 Jul 2022 12:38:04 +0900 Subject: [PATCH] Add a sample, AvatarParameterSender. --- Sample/AvatarParameterSender/App.xaml | 9 ++ Sample/AvatarParameterSender/App.xaml.cs | 15 ++ Sample/AvatarParameterSender/AssemblyInfo.cs | 10 ++ .../AvatarParameterSender.csproj | 14 ++ Sample/AvatarParameterSender/MainWindow.xaml | 46 +++++++ .../AvatarParameterSender/MainWindow.xaml.cs | 73 ++++++++++ .../ParameterSenderItem.xaml | 38 ++++++ .../ParameterSenderItem.xaml.cs | 128 ++++++++++++++++++ vrcosclib.sln | 34 +++++ 9 files changed, 367 insertions(+) create mode 100644 Sample/AvatarParameterSender/App.xaml create mode 100644 Sample/AvatarParameterSender/App.xaml.cs create mode 100644 Sample/AvatarParameterSender/AssemblyInfo.cs create mode 100644 Sample/AvatarParameterSender/AvatarParameterSender.csproj create mode 100644 Sample/AvatarParameterSender/MainWindow.xaml create mode 100644 Sample/AvatarParameterSender/MainWindow.xaml.cs create mode 100644 Sample/AvatarParameterSender/ParameterSenderItem.xaml create mode 100644 Sample/AvatarParameterSender/ParameterSenderItem.xaml.cs diff --git a/Sample/AvatarParameterSender/App.xaml b/Sample/AvatarParameterSender/App.xaml new file mode 100644 index 0000000..7722a3d --- /dev/null +++ b/Sample/AvatarParameterSender/App.xaml @@ -0,0 +1,9 @@ + + + + + diff --git a/Sample/AvatarParameterSender/App.xaml.cs b/Sample/AvatarParameterSender/App.xaml.cs new file mode 100644 index 0000000..e3d394e --- /dev/null +++ b/Sample/AvatarParameterSender/App.xaml.cs @@ -0,0 +1,15 @@ +using System; +using System.Collections.Generic; +using System.Configuration; +using System.Data; +using System.Linq; +using System.Threading.Tasks; +using System.Windows; + +namespace AvatarParameterSender; +/// +/// Interaction logic for App.xaml +/// +public partial class App : Application +{ +} diff --git a/Sample/AvatarParameterSender/AssemblyInfo.cs b/Sample/AvatarParameterSender/AssemblyInfo.cs new file mode 100644 index 0000000..8b5504e --- /dev/null +++ b/Sample/AvatarParameterSender/AssemblyInfo.cs @@ -0,0 +1,10 @@ +using System.Windows; + +[assembly: ThemeInfo( + ResourceDictionaryLocation.None, //where theme specific resource dictionaries are located + //(used if a resource is not found in the page, + // or application resource dictionaries) + ResourceDictionaryLocation.SourceAssembly //where the generic resource dictionary is located + //(used if a resource is not found in the page, + // app, or any theme specific resource dictionaries) +)] diff --git a/Sample/AvatarParameterSender/AvatarParameterSender.csproj b/Sample/AvatarParameterSender/AvatarParameterSender.csproj new file mode 100644 index 0000000..d1d0a8e --- /dev/null +++ b/Sample/AvatarParameterSender/AvatarParameterSender.csproj @@ -0,0 +1,14 @@ + + + + WinExe + net6.0-windows + enable + true + + + + + + + diff --git a/Sample/AvatarParameterSender/MainWindow.xaml b/Sample/AvatarParameterSender/MainWindow.xaml new file mode 100644 index 0000000..acaba70 --- /dev/null +++ b/Sample/AvatarParameterSender/MainWindow.xaml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Sample/AvatarParameterSender/MainWindow.xaml.cs b/Sample/AvatarParameterSender/MainWindow.xaml.cs new file mode 100644 index 0000000..e82a95a --- /dev/null +++ b/Sample/AvatarParameterSender/MainWindow.xaml.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using System.Windows; +using System.Windows.Controls; +using System.Windows.Data; +using System.Windows.Documents; +using System.Windows.Input; +using System.Windows.Media; +using System.Windows.Media.Imaging; +using System.Windows.Navigation; +using System.Windows.Shapes; +using BuildSoft.VRChat.Osc.Avatar; + +namespace AvatarParameterSender; +/// +/// Interaction logic for MainWindow.xaml +/// +public partial class MainWindow : Window +{ + public static readonly DependencyProperty CurrentAvatarNameProperty = + DependencyProperty.Register(nameof(CurrentAvatarName), typeof(string), typeof(MainWindow), new PropertyMetadata(string.Empty)); + + public string CurrentAvatarName + { + get { return (string)GetValue(CurrentAvatarNameProperty); } + set { SetValue(CurrentAvatarNameProperty, value); } + } + + public MainWindow() + { + InitializeComponent(); + } + + private void Window_Loaded(object sender, RoutedEventArgs e) + { + OscAvatarUtility.AvatarChanged += (sender, e) => + { + Dispatcher.Invoke(() => LoadCurrentAvatarConfig()); + }; + } + + private void LoadCurrentAvatarConfig() + { + var currentConfig = OscAvatarConfig.CreateAtCurrent(); + if (currentConfig == null) + { + return; + } + CurrentAvatarName = currentConfig.Name; + + var children = ParameterPanel.Children; + children.Clear(); + + var items = currentConfig.Parameters.Items; + for (int i = 0; i < items.Length; i++) + { + var input = items[i].Input; + if (input == null) + { + continue; + } + + children.Add(new ParameterSenderItem() { + Address = input.Address, + ParameterName = items[i].Name, + Type = input.OscType, + }); + } + } +} diff --git a/Sample/AvatarParameterSender/ParameterSenderItem.xaml b/Sample/AvatarParameterSender/ParameterSenderItem.xaml new file mode 100644 index 0000000..f89d852 --- /dev/null +++ b/Sample/AvatarParameterSender/ParameterSenderItem.xaml @@ -0,0 +1,38 @@ + + + + + + + + + + + + + + +