diff options
author | Jürgen Doser <jurgen.doser@gmail.com> | 2013-01-25 01:37:19 +0100 |
---|---|---|
committer | PilzAdam <pilzadam@minetest.net> | 2013-03-23 23:10:47 +0100 |
commit | dacc8cdb3a0e824b435f9f4d98beb471f7a8be64 (patch) | |
tree | 78c6ed09414932c3ee1b8730845b7b58c60e4511 /src/nodedef.cpp | |
parent | ca7043e52d6a5d0ee1b91f287371fbe7f216697e (diff) | |
download | hax-minetest-server-dacc8cdb3a0e824b435f9f4d98beb471f7a8be64.tar.gz hax-minetest-server-dacc8cdb3a0e824b435f9f4d98beb471f7a8be64.zip |
Include backface_culling flag in serialization format for TileDefs
This way flowing liquids actually show the backface when specified to
do so. Without this, TileDefs where by default initialized with
backface_culling = true and never set otherwise.
For backwards compatibility, an old client connected to a new server,
or a new client connected to an old server will behave like before
i.e., backface_culling is always true.
Diffstat (limited to 'src/nodedef.cpp')
-rw-r--r-- | src/nodedef.cpp | 21 |
1 files changed, 13 insertions, 8 deletions
diff --git a/src/nodedef.cpp b/src/nodedef.cpp index 9a1145a8e..7f6c8a054 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -107,26 +107,31 @@ void NodeBox::deSerialize(std::istream &is) TileDef */ -void TileDef::serialize(std::ostream &os) const +void TileDef::serialize(std::ostream &os, u16 protocol_version) const { - writeU8(os, 0); // version + if(protocol_version >= 17) + writeU8(os, 1); + else + writeU8(os, 0); os<<serializeString(name); writeU8(os, animation.type); writeU16(os, animation.aspect_w); writeU16(os, animation.aspect_h); writeF1000(os, animation.length); + if(protocol_version >= 17) + writeU8(os, backface_culling); } void TileDef::deSerialize(std::istream &is) { int version = readU8(is); - if(version != 0) - throw SerializationError("unsupported TileDef version"); name = deSerializeString(is); animation.type = (TileAnimationType)readU8(is); animation.aspect_w = readU16(is); animation.aspect_h = readU16(is); animation.length = readF1000(is); + if(version >= 1) + backface_culling = readU8(is); } /* @@ -235,10 +240,10 @@ void ContentFeatures::serialize(std::ostream &os, u16 protocol_version) writeF1000(os, visual_scale); writeU8(os, 6); for(u32 i=0; i<6; i++) - tiledef[i].serialize(os); + tiledef[i].serialize(os, protocol_version); writeU8(os, CF_SPECIAL_COUNT); for(u32 i=0; i<CF_SPECIAL_COUNT; i++){ - tiledef_special[i].serialize(os); + tiledef_special[i].serialize(os, protocol_version); } writeU8(os, alpha); writeU8(os, post_effect_color.getAlpha()); @@ -809,10 +814,10 @@ void ContentFeatures::serializeOld(std::ostream &os, u16 protocol_version) writeF1000(os, visual_scale); writeU8(os, 6); for(u32 i=0; i<6; i++) - tiledef[i].serialize(os); + tiledef[i].serialize(os, protocol_version); writeU8(os, CF_SPECIAL_COUNT); for(u32 i=0; i<CF_SPECIAL_COUNT; i++){ - tiledef_special[i].serialize(os); + tiledef_special[i].serialize(os, protocol_version); } writeU8(os, alpha); writeU8(os, post_effect_color.getAlpha()); |