2020-04-22 16:56:21 +00:00
|
|
|
//========= 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;
|
|
|
|
|
2022-11-05 11:22:27 +00:00
|
|
|
fluid_t() = default;
|
2020-04-22 16:56:21 +00:00
|
|
|
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
|