Hier release ich mal das day & night system.
Was ist das day & night system?
Seht es euch am besten an mit den screens.
Dämmerung : [Only registered and activated users can see links. Click Here To Register...]
Dunkler : [Only registered and activated users can see links. Click Here To Register...]
Nochmal dunkler als voher :D : [Only registered and activated users can see links. Click Here To Register...]
das wird nacher noch viel dunkler und später wieder hell.
Jetzt zum Code
1.
Ihr geht in world.h
sucht nacht
fügt darunter ein
Dann geht ihr in
World3D.cpp
Sucht nach
fügt darunter ein
dadrunter set ihr
sucht in dieser funktion nach
und added DADRÜBER!
jetz sucht ihr nach
und macht daraus
dann in neuz/versioncommon.h
added ihr
Fertig
Credütz an Pumbaaa
Was ist das day & night system?
Seht es euch am besten an mit den screens.
Dämmerung : [Only registered and activated users can see links. Click Here To Register...]
Dunkler : [Only registered and activated users can see links. Click Here To Register...]
Nochmal dunkler als voher :D : [Only registered and activated users can see links. Click Here To Register...]
das wird nacher noch viel dunkler und später wieder hell.
Jetzt zum Code
1.
Ihr geht in world.h
sucht nacht
Code:
public: BOOL InitWorldEnvir( ); // 24½Ã°£ Light ¼³Á¤ ¹× ±âŸ ȯ°æ ÃʱâÈ* #if __VER >= 15 // __GUILD_HOUSE void InProcessing( ); // gmpbigsun : ÇöÀç ¿ùµå·Î ÁøÀԽà Çѹø È£ÃâµÊ void OutProcessing( ); // gmpibgsun : ÇöÀç ¿ùµå¿¡¼* ÅðÀå½Ã Çѹø È£ÃâµÊ #endif // Render void Projection( LPDIRECT3DDEVICE9 pd3dDevice, int nWidth, int nHeight ); void Render( LPDIRECT3DDEVICE9 pd3dDevice, CD3DFont* pFont = NULL ); void RenderBase( LPDIRECT3DDEVICE9 pd3dDevice, CD3DFont* pFont ); // Light, Camera and etc...
Code:
bool IsNight(); FLOAT GetRealTime();
World3D.cpp
Sucht nach
Code:
// Ä«¸Þ¶ó Ãæµ¹Ã¼Å© ½Ã¿¡¸¸ ¾²´Âµí..
BOOL CWorld::CheckBound(D3DXVECTOR3* vPos,D3DXVECTOR3* vDest,D3DXVECTOR3* vOut, FLOAT* fLength )
{
D3DXVECTOR3 tempVec=(*(vPos)-*(vDest));// /10.0f;
float length=D3DXVec3Length(&tempVec);
D3DXVec3Normalize(&tempVec,&tempVec);
tempVec/=10;
D3DXVECTOR3 tempVec2=*(vDest);
D3DXVECTOR3 vDist1, vDist2;
float tempheight;
BOOL b1, b2;
b1 = FALSE; b2 = FALSE;
tempVec2 += (tempVec * 10); // Ä«¸Þ¶ó°¡ ÀÚ²Ù ÁöÇü¿¡ ²¸µé¾î°¡¼* Á» »°´Ù.
BOOL bWaterChkDn = FALSE;
BOOL bWaterChkUp = FALSE;
FLOAT fWaterHeight = 0.0f;
LPWATERHEIGHT pWaterHeight = GetWaterHeight( *vDest );
if( pWaterHeight &&
( pWaterHeight->byWaterTexture & (byte)(~MASK_WATERFRAME)) == WTYPE_WATER )
{
fWaterHeight = (FLOAT)pWaterHeight->byWaterHeight;
//vDest->y += 0.5f;
if( fWaterHeight < vDest->y )
{
bWaterChkDn = TRUE;
}
else
{
bWaterChkUp = TRUE;
}
}
for( int i = 0; i < int( length * 10 ); i++ )
{
tempVec2+=tempVec;
tempheight=GetLandHeight( tempVec2.x, tempVec2.z );
#if __VER >= 11 // __FIX_PICKING
// Ä«¸Þ¶ó¸¦ ¾à°£ ´õ µé¾îÁÖ±â À§Çؼ* ¼öÁ¤ - 07.10.24 - micky
if(tempVec2.y<tempheight+0.6f)
#else
if(tempVec2.y<tempheight+0.3f)
#endif
{
b1 = TRUE;
vDist1 = tempVec2 - *vDest; // »ç¶÷¿¡¼* ±³Â÷Á¡±îÁöÀÇ ¹æÇ⺤ÅÍ
// *(vOut)=tempVec2;
// vOut->y+=1.1f;
// return TRUE;
break;
}
// Äɸ¯ÅͰ¡ ¹°À§¿¡ ÀÖ°í, Àá±âÁö ¾Ê¾Ò´Ù¸é ¼ö¸é Ãæµ¹Ã¼Å©ÇÏ¿© Ä«¸Þ¶ó°¡ ¹°¼ÓÀ¸·Î ¾Èµé¾î°¡°Ô ó¸®ÇÔ.
D3DXVECTOR3 vWaterVec = tempVec2;
//vWaterVec.y+=0.5f;
if( bWaterChkDn )
{
if(vWaterVec.y<fWaterHeight+0.3f)
{
b1 = TRUE;
vDist1 = vWaterVec - *vDest;
break;
}
}
#if __VER < 10
else
// Äɸ¯ÅͰ¡ ¹°À§¿¡ ÀÖ°í, Àá°å´Ù¸é ¼ö¸é Ãæµ¹Ã¼Å©ÇÏ¿© Ä«¸Þ¶ó°¡ ¹°¹ÛÀ¸·Î ¸ø³ª°¡°Ô ó¸®ÇÔ
if( bWaterChkUp )
{
if(vWaterVec.y>fWaterHeight-0.3f)
{
b1 = TRUE;
vDist1 = vWaterVec - *vDest;
break;
}
}
#endif
}
D3DXVECTOR3 vIntersect;
BOOL bRet = IntersectObjLine2( &vIntersect, *vDest, *vPos, TRUE );
if( bRet )
{
b2 = TRUE;
vDist2 = vIntersect - *vDest; // »ç¶÷¿¡¼* ±³Â÷Á¡±îÁöÀÇ ¹æÇ⺤ÅÍ
// *vOut = vIntersect;
}
FLOAT fDist1, fDist2;
if( b1 == TRUE && b2 == TRUE ) // ÁöÇüÀ̶û ¿ÀºêÁ§Æ® ¸ðµÎ ±³Â÷Çß´Ù
{
fDist1 = D3DXVec3LengthSq( &vDist1 );
fDist2 = D3DXVec3LengthSq( &vDist2 );
if( fDist1 < fDist2 ) // ±×Áß °¡±î¿î³ðÀ¸·Î ¾¸
{
*fLength = D3DXVec3Length( &vDist1 );
*vOut = tempVec2;
}
else
{
*fLength = D3DXVec3Length( &vDist2 );
*vOut = vIntersect;
}
return TRUE;
} else
if( b1 ) // ÁöÇü¿¡¸¸ ºÎµúÇû´Ù.
{
*fLength = D3DXVec3Length( &vDist1 );
*vOut = tempVec2;
return TRUE;
} else
if( b2 ) // ¿ÀºêÁ§Æ®¿¡¸¸ ºÎµúÇû´Ù
{
*fLength = D3DXVec3Length( &vDist2 );
*vOut = vIntersect;
return TRUE;
}
// ¾Æ¹«µ¥µµ ºÎµúÈ÷Áö ¾Ê¾Ò´Ù.
*fLength = length;
return FALSE;
}
Code:
#ifdef __CLIENT
bool CWorld::IsNight(){
return ( g_GameTimer.m_nHour-1 <= 6 || g_GameTimer.m_nHour-1 >= 18 );
}
FLOAT CWorld::GetRealTime()
{
FLOAT nRlTime = 0;
nRlTime = (FLOAT)(g_GameTimer.m_nHour-1)*2;
if( g_GameTimer.m_nMin < 30 )
--nRlTime;
if( g_GameTimer.m_nHour-1 == 23 && g_GameTimer.m_nMin > 45 )
nRlTime+=0.5F;
if( nRlTime > 24 )
{
return ((-1)*(nRlTime - 48 ));
}
return nRlTime;
}
#endif
Code:
void CWorld::SetLight( BOOL bLight )
Code:
pLight->SetDir( m_v3LightDir.x, m_v3LightDir.y, m_v3LightDir.z );
pLight->Appear( m_pd3dDevice, TRUE );
DWORD dwR, dwG, dwB;
dwR = (DWORD)( pLight->Ambient.r * 255 );
dwG = (DWORD)( pLight->Ambient.g * 255 );
dwB = (DWORD)( pLight->Ambient.b * 255 );
dwAmbient = D3DCOLOR_ARGB( 255, dwR, dwG, dwB );
}
}
else
{
Code:
#ifdef __DAY_NIGHT
if( !m_bIsIndoor ){
m_fFogStartValue = 10.0F;
m_fFogEndValue = 70.0F + GetRealTime() * 30.0F;
m_fFogDensity = 0.0F;
m_v3LightDir.x = 0.0F;
m_v3LightDir.y = -1.0F;
m_v3LightDir.z = 0.0F;
}
#endif // __DAY_NIGHT
Code:
if( m_bIsIndoor )
{
if( pLight )
{
// À½¿µ º¯È*
pLight->Diffuse.r = ((m_dwDiffuse>>16) & 0xff) / 255.f;
pLight->Diffuse.g = ((m_dwDiffuse>>8) & 0xff) / 255.f;
pLight->Diffuse.b = ((m_dwDiffuse) & 0xff) / 255.f;
Code:
if( m_bIsIndoor
#ifdef __DAY_NIGHT
|| IsNight()
#endif // __DAY_NIGHT
)
{
if( pLight )
{
// À½¿µ º¯È*
pLight->Diffuse.r = ((m_dwDiffuse>>16) & 0xff) / 255.f;
pLight->Diffuse.g = ((m_dwDiffuse>>8) & 0xff) / 255.f;
pLight->Diffuse.b = ((m_dwDiffuse) & 0xff) / 255.f;
added ihr
Code:
#define __DAY_NIGHT
Credütz an Pumbaaa