diff --git a/src/content_mapnode.cpp b/src/content_mapnode.cpp index e2cf57010..2fce337fc 100644 --- a/src/content_mapnode.cpp +++ b/src/content_mapnode.cpp @@ -427,7 +427,8 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr) i = CONTENT_WATER; f = nodemgr->getModifiable(i); f->drawtype = NDT_FLOWINGLIQUID; - f->setAllTextures("water.png", WATER_ALPHA); + f->setAllTextures("water.png"); + f->alpha = WATER_ALPHA; f->setInventoryTextureCube("water.png", "water.png", "water.png"); f->param_type = CPT_LIGHT; f->light_propagates = true; @@ -440,17 +441,14 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr) f->liquid_alternative_source = CONTENT_WATERSOURCE; f->liquid_viscosity = WATER_VISC; f->post_effect_color = video::SColor(64, 100, 100, 200); - // Flowing water material - f->mspec_special[0].tname = "water.png"; - f->mspec_special[0].backface_culling = false; - f->mspec_special[1].tname = "water.png"; - f->mspec_special[1].backface_culling = true; + f->setSpecialMaterial(0, MaterialSpec("water.png", false)); + f->setSpecialMaterial(1, MaterialSpec("water.png", true)); i = CONTENT_WATERSOURCE; f = nodemgr->getModifiable(i); f->drawtype = NDT_LIQUID; - f->setAllTextures("water.png", WATER_ALPHA); - //f->setInventoryTexture("water.png"); + f->setAllTextures("water.png"); + f->alpha = WATER_ALPHA; f->setInventoryTextureCube("water.png", "water.png", "water.png"); f->param_type = CPT_LIGHT; f->light_propagates = true; @@ -465,8 +463,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr) f->liquid_viscosity = WATER_VISC; f->post_effect_color = video::SColor(64, 100, 100, 200); // New-style water source material (mostly unused) - f->mspec_special[0].tname = "water.png"; - f->mspec_special[0].backface_culling = false; + f->setSpecialMaterial(0, MaterialSpec("water.png", false)); i = CONTENT_LAVA; f = nodemgr->getModifiable(i); @@ -486,11 +483,8 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr) f->liquid_viscosity = LAVA_VISC; f->damage_per_second = 4*2; f->post_effect_color = video::SColor(192, 255, 64, 0); - // Flowing lava material - f->mspec_special[0].tname = "lava.png"; - f->mspec_special[0].backface_culling = false; - f->mspec_special[1].tname = "lava.png"; - f->mspec_special[1].backface_culling = true; + f->setSpecialMaterial(0, MaterialSpec("lava.png", false)); + f->setSpecialMaterial(1, MaterialSpec("lava.png", true)); i = CONTENT_LAVASOURCE; f = nodemgr->getModifiable(i); @@ -512,8 +506,7 @@ void content_mapnode_init(IWritableNodeDefManager *nodemgr) f->damage_per_second = 4*2; f->post_effect_color = video::SColor(192, 255, 64, 0); // New-style lava source material (mostly unused) - f->mspec_special[0].tname = "lava.png"; - f->mspec_special[0].backface_culling = false; + f->setSpecialMaterial(0, MaterialSpec("lava.png", false)); i = CONTENT_TORCH; f = nodemgr->getModifiable(i); diff --git a/src/nodedef.cpp b/src/nodedef.cpp index c1aee5df4..4e43369b4 100644 --- a/src/nodedef.cpp +++ b/src/nodedef.cpp @@ -27,7 +27,11 @@ with this program; if not, write to the Free Software Foundation, Inc., #include "log.h" #include "settings.h" -void NodeBox::serialize(std::ostream &os) +/* + NodeBox +*/ + +void NodeBox::serialize(std::ostream &os) const { writeU8(os, 0); // version writeU8(os, type); @@ -57,7 +61,11 @@ void NodeBox::deSerialize(std::istream &is) wall_side.MaxEdge = readV3F1000(is); } -void MaterialSpec::serialize(std::ostream &os) +/* + MaterialSpec +*/ + +void MaterialSpec::serialize(std::ostream &os) const { os< used_texturenames; // True if this actually contains non-default data @@ -173,7 +172,7 @@ struct ContentFeatures float visual_scale; // Misc. scale parameter std::string tname_tiles[6]; std::string tname_inventory; - MaterialSpec mspec_special[CF_SPECIAL_COUNT]; + MaterialSpec mspec_special[CF_SPECIAL_COUNT]; // Use setter methods u8 alpha; // Post effect color, drawn when the camera is inside the node. @@ -240,24 +239,19 @@ struct ContentFeatures void deSerialize(std::istream &is, IGameDef *gamedef); /* - Quickhands for simple materials + Texture setters. + */ + // Texture setters. They also add stuff to used_texturenames. void setTexture(u16 i, std::string name); - - void setAllTextures(std::string name, u8 alpha_=255) - { - for(u16 i=0; i<6; i++) - setTexture(i, name); - alpha = alpha_; - // Force inventory texture too - setInventoryTexture(name); - } + void setAllTextures(std::string name); + void setSpecialMaterial(u16 i, const MaterialSpec &mspec); void setInventoryTexture(std::string imgname); void setInventoryTextureCube(std::string top, std::string left, std::string right); - + /* Some handy methods */