Skip to content

Commit 086014d

Browse files
author
Snow1226
committed
CameraPlus 6.0.0以降のjson形式の読み込みを追加
1 parent 92e653e commit 086014d

1 file changed

Lines changed: 55 additions & 20 deletions

File tree

ControlWindowWPF/ControlWindowWPF/SettingWindow.xaml.cs

Lines changed: 55 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@
55
using System.Collections.ObjectModel;
66
using System.IO;
77
using System.Linq;
8+
using System.Runtime.Serialization;
9+
using System.Runtime.Serialization.Json;
810
using System.Text;
911
using System.Threading.Tasks;
1012
using System.Windows;
@@ -549,41 +551,74 @@ private void EyeTracking_ViveProEyeSettingButton_Click(object sender, RoutedEven
549551
win.ShowDialog();
550552
}
551553

554+
[DataContract]
555+
private class CameraPlusConfig
556+
{
557+
[DataMember]
558+
public float FieldOfView { get; set; }
559+
[DataMember]
560+
public TransformElements ThirdPersonPos = new TransformElements();
561+
[DataMember]
562+
public TransformElements ThirdPersonRot = new TransformElements();
563+
}
564+
[DataContract]
565+
private class TransformElements
566+
{
567+
[DataMember]
568+
public float x { get; set; }
569+
[DataMember]
570+
public float y { get; set; }
571+
[DataMember]
572+
public float z { get; set; }
573+
}
552574
private async void CameraPlus_ImportButton_Click(object sender, RoutedEventArgs e)
553575
{
554576
Globals.LoadCommonSettings();
555577

556578
var ofd = new OpenFileDialog();
557579

558-
ofd.Filter = "cameraplus.cfg|cameraplus.cfg";
580+
ofd.Filter = "cameraplus (*.cfg;*.json) | *.cfg;*.json";
559581
ofd.InitialDirectory = Globals.ExistDirectoryOrNull(Globals.CurrentCommonSettingsWPF.CurrentPathOnCameraPlusFileDialog);
560582
if (ofd.ShowDialog() == true)
561583
{
562584
var configs = new Dictionary<string, string>();
563-
var lines = File.ReadAllLines(ofd.FileName);
564-
foreach (var line in lines)
585+
if (ofd.FileName.ToLower().Contains(".json"))
565586
{
566-
if (line.Contains("="))
587+
var c = new CameraPlusConfig();
588+
using (var ms = new FileStream(ofd.FileName, FileMode.Open))
567589
{
568-
var items = line.Split(new string[] { "=" }, 2, StringSplitOptions.None);
569-
configs.Add(items[0], items[1]);
590+
var serializer = new DataContractJsonSerializer(typeof(CameraPlusConfig));
591+
c = (CameraPlusConfig)serializer.ReadObject(ms);
570592
}
593+
await Globals.Client?.SendCommandAsync(new PipeCommands.ImportCameraPlus { x = c.ThirdPersonPos.x, y = c.ThirdPersonPos.y, z = c.ThirdPersonPos.z, rx = c.ThirdPersonRot.x, ry = c.ThirdPersonRot.y, rz = c.ThirdPersonRot.z, fov = c.FieldOfView });
571594
}
572-
Func<string, float> GetFloat = (string key) =>
595+
else
573596
{
574-
if (configs.ContainsKey(key) == false) { return 0.0f; }
575-
if (float.TryParse(configs[key], out var ret)) { return ret; }
576-
return 0.0f;
577-
};
578-
var x = GetFloat("posx");
579-
var y = GetFloat("posy");
580-
var z = GetFloat("posz");
581-
var rx = GetFloat("angx");
582-
var ry = GetFloat("angy");
583-
var rz = GetFloat("angz");
584-
var fov = GetFloat("fov");
585-
586-
await Globals.Client?.SendCommandAsync(new PipeCommands.ImportCameraPlus { x = x, y = y, z = z, rx = rx, ry = ry, rz = rz, fov = fov });
597+
var lines = File.ReadAllLines(ofd.FileName);
598+
foreach (var line in lines)
599+
{
600+
if (line.Contains("="))
601+
{
602+
var items = line.Split(new string[] { "=" }, 2, StringSplitOptions.None);
603+
configs.Add(items[0], items[1]);
604+
}
605+
}
606+
Func<string, float> GetFloat = (string key) =>
607+
{
608+
if (configs.ContainsKey(key) == false) { return 0.0f; }
609+
if (float.TryParse(configs[key], out var ret)) { return ret; }
610+
return 0.0f;
611+
};
612+
var x = GetFloat("posx");
613+
var y = GetFloat("posy");
614+
var z = GetFloat("posz");
615+
var rx = GetFloat("angx");
616+
var ry = GetFloat("angy");
617+
var rz = GetFloat("angz");
618+
var fov = GetFloat("fov");
619+
620+
await Globals.Client?.SendCommandAsync(new PipeCommands.ImportCameraPlus { x = x, y = y, z = z, rx = rx, ry = ry, rz = rz, fov = fov });
621+
}
587622
if (Globals.CurrentCommonSettingsWPF.CurrentPathOnCameraPlusFileDialog != System.IO.Path.GetDirectoryName(ofd.FileName))
588623
{
589624
Globals.CurrentCommonSettingsWPF.CurrentPathOnCameraPlusFileDialog = System.IO.Path.GetDirectoryName(ofd.FileName);

0 commit comments

Comments
 (0)