Add supplemental data for iw4 statemap layout

This commit is contained in:
Jan
2022-08-20 14:37:05 +02:00
parent b93707dfe5
commit 2dd8660824
6 changed files with 401 additions and 29 deletions

View File

@ -680,7 +680,7 @@ namespace IW4
float literal[4];
};
enum GfxBlend
enum GfxBlend : unsigned int
{
GFXS_BLEND_DISABLED = 0x0,
GFXS_BLEND_ZERO = 0x1,
@ -696,7 +696,7 @@ namespace IW4
GFXS_BLEND_MASK = 0xF,
};
enum GfxBlendOp
enum GfxBlendOp : unsigned int
{
GFXS_BLENDOP_DISABLED = 0x0,
GFXS_BLENDOP_ADD = 0x1,
@ -707,7 +707,7 @@ namespace IW4
GFXS_BLENDOP_MASK = 0x7,
};
enum GfxStencilFunc
enum GfxStencilFunc : unsigned int
{
GFXS_STENCILFUNC_NEVER = 0x0,
GFXS_STENCILFUNC_LESS = 0x1,
@ -722,7 +722,7 @@ namespace IW4
GFXS_STENCILFUNC_MASK = 0x7
};
enum GfxStencilOp
enum GfxStencilOp : unsigned int
{
GFXS_STENCILOP_KEEP = 0x0,
GFXS_STENCILOP_ZERO = 0x1,

View File

@ -2,13 +2,41 @@
using namespace state_map;
StateMapLayoutEntry::StateMapLayoutEntry(std::string name, const size_t resultCount)
StateMapLayoutEntry::StateMapLayoutEntry(std::string name, const size_t stateBitsIndex, const size_t stateBitsMask, std::vector<std::string> resultVars)
: m_name(std::move(name)),
m_result_count(resultCount)
m_state_bits_index(stateBitsIndex),
m_state_bits_mask(stateBitsMask),
m_result_vars(std::move(resultVars))
{
}
StateMapLayout::StateMapLayout(std::vector<StateMapLayoutEntry> layoutEntries)
: m_layout_entries(std::move(layoutEntries))
StateMapLayoutEntries::StateMapLayoutEntries(std::vector<StateMapLayoutEntry> entryList)
: m_entries(std::move(entryList))
{
}
StateMapLayoutVarValue::StateMapLayoutVarValue(std::string name, const size_t stateBitsMask)
: m_name(std::move(name)),
m_state_bits_mask(stateBitsMask)
{
}
StateMapLayoutVar::StateMapLayoutVar(std::string name, const size_t stateBitsIndex, std::vector<StateMapLayoutVarValue> values)
: m_name(std::move(name)),
m_state_bits_index(stateBitsIndex),
m_values(std::move(values))
{
}
StateMapLayoutVars::StateMapLayoutVars(std::vector<StateMapLayoutVar> varList)
: m_vars(std::move(varList))
{
}
StateMapLayout::StateMapLayout(const size_t stateBitsCount, const StateMapLayoutEntries& entryLayout, const StateMapLayoutVars& varLayout)
: m_state_bits_count(stateBitsCount),
m_entry_layout(entryLayout),
m_var_layout(varLayout)
{
}

View File

@ -8,17 +8,56 @@ namespace state_map
class StateMapLayoutEntry
{
public:
StateMapLayoutEntry(std::string name, size_t resultCount);
StateMapLayoutEntry(std::string name, size_t stateBitsIndex, size_t stateBitsMask, std::vector<std::string> resultVars);
std::string m_name;
size_t m_result_count;
size_t m_state_bits_index;
size_t m_state_bits_mask;
std::vector<std::string> m_result_vars;
};
class StateMapLayoutEntries
{
public:
explicit StateMapLayoutEntries(std::vector<StateMapLayoutEntry> entryList);
std::vector<StateMapLayoutEntry> m_entries;
};
class StateMapLayoutVarValue
{
public:
StateMapLayoutVarValue(std::string name, size_t stateBitsMask);
std::string m_name;
size_t m_state_bits_mask;
};
class StateMapLayoutVar
{
public:
StateMapLayoutVar(std::string name, size_t stateBitsIndex, std::vector<StateMapLayoutVarValue> values);
std::string m_name;
size_t m_state_bits_index;
std::vector<StateMapLayoutVarValue> m_values;
};
class StateMapLayoutVars
{
public:
explicit StateMapLayoutVars(std::vector<StateMapLayoutVar> varList);
std::vector<StateMapLayoutVar> m_vars;
};
class StateMapLayout
{
public:
explicit StateMapLayout(std::vector<StateMapLayoutEntry> layoutEntries);
StateMapLayout(size_t stateBitsCount, const StateMapLayoutEntries& entryLayout, const StateMapLayoutVars& varLayout);
std::vector<StateMapLayoutEntry> m_layout_entries;
size_t m_state_bits_count;
const StateMapLayoutEntries& m_entry_layout;
const StateMapLayoutVars& m_var_layout;
};
}