You cannot select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
		
			
		
			
				
	
	
		
			281 lines
		
	
	
		
			9.1 KiB
		
	
	
	
		
			C#
		
	
			
		
		
	
	
			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();
 | 
						|
        }
 | 
						|
    }
 | 
						|
} |