mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 16:15:43 +00:00
chore: restructure t6 weapon camo json
This commit is contained in:
parent
c881cd6fd3
commit
742b8d5bc6
@ -6666,6 +6666,13 @@ namespace T6
|
||||
const char* flameCooldownSound;
|
||||
};
|
||||
|
||||
enum WeaponCamoMaterialFlags
|
||||
{
|
||||
WCM_REPLACE_COLOR = 0x1,
|
||||
WCM_REPLACE_NORMAL = 0x2,
|
||||
WCM_REPLACE_SPECULAR = 0x4,
|
||||
};
|
||||
|
||||
struct WeaponCamoMaterial
|
||||
{
|
||||
uint16_t replaceFlags;
|
||||
|
@ -23,16 +23,26 @@ namespace T6
|
||||
|
||||
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(JsonWeaponCamoSet, solidCamoImage, patternCamoImage, patternOffset, patternScale);
|
||||
|
||||
class JsonWeaponCamoMaterialOverride
|
||||
{
|
||||
public:
|
||||
std::string baseMaterial;
|
||||
std::string camoMaterial;
|
||||
};
|
||||
|
||||
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(JsonWeaponCamoMaterialOverride, baseMaterial, camoMaterial);
|
||||
|
||||
class JsonWeaponCamoMaterial
|
||||
{
|
||||
public:
|
||||
unsigned replaceFlags;
|
||||
std::vector<std::string> baseMaterials;
|
||||
std::vector<std::string> camoMaterials;
|
||||
bool useColorMap;
|
||||
bool useNormalMap;
|
||||
bool useSpecularMap;
|
||||
std::vector<JsonWeaponCamoMaterialOverride> materialOverrides;
|
||||
std::array<float, 8> shaderConsts;
|
||||
};
|
||||
|
||||
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(JsonWeaponCamoMaterial, replaceFlags, baseMaterials, camoMaterials, shaderConsts);
|
||||
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(JsonWeaponCamoMaterial, useColorMap, useNormalMap, useSpecularMap, materialOverrides, shaderConsts);
|
||||
|
||||
class JsonWeaponCamoMaterialSet
|
||||
{
|
||||
|
@ -86,16 +86,15 @@ namespace
|
||||
WeaponCamoMaterial& weaponCamoMaterial,
|
||||
const WeaponCamo& weaponCamo) const
|
||||
{
|
||||
weaponCamoMaterial.replaceFlags = static_cast<uint16_t>(jWeaponCamoMaterial.replaceFlags);
|
||||
if (jWeaponCamoMaterial.useColorMap)
|
||||
weaponCamoMaterial.replaceFlags |= WCM_REPLACE_COLOR;
|
||||
if (jWeaponCamoMaterial.useNormalMap)
|
||||
weaponCamoMaterial.replaceFlags |= WCM_REPLACE_NORMAL;
|
||||
if (jWeaponCamoMaterial.useSpecularMap)
|
||||
weaponCamoMaterial.replaceFlags |= WCM_REPLACE_SPECULAR;
|
||||
|
||||
if (jWeaponCamoMaterial.baseMaterials.size() != jWeaponCamoMaterial.camoMaterials.size())
|
||||
{
|
||||
PrintError(weaponCamo, "baseMaterials and camoMaterials arrays must have the same amount of entries");
|
||||
return false;
|
||||
}
|
||||
|
||||
weaponCamoMaterial.numBaseMaterials = static_cast<uint16_t>(jWeaponCamoMaterial.baseMaterials.size());
|
||||
if (weaponCamoMaterial.numBaseMaterials > 0)
|
||||
weaponCamoMaterial.numBaseMaterials = static_cast<uint16_t>(jWeaponCamoMaterial.materialOverrides.size());
|
||||
if (!jWeaponCamoMaterial.materialOverrides.empty())
|
||||
{
|
||||
weaponCamoMaterial.baseMaterials = static_cast<Material**>(m_memory.Alloc(sizeof(Material*) * weaponCamoMaterial.numBaseMaterials));
|
||||
weaponCamoMaterial.camoMaterials = static_cast<Material**>(m_memory.Alloc(sizeof(Material*) * weaponCamoMaterial.numBaseMaterials));
|
||||
@ -104,10 +103,9 @@ namespace
|
||||
|
||||
for (auto i = 0u; i < weaponCamoMaterial.numBaseMaterials; i++)
|
||||
{
|
||||
auto* baseMaterial =
|
||||
static_cast<XAssetInfo<Material>*>(m_manager.LoadDependency(ASSET_TYPE_MATERIAL, jWeaponCamoMaterial.baseMaterials[i]));
|
||||
auto* camoMaterial =
|
||||
static_cast<XAssetInfo<Material>*>(m_manager.LoadDependency(ASSET_TYPE_MATERIAL, jWeaponCamoMaterial.camoMaterials[i]));
|
||||
const auto& materialOverride = jWeaponCamoMaterial.materialOverrides[i];
|
||||
auto* baseMaterial = static_cast<XAssetInfo<Material>*>(m_manager.LoadDependency(ASSET_TYPE_MATERIAL, materialOverride.baseMaterial));
|
||||
auto* camoMaterial = static_cast<XAssetInfo<Material>*>(m_manager.LoadDependency(ASSET_TYPE_MATERIAL, materialOverride.camoMaterial));
|
||||
|
||||
if (!baseMaterial)
|
||||
{
|
||||
|
@ -55,20 +55,17 @@ namespace
|
||||
|
||||
static void CreateJsonWeaponCamoMaterial(JsonWeaponCamoMaterial& jWeaponCamoMaterial, const WeaponCamoMaterial& weaponCamoMaterial)
|
||||
{
|
||||
jWeaponCamoMaterial.replaceFlags = weaponCamoMaterial.replaceFlags;
|
||||
jWeaponCamoMaterial.useColorMap = weaponCamoMaterial.replaceFlags & WCM_REPLACE_COLOR;
|
||||
jWeaponCamoMaterial.useNormalMap = weaponCamoMaterial.replaceFlags & WCM_REPLACE_NORMAL;
|
||||
jWeaponCamoMaterial.useSpecularMap = weaponCamoMaterial.replaceFlags & WCM_REPLACE_SPECULAR;
|
||||
|
||||
jWeaponCamoMaterial.baseMaterials.resize(weaponCamoMaterial.numBaseMaterials);
|
||||
jWeaponCamoMaterial.materialOverrides.resize(weaponCamoMaterial.numBaseMaterials);
|
||||
for (auto i = 0u; i < weaponCamoMaterial.numBaseMaterials; i++)
|
||||
{
|
||||
if (weaponCamoMaterial.baseMaterials[i] && weaponCamoMaterial.baseMaterials[i]->info.name)
|
||||
jWeaponCamoMaterial.baseMaterials[i] = AssetName(weaponCamoMaterial.baseMaterials[i]->info.name);
|
||||
}
|
||||
|
||||
jWeaponCamoMaterial.camoMaterials.resize(weaponCamoMaterial.numBaseMaterials);
|
||||
for (auto i = 0u; i < weaponCamoMaterial.numBaseMaterials; i++)
|
||||
{
|
||||
jWeaponCamoMaterial.materialOverrides[i].baseMaterial = AssetName(weaponCamoMaterial.baseMaterials[i]->info.name);
|
||||
if (weaponCamoMaterial.camoMaterials[i] && weaponCamoMaterial.camoMaterials[i]->info.name)
|
||||
jWeaponCamoMaterial.camoMaterials[i] = AssetName(weaponCamoMaterial.camoMaterials[i]->info.name);
|
||||
jWeaponCamoMaterial.materialOverrides[i].camoMaterial = AssetName(weaponCamoMaterial.camoMaterials[i]->info.name);
|
||||
}
|
||||
|
||||
for (auto i = 0u; i < std::extent_v<decltype(WeaponCamoMaterial::shaderConsts)>; i++)
|
||||
|
Loading…
x
Reference in New Issue
Block a user