This repository has been archived on 2024-06-13. You can view files and clone it, but cannot push or open issues or pull requests.
nekohook/modules/source2013/sdk/game/shared/physics_saverestore.h
2020-08-04 13:13:01 -04:00

66 lines
2.4 KiB
C++

//========= Copyright 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), 0}, 1, \
FTYPEDESC_SAVE, NULL, \
GetPhysObjSaveRestoreOps( \
GetPhysIID(&(((classNameTypedef *)0)->name))), \
NULL \
}
#define DEFINE_PHYSPTR_ARRAY(name) \
{ \
FIELD_CUSTOM, #name, {offsetof(classNameTypedef, name), 0}, \
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