7#include <unordered_map>
32class VoxelSculptManager;
33class TilePaintManager;
47enum class TransformLock
80enum class AssetBrowserTab
87struct LinkedSceneProps
89 Node* mNode =
nullptr;
90 std::vector<Property> mProps;
91 std::vector<SubSceneOverride> mSubSceneOverrides;
98 glm::mat4 mCameraTransform;
99 std::vector<LinkedSceneProps> mLinkedSceneProps;
104 std::string mSceneName;
105 uint64_t mTimestamp = 0;
110struct PieAssetSnapshot
112 std::vector<uint8_t> mBytes;
113 bool mWasDirty =
false;
120 std::vector<Node*> mSelectedNodes;
121 Node* mShiftSelectAnchor =
nullptr;
122 int32_t mSelectedInstance = -1;
123 std::vector<EditScene> mEditScenes;
125 std::vector<AssetStub*> mSelectedAssetStubs;
126 ControlMode mControlMode = ControlMode::Default;
127 TransformLock mTransformLock = TransformLock::None;
129 float mPerspectiveNearZ = 0.25f;
130 float mPerspectiveFarZ = 4096.0f;
131 float mPerspectiveFov = 70.0f;
132 float mOrthoNearZ = -2048.0f;
133 float mOrthoFarZ = 2048.0f;
134 float mOrthoWidth = 12.8f;
135 bool mMouseNeedsRecenter =
false;
136 bool mUiEnabled =
true;
137 bool mPlayInEditor =
false;
138 bool mPlayInGameWindow =
false;
139 bool mEjected =
false;
140 bool mPaused =
false;
141 bool mHasEjectedOnce =
false;
142 bool mSavedGridEnabled =
false;
143 glm::vec4 mSavedEditorClearColor = glm::vec4(0.0f, 0.0f, 0.0f, 1.0f);
144 int32_t mSavedWindowRect[4] = {};
145 int32_t mEditSceneIndex = -1;
146 int32_t mPieEditSceneIdx = -1;
147 std::unordered_map<Asset*, PieAssetSnapshot> mPieAssetSnapshots;
152 std::unordered_map<Scene*, NodePtr> mInspectorDefaultCache;
158 bool mBeginPieAtEndOfFrame =
false;
159 bool mEndPieAtEndOfFrame =
false;
160 bool mSaveSceneAtEndOfFrame =
false;
161 bool mSaveSelectedAssetAtEndOfFrame =
false;
162 bool mResaveAllAtEndOfFrame =
false;
163 bool mReloadScriptsAtEndOfFrame =
false;
164 bool mOpenProjectAtEndOfFrame =
false;
165 std::string mPendingOpenProjectPath;
171 bool mOpenSceneAtEndOfFrame =
false;
172 AssetStub* mPendingOpenSceneStub =
nullptr;
177 bool mProgressActive =
false;
178 bool mProgressCancellable =
false;
179 bool mProgressCancelRequested =
false;
180 std::string mProgressTitle;
181 std::string mProgressStatus;
182 float mProgressFraction = -1.0f;
183 double mProgressLastPumpTime = 0.0;
184 AssetBrowserTab mActiveAssetTab = AssetBrowserTab::Project;
185 AssetDir* mTabCurrentDir[(int)AssetBrowserTab::Count] = {};
186 std::vector<AssetDir*> mTabDirPast[(int)AssetBrowserTab::Count];
187 std::vector<AssetDir*> mTabDirFuture[(int)AssetBrowserTab::Count];
188 std::string mTabFilterStr[(int)AssetBrowserTab::Count];
189 std::vector<AssetStub*> mTabFilteredStubs[(int)AssetBrowserTab::Count];
190 std::vector<Object*> mInspectPast;
191 std::vector<Object*> mInspectFuture;
193 Object* mPrevInspectedObject;
195 bool mInspectLocked =
false;
198 std::string mIOAssetPath;
199 bool mRequestSaveSceneAs =
false;
200 bool mTrackSelectedAsset =
false;
201 bool mTrackSelectedNode =
false;
202 std::string mRevealScriptName =
"";
203 std::set<AssetDir*> mRevealAssetExpandDirs;
204 uint32_t mViewportX = 0;
205 uint32_t mViewportY = 0;
206 uint32_t mViewportWidth = 100;
207 uint32_t mViewportHeight = 100;
208 glm::uvec4 mPrevViewport = {};
209 bool mShowLeftPane =
true;
210 bool mShowRightPane =
true;
211 bool mShowInterface =
true;
212 bool mPreviewLighting =
true;
214 std::vector<std::string> mFavoritedDirs;
215 std::vector<std::string> mRecentProjects;
216 std::vector<RecentScene> mRecentScenes;
217 PaintMode mPaintMode = PaintMode::None;
218 PaintManager* mPaintManager =
nullptr;
219 VoxelSculptManager* mVoxelSculptManager =
nullptr;
220 class TerrainSculptManager* mTerrainSculptManager =
nullptr;
221 TilePaintManager* mTilePaintManager =
nullptr;
226 bool mTilePaintProjectionStashed =
false;
227 bool mTilePaintPrevWasPerspective =
true;
228 bool mTilePaintTransformStashed =
false;
229 glm::vec3 mTilePaintPrevCameraPosition = { 0.0f, 0.0f, 0.0f };
230 glm::quat mTilePaintPrevCameraRotation = { 1.0f, 0.0f, 0.0f, 0.0f };
231 bool mNodePropertySelect =
false;
232 int32_t mNodePropertySelectIndex = 0;
233 std::string mNodePropertySelectName =
"";
234 std::string mPendingSceneImportPath =
"";
235 AssetStub* mPendingReimportSceneStub =
nullptr;
236 std::string mPendingReimportScenePath =
"";
237 bool mShutdownUnsavedCheck =
false;
238 bool mDevMode =
false;
239 bool mShowBottomPane =
true;
240 float mBottomPaneHeight = 180.0f;
241 bool mShowProjectUpgradeModal =
false;
242 bool mProjectUpgradeInProgress =
false;
243 std::vector<AssetStub*> mAssetsNeedingUpgrade;
246 bool mShow3DSPreview =
false;
247 int32_t mSceneScreenFilter = -1;
250 bool mShowGamePreview =
false;
251 bool mGamePreviewCaptured =
false;
254 int32_t mPlayTarget = 0;
257 bool mShowNodeGraphPanel =
false;
260 bool mShowTimelinePanel =
false;
263 bool mShowProfilingPanel =
false;
266 bool mShowInputTesterPanel =
false;
269 bool mShowTextureAtlasViewer =
false;
272 bool mShowGitPanel =
false;
275 bool mShowAnimationBrowser =
false;
278 float mTimelinePlayheadTime = 0.0f;
279 bool mTimelinePreviewing =
false;
280 float mTimelineZoom = 100.0f;
281 float mTimelineScrollX = 0.0f;
282 float mTimelineSnapInterval = 0.1f;
283 int32_t mTimelineSelectedTrack = -1;
284 int32_t mTimelineSelectedClip = -1;
285 int32_t mTimelineSelectedKeyframe = -1;
288 ImGuizmo::OPERATION mGizmoOperation = ImGuizmo::TRANSLATE;
289 ImGuizmo::MODE mGizmoMode = ImGuizmo::WORLD;
290 bool mGizmoBlockedBySelection =
false;
295 void Update(
float deltaTime);
297 void GatherProperties(std::vector<Property>& props);
299 void SetEditorMode(EditorMode mode);
300 EditorMode GetEditorMode();
302 void SetPaintMode(PaintMode paintMode);
303 PaintMode GetPaintMode();
305 void ReadEditorSave();
306 void WriteEditorSave();
308 void ReadEditorProjectSave();
309 void WriteEditorProjectSave();
311 void HandleNodeDestroy(
Node* node);
313 void SetSelectedNode(
Node* newNode);
314 void AddSelectedNode(
Node* node,
bool addAllChildren);
315 void SelectNodesInRange(
Node* rootNode,
Node* endNode);
316 void RemoveSelectedNode(
Node* node);
317 void SetSelectedAssetStub(
AssetStub* newStub);
318 void AddSelectedAssetStub(
AssetStub* stub);
319 void RemoveSelectedAssetStub(
AssetStub* stub);
320 void ClearSelectedAssetStubs();
321 const std::vector<AssetStub*>& GetSelectedAssetStubs();
322 bool IsAssetStubSelected(
AssetStub* stub);
323 void SetControlMode(ControlMode newMode);
325 void BeginPlayInEditor();
326 void EndPlayInEditor();
329 void RequestBeginPlayInEditor();
330 void RequestEndPlayInEditor();
334 void RequestReloadAllScripts();
335 void EjectPlayInEditor();
336 void InjectPlayInEditor();
337 void SnapshotAssetsForPie();
338 void RestoreAssetsFromPie();
345 Node* GetSubSceneDefaultTree(
Scene* src);
346 void InvalidateSubSceneDefaultCache(
Scene* src =
nullptr);
347 bool IsPropertyOverridden(
Node* node,
const std::string& propName);
348 void RevertPropertyToSource(
Node* node,
const std::string& propName);
349 void SetPlayInEditorPaused(
bool paused);
350 bool IsPlayInEditorPaused();
352 void SetNodePropertySelect(
bool enable, int32_t index,
const std::string& propName);
353 void ClearNodePropertySelect();
354 void AssignNodePropertySelect(
Node* targetNode);
357 void ToggleEditorCameraProjection();
358 void ApplyEditorCameraSettings();
360 void LoadStartupScene();
362 Node* GetSelectedNode();
363 Widget* GetSelectedWidget();
364 const std::vector<Node*>& GetSelectedNodes();
365 bool IsNodeSelected(
Node* node);
366 void DeselectNode(
Node* node);
367 int32_t GetSelectedInstance();
368 void SetSelectedInstance(int32_t instance);
371 void OpenEditScene(
Scene* scene);
372 void OpenEditScene(int32_t idx);
373 void CloseEditScene(int32_t idx);
374 void ShelveEditScene();
375 EditScene* GetEditScene(int32_t idx = -1);
376 void CloseAllEditScenes();
377 void EnsureActiveScene();
379 void ShowEditorUi(
bool show);
381 Asset* GetSelectedAsset();
383 ControlMode GetControlMode();
384 glm::vec3 GetTransformLockVector(TransformLock lock);
385 void SetTransformLock(TransformLock lock);
387 Object* GetInspectedObject();
388 Node* GetInspectedNode();
389 Asset* GetInspectedAsset();
390 void InspectObject(
Object* obj,
bool force =
false,
bool recordHistory =
true);
391 void LockInspect(
bool lock);
392 bool IsInspectLocked();
393 void RecordInspectHistory();
394 void ClearInspectHistory();
395 void RemoveFromInspectHistory(
Object* obj);
396 void ProgressInspectFuture();
397 void RegressInspectPast();
398 void ClearAssetDirHistory();
399 void SetAssetDirectory(
AssetDir* assetDir,
bool recordHistory);
401 void BrowseToAsset(
const std::string& name);
402 void BrowseToScript(
const std::string& scriptName);
405 void DuplicateAsset(
AssetStub* srcStub,
const char* overrideName =
nullptr);
407 void ProgressDirFuture();
408 void RegressDirPast();
410 void RemoveFilteredAssetStub(
AssetStub* stub);
411 int ActiveTab()
const {
return (
int)mActiveAssetTab; }
416 bool IsDirFavorited(
const std::string& dirPath);
417 void AddFavoriteDir(
const std::string& dirPath);
418 void RemoveFavoriteDir(
const std::string& dirPath);
420 void AddRecentProject(
const std::string& projPath);
421 void AddRecentScene(
const std::string& sceneName);
424EditorState* GetEditorState();
bool Update()
Definition Engine.cpp:710
void Shutdown()
Definition Engine.cpp:916
Definition TimelineInstance.h:32
Definition Viewport2d.h:33
Definition Viewport3d.h:7