本文整理汇总了C#中StreamHandler.UnalignedReadBit方法的典型用法代码示例。如果您正苦于以下问题:C# StreamHandler.UnalignedReadBit方法的具体用法?C# StreamHandler.UnalignedReadBit怎么用?C# StreamHandler.UnalignedReadBit使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类StreamHandler
的用法示例。
在下文中一共展示了StreamHandler.UnalignedReadBit方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ReadByteMask
protected void ReadByteMask(StreamHandler reader, ref byte b)
{
b = reader.UnalignedReadBit() ? (byte)1 : (byte)0;
}
示例2: MovementInfo
public unsafe MovementInfo(StreamHandler Reader)
{
var guid = new WowGuid();
this.HaveAttackingTarget = Reader.UnalignedReadBit();
guid.Bytes[2] = Reader.UnalignedReadTinyInt(1);
this.HaveVehicleData = Reader.UnalignedReadBit();
guid.Bytes[1] = Reader.UnalignedReadTinyInt(1);
guid.Bytes[4] = Reader.UnalignedReadTinyInt(1);
guid.Bytes[3] = Reader.UnalignedReadTinyInt(1);
this.HaveTransportTime = Reader.UnalignedReadBit();
this.HaveGameObjectPosition = Reader.UnalignedReadBit();
bool field_1C8 = Reader.UnalignedReadBit();
bool field_1AC = Reader.UnalignedReadBit();
this.HaveGameObjectRotation = Reader.UnalignedReadBit();
this.Living = Reader.UnalignedReadBit();
this.HavePosition = Reader.UnalignedReadBit();
var arrCounter = Reader.UnalignedReadInt(24);
guid.Bytes[0] = Reader.UnalignedReadTinyInt(1);
bool havePFlags = false;
WowGuid p_guid;
uint splinePoints = 0;
bool havePFlags2 = false;
bool haveOrientation = false;
if (this.Living)
{
this.HaveTransportData = Reader.UnalignedReadBit();
if (this.HaveTransportData)
{
fixed (byte* bytes = this.TransportGuid.Bytes)
{
bytes[2] = Reader.UnalignedReadTinyInt(1);
bytes[7] = Reader.UnalignedReadTinyInt(1);
bytes[5] = Reader.UnalignedReadTinyInt(1);
this.HaveTransportTime3 = Reader.UnalignedReadBit();
bytes[3] = Reader.UnalignedReadTinyInt(1);
bytes[0] = Reader.UnalignedReadTinyInt(1);
bytes[4] = Reader.UnalignedReadTinyInt(1);
bytes[1] = Reader.UnalignedReadTinyInt(1);
this.HaveTransportTime2 = Reader.UnalignedReadBit();
bytes[6] = Reader.UnalignedReadTinyInt(1);
}
}
this.HaveSpline2 = Reader.UnalignedReadBit();
p_guid.Bytes[7] = Reader.UnalignedReadTinyInt(1);
p_guid.Bytes[6] = Reader.UnalignedReadTinyInt(1);
p_guid.Bytes[5] = Reader.UnalignedReadTinyInt(1);
p_guid.Bytes[2] = Reader.UnalignedReadTinyInt(1);
p_guid.Bytes[4] = Reader.UnalignedReadTinyInt(1);
havePFlags = !Reader.UnalignedReadBit();
p_guid.Bytes[1] = Reader.UnalignedReadTinyInt(1);
this.SelfTarget = Reader.UnalignedReadBit();
this.TimeStamp = !Reader.UnalignedReadBit() ? 1U : 0U;
havePFlags2 = !Reader.UnalignedReadBit();
if (this.HaveSpline2)
{
this.HaveSpline = Reader.UnalignedReadBit();
if (this.HaveSpline)
{
this.Spline.HaveDurationMultiplier = Reader.UnalignedReadBit();
this.Spline.Flags = (SplineFlags)Reader.UnalignedReadInt(25);
this.Spline.SplineMode = (SplineMode)Reader.UnalignedReadTinyInt(2);
this.Spline.HaveUnknown1 = Reader.UnalignedReadBit();
splinePoints = Reader.UnalignedReadInt(22);
var type = Reader.UnalignedReadTinyInt(2);
switch (type)
{
case 0:
this.Spline.SplineType = SplineType.FacingSpot;
break;
case 1:
this.Spline.SplineType = SplineType.Normal;
break;
case 2:
this.Spline.SplineType = SplineType.FacingTarget;
break;
case 3:
this.Spline.SplineType = SplineType.FacingAngle;
break;
}
if (this.Spline.SplineType == SplineType.FacingTarget)
{
fixed (byte* bytes = this.Spline.FacingTarget.Bytes)
{
bytes[7] = Reader.UnalignedReadTinyInt(1);
bytes[3] = Reader.UnalignedReadTinyInt(1);
bytes[4] = Reader.UnalignedReadTinyInt(1);
bytes[2] = Reader.UnalignedReadTinyInt(1);
bytes[1] = Reader.UnalignedReadTinyInt(1);
bytes[6] = Reader.UnalignedReadTinyInt(1);
bytes[0] = Reader.UnalignedReadTinyInt(1);
bytes[5] = Reader.UnalignedReadTinyInt(1);
}
}
}
}
//.........这里部分代码省略.........
示例3: ReadElement
protected virtual void ReadElement(StreamHandler reader, MovementStatusElements element, MovementStatus status, byte[] guid, byte[] tguid)
{
if (element >= MovementStatusElements.GuidByte0 && element <= MovementStatusElements.GuidByte7)
{
ReadByteMask(reader, ref guid[element - MovementStatusElements.GuidByte0]);
return;
}
if (element >= MovementStatusElements.TransportGuidByte0 &&
element <= MovementStatusElements.TransportGuidByte7)
{
if (status.HaveTransportData)
ReadByteMask(reader, ref tguid[element - MovementStatusElements.TransportGuidByte0]);
return;
}
if (element >= MovementStatusElements.GuidByte0_2 && element <= MovementStatusElements.GuidByte7_2)
{
ReadByteSeq(reader, ref guid[element - MovementStatusElements.GuidByte0_2]);
return;
}
if (element >= MovementStatusElements.TransportGuidByte0_2 &&
element <= MovementStatusElements.TransportGuidByte7_2)
{
if (status.HaveTransportData)
ReadByteSeq(reader, ref tguid[element - MovementStatusElements.TransportGuidByte0_2]);
return;
}
switch (element)
{
case MovementStatusElements.Flags:
status.Flags = (MovementFlags)(!reader.UnalignedReadBit() ? 1 : 0);
break;
case MovementStatusElements.Flags_2:
if (status.Flags != 0)
status.Flags = (MovementFlags)reader.UnalignedReadInt(30);
break;
case MovementStatusElements.Flags2:
status.Flags2 = (MovementFlags2)(!reader.UnalignedReadBit() ? 1 : 0);
break;
case MovementStatusElements.Flags2_2:
if (status.Flags2 != 0)
status.Flags2 = (MovementFlags2)reader.UnalignedReadSmallInt(12);
break;
case MovementStatusElements.Timestamp:
status.TimeStamp = !reader.UnalignedReadBit() ? 1U : 0U;
break;
case MovementStatusElements.Timestamp_2:
if (status.TimeStamp != 0)
status.TimeStamp = reader.ReadUInt32();
break;
case MovementStatusElements.HaveFallData:
status.HaveFallData = reader.UnalignedReadBit();
break;
case MovementStatusElements.HaveFallDirection:
if (status.HaveFallData)
status.HaveFallDirection = reader.UnalignedReadBit();
break;
case MovementStatusElements.HaveTransportData:
status.HaveTransportData = reader.UnalignedReadBit();
break;
case MovementStatusElements.TransportHaveTime2:
if (status.HaveTransportData)
status.HaveTransportTime2 = reader.UnalignedReadBit();
break;
case MovementStatusElements.TransportHaveTime3:
if (status.HaveTransportData)
status.HaveTransportTime3 = reader.UnalignedReadBit();
break;
case MovementStatusElements.HaveSpline:
status.HaveSpline = reader.UnalignedReadBit();
break;
case MovementStatusElements.HaveSpline2:
status.HaveSpline2 = reader.UnalignedReadBit();
break;
case MovementStatusElements.PositionX:
status.Position.X = reader.ReadSingle();
break;
case MovementStatusElements.PositionY:
status.Position.Y = reader.ReadSingle();
break;
case MovementStatusElements.PositionZ:
status.Position.Z = reader.ReadSingle();
break;
case MovementStatusElements.PositionO:
status.Orientation = !reader.UnalignedReadBit() ? 1.0f : 0.0f;
break;
case MovementStatusElements.PositionO_2:
if (status.Orientation != 0.0f)
status.Orientation = reader.ReadSingle();
break;
case MovementStatusElements.Pitch:
status.HavePitch = !reader.UnalignedReadBit();
break;
case MovementStatusElements.Pitch_2:
if (status.HavePitch)
status.Pitch = reader.ReadSingle();
break;
//.........这里部分代码省略.........
示例4: Read
public sealed override void Read(StreamHandler reader)
{
var seq_b = ByteSequence;
var seq_m = MaskSequence;
var b_xor = ByteXorValue;
int size = seq_m.Count(x => x >= 0);
if (size != seq_m.Length && this.IsMaskSequenceSwapped)
throw new InvalidOperationException("Cannot have elements in swapped MaskSequence.");
CheckSequences(seq_b, seq_m);
if (this.IsMaskSequenceSwapped)
{
var seq_m_copy = new int[seq_m.Length];
for (int i = 0; i < seq_m.Length; )
{
var t = i;
for (int j = t + 8 - 1; j >= t; --j, ++i)
seq_m_copy[j] = seq_m[i];
}
seq_m = seq_m_copy;
}
//byte[] data = new byte[size];
//var src = new BitArray(reader.ReadBytes(size / 8));
//var dst = new BitArray(size);
//for (int i = 0; i < size; ++i)
// dst[seq_m[i]] = src[i];
//for (int i = 0; i < seq_b.Length; ++i)
//{
// var el = seq_b[i];
// if (el < 0)
// ElementRead(reader, el);
// else if (dst[el])
// data[el] = (byte)(reader.ReadByte() ^ b_xor);
//}
byte[] data = new byte[size];
var dst = new BitArray(size);
for (int i = 0; i < seq_m.Length; ++i)
{
var el = seq_m[i];
if (el < 0)
ElementRead(reader, el);
else
dst[el] = reader.UnalignedReadBit();
}
for (int i = 0; i < seq_b.Length; ++i)
{
var el = seq_b[i];
if (el < 0)
ElementRead(reader, el);
else if (dst[el])
data[el] = (byte)(reader.ReadByte() ^ b_xor);
}
PackedRead(data);
}