Пример #1
0
        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);
                    }
                }
            }
        }
Пример #2
0
        /// <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;
        }