mirror of
https://github.com/MaSzyna-EU07/maszyna.git
synced 2026-10-17 23:49:19 +02:00
The editor branch was written against headers and the PCH, both of which this
branch has done away with, so its own files were ported rather than merged: the
five headers it added are now interface units and their .cpp files module
implementation units.
- editor/{puwg1992,polandmap,turnouts,orthophoto} become eu07.editor.* modules,
application/planpanel becomes eu07.application.planpanel. The plan tool keeps
to its own module rather than joining the eu07.simcore partitions: it stands on
the editor's libraries and eu07.application.uilayer, not on the simulation core,
so :editoruilayer can export import it without a cycle.
- glm arrives by import eu07.glm, never by include, as the rest of the tree does.
maj0sted is header-only and glm-free, so its headers stay includes in the global
module fragment - every unit that names those types includes them itself, since
a global fragment is not visible across units.
- the one textual conflict was :editoruilayer's include block against this
branch's imports; resolved this branch's way plus the planpanel import.
Builds with clang 22 (-DWITH_BETTER_RENDERER=OFF) and starts into the editor on
empty ground with -editor alone.
75 lines
1.7 KiB
C++
75 lines
1.7 KiB
C++
module;
|
|
#include <array>
|
|
#include <chrono>
|
|
#include <cstddef>
|
|
#include <deque>
|
|
#include <limits>
|
|
#include <mutex>
|
|
#include <ostream>
|
|
#include <sstream>
|
|
#include <type_traits>
|
|
#include <unordered_map>
|
|
#include <utility>
|
|
#include <vector>
|
|
#include <string>
|
|
|
|
export module eu07.simcore:editoruilayer;
|
|
import :fwd;
|
|
import eu07.application.uilayer;
|
|
import :editoruipanels;
|
|
// the plan tool is a module of its own: it stands on the editor's own libraries, not on the
|
|
// simulation core, and the panel is held here by value
|
|
export import eu07.application.planpanel;
|
|
|
|
export {
|
|
/*
|
|
This Source Code Form is subject to the
|
|
terms of the Mozilla Public License, v.
|
|
2.0. If a copy of the MPL was not
|
|
distributed with this file, You can
|
|
obtain one at
|
|
http://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
|
|
|
|
namespace scene
|
|
{
|
|
|
|
|
|
}
|
|
|
|
class editor_ui : public ui_layer
|
|
{
|
|
|
|
public:
|
|
// constructors
|
|
editor_ui();
|
|
// methods
|
|
// updates state of UI elements
|
|
void update() override;
|
|
void set_node(scene::basic_node *Node);
|
|
void add_node_template(const std::string &desc);
|
|
float rot_val();
|
|
bool rot_from_last();
|
|
functions_panel::rotation_mode rot_mode();
|
|
const std::string *get_active_node_template(bool bypassRandom = false);
|
|
nodebank_panel::edit_mode mode();
|
|
float getSpacing();
|
|
void toggleBrushSettings(bool isVisible);
|
|
|
|
protected:
|
|
void render_menu_contents() override;
|
|
|
|
private:
|
|
// members
|
|
itemproperties_panel m_itempropertiespanel{"Node Properties", true};
|
|
functions_panel m_functionspanel{"Functions", true};
|
|
nodebank_panel m_nodebankpanel{"Node Bank", true};
|
|
brush_object_list m_brushobjects{"Brush properties", false};
|
|
plan_panel m_planpanel{"Plan", false};
|
|
scene::basic_node *m_node{nullptr}; // currently bound scene node, if any
|
|
};
|
|
|
|
} // export
|