/// <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()); }