diff options
| author | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
|---|---|---|
| committer | FluorescentCIAAfricanAmerican <[email protected]> | 2020-04-22 12:56:21 -0400 |
| commit | 3bf9df6b2785fa6d951086978a3e66f49427166a (patch) | |
| tree | 2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /dmserializers/dmserializers.cpp | |
| download | archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.tar.xz archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.zip | |
Diffstat (limited to 'dmserializers/dmserializers.cpp')
| -rw-r--r-- | dmserializers/dmserializers.cpp | 163 |
1 files changed, 163 insertions, 0 deletions
diff --git a/dmserializers/dmserializers.cpp b/dmserializers/dmserializers.cpp new file mode 100644 index 0000000..860bcf9 --- /dev/null +++ b/dmserializers/dmserializers.cpp @@ -0,0 +1,163 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// The copyright to the contents herein is the property of Valve, L.L.C. +// The contents may be used and/or copied only with the written permission of +// Valve, L.L.C., or in accordance with the terms and conditions stipulated in +// the agreement/contract under which the contents have been supplied. +// +// $Header: $ +// $NoKeywords: $ +// +// Converts from any one DMX file format to another +// +//============================================================================= + +#include "dmserializers.h" +#include "dmserializers/idmserializers.h" +#include "appframework/iappsystem.h" +#include "filesystem.h" +#include "datamodel/idatamodel.h" +#include "datamodel/dmelementfactoryhelper.h" +#include "tier2/tier2.h" + + +//----------------------------------------------------------------------------- +// format updater macros +//----------------------------------------------------------------------------- + +#define DECLARE_FORMAT_UPDATER( _name, _description, _extension, _version, _encoding ) \ + class CDmFormatUpdater_ ## _name : public IDmFormatUpdater \ + { \ + public: \ + CDmFormatUpdater_ ## _name() {} \ + virtual const char *GetName() const { return #_name; } \ + virtual const char *GetDescription() const { return _description; } \ + virtual const char *GetExtension() const { return _extension; } \ + virtual const char *GetDefaultEncoding() const { return _encoding; } \ + virtual int GetCurrentVersion() const { return _version; } \ + virtual bool Update( CDmElement **pRoot, int nSourceVersion ) { return true; } \ + }; \ + static CDmFormatUpdater_ ## _name s_FormatUpdater ## _name; \ + void InstallFormatUpdater_ ## _name( IDataModel *pFactory ) \ + { \ + pFactory->AddFormatUpdater( &s_FormatUpdater ## _name ); \ + } + +#define INSTALL_FORMAT_UPDATER( _name ) InstallFormatUpdater_ ## _name( g_pDataModel ) + + +//----------------------------------------------------------------------------- +// format updaters +//----------------------------------------------------------------------------- + +DECLARE_FORMAT_UPDATER( dmx, "Generic DMX", "dmx", 1, "binary" ) +DECLARE_FORMAT_UPDATER( movieobjects, "Generic MovieObjects", "dmx", 1, "binary" ) +DECLARE_FORMAT_UPDATER( sfm, "Generic SFM", "dmx", 1, "binary" ) +DECLARE_FORMAT_UPDATER( sfm_session, "SFM Session", "dmx", 1, "binary" ) +DECLARE_FORMAT_UPDATER( sfm_trackgroup, "SFM TrackGroup", "dmx", 1, "binary" ) +DECLARE_FORMAT_UPDATER( pcf, "Particle Configuration File", "dmx", 1, "binary" ) +DECLARE_FORMAT_UPDATER( preset, "Preset File", "dmx", 1, "keyvalues2" ) +DECLARE_FORMAT_UPDATER( facial_animation, "Facial Animation File", "dmx", 1, "binary" ) +DECLARE_FORMAT_UPDATER( model, "DMX Model", "dmx", 1, "binary" ) +//DECLARE_FORMAT_UPDATER( animation, "DMX Animation", "dmx", 1, "binary" ) +//DECLARE_FORMAT_UPDATER( dcc_makefile, "DMX Makefile", "dmx", 1, "keyvalues2" ) + + +//----------------------------------------------------------------------------- +// The application object +//----------------------------------------------------------------------------- +class CDmSerializers : public CBaseAppSystem< IDmSerializers > +{ + typedef CBaseAppSystem< IDmSerializers > BaseClass; + +public: + // Inherited from IAppSystem + virtual bool Connect( CreateInterfaceFn factory ); + virtual void *QueryInterface( const char *pInterfaceName ); + virtual InitReturnVal_t Init(); +}; + + +//----------------------------------------------------------------------------- +// Singleton interface +//----------------------------------------------------------------------------- +static CDmSerializers g_DmSerializers; +IDmSerializers *g_pDmSerializers = &g_DmSerializers; + + +//----------------------------------------------------------------------------- +// Here's where the app systems get to learn about each other +//----------------------------------------------------------------------------- +bool CDmSerializers::Connect( CreateInterfaceFn factory ) +{ + if ( !BaseClass::Connect( factory ) ) + return false; + + if ( !factory( FILESYSTEM_INTERFACE_VERSION, NULL ) ) + { + Warning( "DmSerializers needs the file system to function" ); + return false; + } + + // Here's the main point where all DM element classes get installed + // Necessary to do it here so all type symbols for all DME classes are set + // up prior to install + InstallDmElementFactories( ); + + return true; +} + + +//----------------------------------------------------------------------------- +// Here's where systems can access other interfaces implemented by this object +//----------------------------------------------------------------------------- +void *CDmSerializers::QueryInterface( const char *pInterfaceName ) +{ + if ( !V_strcmp( pInterfaceName, DMSERIALIZERS_INTERFACE_VERSION ) ) + return (IDmSerializers*)this; + + return NULL; +} + + +//----------------------------------------------------------------------------- +// Init, shutdown +//----------------------------------------------------------------------------- +InitReturnVal_t CDmSerializers::Init() +{ + InitReturnVal_t nRetVal = BaseClass::Init(); + if ( nRetVal != INIT_OK ) + return nRetVal; + + // Install non-dmx importers + InstallActBusyImporter( g_pDataModel ); + InstallVMTImporter( g_pDataModel ); + InstallVMFImporter( g_pDataModel ); + + // Install legacy dmx importers + InstallSFMV1Importer( g_pDataModel ); + InstallSFMV2Importer( g_pDataModel ); + InstallSFMV3Importer( g_pDataModel ); + InstallSFMV4Importer( g_pDataModel ); + InstallSFMV5Importer( g_pDataModel ); + InstallSFMV6Importer( g_pDataModel ); + InstallSFMV7Importer( g_pDataModel ); + InstallSFMV8Importer( g_pDataModel ); + InstallSFMV9Importer( g_pDataModel ); + + // install dmx format updaters + INSTALL_FORMAT_UPDATER( dmx ); + INSTALL_FORMAT_UPDATER( movieobjects ); + INSTALL_FORMAT_UPDATER( sfm ); + INSTALL_FORMAT_UPDATER( sfm_session ); + INSTALL_FORMAT_UPDATER( sfm_trackgroup ); + INSTALL_FORMAT_UPDATER( pcf ); + INSTALL_FORMAT_UPDATER( preset ); + INSTALL_FORMAT_UPDATER( facial_animation ); + INSTALL_FORMAT_UPDATER( model ); +// INSTALL_FORMAT_UPDATER( animation ); +// INSTALL_FORMAT_UPDATER( dcc_makefile ); + + return INIT_OK; +} + |