Update Healer Man server

This commit is contained in:
phenom committed 2026-10-06 22:25:34 -04:00
1 parent 6114a2295f
commit 69809f7228
593 files changed
+903643 -40774

No files matched your search

@@ -60,9 +60,14 @@ namespace
{
std::string name;
std::string shaderName;
std::string shaderObjectName;
std::string sourceTexture;
std::string resolvedTexture;
std::string stagedTexture;
INT32 materialType = -1;
INT32 lightingType = -1;
std::vector<std::string> textureChannels;
std::vector<std::string> alphaParameters;
bool textureCopied = false;
};
@@ -284,6 +289,98 @@ namespace
return path;
}
const char *MaterialTypeName(INT32 value)
{
switch(value)
{
case ruMATERIAL_TYPE_STANDARD: return "standard";
case ruMATERIAL_TYPE_TRANSLUCENT: return "translucent-deprecated";
case ruMATERIAL_TYPE_FX: return "fx-deprecated";
default: return "unknown";
}
}
const char *LightingTypeName(INT32 value)
{
switch(value)
{
case ruMATERIAL_LIGHTINGTYPE_STANDARD: return "standard";
case ruMATERIAL_LIGHTINGTYPE_PRELIT: return "prelit";
case ruMATERIAL_LIGHTINGTYPE_RESERVED: return "reserved-self-illuminated";
case ruMATERIAL_LIGHTINGTYPE_COLORED: return "colored";
default: return "unknown";
}
}
const char *TextureChannelName(INT32 value)
{
switch(value)
{
case ruTEXCHANNEL_DIFFUSEMAP: return "diffuse";
case ruTEXCHANNEL_DETAILMAP: return "detail";
case ruTEXCHANNEL_LIGHTMAP: return "lightmap";
case ruTEXCHANNEL_DIFFUSECUBEMAP: return "diffuse-cubemap";
case ruTEXCHANNEL_1DATTENUATIONMAP: return "attenuation-1d";
case ruTEXCHANNEL_2DATTENUATIONMAP: return "attenuation-2d";
case ruTEXCHANNEL_3DATTENUATIONMAP: return "attenuation-3d";
case ruTEXCHANNEL_ENVIRONMENTMAP: return "environment";
case ruTEXCHANNEL_REFLECTIONMAP: return "reflection";
case ruTEXCHANNEL_REFRACTIONMAP: return "refraction";
case ruTEXCHANNEL_CAUSTICMAP: return "caustic";
case ruTEXCHANNEL_BUMPMAP: return "bump";
case ruTEXCHANNEL_BUMPMAP2: return "bump-2";
case ruTEXCHANNEL_NORMALMAP: return "normal";
case ruTEXCHANNEL_NORMALMAP2: return "normal-2";
case ruTEXCHANNEL_DISPLACEMENTMAP: return "displacement";
case ruTEXCHANNEL_NORMALIZATIONCUBEMAP: return "normalization-cubemap";
case ruTEXCHANNEL_SHADOWMAP: return "shadow";
case ruTEXCHANNEL_SHADOWDEPTHMAP: return "shadow-depth";
case ruTEXCHANNEL_SHADOWOVERLAY: return "shadow-overlay";
case ruTEXCHANNEL_GLOSSMAP: return "gloss";
case ruTEXCHANNEL_TOONGRADIENTMAP: return "toon-gradient";
case ruTEXCHANNEL_DISTORTMAP: return "distortion";
case ruTEXCHANNEL_BACKBUFFER: return "backbuffer";
case ruTEXCHANNEL_RTLIGHTMAP: return "rt-lightmap";
case ruTEXCHANNEL_GLOWMAP: return "glow";
default: return "unknown";
}
}
const char *AlphaParameterName(INT32 value)
{
switch(value)
{
case ruPARAMTYPE_MATERIAL_ALPHATESTMODE: return "alphaTestMode";
case ruPARAMTYPE_MATERIAL_ALPHATESTVALUE: return "alphaTestValue";
case ruPARAMTYPE_MATERIAL_ALPHAMODE: return "alphaMode";
case ruPARAMTYPE_MATERIAL_TRANSLUCENT: return "translucent";
case ruPARAMTYPE_MATERIAL_ALPHA: return "alpha";
case ruPARAMTYPE_MATERIAL_ALPHAMODIFIER: return "alphaModifier";
case ruPARAMTYPE_MATERIAL_SMOOTHBLEND: return "smoothBlend";
case ruPARAMTYPE_MATERIAL_COLORWRITEENABLE: return "colorWriteEnable";
default: return NULL;
}
}
std::string AlphaParameterValue(INT32 type, UINT64 raw)
{
std::ostringstream out;
if(type == ruPARAMTYPE_MATERIAL_ALPHA || type == ruPARAMTYPE_MATERIAL_ALPHAMODIFIER)
{
out << std::setprecision(9) << RuCastINT64ToFloat(raw);
}
else if(type == ruPARAMTYPE_MATERIAL_TRANSLUCENT || type == ruPARAMTYPE_MATERIAL_SMOOTHBLEND
|| type == ruPARAMTYPE_MATERIAL_COLORWRITEENABLE)
{
out << (raw ? "true" : "false");
}
else
{
out << raw;
}
return out.str();
}
bool FileExists(const std::string &path)
{
const DWORD attributes = GetFileAttributesA(path.c_str());
@@ -621,9 +718,54 @@ namespace
if(material)
{
material->BindTextures(TRUE);
const char *shaderName = material->GetShaderName();
if(shaderName)
info.shaderName = shaderName;
IRuShader *shader = material->GetShader();
if(shader && shader->GetShaderName())
info.shaderObjectName = shader->GetShaderName();
info.materialType = static_cast<INT32>(material->GetMaterialType());
info.lightingType = static_cast<INT32>(material->GetLightingType());
for(INT32 channelIndex = 0; channelIndex < material->GetNumTextureChannels(); ++channelIndex)
{
const RuTextureChannel channel = material->GetTextureChannel(channelIndex);
IRuBaseTexture *channelTexture = material->GetTexture(channel);
std::ostringstream channelRow;
channelRow << "{\"id\":" << static_cast<INT32>(channel)
<< ",\"name\":\"" << TextureChannelName(static_cast<INT32>(channel))
<< "\",\"texture\":\""
<< JsonEscape(channelTexture && channelTexture->GetTextureName() ? channelTexture->GetTextureName() : "")
<< "\"}";
info.textureChannels.push_back(channelRow.str());
}
CRuParameterBlock *parameters = material->GetParameterBlock();
const INT32 alphaParameterTypes[] = {
ruPARAMTYPE_MATERIAL_ALPHATESTMODE,
ruPARAMTYPE_MATERIAL_ALPHATESTVALUE,
ruPARAMTYPE_MATERIAL_ALPHAMODE,
ruPARAMTYPE_MATERIAL_TRANSLUCENT,
ruPARAMTYPE_MATERIAL_ALPHA,
ruPARAMTYPE_MATERIAL_ALPHAMODIFIER,
ruPARAMTYPE_MATERIAL_SMOOTHBLEND,
ruPARAMTYPE_MATERIAL_COLORWRITEENABLE
};
for(std::size_t parameterIndex = 0;
parameterIndex < sizeof(alphaParameterTypes) / sizeof(alphaParameterTypes[0]);
++parameterIndex)
{
const INT32 parameterType = alphaParameterTypes[parameterIndex];
UINT64 rawValue = 0;
if(parameters && parameters->GetParameter(static_cast<RuParameterType>(parameterType), rawValue))
{
std::ostringstream parameterRow;
parameterRow << "{\"id\":" << parameterType
<< ",\"name\":\"" << AlphaParameterName(parameterType)
<< "\",\"value\":" << AlphaParameterValue(parameterType, rawValue)
<< ",\"rawHex\":\"0x" << std::hex << rawValue << std::dec << "\"}";
info.alphaParameters.push_back(parameterRow.str());
}
}
info.sourceTexture = NormalizeResourcePath(FindMaterialTexture(material));
}
@@ -923,6 +1065,25 @@ namespace
report << " {\n";
report << " \"name\": \"" << JsonEscape(info.name) << "\",\n";
report << " \"shader\": \"" << JsonEscape(info.shaderName) << "\",\n";
report << " \"shaderObject\": \"" << JsonEscape(info.shaderObjectName) << "\",\n";
report << " \"materialType\": {\"value\":" << info.materialType
<< ",\"name\":\"" << MaterialTypeName(info.materialType) << "\"},\n";
report << " \"lightingType\": {\"value\":" << info.lightingType
<< ",\"name\":\"" << LightingTypeName(info.lightingType) << "\"},\n";
report << " \"sourceTextureChannels\": [";
for(std::size_t channelIndex = 0; channelIndex < info.textureChannels.size(); ++channelIndex)
{
if(channelIndex > 0) report << ",";
report << info.textureChannels[channelIndex];
}
report << "],\n";
report << " \"alphaBlendParameters\": [";
for(std::size_t parameterIndex = 0; parameterIndex < info.alphaParameters.size(); ++parameterIndex)
{
if(parameterIndex > 0) report << ",";
report << info.alphaParameters[parameterIndex];
}
report << "],\n";
report << " \"sourceTexture\": \"" << JsonEscape(info.sourceTexture) << "\",\n";
report << " \"resolvedTexture\": \"" << JsonEscape(info.resolvedTexture) << "\",\n";
report << " \"stagedTexture\": \"" << JsonEscape(info.stagedTexture) << "\",\n";