mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 16:15:43 +00:00
Use string constants for material loading
This commit is contained in:
parent
92d808b7a4
commit
0cbf234faf
@ -362,22 +362,107 @@ namespace IW4
|
|||||||
};
|
};
|
||||||
static_assert(std::extent_v<decltype(GdtStencilOpNames)> == static_cast<size_t>(StencilOp_e::COUNT));
|
static_assert(std::extent_v<decltype(GdtStencilOpNames)> == static_cast<size_t>(StencilOp_e::COUNT));
|
||||||
|
|
||||||
|
enum GdtMaterialType
|
||||||
|
{
|
||||||
|
MATERIAL_TYPE_UNKNOWN,
|
||||||
|
MATERIAL_TYPE_2D,
|
||||||
|
MATERIAL_TYPE_CUSTOM,
|
||||||
|
MATERIAL_TYPE_DISTORTION,
|
||||||
|
MATERIAL_TYPE_EFFECT,
|
||||||
|
MATERIAL_TYPE_IMPACT_MARK,
|
||||||
|
MATERIAL_TYPE_MODEL_AMBIENT,
|
||||||
|
MATERIAL_TYPE_MODEL_PHONG,
|
||||||
|
MATERIAL_TYPE_MODEL_UNLIT,
|
||||||
|
MATERIAL_TYPE_OBJECTIVE,
|
||||||
|
MATERIAL_TYPE_PARTICLE_CLOUD,
|
||||||
|
MATERIAL_TYPE_SKY,
|
||||||
|
MATERIAL_TYPE_TOOLS,
|
||||||
|
MATERIAL_TYPE_UNLIT,
|
||||||
|
MATERIAL_TYPE_WATER,
|
||||||
|
MATERIAL_TYPE_WORLD_PHONG,
|
||||||
|
MATERIAL_TYPE_WORLD_UNLIT,
|
||||||
|
|
||||||
|
MATERIAL_TYPE_COUNT
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_UNKNOWN = "<unknown>";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_2D = "2d";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_CUSTOM = "custom";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_DISTORTION = "distortion";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_EFFECT = "effect";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_IMPACT_MARK = "impact mark";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_MODEL_AMBIENT = "model ambient";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_MODEL_PHONG = "model phong";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_MODEL_UNLIT = "model unlit";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_OBJECTIVE = "objective";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_PARTICLE_CLOUD = "particle cloud";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_SKY = "sky";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_TOOLS = "tools";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_UNLIT = "unlit";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_WATER = "water";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_WORLD_PHONG = "world phong";
|
||||||
|
constexpr auto GDT_MATERIAL_TYPE_WORLD_UNLIT = "world unlit";
|
||||||
|
|
||||||
|
inline const char* GdtMaterialTypeNames[]
|
||||||
|
{
|
||||||
|
GDT_MATERIAL_TYPE_UNKNOWN,
|
||||||
|
GDT_MATERIAL_TYPE_2D,
|
||||||
|
GDT_MATERIAL_TYPE_CUSTOM,
|
||||||
|
GDT_MATERIAL_TYPE_DISTORTION,
|
||||||
|
GDT_MATERIAL_TYPE_EFFECT,
|
||||||
|
GDT_MATERIAL_TYPE_IMPACT_MARK,
|
||||||
|
GDT_MATERIAL_TYPE_MODEL_AMBIENT,
|
||||||
|
GDT_MATERIAL_TYPE_MODEL_PHONG,
|
||||||
|
GDT_MATERIAL_TYPE_MODEL_UNLIT,
|
||||||
|
GDT_MATERIAL_TYPE_OBJECTIVE,
|
||||||
|
GDT_MATERIAL_TYPE_PARTICLE_CLOUD,
|
||||||
|
GDT_MATERIAL_TYPE_SKY,
|
||||||
|
GDT_MATERIAL_TYPE_TOOLS,
|
||||||
|
GDT_MATERIAL_TYPE_UNLIT,
|
||||||
|
GDT_MATERIAL_TYPE_WATER,
|
||||||
|
GDT_MATERIAL_TYPE_WORLD_PHONG,
|
||||||
|
GDT_MATERIAL_TYPE_WORLD_UNLIT
|
||||||
|
};
|
||||||
|
static_assert(std::extent_v<decltype(GdtMaterialTypeNames)> == static_cast<size_t>(MATERIAL_TYPE_COUNT));
|
||||||
|
|
||||||
|
constexpr auto GDT_SORTKEY_OPAQUE_AMBIENT = "opaque ambient";
|
||||||
|
constexpr auto GDT_SORTKEY_OPAQUE = "opaque";
|
||||||
|
constexpr auto GDT_SORTKEY_SKY = "sky";
|
||||||
|
constexpr auto GDT_SORTKEY_SKYBOX = "skybox";
|
||||||
|
constexpr auto GDT_SORTKEY_DECAL_BOTTOM_1 = "decal - bottom 1";
|
||||||
|
constexpr auto GDT_SORTKEY_DECAL_BOTTOM_2 = "decal - bottom 2";
|
||||||
|
constexpr auto GDT_SORTKEY_DECAL_BOTTOM_3 = "decal - bottom 3";
|
||||||
|
constexpr auto GDT_SORTKEY_DECAL_STATIC = "decal - static decal";
|
||||||
|
constexpr auto GDT_SORTKEY_DECAL_MIDDLE_1 = "decal - middle 1";
|
||||||
|
constexpr auto GDT_SORTKEY_DECAL_MIDDLE_2 = "decal - middle 2";
|
||||||
|
constexpr auto GDT_SORTKEY_DECAL_MIDDLE_3 = "decal - middle 3";
|
||||||
|
constexpr auto GDT_SORTKEY_DECAL_WEAPON_IMPACT = "decal - weapon impact";
|
||||||
|
constexpr auto GDT_SORTKEY_WINDOW_INSIDE = "window inside";
|
||||||
|
constexpr auto GDT_SORTKEY_WINDOW_OUTSIDE = "window outside";
|
||||||
|
constexpr auto GDT_SORTKEY_DISTORTION = "distortion";
|
||||||
|
constexpr auto GDT_SORTKEY_BLEND_ADDITIVE = "blend / additive";
|
||||||
|
constexpr auto GDT_SORTKEY_EFFECT_AUTO_SORT = "effect - auto sort";
|
||||||
|
constexpr auto GDT_SORTKEY_AFTER_EFFECT_BOTTOM = "after effects - bottom";
|
||||||
|
constexpr auto GDT_SORTKEY_AFTER_EFFECT_MIDDLE = "after effects - middle";
|
||||||
|
constexpr auto GDT_SORTKEY_AFTER_EFFECT_TOP = "after effects - top";
|
||||||
|
constexpr auto GDT_SORTKEY_VIEWMODEL_EFFECT = "viewmodel effect";
|
||||||
|
|
||||||
inline const char* SortKeyNames[]
|
inline const char* SortKeyNames[]
|
||||||
{
|
{
|
||||||
"opaque ambient", // 0
|
GDT_SORTKEY_OPAQUE_AMBIENT, // 0
|
||||||
"opaque", // 1
|
GDT_SORTKEY_OPAQUE, // 1
|
||||||
"sky", // 2
|
GDT_SORTKEY_SKY, // 2
|
||||||
"skybox", // 3
|
GDT_SORTKEY_SKYBOX, // 3
|
||||||
"?", // 4
|
"?", // 4
|
||||||
"?", // 5
|
"?", // 5
|
||||||
"decal - bottom 1", // 6
|
GDT_SORTKEY_DECAL_BOTTOM_1, // 6
|
||||||
"decal - bottom 2", // 7
|
GDT_SORTKEY_DECAL_BOTTOM_2, // 7
|
||||||
"decal - bottom 3", // 8
|
GDT_SORTKEY_DECAL_BOTTOM_3, // 8
|
||||||
"decal - static decal", // 9
|
GDT_SORTKEY_DECAL_STATIC, // 9
|
||||||
"decal - middle 1", // 10
|
GDT_SORTKEY_DECAL_MIDDLE_1, // 10
|
||||||
"decal - middle 2", // 11
|
GDT_SORTKEY_DECAL_MIDDLE_2, // 11
|
||||||
"decal - middle 3", // 12
|
GDT_SORTKEY_DECAL_MIDDLE_3, // 12
|
||||||
"decal - weapon impact", // 13
|
GDT_SORTKEY_DECAL_WEAPON_IMPACT, // 13
|
||||||
"?", // 14
|
"?", // 14
|
||||||
"?", // 15
|
"?", // 15
|
||||||
"?", // 16
|
"?", // 16
|
||||||
@ -388,8 +473,8 @@ namespace IW4
|
|||||||
"?", // 21
|
"?", // 21
|
||||||
"-", // 22
|
"-", // 22
|
||||||
"-", // 23
|
"-", // 23
|
||||||
"window inside", // 24
|
GDT_SORTKEY_WINDOW_INSIDE, // 24
|
||||||
"window outside", // 25
|
GDT_SORTKEY_WINDOW_OUTSIDE, // 25
|
||||||
"?", // 26
|
"?", // 26
|
||||||
"?", // 27
|
"?", // 27
|
||||||
"?", // 28
|
"?", // 28
|
||||||
@ -407,17 +492,59 @@ namespace IW4
|
|||||||
"?", // 40
|
"?", // 40
|
||||||
"?", // 41
|
"?", // 41
|
||||||
"?", // 42
|
"?", // 42
|
||||||
"distortion", // 43
|
GDT_SORTKEY_DISTORTION, // 43
|
||||||
"?", // 44
|
"?", // 44
|
||||||
"?", // 45
|
"?", // 45
|
||||||
"-", // 46
|
"-", // 46
|
||||||
"blend / additive", // 47
|
GDT_SORTKEY_BLEND_ADDITIVE, // 47
|
||||||
"effect - auto sort", // 48
|
GDT_SORTKEY_EFFECT_AUTO_SORT, // 48
|
||||||
"after effects - bottom", // 49
|
GDT_SORTKEY_AFTER_EFFECT_BOTTOM, // 49
|
||||||
"after effects - middle", // 50
|
GDT_SORTKEY_AFTER_EFFECT_MIDDLE, // 50
|
||||||
"after effects - top", // 51
|
GDT_SORTKEY_AFTER_EFFECT_TOP, // 51
|
||||||
"-", // 52
|
"-", // 52
|
||||||
"viewmodel effect", // 53
|
GDT_SORTKEY_VIEWMODEL_EFFECT, // 53
|
||||||
};
|
};
|
||||||
static_assert(std::extent_v<decltype(SortKeyNames)> == static_cast<size_t>(SORTKEY_MAX));
|
static_assert(std::extent_v<decltype(SortKeyNames)> == static_cast<size_t>(SORTKEY_MAX));
|
||||||
|
|
||||||
|
enum GdtCustomMaterialTypes
|
||||||
|
{
|
||||||
|
CUSTOM_MATERIAL_TYPE_NONE,
|
||||||
|
// Uses custom techset with generic options
|
||||||
|
CUSTOM_MATERIAL_TYPE_CUSTOM,
|
||||||
|
CUSTOM_MATERIAL_TYPE_PHONG_FLAG,
|
||||||
|
CUSTOM_MATERIAL_TYPE_GRAIN_OVERLAY,
|
||||||
|
CUSTOM_MATERIAL_TYPE_EFFECT_EYE_OFFSET,
|
||||||
|
CUSTOM_MATERIAL_TYPE_REFLEX_SIGHT,
|
||||||
|
CUSTOM_MATERIAL_TYPE_SHADOW_CLEAR,
|
||||||
|
CUSTOM_MATERIAL_TYPE_SHADOW_OVERLAY,
|
||||||
|
|
||||||
|
// Not part of IW3
|
||||||
|
CUSTOM_MATERIAL_TYPE_SPLATTER,
|
||||||
|
|
||||||
|
CUSTOM_MATERIAL_TYPE_COUNT
|
||||||
|
};
|
||||||
|
|
||||||
|
constexpr auto GDT_CUSTOM_MATERIAL_TYPE_NONE = "";
|
||||||
|
constexpr auto GDT_CUSTOM_MATERIAL_TYPE_CUSTOM = "mtl_custom";
|
||||||
|
constexpr auto GDT_CUSTOM_MATERIAL_TYPE_PHONG_FLAG = "mtl_phong_flag";
|
||||||
|
constexpr auto GDT_CUSTOM_MATERIAL_TYPE_GRAIN_OVERLAY = "mtl_grain_overlay";
|
||||||
|
constexpr auto GDT_CUSTOM_MATERIAL_TYPE_EFFECT_EYE_OFFSET = "mtl_effect_eyeoffset";
|
||||||
|
constexpr auto GDT_CUSTOM_MATERIAL_TYPE_REFLEXSIGHT = "mtl_reflexsight";
|
||||||
|
constexpr auto GDT_CUSTOM_MATERIAL_TYPE_SHADOWCLEAR = "mtl_shadowclear";
|
||||||
|
constexpr auto GDT_CUSTOM_MATERIAL_TYPE_SHADOWOVERLAY = "mtl_shadowoverlay";
|
||||||
|
constexpr auto GDT_CUSTOM_MATERIAL_TYPE_SPLATTER = "mtl_splatter";
|
||||||
|
|
||||||
|
inline const char* GdtCustomMaterialTypeNames[]
|
||||||
|
{
|
||||||
|
GDT_CUSTOM_MATERIAL_TYPE_NONE,
|
||||||
|
GDT_CUSTOM_MATERIAL_TYPE_CUSTOM,
|
||||||
|
GDT_CUSTOM_MATERIAL_TYPE_PHONG_FLAG,
|
||||||
|
GDT_CUSTOM_MATERIAL_TYPE_GRAIN_OVERLAY,
|
||||||
|
GDT_CUSTOM_MATERIAL_TYPE_EFFECT_EYE_OFFSET,
|
||||||
|
GDT_CUSTOM_MATERIAL_TYPE_REFLEXSIGHT,
|
||||||
|
GDT_CUSTOM_MATERIAL_TYPE_SHADOWCLEAR,
|
||||||
|
GDT_CUSTOM_MATERIAL_TYPE_SHADOWOVERLAY,
|
||||||
|
GDT_CUSTOM_MATERIAL_TYPE_SPLATTER
|
||||||
|
};
|
||||||
|
static_assert(std::extent_v<decltype(GdtCustomMaterialTypeNames)> == static_cast<size_t>(CUSTOM_MATERIAL_TYPE_COUNT));
|
||||||
}
|
}
|
||||||
|
@ -54,55 +54,58 @@ namespace IW4
|
|||||||
{
|
{
|
||||||
const auto materialType = ReadStringProperty("materialType");
|
const auto materialType = ReadStringProperty("materialType");
|
||||||
|
|
||||||
if (materialType == "model phong" || materialType == "world phong" || materialType == "impact mark")
|
if (materialType == GDT_MATERIAL_TYPE_MODEL_PHONG
|
||||||
|
|| materialType == GDT_MATERIAL_TYPE_WORLD_PHONG
|
||||||
|
|| materialType == GDT_MATERIAL_TYPE_IMPACT_MARK)
|
||||||
{
|
{
|
||||||
mtl_phong_template();
|
mtl_phong_template();
|
||||||
}
|
}
|
||||||
else if (materialType == "model ambient")
|
else if (materialType == GDT_MATERIAL_TYPE_MODEL_AMBIENT)
|
||||||
{
|
{
|
||||||
mtl_ambient_template();
|
mtl_ambient_template();
|
||||||
}
|
}
|
||||||
else if (materialType == "2d")
|
else if (materialType == GDT_MATERIAL_TYPE_2D)
|
||||||
{
|
{
|
||||||
mtl_2d_template();
|
mtl_2d_template();
|
||||||
}
|
}
|
||||||
else if (materialType == "model unlit" || materialType == "world unlit")
|
else if (materialType == GDT_MATERIAL_TYPE_MODEL_UNLIT
|
||||||
|
|| materialType == GDT_MATERIAL_TYPE_WORLD_UNLIT)
|
||||||
{
|
{
|
||||||
mtl_unlit_template();
|
mtl_unlit_template();
|
||||||
}
|
}
|
||||||
else if (materialType == "unlit")
|
else if (materialType == GDT_MATERIAL_TYPE_UNLIT)
|
||||||
{
|
{
|
||||||
mtl_unlit_deprecated_template();
|
mtl_unlit_deprecated_template();
|
||||||
}
|
}
|
||||||
else if (materialType == "effect")
|
else if (materialType == GDT_MATERIAL_TYPE_EFFECT)
|
||||||
{
|
{
|
||||||
mtl_effect_template();
|
mtl_effect_template();
|
||||||
}
|
}
|
||||||
else if (materialType == "distortion")
|
else if (materialType == GDT_MATERIAL_TYPE_DISTORTION)
|
||||||
{
|
{
|
||||||
mtl_distortion_template();
|
mtl_distortion_template();
|
||||||
}
|
}
|
||||||
else if (materialType == "particle cloud")
|
else if (materialType == GDT_MATERIAL_TYPE_PARTICLE_CLOUD)
|
||||||
{
|
{
|
||||||
mtl_particlecloud_template();
|
mtl_particlecloud_template();
|
||||||
}
|
}
|
||||||
else if (materialType == "tools")
|
else if (materialType == GDT_MATERIAL_TYPE_TOOLS)
|
||||||
{
|
{
|
||||||
mtl_tools_template();
|
mtl_tools_template();
|
||||||
}
|
}
|
||||||
else if (materialType == "sky")
|
else if (materialType == GDT_MATERIAL_TYPE_SKY)
|
||||||
{
|
{
|
||||||
mtl_sky_template();
|
mtl_sky_template();
|
||||||
}
|
}
|
||||||
else if (materialType == "water")
|
else if (materialType == GDT_MATERIAL_TYPE_WATER)
|
||||||
{
|
{
|
||||||
mtl_water_template();
|
mtl_water_template();
|
||||||
}
|
}
|
||||||
else if (materialType == "objective")
|
else if (materialType == GDT_MATERIAL_TYPE_OBJECTIVE)
|
||||||
{
|
{
|
||||||
mtl_objective_template();
|
mtl_objective_template();
|
||||||
}
|
}
|
||||||
else if (materialType == "custom")
|
else if (materialType == GDT_MATERIAL_TYPE_CUSTOM)
|
||||||
{
|
{
|
||||||
custom_template();
|
custom_template();
|
||||||
}
|
}
|
||||||
@ -176,35 +179,35 @@ namespace IW4
|
|||||||
{
|
{
|
||||||
const auto customTemplate = ReadStringProperty("customTemplate");
|
const auto customTemplate = ReadStringProperty("customTemplate");
|
||||||
|
|
||||||
if (customTemplate == "mtl_custom")
|
if (customTemplate == GDT_CUSTOM_MATERIAL_TYPE_CUSTOM)
|
||||||
{
|
{
|
||||||
mtl_custom_template();
|
mtl_custom_template();
|
||||||
}
|
}
|
||||||
else if (customTemplate == "mtl_phong_flag")
|
else if (customTemplate == GDT_CUSTOM_MATERIAL_TYPE_PHONG_FLAG)
|
||||||
{
|
{
|
||||||
mtl_phong_flag_template();
|
mtl_phong_flag_template();
|
||||||
}
|
}
|
||||||
else if (customTemplate == "mtl_grain_overlay")
|
else if (customTemplate == GDT_CUSTOM_MATERIAL_TYPE_GRAIN_OVERLAY)
|
||||||
{
|
{
|
||||||
mtl_grain_overlay_template();
|
mtl_grain_overlay_template();
|
||||||
}
|
}
|
||||||
else if (customTemplate == "mtl_effect_eyeoffset")
|
else if (customTemplate == GDT_CUSTOM_MATERIAL_TYPE_EFFECT_EYE_OFFSET)
|
||||||
{
|
{
|
||||||
mtl_effect_eyeoffset_template();
|
mtl_effect_eyeoffset_template();
|
||||||
}
|
}
|
||||||
else if (customTemplate == "mtl_reflexsight")
|
else if (customTemplate == GDT_CUSTOM_MATERIAL_TYPE_REFLEXSIGHT)
|
||||||
{
|
{
|
||||||
mtl_reflexsight_template();
|
mtl_reflexsight_template();
|
||||||
}
|
}
|
||||||
else if (customTemplate == "mtl_shadowclear")
|
else if (customTemplate == GDT_CUSTOM_MATERIAL_TYPE_SHADOWCLEAR)
|
||||||
{
|
{
|
||||||
mtl_shadowclear_template();
|
mtl_shadowclear_template();
|
||||||
}
|
}
|
||||||
else if (customTemplate == "mtl_shadowoverlay")
|
else if (customTemplate == GDT_CUSTOM_MATERIAL_TYPE_SHADOWOVERLAY)
|
||||||
{
|
{
|
||||||
mtl_shadowoverlay_template();
|
mtl_shadowoverlay_template();
|
||||||
}
|
}
|
||||||
else if (customTemplate == "mtl_splatter")
|
else if (customTemplate == GDT_CUSTOM_MATERIAL_TYPE_SPLATTER)
|
||||||
{
|
{
|
||||||
mtl_splatter_template();
|
mtl_splatter_template();
|
||||||
}
|
}
|
||||||
@ -280,24 +283,25 @@ namespace IW4
|
|||||||
std::string sortKey;
|
std::string sortKey;
|
||||||
if (sort.empty() || sort == "<default>")
|
if (sort.empty() || sort == "<default>")
|
||||||
{
|
{
|
||||||
if (materialType == "distortion")
|
if (materialType == GDT_MATERIAL_TYPE_DISTORTION)
|
||||||
sortKey = SortKeyNames[SORTKEY_DISTORTION];
|
sortKey = GDT_SORTKEY_DISTORTION;
|
||||||
else if (polygonOffset == "Static Decal")
|
else if (polygonOffset == "Static Decal")
|
||||||
sortKey = SortKeyNames[SORTKEY_DECAL_STATIC_DECAL];
|
sortKey = GDT_SORTKEY_DECAL_STATIC;
|
||||||
else if (polygonOffset == "Weapon Impact")
|
else if (polygonOffset == "Weapon Impact")
|
||||||
sortKey = SortKeyNames[SORTKEY_DECAL_WEAPON_IMPACT];
|
sortKey = GDT_SORTKEY_DECAL_WEAPON_IMPACT;
|
||||||
else if (materialType == "effect")
|
else if (materialType == GDT_MATERIAL_TYPE_EFFECT)
|
||||||
sortKey = SortKeyNames[SORTKEY_EFFECT_AUTO_SORT];
|
sortKey = GDT_SORTKEY_EFFECT_AUTO_SORT;
|
||||||
else if (materialType == "objective" || blendFunc == "Blend" || blendFunc == "Add" || blendFunc == "Screen Add")
|
else if (materialType == GDT_MATERIAL_TYPE_OBJECTIVE
|
||||||
sortKey = SortKeyNames[SORTKEY_BLEND_ADDITIVE];
|
|| blendFunc == "Blend" || blendFunc == "Add" || blendFunc == "Screen Add")
|
||||||
// else if (blendFunc == "Multiply")
|
sortKey = GDT_SORTKEY_BLEND_ADDITIVE;
|
||||||
// sortKey = SortKeyNames[SORTKEY_MULTIPLICATIVE];
|
// else if (blendFunc == "Multiply") // TODO
|
||||||
else if (materialType == "sky")
|
// sortKey = GDT_SORTKEY_MULTIPLICATIVE;
|
||||||
sortKey = SortKeyNames[SORTKEY_SKY];
|
else if (materialType == GDT_MATERIAL_TYPE_SKY)
|
||||||
else if (materialType == "model ambient")
|
sortKey = GDT_SORTKEY_SKY;
|
||||||
sortKey = SortKeyNames[SORTKEY_OPAQUE_AMBIENT];
|
else if (materialType == GDT_MATERIAL_TYPE_MODEL_AMBIENT)
|
||||||
|
sortKey = GDT_SORTKEY_OPAQUE_AMBIENT;
|
||||||
else
|
else
|
||||||
sortKey = SortKeyNames[SORTKEY_OPAQUE];
|
sortKey = GDT_SORTKEY_OPAQUE;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
sortKey = sort;
|
sortKey = sort;
|
||||||
|
@ -438,91 +438,14 @@ namespace IW4
|
|||||||
stream << std::setw(4) << j;
|
stream << std::setw(4) << j;
|
||||||
}
|
}
|
||||||
|
|
||||||
enum class GdtMaterialType
|
|
||||||
{
|
|
||||||
MATERIAL_TYPE_UNKNOWN,
|
|
||||||
MATERIAL_TYPE_2D,
|
|
||||||
MATERIAL_TYPE_CUSTOM,
|
|
||||||
MATERIAL_TYPE_DISTORTION,
|
|
||||||
MATERIAL_TYPE_EFFECT,
|
|
||||||
MATERIAL_TYPE_IMPACT_MARK,
|
|
||||||
MATERIAL_TYPE_MODEL_AMBIENT,
|
|
||||||
MATERIAL_TYPE_MODEL_PHONG,
|
|
||||||
MATERIAL_TYPE_MODEL_UNLIT,
|
|
||||||
MATERIAL_TYPE_OBJECTIVE,
|
|
||||||
MATERIAL_TYPE_PARTICLE_CLOUD,
|
|
||||||
MATERIAL_TYPE_SKY,
|
|
||||||
MATERIAL_TYPE_TOOLS,
|
|
||||||
MATERIAL_TYPE_UNLIT,
|
|
||||||
MATERIAL_TYPE_WATER,
|
|
||||||
MATERIAL_TYPE_WORLD_PHONG,
|
|
||||||
MATERIAL_TYPE_WORLD_UNLIT,
|
|
||||||
|
|
||||||
MATERIAL_TYPE_COUNT
|
|
||||||
};
|
|
||||||
|
|
||||||
enum class GdtCustomMaterialTypes
|
|
||||||
{
|
|
||||||
CUSTOM_MATERIAL_TYPE_NONE,
|
|
||||||
// Uses custom techset with generic options
|
|
||||||
CUSTOM_MATERIAL_TYPE_CUSTOM,
|
|
||||||
CUSTOM_MATERIAL_TYPE_PHONG_FLAG,
|
|
||||||
CUSTOM_MATERIAL_TYPE_GRAIN_OVERLAY,
|
|
||||||
CUSTOM_MATERIAL_TYPE_EFFECT_EYE_OFFSET,
|
|
||||||
CUSTOM_MATERIAL_TYPE_REFLEX_SIGHT,
|
|
||||||
CUSTOM_MATERIAL_TYPE_SHADOW_CLEAR,
|
|
||||||
CUSTOM_MATERIAL_TYPE_SHADOW_OVERLAY,
|
|
||||||
|
|
||||||
// Not part of IW3
|
|
||||||
CUSTOM_MATERIAL_TYPE_SPLATTER,
|
|
||||||
|
|
||||||
CUSTOM_MATERIAL_TYPE_COUNT
|
|
||||||
};
|
|
||||||
|
|
||||||
const char* GdtMaterialTypeNames[]
|
|
||||||
{
|
|
||||||
"<unknown>",
|
|
||||||
"2d",
|
|
||||||
"custom",
|
|
||||||
"distortion",
|
|
||||||
"effect",
|
|
||||||
"impact mark",
|
|
||||||
"model ambient",
|
|
||||||
"model phong",
|
|
||||||
"model unlit",
|
|
||||||
"objective",
|
|
||||||
"particle cloud",
|
|
||||||
"sky",
|
|
||||||
"tools",
|
|
||||||
"unlit",
|
|
||||||
"water",
|
|
||||||
"world phong",
|
|
||||||
"world unlit"
|
|
||||||
};
|
|
||||||
static_assert(std::extent_v<decltype(GdtMaterialTypeNames)> == static_cast<size_t>(GdtMaterialType::MATERIAL_TYPE_COUNT));
|
|
||||||
|
|
||||||
const char* GdtCustomMaterialTypeNames[]
|
|
||||||
{
|
|
||||||
"",
|
|
||||||
"mtl_custom",
|
|
||||||
"mtl_phong_flag",
|
|
||||||
"mtl_grain_overlay",
|
|
||||||
"mtl_effect_eyeoffset",
|
|
||||||
"mtl_reflexsight",
|
|
||||||
"mtl_shadowclear",
|
|
||||||
"mtl_shadowoverlay",
|
|
||||||
"mtl_splatter"
|
|
||||||
};
|
|
||||||
static_assert(std::extent_v<decltype(GdtCustomMaterialTypeNames)> == static_cast<size_t>(GdtCustomMaterialTypes::CUSTOM_MATERIAL_TYPE_COUNT));
|
|
||||||
|
|
||||||
class TechsetInfo
|
class TechsetInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
std::string m_techset_name;
|
std::string m_techset_name;
|
||||||
std::string m_techset_base_name;
|
std::string m_techset_base_name;
|
||||||
std::string m_techset_prefix;
|
std::string m_techset_prefix;
|
||||||
GdtMaterialType m_gdt_material_type = GdtMaterialType::MATERIAL_TYPE_UNKNOWN;
|
GdtMaterialType m_gdt_material_type = MATERIAL_TYPE_UNKNOWN;
|
||||||
GdtCustomMaterialTypes m_gdt_custom_material_type = GdtCustomMaterialTypes::CUSTOM_MATERIAL_TYPE_NONE;
|
GdtCustomMaterialTypes m_gdt_custom_material_type = CUSTOM_MATERIAL_TYPE_NONE;
|
||||||
std::string m_gdt_custom_string;
|
std::string m_gdt_custom_string;
|
||||||
MaterialType m_engine_material_type = MTL_TYPE_DEFAULT;
|
MaterialType m_engine_material_type = MTL_TYPE_DEFAULT;
|
||||||
bool m_no_cast_shadow = false;
|
bool m_no_cast_shadow = false;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user