public static float[] GetFloatValues(this ConfigNode node, String name, float[] defaults) { String baseVal = node.GetStringValue(name); if (!String.IsNullOrEmpty(baseVal)) { String[] split = baseVal.Split(new char[] { ',' }); float[] vals = new float[split.Length]; for (int i = 0; i < split.Length; i++) { vals[i] = ROEUtil.safeParseFloat(split[i]); } return(vals); } return(defaults); }
public static FloatCurve GetFloatCurve(this ConfigNode node, String name, FloatCurve defaultValue = null) { FloatCurve curve = new FloatCurve(); if (node.HasNode(name)) { ConfigNode curveNode = node.GetNode(name); String[] values = curveNode.GetValues("key"); int len = values.Length; String[] splitValue; float a, b, c, d; for (int i = 0; i < len; i++) { splitValue = Regex.Replace(values[i], @"\s+", " ").Split(' '); if (splitValue.Length > 2) { a = ROEUtil.safeParseFloat(splitValue[0]); b = ROEUtil.safeParseFloat(splitValue[1]); c = ROEUtil.safeParseFloat(splitValue[2]); d = ROEUtil.safeParseFloat(splitValue[3]); curve.Add(a, b, c, d); } else { a = ROEUtil.safeParseFloat(splitValue[0]); b = ROEUtil.safeParseFloat(splitValue[1]); curve.Add(a, b); } } } else if (defaultValue != null) { foreach (Keyframe f in defaultValue.Curve.keys) { curve.Add(f.time, f.value, f.inTangent, f.outTangent); } } else { curve.Add(0, 0); curve.Add(1, 1); } return(curve); }