/// <summary> Parse a DataBlock into a MaterialProps. Any missing variables will be set to their default value. </summary>
        /// <param name="dataBlock"></param>
        /// <returns></returns>
        public static MaterialProps Parse(List <string> dataBlock)
        {
            MaterialProps res = MaterialProps.Default();

            if (dataBlock.Count > 1)
            {
                float parsedValue;
                if (dataBlock.Count > (int)MatProp.maxForce && TryGetFloat(dataBlock[(int)MatProp.maxForce], out parsedValue))
                {
                    res.maxForce = (int)parsedValue;
                }
                if (dataBlock.Count > (int)MatProp.maxForceDist && TryGetFloat(dataBlock[(int)MatProp.maxForceDist], out parsedValue))
                {
                    res.maxForceDist = parsedValue;
                }
                if (dataBlock.Count > (int)MatProp.yieldDist && TryGetFloat(dataBlock[(int)MatProp.yieldDist], out parsedValue))
                {
                    if (float.IsNaN(parsedValue))
                    {
                        parsedValue = float.MaxValue;
                    }
                    res.yieldDist = parsedValue;
                }
                if (dataBlock.Count > (int)MatProp.hapticMagn && TryGetFloat(dataBlock[(int)MatProp.hapticMagn], out parsedValue))
                {
                    res.hapticForce = (int)parsedValue;
                }
                if (dataBlock.Count > (int)MatProp.hapticDur && TryGetFloat(dataBlock[(int)MatProp.hapticDur], out parsedValue))
                {
                    res.hapticDur = (int)parsedValue;
                }
            }
            return(res);
        }
        /// <summary> Retrieve the Material properties from the chosen Library. </summary>
        /// <param name="libName"></param>
        /// <param name="matName"></param>
        /// <returns></returns>
        public static MaterialProps GetMaterial(string matName)
        {
            matName = matName.ToLowerInvariant(); //always convert to lower case to prevent typos on Dev/User side;
            MaterialProps res;

            if (materials.TryGetValue(matName, out res))
            {
                return(res);
            }
            else
            {
                SenseGlove_Debugger.Log("Error loading " + matName + ": No such material loaded.");
            }
            return(MaterialProps.Default());
        }