public static void AddDamage(RaycastInfo ri)
 {
     if (G.Settings.WeaponOptions.DamageIndicators && ri.point != new Vector3(0, 0, 0))
     {
         ItemGunAsset currentGun = Player.player.equipment.asset as ItemGunAsset;
         if (currentGun != null && ri.player != null)
         {
             IndicatorObject dmgi = new IndicatorObject
             {
                 HitPos   = ri.point,
                 Damage   = Mathf.FloorToInt(DamageTool.getPlayerArmor(ri.limb, ri.player) * currentGun.playerDamageMultiplier.multiply(ri.limb)), // big maths
                 ShotTime = DateTime.Now
             };
             DamageIndicators.Add(dmgi);
         }
     }
 }
    void Indicator()
    {
        Boss = GameObject.FindObjectOfType <FirstBoss>().gameObject;
        Vector3 dir = Boss.transform.position - transform.position;

        dir.Normalize();
        RaycastHit2D hit = Physics2D.Raycast(transform.position, dir, 9, IndicatorLayer);

        if (hit.collider != null && hit.collider.tag != "Blocks")
        {
            if (Boss.GetComponent <SpriteRenderer>().isVisible == false)
            {
                IndicatorObject.SetActive(true);
                IndicatorObject.transform.position = hit.point;
            }
            else
            {
                IndicatorObject.SetActive(false);
            }
        }
    }
 private void DeActivate(IndicatorObject targetRenderer)
 {
     targetRenderer.renderer.material.color = targetRenderer.originalColor;
 }
 private void ActiveFalse(IndicatorObject targetRenderer)
 {
     targetRenderer.renderer.material.color = Color.red;
 }
    //-----------------------------------------------------------------------------

    private void Activate(IndicatorObject targetRenderer)
    {
        targetRenderer.renderer.material.color = Color.green;
    }
        void OnGUI()
        {
            if (Provider.isConnected && !Provider.isLoading)
            {
                GUI.skin = AssetUtilities.Skin;
                if (!G.BeingSpied)
                {
                    if (G.Settings.WeaponOptions.WeaponInfo)
                    {
                        GunInfoWin = GUILayout.Window(6, GunInfoWin, GunInfoWindow, "Weapon Info");
                    }

                    #region Tracers
                    if (G.Settings.WeaponOptions.TracerLines && TracerLines.Count > 0)
                    {
                        T.DrawMaterial.SetPass(0);
                        GL.PushMatrix();
                        GL.LoadProjectionMatrix(G.MainCamera.projectionMatrix);
                        GL.modelview = G.MainCamera.worldToCameraMatrix;
                        GL.Begin(GL.LINES);
                        for (int i = TracerLines.Count - 1; i > -1; i--)
                        {
                            TracerObject t = TracerLines[i];
                            if (DateTime.Now - t.ShotTime > TimeSpan.FromSeconds(G.Settings.WeaponOptions.TracerTime))
                            {
                                TracerLines.Remove(t);
                                continue;
                            }

                            GL.Color(Colors.GetColor("Bullet_Tracer_Color"));

                            GL.Vertex(t.PlayerPos);
                            GL.Vertex(t.HitPos);
                        }
                        GL.End();
                        GL.PopMatrix();
                    }
                    #endregion
                    #region Damage Indicators
                    if (G.Settings.WeaponOptions.DamageIndicators && DamageIndicators.Count > 0)
                    {
                        T.DrawMaterial.SetPass(0);
                        for (int i = DamageIndicators.Count - 1; i > -1; i--)
                        {
                            IndicatorObject t = DamageIndicators[i];
                            if (DateTime.Now - t.ShotTime > TimeSpan.FromSeconds(3))
                            {
                                DamageIndicators.Remove(t);
                                continue;
                            }
                            GUI.color = Color.red;
                            Vector3 pos = G.MainCamera.WorldToScreenPoint(t.HitPos + new Vector3(0, 1, 0));
                            pos.y = Screen.height - pos.y;
                            if (pos.z >= 0)
                            {
                                GUIStyle style = GUI.skin.label;
                                style.alignment = TextAnchor.MiddleCenter;
                                Vector2 size = style.CalcSize(new GUIContent($"<b>{t.Damage}</b>"));
                                T.DrawOutlineLabel(new Vector2(pos.x - size.x / 2, pos.y - ((float)(DateTime.Now - t.ShotTime).TotalSeconds * 10)), Color.red, Color.black, $"<b>{t.Damage}</b>");
                                style.alignment = TextAnchor.MiddleLeft;
                            }
                            GUI.color = Main.GUIColor;
                        }
                    }
                    #endregion
                }
            }
        }