Exemplo n.º 1
0
        /// <summary>
        /// Tries to parse a key value line.
        /// </summary>
        /// <param name="line">The line (e.g. '"editorversion" "400"').</param>
        /// <param name="key">The key that was found.</param>
        /// <param name="value">The value that was found.</param>
        /// <returns>True if successful else false.</returns>
        private bool TryParsekeyValue(string line, out string key, out object value)
        {
            key   = "";
            value = null;

            if (!line.Contains('"'))
            {
                return(false);
            }
            int idx = line.IndexOf('"', 1);

            key = line.Substring(1, idx - 1);
            string rawvalue = line.Substring(idx + 3, line.Length - idx - 4);

            if (rawvalue.Length == 0)
            {
                return(false);
            }

            int   vi;
            float vf;

            // detect plane definition.
            if (rawvalue[0] == '(')
            {
                string[]   values = rawvalue.Replace("(", "").Replace(")", "").Split(' ');
                VmfVector3 p1     = new VmfVector3(float.Parse(values[0], CultureInfo.InvariantCulture), float.Parse(values[1], CultureInfo.InvariantCulture), float.Parse(values[2], CultureInfo.InvariantCulture));
                VmfVector3 p2     = new VmfVector3(float.Parse(values[3], CultureInfo.InvariantCulture), float.Parse(values[4], CultureInfo.InvariantCulture), float.Parse(values[5], CultureInfo.InvariantCulture));
                VmfVector3 p3     = new VmfVector3(float.Parse(values[6], CultureInfo.InvariantCulture), float.Parse(values[7], CultureInfo.InvariantCulture), float.Parse(values[8], CultureInfo.InvariantCulture));
                value = new VmfPlane(p1, p2, p3);
                return(true);
            }
            // detect uv definition.
            else if (rawvalue[0] == '[')
            {
                string[] values = rawvalue.Replace("[", "").Replace("]", "").Split(' ');
                value = new VmfAxis(new VmfVector3(float.Parse(values[0], CultureInfo.InvariantCulture), float.Parse(values[1], CultureInfo.InvariantCulture), float.Parse(values[2], CultureInfo.InvariantCulture)), float.Parse(values[3], CultureInfo.InvariantCulture), float.Parse(values[4], CultureInfo.InvariantCulture));
                return(true);
            }
            // detect floating point value.
            else if (rawvalue.Contains('.') && float.TryParse(rawvalue, out vf))
            {
                value = vf;
                return(true);
            }
            // detect integer value.
            else if (Int32.TryParse(rawvalue, out vi))
            {
                value = vi;
                return(true);
            }
            // probably a string value.
            else
            {
                value = rawvalue;
                return(true);
            }
        }
Exemplo n.º 2
0
 /// <summary>
 /// Initializes a new instance of the <see cref="VmfPlane"/> class.
 /// </summary>
 /// <param name="p1">The first point of the plane definition.</param>
 /// <param name="p2">The second point of the plane definition.</param>
 /// <param name="p3">The third point of the plane definition.</param>
 public VmfPlane(VmfVector3 p1, VmfVector3 p2, VmfVector3 p3)
 {
     P1 = p1;
     P2 = p2;
     P3 = p3;
 }
Exemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="VmfAxis"/> class.
 /// </summary>
 /// <param name="vector">The vector.</param>
 /// <param name="translation">The translation.</param>
 /// <param name="scale">The scale.</param>
 public VmfAxis(VmfVector3 vector, float translation, float scale)
 {
     Vector      = vector;
     Translation = translation;
     Scale       = scale;
 }