mirror of
https://github.com/Almamu/linux-wallpaperengine.git
synced 2025-09-14 05:46:48 +08:00
chore: add parsing of usertextures
This commit is contained in:
parent
fc865499fc
commit
9c62125a1f
@ -22,6 +22,8 @@ struct MaterialPass {
|
||||
std::string shader;
|
||||
/** List of textures defined for this pass */
|
||||
TextureMap textures;
|
||||
/** List of user textures defined for this pass */
|
||||
TextureMap usertextures;
|
||||
/** The combos and their values to pass onto the shader */
|
||||
ComboMap combos;
|
||||
};
|
||||
|
@ -135,4 +135,18 @@ class PropertyText : public Property {
|
||||
return this->text;
|
||||
}
|
||||
};
|
||||
|
||||
class PropertySceneTexture : public Property {
|
||||
public:
|
||||
explicit PropertySceneTexture (PropertyData data, std::string value) : Property (std::move(data)) {
|
||||
this->update (value);
|
||||
}
|
||||
|
||||
void update(const std::string& value) override {
|
||||
this->m_value = value;
|
||||
}
|
||||
|
||||
private:
|
||||
std::string m_value;
|
||||
};
|
||||
}
|
@ -35,6 +35,7 @@ std::vector <MaterialPassUniquePtr> MaterialParser::parsePasses (const JSON& it,
|
||||
|
||||
MaterialPassUniquePtr MaterialParser::parsePass (const JSON& it, Project& project) {
|
||||
const auto textures = it.optional ("textures");
|
||||
const auto usertextures = it.optional ("usertextures");
|
||||
const auto combos = it.optional ("combos");
|
||||
const auto constants = it.optional ("constants");
|
||||
|
||||
@ -45,8 +46,9 @@ MaterialPassUniquePtr MaterialParser::parsePass (const JSON& it, Project& projec
|
||||
.depthtest = it.optional ("depthtest", std::string ("disabled")),
|
||||
.depthwrite = it.optional ("depthwrite", std::string ("disabled")),
|
||||
.shader = it.require <std::string> ("shader", "Material pass must have a shader"),
|
||||
.textures = textures.has_value () ? parseTextures (*textures) : std::map <int, std::string> {},
|
||||
.combos = combos.has_value () ? parseCombos (*combos) : std::map <std::string, int> {},
|
||||
.textures = textures.has_value () ? parseTextures (*textures) : TextureMap {},
|
||||
.usertextures = usertextures.has_value () ? parseTextures (*usertextures) : TextureMap {},
|
||||
.combos = combos.has_value () ? parseCombos (*combos) : ComboMap {},
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -22,6 +22,9 @@ PropertySharedPtr PropertyParser::parse (const JSON& it, std::string name) {
|
||||
if (type == "text") {
|
||||
return parseText (it, name);
|
||||
}
|
||||
if (type == "scenetexture") {
|
||||
return parseSceneTexture (it, name);
|
||||
}
|
||||
|
||||
if (type != "group") {
|
||||
// show the error and ignore this property
|
||||
@ -95,4 +98,11 @@ PropertySharedPtr PropertyParser::parseText (const JSON& it, std::string name) {
|
||||
.name = name,
|
||||
.text = it.optional <std::string> ("text", ""),
|
||||
});
|
||||
}
|
||||
|
||||
PropertySharedPtr PropertyParser::parseSceneTexture (const JSON& it, std::string name) {
|
||||
return std::make_shared <PropertySceneTexture> (PropertyData {
|
||||
.name = name,
|
||||
.text = it.optional <std::string> ("text", ""),
|
||||
}, it.require ("value", "Property must have a value"));
|
||||
}
|
@ -16,5 +16,6 @@ class PropertyParser {
|
||||
static PropertySharedPtr parseBoolean (const JSON& it, std::string name);
|
||||
static PropertySharedPtr parseSlider (const JSON& it, std::string name);
|
||||
static PropertySharedPtr parseText (const JSON& it, std::string name);
|
||||
static PropertySharedPtr parseSceneTexture (const JSON& it, std::string name);
|
||||
};
|
||||
}
|
@ -409,6 +409,7 @@ void CShaderUnit::parseParameterConfiguration (
|
||||
// now convert it to integer
|
||||
// TODO: BETTER CONVERSION HERE
|
||||
size_t index = value - '0';
|
||||
// TODO: SUPPORT USER TEXTURES!!
|
||||
|
||||
if (combo != data.end ()) {
|
||||
// TODO: CLEANUP HOW THIS IS DETERMINED FIRST
|
||||
|
Loading…
Reference in New Issue
Block a user