mirror of
https://github.com/ValveSoftware/source-sdk-2013.git
synced 2025-04-08 11:01:33 +00:00
enabled shape support for detail sprites
fixed aspect ratio for detail.vbsp texture allowed vertex lit models
This commit is contained in:
parent
8743718d0b
commit
6a0210513b
1 changed files with 31 additions and 34 deletions
|
@ -1,3 +1,11 @@
|
|||
//----------------------------------
|
||||
// CHANGES
|
||||
//
|
||||
// Enabled shape support
|
||||
// Fixed aspect ratio for detail.vbsp
|
||||
// Allowed vertex lit models
|
||||
//----------------------------------
|
||||
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// Purpose: Draws grasses and other small objects
|
||||
|
@ -26,14 +34,10 @@
|
|||
#include <algorithm>
|
||||
#include "tier0/valve_minmax_on.h"
|
||||
|
||||
#if defined(DOD_DLL) || defined(CSTRIKE_DLL)
|
||||
#define USE_DETAIL_SHAPES
|
||||
#endif
|
||||
|
||||
#ifdef USE_DETAIL_SHAPES
|
||||
#include "engine/ivdebugoverlay.h"
|
||||
#include "playerenumerator.h"
|
||||
#endif
|
||||
|
||||
#include "materialsystem/imaterialsystemhardwareconfig.h"
|
||||
|
||||
|
@ -1471,24 +1475,7 @@ void CDetailObjectSystem::LevelInitPreEntity()
|
|||
}
|
||||
}
|
||||
|
||||
if ( m_DetailObjects.Count() || m_DetailSpriteDict.Count() )
|
||||
{
|
||||
// There are detail objects in the level, so precache the material
|
||||
PrecacheMaterial( DETAIL_SPRITE_MATERIAL );
|
||||
IMaterial *pMat = m_DetailSpriteMaterial;
|
||||
// adjust for non-square textures (cropped)
|
||||
float flRatio = (float)( pMat->GetMappingWidth() ) / pMat->GetMappingHeight();
|
||||
if ( flRatio > 1.0 )
|
||||
{
|
||||
for( int i = 0; i<m_DetailSpriteDict.Count(); i++ )
|
||||
{
|
||||
m_DetailSpriteDict[i].m_TexUL.y *= flRatio;
|
||||
m_DetailSpriteDict[i].m_TexLR.y *= flRatio;
|
||||
m_DetailSpriteDictFlipped[i].m_TexUL.y *= flRatio;
|
||||
m_DetailSpriteDictFlipped[i].m_TexLR.y *= flRatio;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
int detailPropLightingLump;
|
||||
if( g_pMaterialSystemHardwareConfig->GetHDRType() != HDR_TYPE_NONE )
|
||||
|
@ -1512,13 +1499,30 @@ void CDetailObjectSystem::LevelInitPreEntity()
|
|||
|
||||
void CDetailObjectSystem::LevelInitPostEntity()
|
||||
{
|
||||
const char *pDetailSpriteMaterial = DETAIL_SPRITE_MATERIAL;
|
||||
C_World *pWorld = GetClientWorldEntity();
|
||||
if ( pWorld && pWorld->GetDetailSpriteMaterial() && *(pWorld->GetDetailSpriteMaterial()) )
|
||||
if (m_DetailObjects.Count() || m_DetailSpriteDict.Count())
|
||||
{
|
||||
pDetailSpriteMaterial = pWorld->GetDetailSpriteMaterial();
|
||||
const char *pDetailSpriteMaterial = DETAIL_SPRITE_MATERIAL;
|
||||
C_World *pWorld = GetClientWorldEntity();
|
||||
if (pWorld && pWorld->GetDetailSpriteMaterial() && *(pWorld->GetDetailSpriteMaterial()))
|
||||
pDetailSpriteMaterial = pWorld->GetDetailSpriteMaterial();
|
||||
|
||||
m_DetailSpriteMaterial.Init(pDetailSpriteMaterial, TEXTURE_GROUP_OTHER);
|
||||
PrecacheMaterial(pDetailSpriteMaterial);
|
||||
IMaterial *pMat = m_DetailSpriteMaterial;
|
||||
|
||||
// adjust for non-square textures (cropped)
|
||||
float flRatio = pMat->GetMappingWidth() / pMat->GetMappingHeight();
|
||||
if (flRatio > 1.0)
|
||||
{
|
||||
for (int i = 0; i<m_DetailSpriteDict.Count(); i++)
|
||||
{
|
||||
m_DetailSpriteDict[i].m_TexUL.y *= flRatio;
|
||||
m_DetailSpriteDict[i].m_TexLR.y *= flRatio;
|
||||
m_DetailSpriteDictFlipped[i].m_TexUL.y *= flRatio;
|
||||
m_DetailSpriteDictFlipped[i].m_TexLR.y *= flRatio;
|
||||
}
|
||||
}
|
||||
}
|
||||
m_DetailSpriteMaterial.Init( pDetailSpriteMaterial, TEXTURE_GROUP_OTHER );
|
||||
|
||||
if ( GetDetailController() )
|
||||
{
|
||||
|
@ -1595,13 +1599,6 @@ void CDetailObjectSystem::UnserializeModelDict( CUtlBuffer& buf )
|
|||
DetailModelDict_t dict;
|
||||
dict.m_pModel = (model_t *)engine->LoadModel( lump.m_Name, true );
|
||||
|
||||
// Don't allow vertex-lit models
|
||||
if (modelinfo->IsModelVertexLit(dict.m_pModel))
|
||||
{
|
||||
Warning("Detail prop model %s is using vertex-lit materials!\nIt must use unlit materials!\n", lump.m_Name );
|
||||
dict.m_pModel = (model_t *)engine->LoadModel( "models/error.mdl" );
|
||||
}
|
||||
|
||||
m_DetailObjectDict.AddToTail( dict );
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue