66 lines
2.4 KiB
C
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
|