mirror of
https://github.com/0TheSpy/Seaside.git
synced 2025-01-10 19:22:10 +08:00
152 lines
6.8 KiB
C++
152 lines
6.8 KiB
C++
#ifndef IVMODELINFO_H
|
|
#define IVMODELINFO_H
|
|
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#include "platform.h"
|
|
#include "dbg.h"
|
|
|
|
class IMaterial;
|
|
class KeyValues;
|
|
struct vcollide_t;
|
|
struct model_t;
|
|
class Vector;
|
|
class QAngle;
|
|
class CGameTrace;
|
|
struct cplane_t;
|
|
typedef CGameTrace trace_t;
|
|
struct studiohdr_t;
|
|
struct virtualmodel_t;
|
|
typedef unsigned char byte;
|
|
struct virtualterrainparams_t;
|
|
class CPhysCollide;
|
|
typedef unsigned short MDLHandle_t;
|
|
class CUtlBuffer;
|
|
class IClientRenderable;
|
|
|
|
class CStudioHdr;
|
|
enum RenderableTranslucencyType_t
|
|
{
|
|
RENDERABLE_IS_OPAQUE = 0,
|
|
RENDERABLE_IS_TRANSLUCENT,
|
|
RENDERABLE_IS_TWO_PASS,
|
|
};
|
|
|
|
abstract_class IModelLoadCallback
|
|
{
|
|
public:
|
|
virtual void OnModelLoadComplete(const model_t * pModel) = 0;
|
|
|
|
protected:
|
|
~IModelLoadCallback();
|
|
};
|
|
|
|
|
|
class CRefCountedModelIndex
|
|
{
|
|
private:
|
|
int m_nIndex;
|
|
public:
|
|
CRefCountedModelIndex() : m_nIndex(-1) { }
|
|
~CRefCountedModelIndex() { Set(-1); }
|
|
|
|
CRefCountedModelIndex(const CRefCountedModelIndex& src) : m_nIndex(-1) { Set(src.m_nIndex); }
|
|
CRefCountedModelIndex& operator=(const CRefCountedModelIndex& src) { Set(src.m_nIndex); return *this; }
|
|
|
|
explicit CRefCountedModelIndex(int i) : m_nIndex(-1) { Set(i); }
|
|
CRefCountedModelIndex& operator=(int i) { Set(i); return *this; }
|
|
|
|
int Get() const { return m_nIndex; }
|
|
void Set(int i);
|
|
void Clear() { Set(-1); }
|
|
|
|
operator int() const { return m_nIndex; }
|
|
};
|
|
|
|
|
|
#define VMODELINFO_CLIENT_INTERFACE_VERSION "VModelInfoClient006"
|
|
#define VMODELINFO_SERVER_INTERFACE_VERSION_3 "VModelInfoServer003"
|
|
#define VMODELINFO_SERVER_INTERFACE_VERSION "VModelInfoServer004"
|
|
|
|
inline bool IsDynamicModelIndex(int modelindex) { return modelindex < -1; }
|
|
inline bool IsClientOnlyModelIndex(int modelindex) { return modelindex < -1 && (modelindex & 1); }
|
|
|
|
|
|
class IVModelInfo
|
|
{
|
|
public:
|
|
virtual ~IVModelInfo(void) {}
|
|
virtual const model_t* GetModel(int modelindex) const = 0;
|
|
virtual int GetModelIndex(const char* name) const = 0;
|
|
virtual const char* GetModelName(const model_t* model) const = 0;
|
|
virtual vcollide_t* GetVCollide(const model_t* model) const = 0;
|
|
virtual vcollide_t* GetVCollide(int modelindex) const = 0;
|
|
virtual void GetModelBounds(const model_t* model, Vector& mins, Vector& maxs) const = 0;
|
|
virtual void GetModelRenderBounds(const model_t* model, Vector& mins, Vector& maxs) const = 0;
|
|
virtual int GetModelFrameCount(const model_t* model) const = 0;
|
|
virtual int GetModelType(const model_t* model) const = 0;
|
|
virtual void* GetModelExtraData(const model_t* model) = 0;
|
|
virtual bool ModelHasMaterialProxy(const model_t* model) const = 0;
|
|
virtual bool IsTranslucent(model_t const* model) const = 0;
|
|
virtual bool IsTranslucentTwoPass(const model_t* model) const = 0;
|
|
virtual void Unused0() {};
|
|
virtual void UNUSED() = 0;
|
|
virtual void UNUSE11D() = 0;
|
|
virtual RenderableTranslucencyType_t ComputeTranslucencyType(const model_t* model, int nSkin, int nBody) = 0;
|
|
virtual int GetModelMaterialCount(const model_t* model) const = 0;
|
|
virtual void GetModelMaterials(const model_t* model, int count, IMaterial** ppMaterial) = 0;
|
|
virtual bool IsModelVertexLit(const model_t* model) const = 0;
|
|
virtual const char* GetModelKeyValueText(const model_t* model) = 0;
|
|
virtual bool GetModelKeyValue(const model_t* model, CUtlBuffer& buf) = 0;
|
|
virtual float GetModelRadius(const model_t* model) = 0;
|
|
virtual CStudioHdr* GetStudioHdr(MDLHandle_t handle) = 0;
|
|
virtual const studiohdr_t* FindModel(const studiohdr_t* pStudioHdr, void** cache, const char* modelname) const = 0;
|
|
virtual const studiohdr_t* FindModel(void* cache) const = 0;
|
|
virtual virtualmodel_t* GetVirtualModel(const studiohdr_t* pStudioHdr) const = 0;
|
|
virtual uint8_t* GetAnimBlock(const studiohdr_t* pStudioHdr, int iBlock) const = 0;
|
|
virtual void GetModelMaterialColorAndLighting(const model_t* model, Vector const& origin, QAngle const& angles, trace_t* pTrace, Vector& lighting, Vector& matColor) = 0;
|
|
virtual void GetIlluminationPoint(const model_t* model, IClientRenderable* pRenderable, Vector const& origin, QAngle const& angles, Vector* pLightingCenter) = 0;
|
|
virtual int GetModelContents(int modelIndex) const = 0;
|
|
virtual studiohdr_t* GetStudiomodel(const model_t* mod) = 0;
|
|
virtual int GetModelSpriteWidth(const model_t* model) const = 0;
|
|
virtual int GetModelSpriteHeight(const model_t* model) const = 0;
|
|
virtual void SetLevelScreenFadeRange(float flMinSize, float flMaxSize) = 0;
|
|
virtual void GetLevelScreenFadeRange(float* pMinArea, float* pMaxArea) const = 0;
|
|
virtual void SetViewScreenFadeRange(float flMinSize, float flMaxSize) = 0;
|
|
virtual unsigned char ComputeLevelScreenFade(const Vector& vecAbsOrigin, float flRadius, float flFadeScale) const = 0;
|
|
virtual unsigned char ComputeViewScreenFade(const Vector& vecAbsOrigin, float flRadius, float flFadeScale) const = 0;
|
|
virtual int GetAutoplayList(const studiohdr_t* pStudioHdr, unsigned short** pAutoplayList) const = 0;
|
|
virtual CPhysCollide* GetCollideForVirtualTerrain(int index) = 0;
|
|
virtual bool IsUsingFBTexture(const model_t* model, int nSkin, int nBody, IClientRenderable** pClientRenderable) const = 0;
|
|
virtual const model_t* FindOrLoadModel(const char* name) const = 0;
|
|
virtual MDLHandle_t GetCacheHandle(const model_t* model) const = 0;
|
|
virtual int GetBrushModelPlaneCount(const model_t* model) const = 0;
|
|
virtual void GetBrushModelPlane(const model_t* model, int nIndex, cplane_t& plane, Vector* pOrigin) const = 0;
|
|
virtual int GetSurfacepropsForVirtualTerrain(int index) = 0;
|
|
virtual bool UsesEnvCubemap(const model_t* model) const = 0;
|
|
virtual bool UsesStaticLighting(const model_t* model) const = 0;
|
|
};
|
|
|
|
typedef IVModelInfo IVModelInfo003;
|
|
|
|
|
|
abstract_class IVModelInfoClient : public IVModelInfo
|
|
{
|
|
public:
|
|
virtual void OnDynamicModelsStringTableChange(int nStringIndex, const char* pString, const void* pData) = 0;
|
|
|
|
virtual const model_t* FindOrLoadModel(const char* name) = 0;
|
|
};
|
|
|
|
|
|
struct virtualterrainparams_t
|
|
{
|
|
int index;
|
|
};
|
|
|
|
|
|
|
|
|
|
#endif |