コード例 #1
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
 public void SwitchPushTitle(HUDTitleInfo title)
 {
     title.m_nBatcherIndex = m_ValidTitles.size;
     m_ValidTitles.Add(title);
     m_bNeedSort = true;
     InitTitleHUDMesh(title);
 }
コード例 #2
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
        public void EraseTitle(HUDTitleInfo title)
        {
            int nIndex = title.m_nBatcherIndex;

            title.EraseSpriteFromMesh();
            if (nIndex >= 0 && nIndex < m_ValidTitles.size)
            {
                if (m_ValidTitles[nIndex] != null && m_ValidTitles[nIndex] == title)
                {
                    //m_bNeedSort = true;
                    m_bHaveNullTitle      = true;
                    m_ValidTitles[nIndex] = null;
                    return;
                }
            }

            for (int i = m_ValidTitles.size - 1; i >= 0; --i)
            {
                if (m_ValidTitles[i] != null && m_ValidTitles[i] == title)
                {
                    //m_bNeedSort = true;
                    m_bHaveNullTitle = true;
                    m_ValidTitles[i] = null;
                    break;
                }
            }
        }
コード例 #3
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
 void InitTitleHUDMesh(HUDTitleInfo title)
 {
     if (!title.m_bInitHUDMesh && !title.m_bNeedHide)
     {
         title.m_bInitHUDMesh = true;
         for (int i = 0, nSize = title.m_aSprite.size; i < nSize; ++i)
         {
             HUDVertex v = title.m_aSprite[i];
             if (v.hudMesh == null)
             {
                 if (v.AtlasID != 0)
                 {
                     v.hudMesh = m_MeshRender.QueryMesh(v.AtlasID);
                 }
                 else
                 {
                     v.hudMesh = m_MeshRender.FontMesh();
                 }
                 v.hudMesh.PushHUDVertex(v);
             }
         }
         //if (title.m_aSprite.size == 0)
         //    return;
         //CharacterInfo tempCharInfo = new CharacterInfo();
         //title.RebuildCharUV(ref tempCharInfo);
     }
 }
コード例 #4
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
        public void UpdateLogic(bool bCameraDirty, Vector3 vCameraPos)
        {
            if (m_bHaveNullTitle)
            {
                m_bHaveNullTitle = false;
                m_ValidTitles.ClearNullItem();
            }

            // 更新位置信息
            for (int i = m_ValidTitles.size - 1; i >= 0; --i)
            {
                HUDTitleInfo title = m_ValidTitles[i];
                title.m_nBatcherIndex = i;
                if (title.m_tf != null)
                {
                    title.ApplyMove(bCameraDirty, vCameraPos);
                }
            }

            if (m_bTitleMove)
            {
                m_bTitleMove = false;
                m_nSortVeresion++;
            }

            if (m_bNeedSort || m_nSortVeresion > 10)
            {
                bool bNeedSort    = m_bNeedSort;
                int  nSortVersion = m_nSortVeresion;
                m_bTitleMove    = false;
                m_bNeedSort     = false;
                m_nSortVeresion = 0;
                CompareTitleByDist();
                if (m_bRebuildMesh)
                {
                    //if(m_bStatic)
                    //    Debug.Log("Static Need PrepareRebuild, NeedSort=" + bNeedSort + ", Version=" + nSortVersion);
                    //else
                    //    Debug.Log("Dynamic Need PrepareRebuild, NeedSort=" + bNeedSort + ", Version=" + nSortVersion);
                    m_bRebuildMesh = false;
                    PrepareRebuild();
                }
            }
            for (int i = 0, nSize = m_ValidTitles.size; i < nSize; ++i)
            {
                HUDTitleInfo title = m_ValidTitles[i];
                title.m_nBatcherIndex = i;
                if (!title.m_bNeedHide && !title.m_bInitHUDMesh)
                {
                    InitTitleHUDMesh(title);
                }
            }
            m_MeshRender.FillMesh();
        }
コード例 #5
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
        void PrepareRebuild()
        {
            m_MeshRender.FastClearVertex();

            for (int i = 0, nSize = m_ValidTitles.size; i < nSize; ++i)
            {
                HUDTitleInfo title = m_ValidTitles[i];
                title.m_bInitHUDMesh = false;
                title.PrepareRebuildMesh();
            }
        }
コード例 #6
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
        void SwitchDynamieStatic()
        {
            float fNow = Time.time;

            m_fLastCheckMoveTime = fNow;
            Dictionary <int, HUDTitleInfo> .Enumerator it = m_HudTitles.GetEnumerator();
            while (it.MoveNext())
            {
                HUDTitleInfo title = it.Current.Value;
                if (title.m_tf == null)
                {
                    m_DelayReleaseTitles.Add(it.Current.Key);
                }
                if (title.m_bIsMain)
                {
                    continue;
                }
                if (title.m_pBatcher == null)
                {
                    title.m_pBatcher = m_StaticBatcher;
                    title.m_pBatcher.PushTitle(title);
                    title.RebuildFontUI();
                }
                if (title.m_pBatcher == m_StaticBatcher)
                {
                    // 动了
                    if (title.m_fLastMoveTime + 1.0f > fNow)
                    {
                        title.m_pBatcher.EraseTitle(title);
                        title.m_pBatcher = m_DynamicBatcher;
                        title.m_pBatcher.SwitchPushTitle(title);
                        m_bMeshDirty = true;
                    }
                }
                else
                {
                    // 一秒钟不动就转静态批
                    if (title.m_fLastMoveTime + 1.0f < fNow && title.m_pBatcher == m_DynamicBatcher)
                    {
                        title.m_pBatcher.EraseTitle(title);
                        title.m_pBatcher = m_StaticBatcher;
                        title.m_pBatcher.SwitchPushTitle(title);
                        m_bMeshDirty = true;
                    }
                }
            }

            // 释放已经无效的
            for (int i = m_DelayReleaseTitles.size - 1; i >= 0; --i)
            {
                ReleaseTitle(m_DelayReleaseTitles[i]);
            }
            m_DelayReleaseTitles.Clear();
        }
コード例 #7
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
        public int RegisterTitle(Transform tf, float fOffsetY, bool bIsMain)
        {
            Camera caMain = HUDMesh.GetHUDMainCamera();

            if (bIsMain)
            {
                m_tfMain = tf;
            }

            Vector3      vPos  = tf.position;
            HUDTitleInfo title = new HUDTitleInfo();

            title.m_tf       = tf;
            title.m_bIsMain  = bIsMain;
            title.m_vPos     = vPos;
            title.m_fOffsetY = fOffsetY;
            if (caMain != null)
            {
                vPos.y            += fOffsetY + HudSetting.Instance.m_fTitleOffsetY;
                title.m_vScreenPos = caMain.WorldToScreenPoint(vPos);
                title.CaleCameraScale(caMain.transform.position);
            }
            int nID = ++m_nHudID;

            title.m_nTitleID = nID;
            m_HudTitles[nID] = title;

            if (bIsMain)
            {
                title.m_pBatcher = m_StaticBatcher;
            }
            else
            {
                title.m_pBatcher = m_DynamicBatcher;
            }
            title.m_fLastMoveTime = Time.time;
            title.m_pBatcher.PushTitle(title);

            if (!m_bAddUpdate)
            {
                m_bAddUpdate = true;
                UpdateManager.AddLateUpdate(null, 0, UpdateLogic);
            }
            if (!m_bInitFontCallback)
            {
                m_bInitFontCallback = true;

                UIFont uiFont = HUDTitleInfo.GetHUDTitleFont();
                Font.textureRebuilt += OnAllFontChanged;
            }

            return(nID);
        }
コード例 #8
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
        public void OnAllFontChanged(UIFont uiFont)
        {
            CharacterInfo tempCharInfo = new CharacterInfo();

            for (int i = 0, nSize = m_ValidTitles.size; i < nSize; ++i)
            {
                HUDTitleInfo title = m_ValidTitles[i];
                if (title != null)
                {
                    title.RebuildCharUV(ref tempCharInfo);
                }
            }
            m_MeshRender.OnChangeFont(uiFont);
        }
コード例 #9
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
        void  CompareTitleByDist()
        {
            m_bNeedSort = false;
            bool changed = true;

            HUDTitleInfo[] buffer = m_ValidTitles.buffer;
            int            nSize  = m_ValidTitles.size;
            HUDTitleInfo   temp;
            int            nChangeCount = 0;

            while (changed)
            {
                changed = false;
                for (int i = 1; i < nSize; ++i)
                {
                    // 近的排在后面, 数字大的排在前面
                    if (buffer[i - 1].m_fDistToCamera < buffer[i].m_fDistToCamera)
                    {
                        temp          = buffer[i];
                        buffer[i]     = buffer[i - 1];
                        buffer[i - 1] = temp;
                        changed       = true;
                        ++nChangeCount;
                    }
                }
            }
            if (nChangeCount > 0)
            {
                if (m_nMaxSortCount < nChangeCount)
                {
                    m_nMaxSortCount = nChangeCount;
//#if  UNITY_EDITOR
//                    if (m_bStatic)
//                        Debug.Log("Static Title Render Compare count:" + m_nMaxSortCount);
//                    else
//                        Debug.Log("Dynamic Title Render Compare count:" + m_nMaxSortCount);
//#endif
                }

                for (int i = m_ValidTitles.size - 1; i >= 0; --i)
                {
                    HUDTitleInfo title = m_ValidTitles[i];
                    if (title.m_nBatcherIndex < i)
                    {
                        m_bRebuildMesh = true;
                    }
                    title.m_nBatcherIndex = i;
                }
            }
        }
コード例 #10
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
 public void OnLeaveGame()
 {
     foreach (var v in m_HudTitles)
     {
         HUDTitleInfo title = v.Value;
         title.m_pBatcher.EraseTitle(title);
         title.m_pBatcher = null;
     }
     HUDMesh.OnLeaveGame();
     HUDNumberRender.Instance.OnLeaveGame();
     m_DynamicBatcher.m_MeshRender.Release();
     m_StaticBatcher.m_MeshRender.Release();
     ReleaseCmmmandBuffer();
 }
コード例 #11
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
        public void OnEnterGame()
        {
            HUDMesh.OnEnterGame();
            m_nUpdateVer       = 0;
            m_nBaseUpdateVer   = 0;
            m_nCameraUpdateVer = 0;

            foreach (var v in m_HudTitles)
            {
                HUDTitleInfo title = v.Value;
                if (title.m_pBatcher == null)
                {
                    title.m_pBatcher = m_StaticBatcher;
                    title.m_pBatcher.PushTitle(title);
                    title.RebuildFontUI();
                }
            }
        }
コード例 #12
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
        void OnAllFontChanged(Font font)
        {
            if (font == null)
            {
                return;
            }
            UIFont uiFont = HUDTitleInfo.GetHUDTitleFont();

            if (font.GetInstanceID() != uiFont.dynamicFont.GetInstanceID())
            {
                return;
            }

            m_StaticBatcher.OnAllFontChanged(uiFont);
            m_DynamicBatcher.OnAllFontChanged(uiFont);

            // 头顶气泡
            HUDTalk.HUDTalkRender.Instance.OnAllFontChanged(uiFont);
        }
コード例 #13
0
    public HUDMesh FontMesh()
    {
        if (m_curFontMesh != null)
        {
            return(m_curFontMesh);
        }
        if (m_MeshFont == null)
        {
            m_MeshFont = new HUDMesh();
            m_MeshList.Add(m_MeshFont);
        }
        m_curFontMesh = m_MeshFont;
        m_ValidList.Add(m_MeshFont);
        m_bMeshDirty = true;

        UIFont uiFont = HUDTitleInfo.GetHUDTitleFont();

        m_MeshFont.SetFont(uiFont);
        return(m_MeshFont);
    }
コード例 #14
0
ファイル: HUDTitleRender.cs プロジェクト: sladeByZsl/SuperHud
 public void PushTitle(HUDTitleInfo title)
 {
     title.m_nBatcherIndex = m_ValidTitles.size;
     m_ValidTitles.Add(title);
     m_bNeedSort = true;
 }
コード例 #15
0
ファイル: Player.cs プロジェクト: sladeByZsl/SuperHud
    void RefreshTitle()
    {
        if (0 == m_nTitleIns)
        {
            m_nTitleIns = HUDTitleInfo.HUDTitleRender.Instance.RegisterTitle(transform, 1.8f, m_bMain);
        }

        float fOffsetY = GetHeadNameOffsetY();

        HUDTitleInfo title = HUDTitleInfo.HUDTitleRender.Instance.GetTitle(m_nTitleIns);

        title.Clear();

        title.SetOffsetY(fOffsetY);
        title.ShowTitle(true);
        // 血条
        HUDBloodType nBloodType = GetBloodType();

        if (nBloodType != HUDBloodType.Blood_None)
        {
            title.BeginTitle();
            title.PushBlood(nBloodType, curHpBarValue());
            title.EndTitle();
        }

        title.BeginTitle();
        title.PushTitle(m_szName, HUDTilteType.PlayerName, 0);
        // 威望
        {
            title.PushTitle("天下无双", HUDTilteType.PlayerPrestige, 1);
        }
        // 可反击标识(主角和平模式,并且可以反击)
        if (!m_bMain)
        {
            title.PushIcon(HUDTilteType.PKFlag, HudSetting.Instance.m_nPKFlagPic);
        }
        title.EndTitle();

        // 帮会名字
        string szFamily = "天下第一帮";

        if (!string.IsNullOrEmpty(szFamily))
        {
            title.BeginTitle();
            title.PushTitle(szFamily, HUDTilteType.PlayerCorp, 0);
            title.EndTitle();
        }

        // 称号
        {
            {
                string szDesign  = "武林蒙主";
                int    nFontType = 1;
                title.BeginTitle();
                title.PushTitle(szDesign, HUDTilteType.PlayerDesignation, nFontType);
                title.EndTitle();
            }
        }

        // 队长标记
        //if (isTeamLeader)
        {
            title.BeginTitle();
            title.PushIcon(HUDTilteType.HeadIcon, HudSetting.Instance.m_nTeamFlagPic);
            title.EndTitle();
        }
    }