| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158 |
- //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
- //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
- #pragma once
- #include "BsEditorPrerequisites.h"
- #include "Settings/BsSettings.h"
- #include "Math/BsDegree.h"
- namespace bs
- {
- /** @addtogroup Settings
- * @{
- */
- struct RecentProject;
- /** Contains various globally accessible editor preferences. */
- class BS_ED_EXPORT EditorSettings final : public Settings
- {
- public:
- /** Checks is snapping enabled for move handles in scene view. */
- bool getMoveHandleSnapActive() const { return mMoveSnapActive; }
- /** Checks is angle snapping enabled for rotate handles in scene view. */
- bool getRotateHandleSnapActive() const { return mRotateSnapActive; }
- /** Gets the snap amount if move snapping is enabled. All move handles will move in multiples of this amount. */
- float getMoveHandleSnap() const { return mMoveSnap; }
- /**
- * Gets the snap amount if rotate snapping is enabled. All rotate handles will rotate in multiples of this amount.
- */
- Degree getRotationHandleSnap() const { return mRotationSnap; }
- /** Returns the size that determines to total size of the scene view grid (its width and height). */
- UINT32 getGridSize() const { return mGridSize; }
- /** Returns the distance between scene view grid lines. */
- float getGridSpacing() const { return mGridAxisSpacing; }
- /** Gets the default size of all scene view handles. */
- float getHandleSize() const { return mHandleSize; }
- /** Returns the currently active scene view tool (for example move, rotate, etc.). */
- UINT32 getActiveSceneTool() const { return mActiveSceneTool; }
- /** Returns the currently active coordinate mode for scene view (for example global/local). */
- UINT32 getActiveCoordinateMode() const { return mActiveCoordinateMode; }
- /** Returns the currently active pivot mode for scene view (for example pivot/center). */
- UINT32 getActivePivotMode() const { return mActivePivotMode; }
- /** Retrieves the path to the last project open in the editor. */
- Path getLastOpenProject() const { return mLastOpenProject; }
- /** Retrieves whether the last open project should be automatically loaded on editor start up. */
- bool getAutoLoadLastProject() const { return mAutoLoadLastProject; }
- /** Retrieves a list of most recently loaded project paths and their last access times. */
- const Vector<RecentProject>& getRecentProjects() const { return mRecentProjects; }
- /** Retrieves the maximum number of frames per second the editor is allowed to execute. Zero means infinite. */
- UINT32 getFPSLimit() const { return mFPSLimit; }
- /**
- * Retrieves a value that controls sensitivity of mouse movements. This doesn't apply to mouse cursor.
- * Default value is 1.0f.
- */
- float getMouseSensitivity() const { return mMouseSensitivity; }
- /** Enables/disables snapping for move handles in scene view. */
- void setMoveHandleSnapActive(bool snapActive) { mMoveSnapActive = snapActive; markAsDirty(); }
- /** Enables/disables angle snapping for rotate handles in scene view. */
- void setRotateHandleSnapActive(bool snapActive) { mRotateSnapActive = snapActive; markAsDirty(); }
- /** Sets the move snap amount. All move handles will move in multiples of this amount. */
- void setMoveHandleSnap(float value) { mMoveSnap = value; markAsDirty(); }
- /** Sets the rotate snap amount. All rotate handles will rotate in multiples of this amount. */
- void setRotationHandleSnap(Degree value) { mRotationSnap = value; markAsDirty(); }
- /** Sets the size that determines to total size of the scene view grid (its width and height). */
- void setGridSize(UINT32 value) { mGridSize = value; markAsDirty(); }
- /** Sets the distance between scene view grid lines. */
- void setGridSpacing(float value) { mGridAxisSpacing = value; markAsDirty(); }
- /** Sets the default size of all scene view handles. */
- void setHandleSize(float value) { mHandleSize = value; markAsDirty(); }
- /** Changes the currently active scene view tool (for example move, rotate, etc.). */
- void setActiveSceneTool(UINT32 value) { mActiveSceneTool = value; markAsDirty(); }
- /** Changes the currently active coordinate mode for scene view (for example global/local). */
- void setActiveCoordinateMode(UINT32 value) { mActiveCoordinateMode = value; markAsDirty(); }
- /** Changes the currently active pivot mode for scene view (for example pivot/center). */
- void setActivePivotMode(UINT32 value) { mActivePivotMode = value; markAsDirty(); }
- /** Sets the path to the last project open in the editor. */
- void setLastOpenProject(const Path& value) { mLastOpenProject = value; markAsDirty(); }
- /** Sets whether the last open project should be automatically loaded on editor start up. */
- void setAutoLoadLastProject(bool value) { mAutoLoadLastProject = value; markAsDirty(); }
- /** Sets a list of most recently loaded project paths and their last access times. */
- void setRecentProjects(const Vector<RecentProject>& value) { mRecentProjects = value; markAsDirty(); }
- /** Sets the maximum number of frames per second the editor is allowed to execute. Zero means infinite. */
- void setFPSLimit(UINT32 limit) { mFPSLimit = limit; markAsDirty(); }
- /**
- * Sets a value that controls sensitivity of mouse movements. This doesn't apply to mouse cursor.
- * Default value is 1.0f.
- */
- void setMouseSensitivity(float value) { mMouseSensitivity = value; markAsDirty(); }
- private:
- bool mMoveSnapActive = false;
- bool mRotateSnapActive = false;
- float mMoveSnap = 0.1f;
- Degree mRotationSnap { 20.0f };
- UINT32 mGridSize = 256;
- float mGridAxisSpacing = 1.0f;
- UINT32 mActiveSceneTool = 1; // Move tool
- UINT32 mActiveCoordinateMode = 0;
- UINT32 mActivePivotMode = 0;
- float mHandleSize = 0.10f;
- UINT32 mFPSLimit = 60;
- float mMouseSensitivity = 1.0f;
- Path mLastOpenProject;
- bool mAutoLoadLastProject = true;
- Vector<RecentProject> mRecentProjects;
- /************************************************************************/
- /* RTTI */
- /************************************************************************/
- public:
- friend class EditorSettingsRTTI;
- static RTTITypeBase* getRTTIStatic();
- RTTITypeBase* getRTTI() const override;
- };
- /** Data about a recently loaded project. */
- struct RecentProject
- {
- Path path;
- UINT64 accessTimestamp;
- };
- /** @} */
- }
|