本文整理汇总了C++中WorldPacket::WriteGuidBytes方法的典型用法代码示例。如果您正苦于以下问题:C++ WorldPacket::WriteGuidBytes方法的具体用法?C++ WorldPacket::WriteGuidBytes怎么用?C++ WorldPacket::WriteGuidBytes使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类WorldPacket
的用法示例。
在下文中一共展示了WorldPacket::WriteGuidBytes方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: WriteMonsterMove
void PacketBuilder::WriteMonsterMove(const MoveSpline& moveSpline, WorldPacket& data, Unit* unit)
{
ObjectGuid guid = unit->GetGUID();
ObjectGuid transport = unit->GetTransGUID();
MonsterMoveType type = GetMonsterMoveType(moveSpline);
G3D::Vector3 const& firstPoint = moveSpline.spline.getPoint(moveSpline.spline.first());
data << float(firstPoint.z);
data << float(firstPoint.x);
data << uint32(moveSpline.GetId());
data << float(firstPoint.y);
data << float(0.f); // Most likely transport Y
data << float(0.f); // Most likely transport Z
data << float(0.f); // Most likely transport X
data.WriteBit(1); // Parabolic speed // esi+4Ch
data.WriteBit(guid[0]);
data.WriteBits(type, 3);
if (type == MonsterMoveFacingTarget)
{
ObjectGuid targetGuid = moveSpline.facing.target;
data.WriteGuidMask(targetGuid, 6, 4, 3, 0, 5, 7, 1, 2);
}
data.WriteBit(1);
data.WriteBit(1);
data.WriteBit(1);
uint32 uncompressedSplineCount = moveSpline.splineflags & MoveSplineFlag::UncompressedPath ? moveSpline.splineflags.cyclic ? moveSpline.spline.getPointCount() - 3 : moveSpline.spline.getPointCount() - 2 : 1;
data.WriteBits(uncompressedSplineCount, 20);
data.WriteBit(!moveSpline.splineflags.raw());
data.WriteBit(guid[3]);
data.WriteBit(1);
data.WriteBit(1);
data.WriteBit(1);
data.WriteBit(!moveSpline.Duration());
data.WriteGuidMask(guid, 7, 4);
data.WriteBit(1);
data.WriteBit(guid[5]);
int32 compressedSplineCount = moveSpline.splineflags & MoveSplineFlag::UncompressedPath ? 0 : moveSpline.spline.getPointCount() - 3;
data.WriteBits(compressedSplineCount, 22); // WP count
data.WriteBit(guid[6]);
data.WriteBit(0); // Fake bit
data.WriteGuidMask(transport, 7, 1, 3, 0, 6, 4, 5, 2);
data.WriteBit(0); // Send no block
data.WriteBit(0);
data.WriteGuidMask(guid, 2, 1);
data.FlushBits();
if (compressedSplineCount)
WriteLinearPath(moveSpline.spline, data);
data.WriteByteSeq(guid[1]);
data.WriteGuidBytes(transport, 6, 4, 1, 7, 0, 3, 5, 2);
if (moveSpline.splineflags & MoveSplineFlag::UncompressedPath)
{
if (moveSpline.splineflags.cyclic)
WriteUncompressedCyclicPath(moveSpline.spline, data);
else
WriteUncompressedPath(moveSpline.spline, data);
}
else
{
G3D::Vector3 const& point = moveSpline.spline.getPoint(moveSpline.spline.getPointCount() - 2);
data << point.y << point.x << point.z;
}
if (type == MonsterMoveFacingTarget)
{
ObjectGuid targetGuid = moveSpline.facing.target;
data.WriteGuidBytes(targetGuid, 5, 7, 0, 4, 3, 2, 6, 1);
}
data.WriteByteSeq(guid[5]);
if (type == MonsterMoveFacingAngle)
data << float(moveSpline.facing.angle);
data.WriteByteSeq(guid[3]);
if (moveSpline.splineflags.raw())
data << uint32(moveSpline.splineflags.raw());
data.WriteByteSeq(guid[6]);
if (type == MonsterMoveFacingPoint)
data << moveSpline.facing.f.x << moveSpline.facing.f.y << moveSpline.facing.f.z;
data.WriteGuidBytes(guid, 0, 7, 2, 4);
if (moveSpline.Duration())
data << uint32(moveSpline.Duration());
//.........这里部分代码省略.........