private unsafe void DrawDisconnectedIndicator() { MyPlayer player; MyPlayer.PlayerId?savedPlayer = (base.Entity as MyCharacter).SavedPlayer; if (((savedPlayer != null) && (savedPlayer.Value.SerialId == 0)) && !MySession.Static.Players.TryGetPlayerById(savedPlayer.Value, out player)) { Vector3D vectord = (base.Entity.PositionComp.GetPosition() + (base.Entity.PositionComp.LocalAABB.Height * base.Entity.PositionComp.WorldMatrix.Up)) + (base.Entity.PositionComp.WorldMatrix.Up * 0.20000000298023224); double num = Vector3D.Distance(MySector.MainCamera.Position, vectord); if (num <= MAX_DISCONNECT_ICON_DISTANCE) { Color white = Color.White; Color *colorPtr1 = (Color *)ref white; colorPtr1.A = (byte)(white.A * ((float)Math.Min(1.0, Math.Max((double)0.0, (double)((MAX_DISCONNECT_ICON_DISTANCE - num) / 10.0))))); MyGuiDrawAlignEnum drawAlign = MyGuiDrawAlignEnum.HORISONTAL_CENTER_AND_VERTICAL_BOTTOM; MyGuiPaddedTexture texture = MyGuiConstants.TEXTURE_DISCONNECTED_PLAYER; Vector3D vectord2 = Vector3D.Transform(vectord, MySector.MainCamera.ViewMatrix * MySector.MainCamera.ProjectionMatrix); if (vectord2.Z < 1.0) { Vector2 hudPos = new Vector2((float)vectord2.X, (float)vectord2.Y); hudPos = (hudPos * 0.5f) + (0.5f * Vector2.One); Vector2 *vectorPtr1 = (Vector2 *)ref hudPos; vectorPtr1->Y = 1f - hudPos.Y; Vector2 normalizedCoord = MyGuiScreenHudBase.ConvertHudToNormalizedGuiPosition(ref hudPos); MyGuiManager.DrawSpriteBatch(texture.Texture, normalizedCoord, (texture.SizeGui * 0.5f) * (1f - (((float)num) / ((float)MAX_DISCONNECT_ICON_DISTANCE))), white, drawAlign, false, true); } } } }
/// <summary> /// Modified from MyGuiScreenHudSpace.DrawGravityIndicator. /// </summary> private static void DrawAirAndDrag_CalcultatePositions() { MyGuiPaddedTexture backgroundTexture = MyGuiConstants.TEXTURE_HUD_BG_MEDIUM_DEFAULT; backgroundSize = backgroundTexture.SizeGui + new Vector2(0.017f, 0.05f); backgroundSize.X *= 0.8f; backgroundSize.Y *= 0.85f; dividerLineSize = new Vector2(backgroundSize.X - backgroundTexture.PaddingSizeGui.X, backgroundSize.Y / 60f); backgroundPosition = new Vector2(0.01f, backgroundSize.Y + 0.04f); backgroundPosition = MyGuiScreenHudBase.ConvertHudToNormalizedGuiPosition(ref backgroundPosition); titleTextPos = backgroundPosition + backgroundSize * new Vector2(0.90f, -1f) + backgroundTexture.PaddingSizeGui * Vector2.UnitY * 0.2f; dividerLinePosition = new Vector2(backgroundPosition.X + backgroundTexture.PaddingSizeGui.X * 0.5f, titleTextPos.Y - 0.022f) + new Vector2(0.0f, 0.026f); Vector2 vectorPosition = backgroundPosition - backgroundSize * new Vector2(-0.5f, 0.55f) + backgroundTexture.PaddingSizeGui * Vector2.UnitY * 0.5f; vectorPosition = MyGuiManager.GetHudSize() * (Vector2)MyGuiScreenHudBase_ConvertNormalizedGuiToHud.Invoke(null, new object[] { vectorPosition }); airDensityTextPos = backgroundPosition + backgroundSize * new Vector2(0.75f, -0.1f) + backgroundTexture.PaddingSizeGui * Vector2.UnitY * 0.2f; backgroundSize += new Vector2(0f, 0.025f); DrawGravityVectorIndicator_Params[0] = vectorPosition; }