mirror of
https://github.com/minetest/minetest.git
synced 2025-02-05 14:20:25 +01:00
Fix liquid drawtype faces sometimes not rendering (#12807)
Co-authored-by: SmallJoker <SmallJoker@users.noreply.github.com>
This commit is contained in:
parent
f4a01f3a5d
commit
3f801bc096
@ -651,7 +651,7 @@ static u8 face_contents(content_t m1, content_t m2, bool *equivalent,
|
|||||||
const ContentFeatures &f2 = ndef->get(m2);
|
const ContentFeatures &f2 = ndef->get(m2);
|
||||||
|
|
||||||
// Contents don't differ for different forms of same liquid
|
// Contents don't differ for different forms of same liquid
|
||||||
if (f1.sameLiquid(f2))
|
if (f1.sameLiquidRender(f2))
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
u8 c1 = f1.solidness;
|
u8 c1 = f1.solidness;
|
||||||
@ -668,9 +668,9 @@ static u8 face_contents(content_t m1, content_t m2, bool *equivalent,
|
|||||||
if (c1 == c2) {
|
if (c1 == c2) {
|
||||||
*equivalent = true;
|
*equivalent = true;
|
||||||
// If same solidness, liquid takes precense
|
// If same solidness, liquid takes precense
|
||||||
if (f1.isLiquid())
|
if (f1.isLiquidRender())
|
||||||
return 1;
|
return 1;
|
||||||
if (f2.isLiquid())
|
if (f2.isLiquidRender())
|
||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1681,7 +1681,7 @@ static void removeDupes(std::vector<content_t> &list)
|
|||||||
void NodeDefManager::resolveCrossrefs()
|
void NodeDefManager::resolveCrossrefs()
|
||||||
{
|
{
|
||||||
for (ContentFeatures &f : m_content_features) {
|
for (ContentFeatures &f : m_content_features) {
|
||||||
if (f.liquid_type != LIQUID_NONE || f.drawtype == NDT_LIQUID || f.drawtype == NDT_FLOWINGLIQUID) {
|
if (f.isLiquid() || f.isLiquidRender()) {
|
||||||
f.liquid_alternative_flowing_id = getId(f.liquid_alternative_flowing);
|
f.liquid_alternative_flowing_id = getId(f.liquid_alternative_flowing);
|
||||||
f.liquid_alternative_source_id = getId(f.liquid_alternative_source);
|
f.liquid_alternative_source_id = getId(f.liquid_alternative_source);
|
||||||
continue;
|
continue;
|
||||||
|
@ -493,9 +493,16 @@ struct ContentFeatures
|
|||||||
bool isLiquid() const{
|
bool isLiquid() const{
|
||||||
return (liquid_type != LIQUID_NONE);
|
return (liquid_type != LIQUID_NONE);
|
||||||
}
|
}
|
||||||
bool sameLiquid(const ContentFeatures &f) const{
|
|
||||||
if(!isLiquid() || !f.isLiquid()) return false;
|
bool isLiquidRender() const {
|
||||||
return (liquid_alternative_flowing_id == f.liquid_alternative_flowing_id);
|
return (drawtype == NDT_LIQUID || drawtype == NDT_FLOWINGLIQUID);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool sameLiquidRender(const ContentFeatures &f) const {
|
||||||
|
if (!isLiquidRender() || !f.isLiquidRender())
|
||||||
|
return false;
|
||||||
|
return liquid_alternative_flowing_id == f.liquid_alternative_flowing_id &&
|
||||||
|
liquid_alternative_source_id == f.liquid_alternative_source_id;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool lightingEquivalent(const ContentFeatures &other) const {
|
bool lightingEquivalent(const ContentFeatures &other) const {
|
||||||
|
Loading…
Reference in New Issue
Block a user