mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-07-09 20:51:51 +00:00
feat: dump and load T5 materials
This commit is contained in:
@ -1,4 +1,4 @@
|
||||
#options GAME (IW3, IW4, IW5, T6)
|
||||
#options GAME (IW3, IW4, IW5, T5, T6)
|
||||
|
||||
#filename "Game/" + GAME + "/Material/JsonMaterial" + GAME + ".h"
|
||||
|
||||
@ -11,6 +11,9 @@
|
||||
#elif GAME == "IW5"
|
||||
#define FEATURE_IW5
|
||||
#define HAS_WATER
|
||||
#elif GAME == "T5"
|
||||
#define FEATURE_T5
|
||||
#define HAS_WATER
|
||||
#elif GAME == "T6"
|
||||
#define FEATURE_T6
|
||||
#endif
|
||||
@ -80,6 +83,8 @@ namespace GAME
|
||||
GT0,
|
||||
#if defined(FEATURE_IW3) || defined(FEATURE_IW4) || defined(FEATURE_IW5)
|
||||
LT128,
|
||||
#elif defined(FEATURE_T5)
|
||||
GE255,
|
||||
#endif
|
||||
GE128
|
||||
};
|
||||
@ -90,6 +95,8 @@ namespace GAME
|
||||
{JsonAlphaTest::GT0, "gt0" },
|
||||
#if defined(FEATURE_IW3) || defined(FEATURE_IW4) || defined(FEATURE_IW5)
|
||||
{JsonAlphaTest::LT128, "lt128" },
|
||||
#elif defined(FEATURE_T5)
|
||||
{JsonAlphaTest::GE255, "ge255" },
|
||||
#endif
|
||||
{JsonAlphaTest::GE128, "ge128" }
|
||||
});
|
||||
@ -321,7 +328,7 @@ namespace GAME
|
||||
{TS_2D, "2D" },
|
||||
{TS_FUNCTION, "function" },
|
||||
{TS_COLOR_MAP, "colorMap" },
|
||||
#if defined(FEATURE_IW3) || defined(FEATURE_T6)
|
||||
#if defined(FEATURE_IW3) || defined(FEATURE_T5) || defined(FEATURE_T6)
|
||||
{TS_UNUSED_1, "unused1" },
|
||||
#else
|
||||
{TS_DETAIL_MAP, "detailMap" },
|
||||
@ -332,15 +339,17 @@ namespace GAME
|
||||
{TS_UNUSED_4, "unused4" },
|
||||
{TS_SPECULAR_MAP, "specularMap" },
|
||||
{TS_UNUSED_5, "unused5" },
|
||||
#if defined(FEATURE_IW3) || defined(FEATURE_IW4) || defined(FEATURE_IW5)
|
||||
#ifdef FEATURE_T6
|
||||
{TS_OCCLUSION_MAP, "occlusionMap" },
|
||||
#endif
|
||||
{TS_UNUSED_6, "unused6" },
|
||||
#if defined(FEATURE_IW3) || defined(FEATURE_IW4) || defined(FEATURE_IW5) || defined(FEATURE_T5)
|
||||
{TS_WATER_MAP, "waterMap" },
|
||||
#endif
|
||||
#ifdef FEATURE_IW5
|
||||
{TS_DISPLACEMENT_MAP, "displacementMap"},
|
||||
#endif
|
||||
#elif defined(FEATURE_T6)
|
||||
{TS_OCCLUSION_MAP, "occlusionMap" },
|
||||
{TS_UNUSED_6, "unused6" },
|
||||
#if defined(FEATURE_T5) || defined(FEATURE_T6)
|
||||
{TS_COLOR0_MAP, "color0Map" },
|
||||
{TS_COLOR1_MAP, "color1Map" },
|
||||
{TS_COLOR2_MAP, "color2Map" },
|
||||
@ -369,7 +378,7 @@ namespace GAME
|
||||
std::optional<std::string> nameStart;
|
||||
std::optional<std::string> nameEnd;
|
||||
TextureSemantic semantic;
|
||||
#ifdef FEATURE_T6
|
||||
#if defined(FEATURE_T5) || defined(FEATURE_T6)
|
||||
bool isMatureContent;
|
||||
#endif
|
||||
JsonSamplerState samplerState;
|
||||
@ -393,7 +402,7 @@ namespace GAME
|
||||
}
|
||||
|
||||
out["semantic"] = in.semantic;
|
||||
#ifdef FEATURE_T6
|
||||
#if defined(FEATURE_T5) || defined(FEATURE_T6)
|
||||
out["isMatureContent"] = in.isMatureContent;
|
||||
#endif
|
||||
out["samplerState"] = in.samplerState;
|
||||
@ -410,7 +419,7 @@ namespace GAME
|
||||
optional_from_json(in, "nameStart", out.nameStart);
|
||||
optional_from_json(in, "nameEnd", out.nameEnd);
|
||||
in.at("semantic").get_to(out.semantic);
|
||||
#ifdef FEATURE_T6
|
||||
#if defined(FEATURE_T5) || defined(FEATURE_T6)
|
||||
in.at("isMatureContent").get_to(out.isMatureContent);
|
||||
#endif
|
||||
in.at("samplerState").get_to(out.samplerState);
|
||||
@ -445,24 +454,28 @@ namespace GAME
|
||||
{MTL_GAMEFLAG_8, "8" },
|
||||
{MTL_GAMEFLAG_10, "10" },
|
||||
{MTL_GAMEFLAG_20, "20" },
|
||||
#if defined(FEATURE_IW3) || defined(FEATURE_T6)
|
||||
#if defined(FEATURE_IW3) || defined(FEATURE_T5) || defined(FEATURE_T6)
|
||||
{MTL_GAMEFLAG_CASTS_SHADOW, "CASTS_SHADOW"},
|
||||
{MTL_GAMEFLAG_CASTS_SHADOW, "40" },
|
||||
#else
|
||||
{MTL_GAMEFLAG_40, "40" },
|
||||
#endif
|
||||
{MTL_GAMEFLAG_80, "80" },
|
||||
#ifdef FEATURE_T6
|
||||
#if defined(FEATURE_T5) || defined(FEATURE_T6)
|
||||
{MTL_GAMEFLAG_100, "100" },
|
||||
{MTL_GAMEFLAG_200, "200" },
|
||||
#if defined(FEATURE_T6)
|
||||
{MTL_GAMEFLAG_400, "400" },
|
||||
{MTL_GAMEFLAG_800, "800" },
|
||||
{MTL_GAMEFLAG_1000, "1000" },
|
||||
{MTL_GAMEFLAG_2000, "2000" },
|
||||
{MTL_GAMEFLAG_4000, "4000" },
|
||||
#endif
|
||||
#endif
|
||||
});
|
||||
|
||||
NLOHMANN_JSON_SERIALIZE_ENUM(GfxCameraRegionType, {
|
||||
#if defined(FEATURE_IW3)
|
||||
#if defined(FEATURE_IW3) || defined(FEATURE_T5)
|
||||
{CAMERA_REGION_LIT, "lit" },
|
||||
{CAMERA_REGION_DECAL, "decal" },
|
||||
{CAMERA_REGION_EMISSIVE, "emissive" },
|
||||
@ -492,7 +505,9 @@ namespace GAME
|
||||
class JsonMaterial
|
||||
{
|
||||
public:
|
||||
#ifdef FEATURE_T6
|
||||
#ifdef FEATURE_T5
|
||||
uint8_t maxStreamedMips;
|
||||
#elif defined(FEATURE_T6)
|
||||
unsigned layeredSurfaceTypes;
|
||||
unsigned hashIndex;
|
||||
unsigned surfaceFlags;
|
||||
@ -515,7 +530,9 @@ namespace GAME
|
||||
|
||||
NLOHMANN_DEFINE_TYPE_EXTENSION(
|
||||
JsonMaterial,
|
||||
#ifdef FEATURE_T6
|
||||
#ifdef FEATURE_T5
|
||||
maxStreamedMips,
|
||||
#elif defined(FEATURE_T6)
|
||||
layeredSurfaceTypes,
|
||||
hashIndex,
|
||||
surfaceFlags,
|
||||
|
Reference in New Issue
Block a user