#pragma once class idMD5Anim; typedef struct { jointHandle_t num; jointHandle_t parentNum; int channel; } jointInfo_t; class idMD5AnimInterface { public: virtual const char* Name() const = 0; }; class idAnimInterface { public: virtual int NumAnims() const = 0; virtual const idMD5Anim* MD5Anim(int index) const = 0; virtual const char* Name() const = 0; }; /* =============== idDeclModelDefInterface Engine/editor-facing interface for modelDef decls. This lets Radiant / editor code depend on the modelDef API without needing the full concrete idDeclModelDef type in scope. =============== */ class idDeclModelDefInterface : public idDecl { public: virtual ~idDeclModelDefInterface() {} // idDecl interface virtual size_t Size(void) const = 0; virtual const char* DefaultDefinition(void) const = 0; virtual bool Parse(const char* text, const int textLength) = 0; virtual void FreeData(void) = 0; // modelDef interface virtual void Touch(void) const = 0; virtual const idDeclSkin* GetDefaultSkin(void) const = 0; virtual const idJointQuat* GetDefaultPose(void) const = 0; virtual void SetupJoints(int* numJoints, idJointMat** jointList, idBounds& frameBounds, bool removeOriginOffset) const = 0; virtual idRenderModel* ModelHandle(void) const = 0; virtual void GetJointList(const char* jointnames, idList& jointList) const = 0; virtual const jointInfo_t* FindJoint(const char* name) const = 0; virtual int NumAnims(void) const = 0; virtual const idAnimInterface* GetAnim(int index) const = 0; virtual int GetSpecificAnim(const char* name) const = 0; virtual int GetAnim(const char* name) const = 0; virtual bool HasAnim(const char* name) const = 0; virtual const idDeclSkin* GetSkin(void) const = 0; virtual const char* GetModelName(void) const = 0; virtual const idList& Joints(void) const = 0; virtual const int* JointParents(void) const = 0; virtual int NumJoints(void) const = 0; virtual const jointInfo_t* GetJoint(int jointHandle) const = 0; virtual const char* GetJointName(int jointHandle) const = 0; virtual int NumJointsOnChannel(int channel) const = 0; virtual const int* GetChannelJoints(int channel) const = 0; virtual const idVec3& GetVisualOffset(void) const = 0; };