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

119 lines
3.3 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================
#ifndef MDLLIB_H
#define MDLLIB_H
#ifdef _WIN32
#pragma once
#endif
#include "appframework/IAppSystem.h"
#include "tier1/utlbuffer.h"
//
// Forward interface declarations
//
abstract_class IMdlLib;
abstract_class IMdlStripInfo;
//-----------------------------------------------------------------------------
// Purpose: Interface to accessing model data operations
//-----------------------------------------------------------------------------
#define MDLLIB_INTERFACE_VERSION "VMDLLIB001"
abstract_class IMdlLib : public IAppSystem {
//
// Stripping routines
//
public:
//
// StripModelBuffers
// The main function that strips the model buffers
// mdlBuffer - mdl buffer, updated, no size
//change vvdBuffer - vvd buffer, updated, size reduced
// vtxBuffer - vtx buffer, updated, size
//reduced
// ppStripInfo - if nonzero on return will be filled with the
//stripping info
//
virtual bool StripModelBuffers(
CUtlBuffer & mdlBuffer, CUtlBuffer & vvdBuffer, CUtlBuffer & vtxBuffer,
IMdlStripInfo * *ppStripInfo) = 0;
//
// CreateNewStripInfo
// Creates an empty strip info or resets an existing strip info so that it
//can be reused.
//
virtual bool CreateNewStripInfo(IMdlStripInfo * *ppStripInfo) = 0;
};
abstract_class IMdlStripInfo {
//
// Serialization
//
public:
// Save the strip info to the buffer (appends to the end)
virtual bool Serialize(CUtlBuffer & bufStorage) const = 0;
// Load the strip info from the buffer (reads from the current position as
// much as needed)
virtual bool UnSerialize(CUtlBuffer & bufData) = 0;
//
// Stripping info state
//
public:
// Returns the checksums that the stripping info was generated for:
// plChecksumOriginal if non-NULL will hold the checksum of the original
//model submitted for stripping plChecksumStripped if non-NULL will
//hold the resulting checksum of the stripped model
virtual bool GetCheckSum(long *plChecksumOriginal, long *plChecksumStripped)
const = 0;
//
// Stripping
//
public:
//
// StripHardwareVertsBuffer
// The main function that strips the vhv buffer
// vhvBuffer - vhv buffer, updated, size reduced
//
virtual bool StripHardwareVertsBuffer(CUtlBuffer & vhvBuffer) = 0;
//
// StripModelBuffer
// The main function that strips the mdl buffer
// mdlBuffer - mdl buffer, updated
//
virtual bool StripModelBuffer(CUtlBuffer & mdlBuffer) = 0;
//
// StripVertexDataBuffer
// The main function that strips the vvd buffer
// vvdBuffer - vvd buffer, updated, size reduced
//
virtual bool StripVertexDataBuffer(CUtlBuffer & vvdBuffer) = 0;
//
// StripOptimizedModelBuffer
// The main function that strips the vtx buffer
// vtxBuffer - vtx buffer, updated, size reduced
//
virtual bool StripOptimizedModelBuffer(CUtlBuffer & vtxBuffer) = 0;
//
// Release the object with "delete this"
//
public:
virtual void DeleteThis() = 0;
};
#endif // MDLLIB_H