protected override void ClientWrite(VRage.Library.Collections.BitStream stream) { base.ClientWrite(stream); MyShipController controller = MySession.Static.ControlledEntity as MyShipController; stream.WriteBool(m_grid != null && controller != null); if (m_grid != null && controller != null) { stream.WriteBool(m_grid.IsStatic); if (m_grid.IsStatic == false) { stream.WriteBool(controller != null); if (controller != null) { stream.WriteInt64(controller.EntityId); Vector2 rotation = controller.RotationIndicator; stream.WriteFloat(rotation.X); stream.WriteFloat(rotation.Y); stream.WriteHalf(controller.RollIndicator); Vector3 position = controller.MoveIndicator; stream.WriteHalf(position.X); stream.WriteHalf(position.Y); stream.WriteHalf(position.Z); } } } }
protected override void ClientWrite(VRage.Library.Collections.BitStream stream,EndpointId forClient, uint timestamp, int maxBitPosition) { base.ClientWrite(stream,forClient,timestamp,maxBitPosition); MyShipController controller = MySession.Static.ControlledEntity as MyShipController; stream.WriteBool(m_grid != null && controller != null); if (m_grid != null && controller != null) { stream.WriteBool(m_grid.IsStatic); if (m_grid.IsStatic == false) { stream.WriteBool(controller != null); if (controller != null) { stream.WriteInt64(controller.EntityId); Vector2 rotation = controller.RotationIndicator; stream.WriteFloat(rotation.X); stream.WriteFloat(rotation.Y); stream.WriteHalf(controller.RollIndicator); Vector3 position = controller.MoveIndicator; stream.WriteHalf(position.X); stream.WriteHalf(position.Y); stream.WriteHalf(position.Z); Vector3D gridPosition = m_grid.PositionComp.GetPosition(); MyGridPhysicsStateGroup.WriteSubgrids(m_grid, stream, ref forClient, timestamp, maxBitPosition, m_lowPositionOrientation, ref gridPosition, ref m_currentSentPosition); } } } }
protected override void ClientWrite(VRage.Library.Collections.BitStream stream) { base.ClientWrite(stream); stream.WriteBool(m_character != null); if (m_character != null) { var physGroup = MyExternalReplicable.FindByObject(m_character).FindStateGroup<MyCharacterPhysicsStateGroup>(); long? supportId = null; if (physGroup != null) { physGroup.SetSupport(physGroup.FindSupportDelegate()); supportId = physGroup.GetSupportId(); } stream.WriteBool(supportId.HasValue); if (supportId.HasValue) { stream.WriteInt64(supportId.Value); } Vector3 position = m_character.MoveIndicator; stream.WriteHalf(position.X); stream.WriteHalf(position.Y); stream.WriteHalf(position.Z); Vector2 rotate = m_character.RotationIndicator; stream.WriteFloat(rotate.X); stream.WriteFloat(rotate.Y); stream.WriteFloat(m_character.RollIndicator); // Movement state, 2B stream.WriteUInt16((ushort)m_character.GetNetworkMovementState()); // Movement flag. stream.WriteUInt16((ushort)m_character.PreviousMovementFlags); // Flags, 6 bits bool hasJetpack = m_character.JetpackComp != null; stream.WriteBool(hasJetpack ? m_character.JetpackComp.TurnedOn : false); stream.WriteBool(hasJetpack ? m_character.JetpackComp.DampenersTurnedOn : false); stream.WriteBool(m_character.LightEnabled); // TODO: Remove stream.WriteBool(m_character.ZoomMode == MyZoomModeEnum.IronSight); stream.WriteBool(m_character.RadioBroadcaster.WantsToBeEnabled); // TODO: Remove stream.WriteBool(m_character.TargetFromCamera); stream.WriteFloat(m_character.HeadLocalXAngle); stream.WriteFloat(m_character.HeadLocalYAngle); if ((hasJetpack && m_character.JetpackComp.TurnedOn) == false) { MatrixD matrix = m_character.WorldMatrix; stream.WriteQuaternionNorm(Quaternion.CreateFromForwardUp(matrix.Forward, matrix.Up)); } } }
protected override void ClientWrite(VRage.Library.Collections.BitStream stream, EndpointId forClient, uint timestamp, int maxBitPosition) { base.ClientWrite(stream, forClient,timestamp,maxBitPosition); stream.WriteBool(m_character != null); if (m_character != null) { stream.WriteBool(m_supportPhysics != null); if (m_supportPhysics != null) { stream.WriteInt64(m_supportPhysics.Entity.EntityId); stream.Write(m_supportPhysics.Entity.PositionComp.GetPosition()); } Vector3 position = m_character.MoveIndicator; stream.WriteHalf(position.X); stream.WriteHalf(position.Y); stream.WriteHalf(position.Z); Vector2 rotate = m_character.RotationIndicator; stream.WriteFloat(rotate.X); stream.WriteFloat(rotate.Y); stream.WriteFloat(m_character.RollIndicator); // Movement state, 2B stream.WriteUInt16((ushort)m_character.GetNetworkMovementState()); // Movement flag. stream.WriteUInt16((ushort)m_character.PreviousMovementFlags); // Flags, 6 bits bool hasJetpack = m_character.JetpackComp != null; stream.WriteBool(hasJetpack ? m_character.JetpackComp.TurnedOn : false); stream.WriteBool(hasJetpack ? m_character.JetpackComp.DampenersTurnedOn : false); stream.WriteBool(m_character.LightEnabled); // TODO: Remove stream.WriteBool(m_character.ZoomMode == MyZoomModeEnum.IronSight); stream.WriteBool(m_character.RadioBroadcaster.WantsToBeEnabled); // TODO: Remove stream.WriteBool(m_character.TargetFromCamera); stream.WriteFloat(m_character.HeadLocalXAngle); stream.WriteFloat(m_character.HeadLocalYAngle); } }
protected override void CustomServerWrite(uint timeStamp, ulong clientId, VRage.Library.Collections.BitStream stream) { stream.WriteBool(m_support != null); if (m_support != null) { stream.WriteInt64(m_support.EntityId); stream.Write(m_support.PositionComp.GetPosition()); } }
protected override void CustomServerWrite(uint timeStamp, VRage.Library.Collections.BitStream stream) { MyEntity support = MySupportHelper.FindSupportForCharacterAABB(m_character); stream.WriteBool(support != null); if (support != null) { stream.WriteInt64(support.EntityId); Vector3D pos = support.PositionComp.GetPosition() - m_character.PositionComp.GetPosition(); stream.Write(pos); stream.Write(support.PositionComp.GetPosition()); } }