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

66 lines
2.4 KiB
C

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================//
#ifndef MATERIALPATCH_H
#define MATERIALPATCH_H
#ifdef _WIN32
#pragma once
#endif
#include "utilmatlib.h"
struct MaterialPatchInfo_t {
const char *m_pKey;
const char *m_pRequiredOriginalValue; // NULL if you don't require one.
const char *m_pValue;
MaterialPatchInfo_t() { memset(this, 0, sizeof(*this)); }
};
enum MaterialPatchType_t {
PATCH_INSERT = 0, // Add the key no matter what
PATCH_REPLACE, // Add the key only if it exists
};
void CreateMaterialPatch(const char *pOriginalMaterialName,
const char *pNewMaterialName, const char *pNewKey,
const char *pNewValue, MaterialPatchType_t nPatchType);
// A version which allows you to use multiple key values
void CreateMaterialPatch(const char *pOriginalMaterialName,
const char *pNewMaterialName, int nKeys,
const MaterialPatchInfo_t *pInfo,
MaterialPatchType_t nPatchType);
// This gets a keyvalue from the *unpatched* version of the passed-in material
bool GetValueFromMaterial(const char *pMaterialName, const char *pKey,
char *pValue, int len);
// Gets a keyvalue from a *patched* material
bool GetValueFromPatchedMaterial(const char *pMaterialName, const char *pKey,
char *pValue, int len);
const char *GetOriginalMaterialNameForPatchedMaterial(
const char *pPatchMaterialName);
MaterialSystemMaterial_t FindOriginalMaterial(const char *materialName,
bool *pFound,
bool bComplain = true);
bool DoesMaterialHaveKeyValuePair(const char *pMaterialName,
const char *pKeyName,
const char *pSearchValue);
bool DoesMaterialHaveKey(const char *pMaterialName, const char *pKeyName);
enum LoadMaterialKeyValuesFlags_t {
LOAD_MATERIAL_KEY_VALUES_FLAGS_EXPAND_PATCH = 1,
};
KeyValues *LoadMaterialKeyValues(const char *pMaterialName,
unsigned int nFlags);
void WriteMaterialKeyValuesToPak(const char *pMaterialName, KeyValues *kv);
#endif // MATERIALPATCH_H