diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /mp/src/utils/vrad/vraddll.cpp | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/utils/vrad/vraddll.cpp')
| -rw-r--r-- | mp/src/utils/vrad/vraddll.cpp | 486 |
1 files changed, 243 insertions, 243 deletions
diff --git a/mp/src/utils/vrad/vraddll.cpp b/mp/src/utils/vrad/vraddll.cpp index 87f8d7fc..bc9f2f45 100644 --- a/mp/src/utils/vrad/vraddll.cpp +++ b/mp/src/utils/vrad/vraddll.cpp @@ -1,243 +1,243 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//=============================================================================//
-
-//#include <strstrea.h>
-#include "vraddll.h"
-#include "bsplib.h"
-#include "vrad.h"
-#include "map_shared.h"
-#include "lightmap.h"
-#include "threads.h"
-
-
-static CUtlVector<unsigned char> g_LastGoodLightData;
-static CUtlVector<unsigned char> g_FacesTouched;
-
-
-static CVRadDLL g_VRadDLL;
-EXPOSE_SINGLE_INTERFACE_GLOBALVAR( CVRadDLL, IVRadDLL, VRAD_INTERFACE_VERSION, g_VRadDLL );
-EXPOSE_SINGLE_INTERFACE_GLOBALVAR( CVRadDLL, ILaunchableDLL, LAUNCHABLE_DLL_INTERFACE_VERSION, g_VRadDLL );
-
-
-// ---------------------------------------------------------------------------- //
-// temporary static array data size tracking
-// original data size = 143 megs
-// - converting ddispindices, ddispverts, g_dispinfo, and dlightdata to CUtlVector
-// - 51 megs
-// ---------------------------------------------------------------------------- //
-
-class dat
-{
-public:
- char *name;
- int size;
-};
-#define DATENTRY(name) {#name, sizeof(name)}
-
-dat g_Dats[] =
-{
- DATENTRY(dmodels),
- DATENTRY(dvisdata),
- DATENTRY(dlightdataLDR),
- DATENTRY(dlightdataHDR),
- DATENTRY(dentdata),
- DATENTRY(dleafs),
- DATENTRY(dplanes),
- DATENTRY(dvertexes),
- DATENTRY(g_vertnormalindices),
- DATENTRY(g_vertnormals),
- DATENTRY(texinfo),
- DATENTRY(dtexdata),
- DATENTRY(g_dispinfo),
- DATENTRY(dorigfaces),
- DATENTRY(g_primitives),
- DATENTRY(g_primverts),
- DATENTRY(g_primindices),
- DATENTRY(dfaces),
- DATENTRY(dedges),
- DATENTRY(dleaffaces),
- DATENTRY(dleafbrushes),
- DATENTRY(dsurfedges),
- DATENTRY(dbrushes),
- DATENTRY(dbrushsides),
- DATENTRY(dareas),
- DATENTRY(dareaportals),
- DATENTRY(dworldlights),
- DATENTRY(dleafwaterdata),
- DATENTRY(g_ClipPortalVerts),
- DATENTRY(g_CubemapSamples),
- DATENTRY(g_TexDataStringData),
- DATENTRY(g_TexDataStringTable),
- DATENTRY(g_Overlays)
-};
-
-int CalcDatSize()
-{
- int ret = 0;
- int count = sizeof( g_Dats ) / sizeof( g_Dats[0] );
-
- int i;
- for( i=1; i < count; i++ )
- {
- if( g_Dats[i-1].size > g_Dats[i].size )
- {
- dat temp = g_Dats[i-1];
- g_Dats[i-1] = g_Dats[i];
- g_Dats[i] = temp;
-
- if( i > 1 )
- i -= 2;
- else
- i -= 1;
- }
- }
-
- for( i=0; i < count; i++ )
- ret += g_Dats[i].size;
-
- return ret;
-}
-
-int g_TotalDatSize = CalcDatSize();
-
-
-
-
-int CVRadDLL::main( int argc, char **argv )
-{
- return VRAD_Main( argc, argv );
-}
-
-
-bool CVRadDLL::Init( char const *pFilename )
-{
- VRAD_Init();
-
- // Set options and run vrad startup code.
- do_fast = true;
- g_bLowPriorityThreads = true;
- g_pIncremental = GetIncremental();
-
- VRAD_LoadBSP( pFilename );
- return true;
-}
-
-
-void CVRadDLL::Release()
-{
-}
-
-
-void CVRadDLL::GetBSPInfo( CBSPInfo *pInfo )
-{
- pInfo->dlightdata = pdlightdata->Base();
- pInfo->lightdatasize = pdlightdata->Count();
-
- pInfo->dfaces = dfaces;
- pInfo->m_pFacesTouched = g_FacesTouched.Base();
- pInfo->numfaces = numfaces;
-
- pInfo->dvertexes = dvertexes;
- pInfo->numvertexes = numvertexes;
-
- pInfo->dedges = dedges;
- pInfo->numedges = numedges;
-
- pInfo->dsurfedges = dsurfedges;
- pInfo->numsurfedges = numsurfedges;
-
- pInfo->texinfo = texinfo.Base();
- pInfo->numtexinfo = texinfo.Count();
-
- pInfo->g_dispinfo = g_dispinfo.Base();
- pInfo->g_numdispinfo = g_dispinfo.Count();
-
- pInfo->dtexdata = dtexdata;
- pInfo->numtexdata = numtexdata;
-
- pInfo->texDataStringData = g_TexDataStringData.Base();
- pInfo->nTexDataStringData = g_TexDataStringData.Count();
-
- pInfo->texDataStringTable = g_TexDataStringTable.Base();
- pInfo->nTexDataStringTable = g_TexDataStringTable.Count();
-}
-
-
-bool CVRadDLL::DoIncrementalLight( char const *pVMFFile )
-{
- char tempPath[MAX_PATH], tempFilename[MAX_PATH];
- GetTempPath( sizeof( tempPath ), tempPath );
- GetTempFileName( tempPath, "vmf_entities_", 0, tempFilename );
-
- FileHandle_t fp = g_pFileSystem->Open( tempFilename, "wb" );
- if( !fp )
- return false;
-
- g_pFileSystem->Write( pVMFFile, strlen(pVMFFile)+1, fp );
- g_pFileSystem->Close( fp );
-
- // Parse the new entities.
- if( !LoadEntsFromMapFile( tempFilename ) )
- return false;
-
- // Create lights.
- CreateDirectLights();
-
- // set up sky cameras
- ProcessSkyCameras();
-
- g_bInterrupt = false;
- if( RadWorld_Go() )
- {
- // Save off the last finished lighting results for the BSP.
- g_LastGoodLightData.CopyArray( pdlightdata->Base(), pdlightdata->Count() );
- if( g_pIncremental )
- g_pIncremental->GetFacesTouched( g_FacesTouched );
-
- return true;
- }
- else
- {
- g_iCurFace = 0;
- return false;
- }
-}
-
-
-bool CVRadDLL::Serialize()
-{
- if( !g_pIncremental )
- return false;
-
- if( g_LastGoodLightData.Count() > 0 )
- {
- pdlightdata->CopyArray( g_LastGoodLightData.Base(), g_LastGoodLightData.Count() );
-
- if( g_pIncremental->Serialize() )
- {
- // Delete this so it doesn't keep re-saving it.
- g_LastGoodLightData.Purge();
- return true;
- }
- }
-
- return false;
-}
-
-
-float CVRadDLL::GetPercentComplete()
-{
- return (float)g_iCurFace / numfaces;
-}
-
-
-void CVRadDLL::Interrupt()
-{
- g_bInterrupt = true;
-}
-
-
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +//#include <strstrea.h> +#include "vraddll.h" +#include "bsplib.h" +#include "vrad.h" +#include "map_shared.h" +#include "lightmap.h" +#include "threads.h" + + +static CUtlVector<unsigned char> g_LastGoodLightData; +static CUtlVector<unsigned char> g_FacesTouched; + + +static CVRadDLL g_VRadDLL; +EXPOSE_SINGLE_INTERFACE_GLOBALVAR( CVRadDLL, IVRadDLL, VRAD_INTERFACE_VERSION, g_VRadDLL ); +EXPOSE_SINGLE_INTERFACE_GLOBALVAR( CVRadDLL, ILaunchableDLL, LAUNCHABLE_DLL_INTERFACE_VERSION, g_VRadDLL ); + + +// ---------------------------------------------------------------------------- // +// temporary static array data size tracking +// original data size = 143 megs +// - converting ddispindices, ddispverts, g_dispinfo, and dlightdata to CUtlVector +// - 51 megs +// ---------------------------------------------------------------------------- // + +class dat +{ +public: + char *name; + int size; +}; +#define DATENTRY(name) {#name, sizeof(name)} + +dat g_Dats[] = +{ + DATENTRY(dmodels), + DATENTRY(dvisdata), + DATENTRY(dlightdataLDR), + DATENTRY(dlightdataHDR), + DATENTRY(dentdata), + DATENTRY(dleafs), + DATENTRY(dplanes), + DATENTRY(dvertexes), + DATENTRY(g_vertnormalindices), + DATENTRY(g_vertnormals), + DATENTRY(texinfo), + DATENTRY(dtexdata), + DATENTRY(g_dispinfo), + DATENTRY(dorigfaces), + DATENTRY(g_primitives), + DATENTRY(g_primverts), + DATENTRY(g_primindices), + DATENTRY(dfaces), + DATENTRY(dedges), + DATENTRY(dleaffaces), + DATENTRY(dleafbrushes), + DATENTRY(dsurfedges), + DATENTRY(dbrushes), + DATENTRY(dbrushsides), + DATENTRY(dareas), + DATENTRY(dareaportals), + DATENTRY(dworldlights), + DATENTRY(dleafwaterdata), + DATENTRY(g_ClipPortalVerts), + DATENTRY(g_CubemapSamples), + DATENTRY(g_TexDataStringData), + DATENTRY(g_TexDataStringTable), + DATENTRY(g_Overlays) +}; + +int CalcDatSize() +{ + int ret = 0; + int count = sizeof( g_Dats ) / sizeof( g_Dats[0] ); + + int i; + for( i=1; i < count; i++ ) + { + if( g_Dats[i-1].size > g_Dats[i].size ) + { + dat temp = g_Dats[i-1]; + g_Dats[i-1] = g_Dats[i]; + g_Dats[i] = temp; + + if( i > 1 ) + i -= 2; + else + i -= 1; + } + } + + for( i=0; i < count; i++ ) + ret += g_Dats[i].size; + + return ret; +} + +int g_TotalDatSize = CalcDatSize(); + + + + +int CVRadDLL::main( int argc, char **argv ) +{ + return VRAD_Main( argc, argv ); +} + + +bool CVRadDLL::Init( char const *pFilename ) +{ + VRAD_Init(); + + // Set options and run vrad startup code. + do_fast = true; + g_bLowPriorityThreads = true; + g_pIncremental = GetIncremental(); + + VRAD_LoadBSP( pFilename ); + return true; +} + + +void CVRadDLL::Release() +{ +} + + +void CVRadDLL::GetBSPInfo( CBSPInfo *pInfo ) +{ + pInfo->dlightdata = pdlightdata->Base(); + pInfo->lightdatasize = pdlightdata->Count(); + + pInfo->dfaces = dfaces; + pInfo->m_pFacesTouched = g_FacesTouched.Base(); + pInfo->numfaces = numfaces; + + pInfo->dvertexes = dvertexes; + pInfo->numvertexes = numvertexes; + + pInfo->dedges = dedges; + pInfo->numedges = numedges; + + pInfo->dsurfedges = dsurfedges; + pInfo->numsurfedges = numsurfedges; + + pInfo->texinfo = texinfo.Base(); + pInfo->numtexinfo = texinfo.Count(); + + pInfo->g_dispinfo = g_dispinfo.Base(); + pInfo->g_numdispinfo = g_dispinfo.Count(); + + pInfo->dtexdata = dtexdata; + pInfo->numtexdata = numtexdata; + + pInfo->texDataStringData = g_TexDataStringData.Base(); + pInfo->nTexDataStringData = g_TexDataStringData.Count(); + + pInfo->texDataStringTable = g_TexDataStringTable.Base(); + pInfo->nTexDataStringTable = g_TexDataStringTable.Count(); +} + + +bool CVRadDLL::DoIncrementalLight( char const *pVMFFile ) +{ + char tempPath[MAX_PATH], tempFilename[MAX_PATH]; + GetTempPath( sizeof( tempPath ), tempPath ); + GetTempFileName( tempPath, "vmf_entities_", 0, tempFilename ); + + FileHandle_t fp = g_pFileSystem->Open( tempFilename, "wb" ); + if( !fp ) + return false; + + g_pFileSystem->Write( pVMFFile, strlen(pVMFFile)+1, fp ); + g_pFileSystem->Close( fp ); + + // Parse the new entities. + if( !LoadEntsFromMapFile( tempFilename ) ) + return false; + + // Create lights. + CreateDirectLights(); + + // set up sky cameras + ProcessSkyCameras(); + + g_bInterrupt = false; + if( RadWorld_Go() ) + { + // Save off the last finished lighting results for the BSP. + g_LastGoodLightData.CopyArray( pdlightdata->Base(), pdlightdata->Count() ); + if( g_pIncremental ) + g_pIncremental->GetFacesTouched( g_FacesTouched ); + + return true; + } + else + { + g_iCurFace = 0; + return false; + } +} + + +bool CVRadDLL::Serialize() +{ + if( !g_pIncremental ) + return false; + + if( g_LastGoodLightData.Count() > 0 ) + { + pdlightdata->CopyArray( g_LastGoodLightData.Base(), g_LastGoodLightData.Count() ); + + if( g_pIncremental->Serialize() ) + { + // Delete this so it doesn't keep re-saving it. + g_LastGoodLightData.Purge(); + return true; + } + } + + return false; +} + + +float CVRadDLL::GetPercentComplete() +{ + return (float)g_iCurFace / numfaces; +} + + +void CVRadDLL::Interrupt() +{ + g_bInterrupt = true; +} + + |