mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-10-17 02:49:19 +02:00
feat(terrain): grade line fitted to the ground under the route within the limits; editor terrain shaped to the grade line with a formation and rounded slopes, with one step back; scenery ground triangles of chosen materials converted to editor terrain and taken out of the files on save, with a dated backup of each file; crack-free simplified terrain mesh, terrain streamed as far as the scenery is drawn, the nearest chunks first; smoothing brush
This commit is contained in:
@@ -129,6 +129,8 @@ void node_layers::clear()
|
||||
m_context = layer_context();
|
||||
m_sources.clear();
|
||||
m_erased.clear();
|
||||
m_shapes.clear();
|
||||
m_shapeserased = false;
|
||||
m_templates.clear();
|
||||
m_instances.clear();
|
||||
m_instance = 0;
|
||||
@@ -475,6 +477,38 @@ void node_layers::forget(basic_node const *Node)
|
||||
m_sources.erase(lookup);
|
||||
}
|
||||
|
||||
void node_layers::shape(material_handle const Material, source_span const &Span)
|
||||
{
|
||||
auto const current{handle()};
|
||||
if (false == valid(current) || false == Span.valid() || m_instance != 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
m_shapes.push_back({current, Span, Material, false});
|
||||
}
|
||||
|
||||
std::pair<std::size_t, std::size_t> node_layers::erase_shapes(std::set<material_handle> const &Materials)
|
||||
{
|
||||
std::pair<std::size_t, std::size_t> result{0, 0};
|
||||
for (auto &shape : m_shapes)
|
||||
{
|
||||
if (shape.erased || Materials.count(shape.material) == 0)
|
||||
{
|
||||
continue;
|
||||
}
|
||||
if (false == writable(shape.layer))
|
||||
{
|
||||
++result.second;
|
||||
continue;
|
||||
}
|
||||
shape.erased = true;
|
||||
m_erased.emplace_back(shape.layer, shape.span);
|
||||
m_shapeserased = true;
|
||||
++result.first;
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
bool node_layers::is_descendant(layer_handle Layer, layer_handle const Ancestor) const
|
||||
{
|
||||
// NOTE: content of a merged layer, includes of other files among it, belongs to the layer it was merged into
|
||||
|
||||
Reference in New Issue
Block a user