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.
2020-08-04 13:13:01 -04:00

69 lines
2.1 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef VCOLLIDE_PARSE_H
#define VCOLLIDE_PARSE_H
#ifdef _WIN32
#pragma once
#endif
#include "vphysics_interface.h"
struct solid_t {
int index;
char name[512];
char parent[512];
char surfaceprop[512];
Vector massCenterOverride;
objectparams_t params;
};
struct fluid_t {
int index;
char surfaceprop[512];
fluidparams_t params;
fluid_t() {}
fluid_t(fluid_t const &src) : params(src.params) { index = src.index; }
};
//-----------------------------------------------------------------------------
// Purpose: Pass this into the parser to handle the keys that vphysics does not
// parse.
//-----------------------------------------------------------------------------
class IVPhysicsKeyHandler {
public:
virtual void ParseKeyValue(void *pData, const char *pKey,
const char *pValue) = 0;
virtual void SetDefaults(void *pData) = 0;
};
class IVPhysicsKeyParser {
public:
virtual ~IVPhysicsKeyParser() {}
virtual const char *GetCurrentBlockName(void) = 0;
virtual bool Finished(void) = 0;
virtual void ParseSolid(solid_t *pSolid,
IVPhysicsKeyHandler *unknownKeyHandler) = 0;
virtual void ParseFluid(fluid_t *pFluid,
IVPhysicsKeyHandler *unknownKeyHandler) = 0;
virtual void ParseRagdollConstraint(
constraint_ragdollparams_t *pConstraint,
IVPhysicsKeyHandler *unknownKeyHandler) = 0;
virtual void ParseSurfaceTable(int *table,
IVPhysicsKeyHandler *unknownKeyHandler) = 0;
virtual void ParseCustom(void *pCustom,
IVPhysicsKeyHandler *unknownKeyHandler) = 0;
virtual void ParseVehicle(vehicleparams_t *pVehicle,
IVPhysicsKeyHandler *unknownKeyHandler) = 0;
virtual void SkipBlock(void) = 0;
};
#endif // VCOLLIDE_PARSE_H