Пример #1
0
 public RequestFrame GetFrame()
 {
     var wb = new BEBinaryWriter();
     wb.WriteFrameHeader(0x01, _flags, (byte) _streamId, OpCode);
     wb.WriteLongString(_cqlQuery);
     wb.WriteInt16((short) _consistency);
     return wb.GetFrame();
 }
Пример #2
0
 public RequestFrame GetFrame()
 {
     var wb = new BEBinaryWriter();
     wb.WriteFrameHeader(RequestFrame.ProtocolRequestVersionByte, _flags, (byte)_streamId, OpCode);
     wb.WriteShortBytes(_id);
     wb.WriteUInt16((ushort) _values.Length);
     for (int i = 0; i < _metadata.Columns.Length; i++)
     {
         var bytes = _metadata.ConvertFromObject(i, _values[i]);
         wb.WriteBytes(bytes);
     }
     wb.WriteInt16((short)_consistency);
     return wb.GetFrame();
 }
Пример #3
0
 public void WriteToBatch(BEBinaryWriter wb)
 {
     wb.WriteByte(0); //not a prepared query
     wb.WriteLongString(_cqlQuery);
     if (_queryProtocolOptions.Values == null || _queryProtocolOptions.Values.Length == 0)
     {
         wb.WriteInt16(0); //not values
     }
     else
     {
         wb.WriteUInt16((ushort)_queryProtocolOptions.Values.Length);
         for (int i = 0; i < _queryProtocolOptions.Values.Length; i++)
         {
             byte[] bytes = TypeInterpreter.InvCqlConvert(_queryProtocolOptions.Values[i]);
             wb.WriteBytes(bytes);
         }
     }
 }
Пример #4
0
        public void Save(string path)
        {
            using (FileStream fs = new FileStream(path, FileMode.Create))
                using (BEBinaryWriter bw = new BEBinaryWriter(fs))
                {
                    int    matListLength;
                    string name;

                    //output header
                    bw.WriteInt32(0x12);
                    bw.WriteInt32(0x8);
                    bw.WriteInt32(0xface);
                    bw.WriteInt32(0x2);

                    for (int i = 0; i < DatMeshes.Count; i++)
                    {
                        DatMesh dm = DatMeshes[i];
                        matListLength = 0;

                        for (int j = 0; j < dm.Mesh.Materials.Count; j++)
                        {
                            matListLength += dm.Mesh.Materials[j].Length + 1;
                        }

                        name = dm.Name;
                        //Console.WriteLine(name + " : " + dm.Mesh.Verts.Count);

                        //begin name section
                        bw.WriteInt32(54);
                        bw.WriteInt32(name.Length + 3);
                        bw.WriteByte(0);
                        bw.WriteByte(0);
                        bw.Write(name.ToCharArray());
                        bw.WriteByte(0);
                        //end name section

                        //begin vertex data
                        bw.WriteInt32(23);
                        bw.WriteInt32((dm.Mesh.Verts.Count * 12) + 4);
                        bw.WriteInt32(dm.Mesh.Verts.Count);

                        for (int j = 0; j < dm.Mesh.Verts.Count; j++)
                        {
                            bw.WriteSingle(dm.Mesh.Verts[j].X);
                            bw.WriteSingle(dm.Mesh.Verts[j].Y);
                            bw.WriteSingle(dm.Mesh.Verts[j].Z);
                        }
                        //end vertex data

                        //begin uv data (00 00 00 18)
                        bw.WriteInt32(24);
                        bw.WriteInt32((dm.Mesh.UVs.Count * 8) + 4);
                        bw.WriteInt32(dm.Mesh.UVs.Count);

                        for (int j = 0; j < dm.Mesh.UVs.Count; j++)
                        {
                            bw.WriteSingle(dm.Mesh.UVs[j].X);
                            bw.WriteSingle(dm.Mesh.UVs[j].Y);
                        }
                        //end uv data

                        //begin face data (00 00 00 35)
                        bw.WriteInt32(53);
                        bw.WriteInt32((dm.Mesh.Faces.Count * 9) + 4);
                        bw.WriteInt32(dm.Mesh.Faces.Count);

                        for (int j = 0; j < dm.Mesh.Faces.Count; j++)
                        {
                            bw.WriteInt16(dm.Mesh.Faces[j].V1);
                            bw.WriteInt16(dm.Mesh.Faces[j].V2);
                            bw.WriteInt16(dm.Mesh.Faces[j].V3);
                            bw.WriteByte(0); // smoothing groups 9 - 16
                            bw.WriteByte(1); // smoothing groups 1 - 8
                            bw.WriteByte(0); // number of edges, 0 and 3 = tri.  4 = quad.
                        }
                        //end face data

                        //begin material list
                        bw.WriteInt32(22);
                        bw.WriteInt32(matListLength + 4);
                        bw.WriteInt32(dm.Mesh.Materials.Count);

                        for (int j = 0; j < dm.Mesh.Materials.Count; j++)
                        {
                            bw.Write(dm.Mesh.Materials[j].ToCharArray());
                            bw.WriteByte(0);
                        }
                        //end material list

                        //begin face textures
                        bw.WriteInt32(26);
                        bw.WriteInt32((dm.Mesh.Faces.Count * 2) + 4);
                        bw.WriteInt32(dm.Mesh.Faces.Count);
                        bw.WriteInt32(2);

                        for (int j = 0; j < dm.Mesh.Faces.Count; j++)
                        {
                            bw.WriteInt16(dm.Mesh.Faces[j].MaterialID + 1);
                        }
                        //end face textures

                        bw.WriteInt32(0);
                        bw.WriteInt32(0);
                    }
                }
        }