campfire/Assets/SteamVR/Input/SteamVR_Input_BindingFile.cs
2020-04-29 20:40:05 +03:00

281 lines
9.1 KiB
C#

//======= Copyright (c) Valve Corporation, All rights reserved. ===============
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using Valve.Newtonsoft.Json;
using System.IO;
namespace Valve.VR
{
[System.Serializable]
public class SteamVR_Input_BindingFile
{
public string app_key;
public Dictionary<string, SteamVR_Input_BindingFile_ActionList> bindings = new Dictionary<string, SteamVR_Input_BindingFile_ActionList>();
public string controller_type;
public string description;
public string name;
}
[System.Serializable]
public class SteamVR_Input_BindingFile_ActionList
{
public List<SteamVR_Input_BindingFile_Chord> chords = new List<SteamVR_Input_BindingFile_Chord>();
public List<SteamVR_Input_BindingFile_Pose> poses = new List<SteamVR_Input_BindingFile_Pose>();
public List<SteamVR_Input_BindingFile_Haptic> haptics = new List<SteamVR_Input_BindingFile_Haptic>();
public List<SteamVR_Input_BindingFile_Source> sources = new List<SteamVR_Input_BindingFile_Source>();
public List<SteamVR_Input_BindingFile_Skeleton> skeleton = new List<SteamVR_Input_BindingFile_Skeleton>();
}
[System.Serializable]
public class SteamVR_Input_BindingFile_Chord
{
public string output;
public List<List<string>> inputs = new List<List<string>>();
public override bool Equals(object obj)
{
if (obj is SteamVR_Input_BindingFile_Chord)
{
SteamVR_Input_BindingFile_Chord chord = (SteamVR_Input_BindingFile_Chord)obj;
if (this.output == chord.output && this.inputs != null && chord.inputs != null)
{
if (this.inputs.Count == chord.inputs.Count)
{
for (int thisIndex = 0; thisIndex < this.inputs.Count; thisIndex++)
{
if (this.inputs[thisIndex] != null && chord.inputs[thisIndex] != null && this.inputs[thisIndex].Count == chord.inputs[thisIndex].Count)
{
for (int thisSubIndex = 0; thisSubIndex < this.inputs[thisIndex].Count; thisSubIndex++)
{
if (this.inputs[thisIndex][thisSubIndex] != chord.inputs[thisIndex][thisSubIndex])
{
return false;
}
}
return true;
}
}
}
}
return false;
}
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
[System.Serializable]
public class SteamVR_Input_BindingFile_Pose
{
public string output;
public string path;
public override bool Equals(object obj)
{
if (obj is SteamVR_Input_BindingFile_Pose)
{
SteamVR_Input_BindingFile_Pose pose = (SteamVR_Input_BindingFile_Pose)obj;
if (pose.output == this.output && pose.path == this.path)
return true;
return false;
}
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
[System.Serializable]
public class SteamVR_Input_BindingFile_Haptic
{
public string output;
public string path;
public override bool Equals(object obj)
{
if (obj is SteamVR_Input_BindingFile_Haptic)
{
SteamVR_Input_BindingFile_Haptic pose = (SteamVR_Input_BindingFile_Haptic)obj;
if (pose.output == this.output && pose.path == this.path)
return true;
return false;
}
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
[System.Serializable]
public class SteamVR_Input_BindingFile_Skeleton
{
public string output;
public string path;
public override bool Equals(object obj)
{
if (obj is SteamVR_Input_BindingFile_Skeleton)
{
SteamVR_Input_BindingFile_Skeleton pose = (SteamVR_Input_BindingFile_Skeleton)obj;
if (pose.output == this.output && pose.path == this.path)
return true;
return false;
}
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
[System.Serializable]
public class SteamVR_Input_BindingFile_Source
{
public string path;
public string mode;
public SteamVR_Input_BindingFile_Source_Input_StringDictionary parameters = new SteamVR_Input_BindingFile_Source_Input_StringDictionary();
public SteamVR_Input_BindingFile_Source_Input inputs = new SteamVR_Input_BindingFile_Source_Input();
protected const string outputKeyName = "output";
public string GetOutput()
{
foreach (var input in inputs)
{
foreach (var entry in input.Value)
{
if (entry.Key == outputKeyName)
{
return entry.Value;
}
}
}
return null;
}
public override bool Equals(object obj)
{
if (obj is SteamVR_Input_BindingFile_Source)
{
SteamVR_Input_BindingFile_Source pose = (SteamVR_Input_BindingFile_Source)obj;
if (pose.mode == this.mode && pose.path == this.path)
{
bool parametersEqual = false;
if (parameters != null && pose.parameters != null)
{
if (this.parameters.Equals(pose.parameters))
parametersEqual = true;
}
else if (parameters == null && pose.parameters == null)
parametersEqual = true;
if (parametersEqual)
{
bool inputsEqual = false;
if (inputs != null && pose.inputs != null)
{
if (this.inputs.Equals(pose.inputs))
inputsEqual = true;
}
else if (inputs == null && pose.inputs == null)
inputsEqual = true;
return inputsEqual;
}
}
return false;
}
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
[System.Serializable]
public class SteamVR_Input_BindingFile_Source_Input : Dictionary<string, SteamVR_Input_BindingFile_Source_Input_StringDictionary>
{
public override bool Equals(object obj)
{
if (obj is SteamVR_Input_BindingFile_Source_Input)
{
SteamVR_Input_BindingFile_Source_Input sourceInput = (SteamVR_Input_BindingFile_Source_Input)obj;
if (this == sourceInput)
return true;
else
{
if (this.Count == sourceInput.Count)
{
foreach (var element in this)
{
if (sourceInput.ContainsKey(element.Key) == false)
return false;
if (this[element.Key].Equals(sourceInput[element.Key]) == false)
return false;
}
return true;
}
}
}
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
[System.Serializable]
public class SteamVR_Input_BindingFile_Source_Input_StringDictionary : Dictionary<string, string>
{
public override bool Equals(object obj)
{
if (obj is SteamVR_Input_BindingFile_Source_Input_StringDictionary)
{
SteamVR_Input_BindingFile_Source_Input_StringDictionary stringDictionary = (SteamVR_Input_BindingFile_Source_Input_StringDictionary)obj;
if (this == stringDictionary)
return true;
return (this.Count == stringDictionary.Count && !this.Except(stringDictionary).Any());
}
return base.Equals(obj);
}
public override int GetHashCode()
{
return base.GetHashCode();
}
}
}