#pragma once #include "WickedEngine.h" #include "Translator.h" class MaterialWindow; class PostprocessWindow; class WeatherWindow; class ObjectWindow; class MeshWindow; class CameraWindow; class RendererWindow; class EnvProbeWindow; class DecalWindow; class LightWindow; class AnimationWindow; class EmitterWindow; class HairParticleWindow; class ForceFieldWindow; class OceanWindow; class EditorLoadingScreen : public LoadingScreen { private: wiSprite sprite; wiFont font; public: void Load() override; void Compose() override; void Unload() override; }; class Editor; class EditorComponent : public RenderPath2D { private: wiGraphicsTypes::Texture2D pointLightTex, spotLightTex, dirLightTex, areaLightTex, decalTex, forceFieldTex, emitterTex, hairTex, cameraTex, armatureTex; public: std::unique_ptr materialWnd; std::unique_ptr postprocessWnd; std::unique_ptr weatherWnd; std::unique_ptr objectWnd; std::unique_ptr meshWnd; std::unique_ptr cameraWnd; std::unique_ptr rendererWnd; std::unique_ptr envProbeWnd; std::unique_ptr decalWnd; std::unique_ptr lightWnd; std::unique_ptr animWnd; std::unique_ptr emitterWnd; std::unique_ptr hairWnd; std::unique_ptr forceFieldWnd; std::unique_ptr oceanWnd; Editor* main = nullptr; wiCheckBox* cinemaModeCheckBox = nullptr; EditorLoadingScreen* loader = nullptr; RenderPath3D* renderPath = nullptr; enum RENDERPATH { RENDERPATH_FORWARD, RENDERPATH_DEFERRED, RENDERPATH_TILEDFORWARD, RENDERPATH_TILEDDEFERRED, RENDERPATH_PATHTRACING, }; void ChangeRenderPath(RENDERPATH path); void Load() override; void Start() override; void FixedUpdate() override; void Update(float dt) override; void Render() override; void Compose() override; void Unload() override; enum EDITORSTENCILREF { EDITORSTENCILREF_CLEAR = 0x00, EDITORSTENCILREF_HIGHLIGHT = 0x01, EDITORSTENCILREF_LAST = 0x0F, }; Translator translator; std::list selected; wiECS::ComponentManager savedHierarchy; wiRenderer::RayIntersectWorldResult hovered; void BeginTranslate(); void EndTranslate(); void AddSelected(const wiRenderer::RayIntersectWorldResult& picked); wiArchive *clipboard = nullptr; std::vector history; int historyPos = -1; enum HistoryOperationType { HISTORYOP_TRANSLATOR, HISTORYOP_DELETE, HISTORYOP_SELECTION, HISTORYOP_NONE }; void ResetHistory(); wiArchive* AdvanceHistory(); void ConsumeHistoryOperation(bool undo); }; class Editor : public MainComponent { public: Editor() {} ~Editor() {} EditorComponent* renderComponent = nullptr; EditorLoadingScreen* loader = nullptr; void Initialize() override; };