protected override void Write(Stream output, DataFormats.Ranged <float> value, Endian endian, long ownerOffset)
 {
     throw new NotImplementedException();
 }
예제 #2
0
        private static object ParseProperty(XPathNavigator nav, object parent)
        {
            var    type = nav.ParseAttributeString("type");
            object value;

            switch (type)
            {
            case "Float32":
            {
                value = nav.ParseValueFloat32();
                break;
            }

            case "Int8":
            {
                value = nav.ParseValueInt8();
                break;
            }

            case "Int16":
            {
                value = nav.ParseValueInt16();
                break;
            }

            case "Int32":
            {
                value = nav.ParseValueInt32();
                break;
            }

            case "Int64":
            {
                value = nav.ParseValueInt64();
                break;
            }

            case "UInt8":
            {
                value = nav.ParseValueUInt8();
                break;
            }

            case "UInt16":
            {
                value = nav.ParseValueUInt16();
                break;
            }

            case "UInt32":
            {
                value = nav.ParseValueUInt32();
                break;
            }

            case "UInt64":
            {
                value = nav.ParseValueUInt64();
                break;
            }

            case "Boolean":
            {
                value = nav.ParseValueBoolean();
                break;
            }

            case "String":
            {
                value = nav.Value;
                break;
            }

            case "Symbol":
            {
                value = nav.ParseValueSymbol();
                break;
            }

            case "SymbolUC":
            {
                value = nav.ParseValueSymbolUpperCase();
                break;
            }

            case "WwiseID":
            {
                value = nav.ParseValueWwiseId();
                break;
            }

            case "Vector2":
            {
                var x = nav.ParseAttributeFloat32("x");
                var y = nav.ParseAttributeFloat32("y");
                value = new DataFormats.Vector2(x, y);
                break;
            }

            case "Vector3":
            {
                var x = nav.ParseAttributeFloat32("x");
                var y = nav.ParseAttributeFloat32("y");
                var z = nav.ParseAttributeFloat32("z");
                value = new DataFormats.Vector3(x, y, z);
                break;
            }

            case "Vector4":
            {
                var x = nav.ParseAttributeFloat32("x");
                var y = nav.ParseAttributeFloat32("y");
                var z = nav.ParseAttributeFloat32("z");
                var w = nav.ParseAttributeFloat32("w");
                value = new DataFormats.Vector4(x, y, z, w);
                break;
            }

            case "TransQuat":
            {
                var tx        = nav.ParseAttributeFloat32("tx");
                var ty        = nav.ParseAttributeFloat32("ty");
                var tz        = nav.ParseAttributeFloat32("tz");
                var rx        = nav.ParseAttributeFloat32("rx");
                var ry        = nav.ParseAttributeFloat32("ry");
                var rz        = nav.ParseAttributeFloat32("rz");
                var rw        = nav.ParseAttributeFloat32("rw");
                var transform = new DataFormats.Vector3(tx, ty, tz);
                var rotation  = new DataFormats.Quaternion(rx, ry, rz, rw);
                value = new DataFormats.TransQuaternion(rotation, transform);
                break;
            }

            case "Matrix44":
            {
                var v0  = nav.SelectSingleNode("V0");
                var v0X = v0.ParseAttributeFloat32("x");
                var v0Y = v0.ParseAttributeFloat32("y");
                var v0Z = v0.ParseAttributeFloat32("z");
                var v0W = v0.ParseAttributeFloat32("w");
                var v1  = nav.SelectSingleNode("V1");
                var v1X = v1.ParseAttributeFloat32("x");
                var v1Y = v1.ParseAttributeFloat32("y");
                var v1Z = v1.ParseAttributeFloat32("z");
                var v1W = v1.ParseAttributeFloat32("w");
                var v2  = nav.SelectSingleNode("V2");
                var v2X = v2.ParseAttributeFloat32("x");
                var v2Y = v2.ParseAttributeFloat32("y");
                var v2Z = v2.ParseAttributeFloat32("z");
                var v2W = v2.ParseAttributeFloat32("w");
                var v3  = nav.SelectSingleNode("V3");
                var v3X = v3.ParseAttributeFloat32("x");
                var v3Y = v3.ParseAttributeFloat32("y");
                var v3Z = v3.ParseAttributeFloat32("z");
                var v3W = v3.ParseAttributeFloat32("w");
                value = new DataFormats.Matrix44(
                    new DataFormats.Vector4(v0X, v0Y, v0Z, v0W),
                    new DataFormats.Vector4(v1X, v1Y, v1Z, v1W),
                    new DataFormats.Vector4(v2X, v2Y, v2Z, v2W),
                    new DataFormats.Vector4(v3X, v3Y, v3Z, v3W));
                break;
            }

            case "Int32Ranged":
            {
                var range = nav.ParseAttributeInt32("range");
                var dummy = nav.ParseValueInt32();
                value = new DataFormats.Ranged <int>(range, dummy);
                break;
            }

            case "WeightedListProperty":
            {
                throw new NotSupportedException();
            }

            case "Float32Ranged":
            {
                var range = nav.ParseAttributeFloat32("range");
                var dummy = nav.ParseValueFloat32();
                value = new DataFormats.Ranged <float>(range, dummy);
                break;
            }

            case "List":
            {
                value = ReadPropertyList(nav, parent);
                break;
            }

            case "PropSet":
            {
                value = ReadPropertySet(nav, parent);
                break;
            }

            default:
            {
                throw new NotImplementedException();
            }
            }
            return(value);
        }
 protected override void Write(Stream output, DataFormats.Ranged <int> value, Endian endian, long ownerOffset)
 {
     output.WriteValueS32(value.Range, endian);
     output.WriteValueS32(value.Value, endian);
 }