Пример #1
0
        public static List <byte> encodeDataAsList(DataType[] schema, object[] data, List <byte> output = null)
        {
            var converter  = new MiscUtil.Conversion.BigEndianBitConverter();
            int dataLength = 0;

            if (output == null)
            {
                output = new List <byte>();
            }
            for (var i = 0; i < schema.Length; i++)
            {
                if (schema[i] is DataVarying)
                {
                    var scheme       = (DataVarying)schema[i];
                    var schemeLength = scheme.encodeAsList(data[i], converter, output);
                    dataLength += schemeLength;
                }
                else
                {
                    dataLength += schema[i].length;
                    schema[i].encodeAsList(data[i], converter, output);
                }
            }
            return(output);
        }
Пример #2
0
        private static Matrix4x4 GetTransform(byte[] buffer)
        {
            Matrix4x4 t = new Matrix4x4();

            MiscUtil.Conversion.BigEndianBitConverter bc = new MiscUtil.Conversion.BigEndianBitConverter();

            // Surely i've missed something and there's a way to loop through this? Please?
            int i = 0;

            t.M11 = bc.ToSingle(buffer, i); i += 4;
            t.M12 = bc.ToSingle(buffer, i); i += 4;
            t.M13 = bc.ToSingle(buffer, i); i += 4;
            t.M14 = bc.ToSingle(buffer, i); i += 4;

            t.M21 = bc.ToSingle(buffer, i); i += 4;
            t.M22 = bc.ToSingle(buffer, i); i += 4;
            t.M23 = bc.ToSingle(buffer, i); i += 4;
            t.M24 = bc.ToSingle(buffer, i); i += 4;

            t.M31 = bc.ToSingle(buffer, i); i += 4;
            t.M32 = bc.ToSingle(buffer, i); i += 4;
            t.M33 = bc.ToSingle(buffer, i); i += 4;
            t.M34 = bc.ToSingle(buffer, i); i += 4;

            t.M41 = bc.ToSingle(buffer, i); i += 4;
            t.M42 = bc.ToSingle(buffer, i); i += 4;
            t.M43 = bc.ToSingle(buffer, i); i += 4;
            t.M44 = bc.ToSingle(buffer, i); i += 4;

            return(t);
        }
Пример #3
0
        public static byte[] encodeData(DataType[] schema, object[] data)
        {
            var converter  = new MiscUtil.Conversion.BigEndianBitConverter();
            int dataLength = 0;

            byte[][] dataParts = new byte[schema.Length][];
            for (var i = 0; i < schema.Length; i++)
            {
                if (schema[i] is DataVarying)
                {
                    var scheme     = (DataVarying)schema[i];
                    var schemeData = scheme.encode(data[i], converter);
                    dataLength  += schemeData.Length;
                    dataParts[i] = schemeData;
                }
                else
                {
                    dataLength  += schema[i].length;
                    dataParts[i] = schema[i].encode(data[i], converter);
                }
            }
            var output = new byte[dataLength];
            var offset = 0;

            for (var i = 0; i < schema.Length; i++)
            {
                System.Buffer.BlockCopy(dataParts[i], 0, output, offset, dataParts[i].Length);
                offset += dataParts[i].Length;
            }
            return(output);
        }
Пример #4
0
        private RenderDataSource createRenderDataSourceFromNodes(CNode rdsNode, CNode dbNode)
        {
            MiscUtil.Conversion.BigEndianBitConverter bc       = new MiscUtil.Conversion.BigEndianBitConverter();
            CustomVertex.PositionNormalColored[]      vertices = new CustomVertex.PositionNormalColored[(int)dbNode.attributes["elementCount"].data];

            Vector3 pos = new Vector3();
            int     color;
            Vector3 normal      = new Vector3();
            int     vertexCount = 0;

            for (int i = 0; i < (int)dbNode.attributes["size"].data; i += 28)
            {
                pos.X = bc.ToSingle(dbNode.subNodes[3].data, i);
                pos.Y = bc.ToSingle(dbNode.subNodes[3].data, i + 4);
                pos.Z = bc.ToSingle(dbNode.subNodes[3].data, i + 8);

                color = bc.ToInt32(dbNode.subNodes[3].data, i + 12);

                normal.X = bc.ToSingle(dbNode.subNodes[3].data, i + 16);
                normal.Y = bc.ToSingle(dbNode.subNodes[3].data, i + 20);
                normal.Z = bc.ToSingle(dbNode.subNodes[3].data, i + 24);

                vertices[vertexCount] = new CustomVertex.PositionNormalColored(pos, normal, color);
                vertexCount++;
            }

            int indexCount = (int)rdsNode.subNodes[0].attributes["count"].data;

            ushort[] indices = new ushort[indexCount];
            for (int i = 0; i < indexCount; i++)
            {
                indices[i] = bc.ToUInt16(rdsNode.subNodes[0].subNodes[0].data, i * 2);
            }
            return(new RenderDataSource(rdsNode.attributes["id"].value, vertices, indices));
        }
Пример #5
0
 public virtual int encodeAsList(object data, MiscUtil.Conversion.BigEndianBitConverter converter, List <byte> output)
 {
     // Only a few types arae actually going to be encoded as lists
     // For convenience sake we can get away with just using the byte arrays and
     // Add them to the list
     byte[] outputArray = encode(data, converter);
     foreach (byte b in outputArray)
     {
         output.Add(b);
     }
     return(outputArray.Length);
 }
Пример #6
0
        public static object[] decodeData(DataType[] schema, byte[] data)
        {
            var converter = new MiscUtil.Conversion.BigEndianBitConverter();
            var output    = new object[schema.Length];
            var offset    = 0;

            for (var i = 0; i < schema.Length; i++)
            {
                if (schema[i] is DataVarying)
                {
                    var scheme = (DataVarying)schema[i];
                    output[i] = scheme.decode(data, converter, offset);
                    offset   += scheme.getLength(data, converter, offset);
                }
                else
                {
                    output[i] = schema[i].decode(data, converter, offset);
                    offset   += schema[i].length;
                }
            }
            return(output);
        }
Пример #7
0
        private Matrix getTransform(byte[] buffer)
        {
            Matrix t = new Matrix();
            MiscUtil.Conversion.BigEndianBitConverter bc = new MiscUtil.Conversion.BigEndianBitConverter();

            // Surely i've missed something and there's a way to loop through this? Please?
            int i = 0;
            t.M11 = bc.ToSingle(buffer, i); i += 4;
            t.M12 = bc.ToSingle(buffer, i); i += 4;
            t.M13 = bc.ToSingle(buffer, i); i += 4;
            t.M14 = bc.ToSingle(buffer, i); i += 4;

            t.M21 = bc.ToSingle(buffer, i); i += 4;
            t.M22 = bc.ToSingle(buffer, i); i += 4;
            t.M23 = bc.ToSingle(buffer, i); i += 4;
            t.M24 = bc.ToSingle(buffer, i); i += 4;

            t.M31 = bc.ToSingle(buffer, i); i += 4;
            t.M32 = bc.ToSingle(buffer, i); i += 4;
            t.M33 = bc.ToSingle(buffer, i); i += 4;
            t.M34 = bc.ToSingle(buffer, i); i += 4;

            t.M41 = bc.ToSingle(buffer, i); i += 4;
            t.M42 = bc.ToSingle(buffer, i); i += 4;
            t.M43 = bc.ToSingle(buffer, i); i += 4;
            t.M44 = bc.ToSingle(buffer, i); i += 4;

            return t;
        }
Пример #8
0
        private RenderDataSource createRenderDataSourceFromNodes(CNode rdsNode, CNode dbNode)
        {
            MiscUtil.Conversion.BigEndianBitConverter bc = new MiscUtil.Conversion.BigEndianBitConverter();
            CustomVertex.PositionNormalColored[] vertices = new CustomVertex.PositionNormalColored[(int)dbNode.attributes["elementCount"].data];

            Vector3 pos = new Vector3();
            int color;
            Vector3 normal = new Vector3();
            int vertexCount = 0;
            for (int i = 0; i < (int)dbNode.attributes["size"].data; i += 28) {
                pos.X = bc.ToSingle(dbNode.subNodes[3].data, i);
                pos.Y = bc.ToSingle(dbNode.subNodes[3].data, i + 4);
                pos.Z = bc.ToSingle(dbNode.subNodes[3].data, i + 8);

                color = bc.ToInt32(dbNode.subNodes[3].data, i + 12);

                normal.X = bc.ToSingle(dbNode.subNodes[3].data, i + 16);
                normal.Y = bc.ToSingle(dbNode.subNodes[3].data, i + 20);
                normal.Z = bc.ToSingle(dbNode.subNodes[3].data, i + 24);

                vertices[vertexCount] = new CustomVertex.PositionNormalColored(pos, normal, color);
                vertexCount++;
            }

            int indexCount = (int)rdsNode.subNodes[0].attributes["count"].data;
            ushort[] indices = new ushort[indexCount];
            for (int i = 0; i < indexCount; i++) {
                indices[i] = bc.ToUInt16(rdsNode.subNodes[0].subNodes[0].data, i * 2);
            }
            return new RenderDataSource(rdsNode.attributes["id"].value, vertices, indices);
        }
Пример #9
0
        public void Check()
        {
            System.IO.Stream reader = Console.OpenStandardInput();
               MiscUtil.Conversion.BigEndianBitConverter bebc = new MiscUtil.Conversion.BigEndianBitConverter();
               EndianBinaryWriter writer = new MiscUtil.IO.EndianBinaryWriter(bebc, Console.OpenStandardOutput());
               byte[] input = new byte[2];

               // is there a better way to check for data on the stream?
               while (reader.Read(input, 0, 2) > -1)
               {
                    ushort len = bebc.ToUInt16(input, 0);
                    byte[] incomingBytes = new byte[len];
                    reader.Read(incomingBytes, 0, len);
                    string incomingData = System.Text.Encoding.ASCII.GetString(incomingBytes);

                    using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\output.log", true))
                    {
                         file.WriteLine(incomingData + "\r\n---------------------------------------\r\n");
                    }

                    string[] parse = System.Text.RegularExpressions.Regex.Split(incomingData, ":");
                    string command = parse[0];
                    string username = parse[1];
                    string domain = parse[2];

                    short aa = 2;
                    writer.Write(aa);
                    short bbtrue = 1;
                    short bbfalse = 0;
                    switch (command)
                    {
                         case "auth":
                              if (domain == "web.chat")
                              {
                                   writer.Write(bbtrue);
                              }
                              else
                              {
                                   string password = parse[3];
                                   WeavverMembershipProvider wup = new WeavverMembershipProvider();
                                   if (wup.ValidateUser(username, password))
                                   {
                                        writer.Write(bbtrue);
                                   }
                                   else
                                   {
                                        writer.Write(bbfalse);
                                   }
                              }
                              break;

                         case "isuser":
                              writer.Write(bbtrue);
                              break;

                         case "setpass":
                              writer.Write(bbfalse);
                              break;
                    }
               }
               System.Threading.Thread.Sleep(100);
        }
Пример #10
0
 public abstract byte[] encode(object data, MiscUtil.Conversion.BigEndianBitConverter converter);
Пример #11
0
 public abstract object decode(byte[] data, MiscUtil.Conversion.BigEndianBitConverter converter, int offset = 0);
Пример #12
0
 public abstract int getLength(byte[] data, MiscUtil.Conversion.BigEndianBitConverter converter, int offset = 0);
Пример #13
0
        public void Check()
        {
            System.IO.Stream reader = Console.OpenStandardInput();
            MiscUtil.Conversion.BigEndianBitConverter bebc = new MiscUtil.Conversion.BigEndianBitConverter();
            EndianBinaryWriter writer = new MiscUtil.IO.EndianBinaryWriter(bebc, Console.OpenStandardOutput());

            byte[] input = new byte[2];

            // is there a better way to check for data on the stream?
            while (reader.Read(input, 0, 2) > -1)
            {
                ushort len           = bebc.ToUInt16(input, 0);
                byte[] incomingBytes = new byte[len];
                reader.Read(incomingBytes, 0, len);
                string incomingData = System.Text.Encoding.ASCII.GetString(incomingBytes);

                using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\\output.log", true))
                {
                    file.WriteLine(incomingData + "\r\n---------------------------------------\r\n");
                }

                string[] parse    = System.Text.RegularExpressions.Regex.Split(incomingData, ":");
                string   command  = parse[0];
                string   username = parse[1];
                string   domain   = parse[2];

                short aa = 2;
                writer.Write(aa);
                short bbtrue  = 1;
                short bbfalse = 0;
                switch (command)
                {
                case "auth":
                    if (domain == "web.chat")
                    {
                        writer.Write(bbtrue);
                    }
                    else
                    {
                        string password = parse[3];
                        WeavverMembershipProvider wup = new WeavverMembershipProvider();
                        if (wup.ValidateUser(username, password))
                        {
                            writer.Write(bbtrue);
                        }
                        else
                        {
                            writer.Write(bbfalse);
                        }
                    }
                    break;

                case "isuser":
                    writer.Write(bbtrue);
                    break;

                case "setpass":
                    writer.Write(bbfalse);
                    break;
                }
            }
            System.Threading.Thread.Sleep(100);
        }