#pragma once #include "objects/base/instance.h" #include "handles.h" #include "objects/workspace.h" #include "objects/datamodel.h" #include "camera.h" #include #include class Instance; // typedef std::function element, std::optional> newParent)> HierarchyUpdateHandler; typedef std::function object, std::optional> oldParent, std::optional> newParent)> HierarchyPreUpdateHandler; typedef std::function object, std::optional> oldParent, std::optional> newParent)> HierarchyPostUpdateHandler; typedef std::function> oldSelection, std::vector> newSelection, bool fromExplorer)> SelectionUpdateHandler; typedef std::function instance, std::string property, Variant newValue)> PropertyUpdateHandler; // TEMPORARY COMMON DATA FOR VARIOUS INTERNAL COMPONENTS extern Camera camera; extern std::shared_ptr gDataModel; extern std::shared_ptr editModeDataModel; inline std::shared_ptr gWorkspace() { return std::dynamic_pointer_cast(gDataModel->services["Workspace"]); } extern std::optional hierarchyPreUpdateHandler; extern std::optional hierarchyPostUpdateHandler; extern Handles editorToolHandles; void setSelection(std::vector> newSelection, bool fromExplorer = false); const std::vector> getSelection(); void addSelectionListener(SelectionUpdateHandler handler); void sendPropertyUpdatedSignal(std::shared_ptr instance, std::string property, Variant newValue); void addPropertyUpdateListener(PropertyUpdateHandler handler);