Esempio n. 1
0
            /// <summary>
            ///     Grabs the values of a Float Array Parameter with the given name.
            /// </summary>
            /// <param name="data">The SERI data</param>
            /// <param name="name">The name of the parameter</param>
            /// <returns></returns>
            public float[] getFloatArrayParameter(string name)
            {
                SERIParameter param = getParameter(name);

                if (param == null)
                {
                    return(null);
                }
                return(((FloatArray)param).Values);
            }
Esempio n. 2
0
            /// <summary>
            ///     Grabs the values of a Nested Array Parameter with the given name.
            /// </summary>
            /// <param name="data">The SERI data</param>
            /// <param name="name">The name of the parameter</param>
            /// <returns></returns>
            public SERIParameter[] getNestArrayParameter(string name)
            {
                SERIParameter param = getParameter(name);

                if (param == null)
                {
                    return(null);
                }
                return(((NestedArray)param).Values);
            }
Esempio n. 3
0
            /// <summary>
            ///     Grabs the values of a Integer Array Parameter with the given name.
            /// </summary>
            /// <param name="data">The SERI data</param>
            /// <param name="name">The name of the parameter</param>
            /// <returns></returns>
            public int[] getIntegerArrayParameter(string name)
            {
                SERIParameter param = getParameter(name);

                if (param == null)
                {
                    return(null);
                }
                return(((IntegerArray)param).Values);
            }
Esempio n. 4
0
            /// <summary>
            ///     Grabs the values of a Boolean Array Parameter with the given name.
            /// </summary>
            /// <param name="data">The SERI data</param>
            /// <param name="name">The name of the parameter</param>
            /// <returns></returns>
            public bool[] getBooleanArrayParameter(string name)
            {
                SERIParameter param = getParameter(name);

                if (param == null)
                {
                    return(null);
                }
                return(((BooleanArray)param).Values);
            }
Esempio n. 5
0
            /// <summary>
            ///     Grabs the value of a Float Parameter with the given name.
            /// </summary>
            /// <param name="data">The SERI data</param>
            /// <param name="name">The name of the parameter</param>
            /// <returns></returns>
            public float getFloatParameter(string name)
            {
                SERIParameter param = getParameter(name);

                if (param == null)
                {
                    return(0);
                }
                return(((Float)param).Value);
            }
Esempio n. 6
0
            /// <summary>
            ///     Grabs the values of a String Array Parameter with the given name.
            /// </summary>
            /// <param name="data">The SERI data</param>
            /// <param name="name">The name of the parameter</param>
            /// <returns></returns>
            public string[] getStringArrayParameter(string name)
            {
                SERIParameter param = getParameter(name);

                if (param == null)
                {
                    return(null);
                }
                return(((StringArray)param).Values);
            }
Esempio n. 7
0
            /// <summary>
            ///     Grabs the value of a Boolean Parameter with the given name.
            /// </summary>
            /// <param name="data">The SERI data</param>
            /// <param name="name">The name of the parameter</param>
            /// <returns></returns>
            public bool getBooleanParameter(string name)
            {
                SERIParameter param = getParameter(name);

                if (param == null)
                {
                    return(false);
                }
                return(((Boolean)param).Value);
            }
Esempio n. 8
0
            /// <summary>
            ///     Grabs the value of a Integer Parameter with the given name.
            /// </summary>
            /// <param name="data">The SERI data</param>
            /// <param name="name">The name of the parameter</param>
            /// <returns></returns>
            public int getIntegerParameter(string name)
            {
                SERIParameter param = getParameter(name);

                if (param == null)
                {
                    return(0);
                }
                return(((Integer)param).Value);
            }
Esempio n. 9
0
            /// <summary>
            ///     Grabs the value of a String Parameter with the given name.
            /// </summary>
            /// <param name="data">The SERI data</param>
            /// <param name="name">The name of the parameter</param>
            /// <returns></returns>
            public string getStringParameter(string name)
            {
                SERIParameter param = getParameter(name);

                if (param == null)
                {
                    return(null);
                }
                return(((String)param).Value);
            }
Esempio n. 10
0
        public SERIParameter ParseSERIArray(Stream fileData, Stream names, byte[] pointers, int valuesOffset, string name)
        {
            using (var br = new BinaryReaderX(fileData, true))
            {
                var arrayDataType = br.ReadString(1);
                br.BaseStream.Position += 1;
                var     arrayLength = br.ReadInt16();
                short[] pointersA   = br.ReadMultiple <short>(arrayLength).ToArray();

                switch (arrayDataType)
                {
                case "s":      //Of String
                    string[] StringArray = new string[arrayLength];

                    for (int i = 0; i < pointersA.Length; i++)
                    {
                        using (var namesB = new BinaryReaderX(names, true))
                        {
                            namesB.BaseStream.Position = pointersA[i];
                            string ItemName = namesB.ReadCStringA();
                            StringArray[i] = ItemName;
                        }
                    }

                    return(new StringArray(name, StringArray));

                case "i":     //Of Integer
                    switch (name)
                    {
                    case "texi":
                    case "model":
                    case "cloth":
                    case "list":
                        string[] NameArray = new string[arrayLength];

                        for (int i = 0; i < pointersA.Length; i++)
                        {
                            using (var namesB = new BinaryReaderX(names, true))
                                using (var pointersB = new BinaryReaderX(new MemoryStream(pointers)))
                                {
                                    br.BaseStream.Position        = valuesOffset + pointersA[i];
                                    pointersB.BaseStream.Position = (br.ReadInt32() - 1) * 4;
                                    namesB.BaseStream.Position    = pointersB.ReadInt32();
                                    string ItemName = namesB.ReadCStringA();
                                    NameArray[i] = ItemName;
                                }
                        }

                        return(new StringArray(name, NameArray));

                    default:
                        int[] IntArray = new int[arrayLength];

                        for (int i = 0; i < pointersA.Length; i++)
                        {
                            br.BaseStream.Position = valuesOffset + pointersA[i];
                            IntArray[i]            = br.ReadInt32();
                        }

                        return(new IntegerArray(name, IntArray));
                    }

                case "b":     //Of Boolean
                    bool[] BooleanArray = new bool[arrayLength];

                    for (int i = 0; i < pointersA.Length; i++)
                    {
                        br.BaseStream.Position = valuesOffset + pointersA[i];
                        BooleanArray[i]        = br.ReadByte() == 1;
                    }

                    return(new BooleanArray(name, BooleanArray));

                case "f":     //Of Float
                    float[] FloatArray = new float[arrayLength];

                    for (int i = 0; i < pointersA.Length; i++)
                    {
                        br.BaseStream.Position = valuesOffset + pointersA[i];
                        FloatArray[i]          = br.ReadSingle();
                    }

                    return(new FloatArray(name, FloatArray));

                case "h":     //Of Array
                    SERIParameter[] NestedArray = new SERIParameter[arrayLength];

                    for (int i = 0; i < pointersA.Length; i++)
                    {
                        br.BaseStream.Position = valuesOffset + pointersA[i];
                        ushort          Count            = br.ReadUInt16();
                        long            TypesTableOffset = valuesOffset + pointersA[i] + 2 + Count * 4;
                        SERIParameter[] Arrays           = new SERIParameter[Count];
                        for (int Index = 0; Index < Count; Index++)
                        {
                            using (var namesB = new BinaryReaderX(names, true))
                            {
                                br.BaseStream.Position = valuesOffset + pointersA[i] + 2 + Index * 4;
                                ushort NameOffset  = br.ReadUInt16();
                                ushort ValueOffset = br.ReadUInt16();

                                namesB.BaseStream.Position = NameOffset;
                                string ArrayName = namesB.ReadCStringA();

                                br.BaseStream.Seek(TypesTableOffset + Index, SeekOrigin.Begin);
                                string ValueType = br.ReadString(1);

                                Arrays[Index] = ParseSERIParameter(
                                    br.BaseStream,
                                    names,
                                    pointers,
                                    ValueType,
                                    name,
                                    ValueOffset,
                                    valuesOffset);
                            }
                        }

                        NestedArray[i] = new NestedArray(null, Arrays);
                    }

                    return(new NestedArray(name, NestedArray));

                default:
                    throw new Exception($"Type {arrayDataType} is unknown!");
                }
            }
        }
Esempio n. 11
0
 public void Add(SERIParameter Parameter)
 {
     Parameters.Add(Parameter);
 }