X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2Fblock.cpp;h=a3db57d91242dfadece48003c0f656fc46ff1a64;hb=ca74cd8cdaf25b5ae778bef1dbabad21cea13b2d;hp=f518b64aeabc96ad4a7cc8d8313582cb64348f8f;hpb=6513b55584093a86ce1e369e054263dd75c295c8;p=blank.git diff --git a/src/world/block.cpp b/src/world/block.cpp index f518b64..a3db57d 100644 --- a/src/world/block.cpp +++ b/src/world/block.cpp @@ -76,7 +76,7 @@ BlockType::BlockType() noexcept , textures() , hsl_mod(0, 255, 255) , rgb_mod(255, 255, 255) -, outline_color(0, 0, 0) +, outline_color(0, 0, 0, 255) , gravity() , name("anonymous") , label("some block") @@ -89,18 +89,10 @@ BlockType::BlockType() noexcept , collision(true) , collide_block(true) , generate(false) -, min_solidity(0.5f) -, mid_solidity(0.75f) -, max_solidity(1.0f) -, min_humidity(-1.0f) -, mid_humidity(0.0f) -, max_humidity(1.0f) -, min_temperature(-1.0f) -, mid_temperature(0.0f) -, max_temperature(1.0f) -, min_richness(-1.0f) -, mid_richness(0.0f) -, max_richness(1.0f) +, solidity(0.5f, 0.75f, 1.0f) +, humidity(-1.0f, 0.0f, 1.0f) +, temperature(-1.0f, 0.0f, 1.0f) +, richness(-1.0f, 0.0f, 1.0f) , commonness(1.0f) { } @@ -119,18 +111,10 @@ void BlockType::Copy(const BlockType &other) noexcept { collision = other.collision; collide_block = collide_block; generate = other.generate; - min_solidity = other.min_solidity; - mid_solidity = other.mid_solidity; - max_solidity = other.max_solidity; - min_humidity = other.min_humidity; - mid_humidity = other.mid_humidity; - max_humidity = other.max_humidity; - min_temperature = other.min_temperature; - mid_temperature = other.mid_temperature; - max_temperature = other.max_temperature; - min_richness = other.min_richness; - mid_richness = other.mid_richness; - max_richness = other.max_richness; + solidity = other.solidity; + humidity = other.humidity; + temperature = other.temperature; + richness = other.richness; commonness = other.commonness; } @@ -165,13 +149,13 @@ void BlockType::Read( in.Skip(Token::BRACKET_CLOSE); } else if (name == "rgb_mod") { in.ReadVec(color_conv); - rgb_mod = glm::tvec3(color_conv * 255.0f); + rgb_mod = BlockMesh::ColorMod(color_conv * 255.0f); } else if (name == "hsl_mod") { in.ReadVec(color_conv); - hsl_mod = glm::tvec3(color_conv * 255.0f); + hsl_mod = BlockMesh::ColorMod(color_conv * 255.0f); } else if (name == "outline") { in.ReadVec(color_conv); - outline_color = glm::tvec3(color_conv * 255.0f); + outline_color = PrimitiveMesh::Color(color_conv * 255.0f, 255); } else if (name == "gravity") { gravity = BlockGravity::Read(in); } else if (name == "label") { @@ -193,29 +177,29 @@ void BlockType::Read( } else if (name == "generate") { generate = in.GetBool(); } else if (name == "min_solidity") { - min_solidity = in.GetFloat(); + solidity.Min(in.GetFloat()); } else if (name == "mid_solidity") { - mid_solidity = in.GetFloat(); + solidity.Mid(in.GetFloat()); } else if (name == "max_solidity") { - max_solidity = in.GetFloat(); + solidity.Max(in.GetFloat()); } else if (name == "min_humidity") { - min_humidity = in.GetFloat(); + humidity.Min(in.GetFloat()); } else if (name == "mid_humidity") { - mid_humidity = in.GetFloat(); + humidity.Mid(in.GetFloat()); } else if (name == "max_humidity") { - max_humidity = in.GetFloat(); + humidity.Max(in.GetFloat()); } else if (name == "min_temperature") { - min_temperature = in.GetFloat(); + temperature.Min(in.GetFloat()); } else if (name == "mid_temperature") { - mid_temperature = in.GetFloat(); + temperature.Mid(in.GetFloat()); } else if (name == "max_temperature") { - max_temperature = in.GetFloat(); + temperature.Max(in.GetFloat()); } else if (name == "min_richness") { - min_richness = in.GetFloat(); + richness.Min(in.GetFloat()); } else if (name == "mid_richness") { - mid_richness = in.GetFloat(); + richness.Mid(in.GetFloat()); } else if (name == "max_richness") { - max_richness = in.GetFloat(); + richness.Max(in.GetFloat()); } else if (name == "commonness") { commonness = in.GetFloat(); } else if (name == "shape") { @@ -256,7 +240,7 @@ void BlockType::FillBlockMesh( void BlockType::OutlinePrimitiveMesh(PrimitiveMesh::Buffer &buf) const noexcept { if (!shape) return; shape->Outline(buf); - buf.colors.insert(buf.colors.end(), shape->OutlineCount(), glm::tvec4(outline_color, 255)); + buf.colors.insert(buf.colors.end(), shape->OutlineCount(), outline_color); } @@ -313,8 +297,8 @@ struct RadialGravity : strength(strength) { } glm::vec3 GetGravity(const glm::vec3 &diff, const glm::mat4 &) const noexcept override { - float dist2 = length2(diff); - glm::vec3 dir = -normalize(diff); + float dist2 = glm::length2(diff); + glm::vec3 dir = -glm::normalize(diff); return dir * (strength / dist2); }