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;
|
const char* flameCooldownSound;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum WeaponCamoMaterialFlags
|
||||||
|
{
|
||||||
|
WCM_REPLACE_COLOR = 0x1,
|
||||||
|
WCM_REPLACE_NORMAL = 0x2,
|
||||||
|
WCM_REPLACE_SPECULAR = 0x4,
|
||||||
|
};
|
||||||
|
|
||||||
struct WeaponCamoMaterial
|
struct WeaponCamoMaterial
|
||||||
{
|
{
|
||||||
uint16_t replaceFlags;
|
uint16_t replaceFlags;
|
||||||
|
@ -23,16 +23,26 @@ namespace T6
|
|||||||
|
|
||||||
NLOHMANN_DEFINE_TYPE_NON_INTRUSIVE(JsonWeaponCamoSet, solidCamoImage, patternCamoImage, patternOffset, patternScale);
|
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
|
class JsonWeaponCamoMaterial
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
unsigned replaceFlags;
|
bool useColorMap;
|
||||||
std::vector<std::string> baseMaterials;
|
bool useNormalMap;
|
||||||
std::vector<std::string> camoMaterials;
|
bool useSpecularMap;
|
||||||
|
std::vector<JsonWeaponCamoMaterialOverride> materialOverrides;
|
||||||
std::array<float, 8> shaderConsts;
|
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
|
class JsonWeaponCamoMaterialSet
|
||||||
{
|
{
|
||||||
|
@ -86,16 +86,15 @@ namespace
|
|||||||
WeaponCamoMaterial& weaponCamoMaterial,
|
WeaponCamoMaterial& weaponCamoMaterial,
|
||||||
const WeaponCamo& weaponCamo) const
|
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())
|
weaponCamoMaterial.numBaseMaterials = static_cast<uint16_t>(jWeaponCamoMaterial.materialOverrides.size());
|
||||||
{
|
if (!jWeaponCamoMaterial.materialOverrides.empty())
|
||||||
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.baseMaterials = static_cast<Material**>(m_memory.Alloc(sizeof(Material*) * weaponCamoMaterial.numBaseMaterials));
|
weaponCamoMaterial.baseMaterials = static_cast<Material**>(m_memory.Alloc(sizeof(Material*) * weaponCamoMaterial.numBaseMaterials));
|
||||||
weaponCamoMaterial.camoMaterials = 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++)
|
for (auto i = 0u; i < weaponCamoMaterial.numBaseMaterials; i++)
|
||||||
{
|
{
|
||||||
auto* baseMaterial =
|
const auto& materialOverride = jWeaponCamoMaterial.materialOverrides[i];
|
||||||
static_cast<XAssetInfo<Material>*>(m_manager.LoadDependency(ASSET_TYPE_MATERIAL, jWeaponCamoMaterial.baseMaterials[i]));
|
auto* baseMaterial = static_cast<XAssetInfo<Material>*>(m_manager.LoadDependency(ASSET_TYPE_MATERIAL, materialOverride.baseMaterial));
|
||||||
auto* camoMaterial =
|
auto* camoMaterial = static_cast<XAssetInfo<Material>*>(m_manager.LoadDependency(ASSET_TYPE_MATERIAL, materialOverride.camoMaterial));
|
||||||
static_cast<XAssetInfo<Material>*>(m_manager.LoadDependency(ASSET_TYPE_MATERIAL, jWeaponCamoMaterial.camoMaterials[i]));
|
|
||||||
|
|
||||||
if (!baseMaterial)
|
if (!baseMaterial)
|
||||||
{
|
{
|
||||||
|
@ -55,20 +55,17 @@ namespace
|
|||||||
|
|
||||||
static void CreateJsonWeaponCamoMaterial(JsonWeaponCamoMaterial& jWeaponCamoMaterial, const WeaponCamoMaterial& weaponCamoMaterial)
|
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++)
|
for (auto i = 0u; i < weaponCamoMaterial.numBaseMaterials; i++)
|
||||||
{
|
{
|
||||||
if (weaponCamoMaterial.baseMaterials[i] && weaponCamoMaterial.baseMaterials[i]->info.name)
|
if (weaponCamoMaterial.baseMaterials[i] && weaponCamoMaterial.baseMaterials[i]->info.name)
|
||||||
jWeaponCamoMaterial.baseMaterials[i] = AssetName(weaponCamoMaterial.baseMaterials[i]->info.name);
|
jWeaponCamoMaterial.materialOverrides[i].baseMaterial = AssetName(weaponCamoMaterial.baseMaterials[i]->info.name);
|
||||||
}
|
|
||||||
|
|
||||||
jWeaponCamoMaterial.camoMaterials.resize(weaponCamoMaterial.numBaseMaterials);
|
|
||||||
for (auto i = 0u; i < weaponCamoMaterial.numBaseMaterials; i++)
|
|
||||||
{
|
|
||||||
if (weaponCamoMaterial.camoMaterials[i] && weaponCamoMaterial.camoMaterials[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++)
|
for (auto i = 0u; i < std::extent_v<decltype(WeaponCamoMaterial::shaderConsts)>; i++)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user