本文整理汇总了C#中VRage.Library.Collections.BitStream.SerializeNorm方法的典型用法代码示例。如果您正苦于以下问题:C# BitStream.SerializeNorm方法的具体用法?C# BitStream.SerializeNorm怎么用?C# BitStream.SerializeNorm使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类VRage.Library.Collections.BitStream
的用法示例。
在下文中一共展示了BitStream.SerializeNorm方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: SerializePhysics
public override void SerializePhysics(BitStream stream, MyNetworkClient sender, bool highOrientationCompression = false)
{
// Serialize base
base.SerializePhysics(stream, sender);
Vector3D pos = Entity.WorldMatrix.Translation;
if (stream.Writing)
{
var g = MyCubeGridGroups.Static.Physical.GetGroup(Entity);
stream.WriteByte((byte)(g.Nodes.Count - 1)); // Ignoring self
foreach (var node in g.Nodes)
{
// Ignore self, already serialized
if (node.NodeData != Entity)
{
var target = MyMultiplayer.Static.ReplicationLayer.GetProxyTarget((IMyEventProxy)node.NodeData);
// ~26.5 bytes per grid, not bad
NetworkId networkId = MyMultiplayer.Static.ReplicationLayer.GetNetworkIdByObject(target);
PositionUpdateMsg msg = CreatePositionMsg(node.NodeData);
stream.WriteNetworkId(networkId); // ~2 bytes
HalfVector3 posDelta = (HalfVector3)(Vector3)(msg.Position - pos);
stream.Serialize(ref posDelta); // 6 bytes
stream.SerializeNorm(ref msg.Orientation); // 6.5 bytes
stream.Serialize(ref msg.LinearVelocity); // 6 bytes
stream.Serialize(ref msg.AngularVelocity); // 6 bytes
}
}
}
else
{
byte numRecords = stream.ReadByte();
for (int i = 0; i < numRecords; i++)
{
PositionUpdateMsg msg = default(PositionUpdateMsg);
NetworkId networkId = stream.ReadNetworkId();
HalfVector3 posDelta = default(HalfVector3);
stream.Serialize(ref posDelta);
msg.Position = posDelta + pos;
stream.SerializeNorm(ref msg.Orientation);
stream.Serialize(ref msg.LinearVelocity);
stream.Serialize(ref msg.AngularVelocity);
MyCubeGrid grid = MyMultiplayer.Static.ReplicationLayer.GetObjectByNetworkId(networkId) as MyCubeGrid;
if (grid != null)
{
grid.SyncObject.OnPositionUpdate(ref msg, sender);
}
}
}
}
示例2: SerializePhysics
/// <summary>
/// Serializes sync entity physics, default implementation serializes position, orientation, linear and angular velocity.
/// </summary>
public virtual void SerializePhysics(BitStream stream, MyNetworkClient sender, bool highOrientationCompression = false)
{
PositionUpdateMsg msg = stream.Writing ? CreatePositionMsg(Entity) : default(PositionUpdateMsg);
stream.Serialize(ref msg.Position); // 24B
if (highOrientationCompression)
stream.SerializeNormCompressed(ref msg.Orientation); // 29b
else
stream.SerializeNorm(ref msg.Orientation); // 52b
stream.Serialize(ref msg.LinearVelocity); // 6B
stream.Serialize(ref msg.AngularVelocity); // 6B
if (stream.Reading)
{
OnPositionUpdate(ref msg, sender);
}
}