summaryrefslogtreecommitdiff
path: root/dmserializers/dmserializers.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /dmserializers/dmserializers.cpp
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'dmserializers/dmserializers.cpp')
-rw-r--r--dmserializers/dmserializers.cpp163
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;
+}
+