NPC Beyaz Gözükme / Texture Fix

  • Konuyu açan Konuyu açan MEKA
  • Açılış Tarihi Açılış Tarihi
  • Yanıt Yanıt 2
  • Gösterim Gösterim 2K

MEKA

Discord: mekaprojects
Süper Moderatör
Grafiker
Geliştirici
Yardımsever Üye
Mesaj
2.852
Çözümler
297
Beğeni
2.134
Puan
1.850
Ticaret Puanı
2
Kendim test ettim ve çalışıyor uzun süredir aradıgım bir fix. Sıfırdan bir files yapanlara yardımı olacagını düşünüyorum.

Nu3fHUeSR26ZvihMBqi9_Q.webp
neTIoUjmTwe9E0Y-b8ARjg.webp

Userinterface/Locale.inc.h​

Kod:
Genişlet Daralt Kopyala
#define NPC_TEXTURE_FIX

EterGrnLib/Thing.cpp​

Arat​

C++:
Genişlet Daralt Kopyala
CGrannyMotion * CGraphicThing::GetMotionPointer(int iMotion)

Altına Ekle​

C++:
Genişlet Daralt Kopyala
#ifdef NPC_TEXTURE_FIX
int CGraphicThing::GetTextureCount() const
{
    if (!m_pgrnFileInfo)
        return 0;

    if (m_pgrnFileInfo->TextureCount <= 0)
        return 0;

    return (m_pgrnFileInfo->TextureCount);
}

const char * CGraphicThing::GetTexturePath(int iTexture)
{
    if(iTexture >= GetTextureCount())
        return "";

    return m_pgrnFileInfo->Textures[iTexture]->FromFileName;
}
#endif

EterGrnLib/Thing.h​

Arat​

C++:
Genişlet Daralt Kopyala
        int                        GetMotionCount() const;

Altına Ekle​

C++:
Genişlet Daralt Kopyala
#ifdef NPC_TEXTURE_FIX
        int                        GetTextureCount() const;
        const char *            GetTexturePath(int iTexture);
#endif

GameLib/ActorInstanceData.cpp​

Arat​

C++:
Genişlet Daralt Kopyala
            CGraphicThing* pLODModelThing = pRaceData->GetLODModelThing();
            RegisterLODThing(0, pLODModelThing);

Degistir​

C++:
Genişlet Daralt Kopyala
#ifdef NPC_TEXTURE_FIX
            CGraphicThing* pLODModelThing = pRaceData->GetLODModelThing();

            bool canLOD = true;
            if (pModelThing && pLODModelThing) {
                if (pModelThing->GetTextureCount() == pLODModelThing->GetTextureCount()) {
                    for (int i = 0; i < pModelThing->GetTextureCount(); i++) {
                        if (strcmp(pModelThing->GetTexturePath(i), pLODModelThing->GetTexturePath(i)) != 0)
                            canLOD = false;
                    }
                } else {
                    canLOD = false;
                }
            }

            if(canLOD)
                RegisterLODThing(0, pLODModelThing);
#endif

Degistirdikten sonra bu şekilde olacak yapamayan arkadaşlar için​

C++:
Genişlet Daralt Kopyala
    {
        if (pRaceData->IsTree())
        {
            __CreateTree(pRaceData->GetTreeFileName());
        }
        else
        {
            CGraphicThing* pModelThing = pRaceData->GetBaseModelThing();
            RegisterModelThing(0, pModelThing);

#ifdef NPC_TEXTURE_FIX
            CGraphicThing* pLODModelThing = pRaceData->GetLODModelThing();

            bool canLOD = true;
            if (pModelThing && pLODModelThing) {
                if (pModelThing->GetTextureCount() == pLODModelThing->GetTextureCount()) {
                    for (int i = 0; i < pModelThing->GetTextureCount(); i++) {
                        if (strcmp(pModelThing->GetTexturePath(i), pLODModelThing->GetTexturePath(i)) != 0)
                            canLOD = false;
                    }
                } else {
                    canLOD = false;
                }
            }

            if(canLOD)
                RegisterLODThing(0, pLODModelThing);
#endif

            SetModelInstance(0, 0, 0);
        }
    }

Alıntı Yapılan Kaynak :
Linkleri görebilmek için giriş yap veya kayıt ol.
 
Son düzenleme:
paylaşım için sağol
 
Geri
Üst