//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// // // Purpose: // // $NoKeywords: $ //=============================================================================// #ifndef PHYSICS_SAVERESTORE_H #define PHYSICS_SAVERESTORE_H #if defined( _WIN32 ) #pragma once #endif #include "vphysics_interface.h" class ISaveRestoreBlockHandler; class IPhysicsObject; class CPhysCollide; //----------------------------------------------------------------------------- ISaveRestoreBlockHandler *GetPhysSaveRestoreBlockHandler(); ISaveRestoreOps *GetPhysObjSaveRestoreOps( PhysInterfaceId_t ); //------------------------------------- #define DEFINE_PHYSPTR(name) \ { FIELD_CUSTOM, #name, offsetof(classNameTypedef,name), 1, FTYPEDESC_SAVE, NULL, GetPhysObjSaveRestoreOps( GetPhysIID( &(((classNameTypedef *)0)->name) ) ), NULL } #define DEFINE_PHYSPTR_ARRAY(name) \ { FIELD_CUSTOM, #name, offsetof(classNameTypedef,name), ARRAYSIZE(((classNameTypedef *)0)->name), FTYPEDESC_SAVE, NULL, GetPhysObjSaveRestoreOps( GetPhysIID( &(((classNameTypedef *)0)->name[0]) ) ), NULL } //----------------------------------------------------------------------------- abstract_class IPhysSaveRestoreManager { public: virtual void NoteBBox( const Vector &mins, const Vector &maxs, CPhysCollide * ) = 0; virtual void AssociateModel( IPhysicsObject *, int modelIndex ) = 0; virtual void AssociateModel( IPhysicsObject *, const CPhysCollide *pModel ) = 0; virtual void ForgetModel( IPhysicsObject * ) = 0; virtual void ForgetAllModels() = 0; }; extern IPhysSaveRestoreManager *g_pPhysSaveRestoreManager; //============================================================================= #endif // PHYSICS_SAVERESTORE_H