/* * All or portions of this file Copyright (c) Amazon.com, Inc. or its affiliates or * its licensors. * * For complete copyright and license terms please see the LICENSE at the root of this * distribution (the "License"). All use of this software is governed by the License, * or, if provided, by the license below or the license accompanying this file. Do not * remove or modify any license notices. This file is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * */ // Original file Copyright Crytek GMBH or its affiliates, used under license. // Description : Display Settings definition. #ifndef CRYINCLUDE_EDITOR_DISPLAYSETTINGS_H #define CRYINCLUDE_EDITOR_DISPLAYSETTINGS_H #pragma once ////////////////////////////////////////////////////////////////////////// enum EDisplayRenderFlags { RENDER_FLAG_BBOX = 1 << 0, RENDER_FLAG_ROADS = 1 << 1, RENDER_FLAG_DECALS = 1 << 2, RENDER_FLAG_DETAILTEX = 1 << 3, RENDER_FLAG_FOG = 1 << 4, RENDER_FLAG_INDOORS = 1 << 5, RENDER_FLAG_LIVINGOBJ = 1 << 6, RENDER_FLAG_STATICOBJ = 1 << 7, RENDER_FLAG_SHADOWMAPS = 1 << 8, RENDER_FLAG_SKYBOX = 1 << 9, RENDER_FLAG_TERRAIN = 1 << 10, RENDER_FLAG_WATER = 1 << 11, RENDER_FLAG_DETAILOBJ = 1 << 12, RENDER_FLAG_PARTICLES = 1 << 14, RENDER_FLAG_VOXELS = 1 << 15, RENDER_FLAG_CLOUDS = 1 << 16, RENDER_FLAG_IMPOSTERS = 1 << 17, RENDER_FLAG_BEAMS = 1 << 18, RENDER_FLAG_GI = 1 << 19, RENDER_FLAG_ALPHABLEND = 1 << 20, //update this! RENDER_FLAG_LAST_ONE = 1 << 21 // Debugging options. //RENDER_FLAG_PROFILE = 1<<22, //RENDER_FLAG_AIDEBUGDRAW = 1<<23, //RENDER_FLAG_MEMINFO = 1<<24, }; ////////////////////////////////////////////////////////////////////////// enum EDisplaySettingsFlags { SETTINGS_NOCOLLISION = 0x01,//!< Disable collision with terrain. SETTINGS_NOLABELS = 0x02, //!< Do not draw labels. SETTINGS_PHYSICS = 0x04, //!< Physics simulation is enabled. SETTINGS_HIDE_TRACKS = 0x08, //!< Enable displaying of animation tracks in views. SETTINGS_HIDE_LINKS = 0x10, //!< Enable displaying of links between objects. SETTINGS_HIDE_HELPERS = 0x20, //!< Disable displaying of all object helpers. SETTINGS_SHOW_DIMENSIONFIGURES = 0x40, //!< Enable displaying of dimension figures. SETTINGS_SERIALIZABLE_FLAGS_MASK = ~(SETTINGS_PHYSICS), }; ////////////////////////////////////////////////////////////////////////// enum EDebugSettingsFlags { DBG_MEMINFO = 0x002, DBG_MEMSTATS = 0x004, DBG_TEXTURE_MEMINFO = 0x008, DBG_AI_DEBUGDRAW = 0x010, DBG_PHYSICS_DEBUGDRAW = 0x020, DBG_RENDERER_PROFILE = 0x040, DBG_RENDERER_PROFILESHADERS = 0x080, DBG_RENDERER_OVERDRAW = 0x100, DBG_RENDERER_RESOURCES = 0x200, DBG_FRAMEPROFILE = 0x400, DBG_DEBUG_LIGHTS = 0x800, DBG_BUDGET_MONITORING = 0x1000, DBG_HIGHLIGHT_BREAKABLE = 0x2000, DBG_HIGHLIGHT_MISSING_SURFACE_TYPE = 0x4000 }; /*! * CDisplaySettings is a collection of information about how to display current views. */ class SANDBOX_API CDisplaySettings { public: CDisplaySettings(); ~CDisplaySettings(); void PostInitApply(); void SetSettings(int flags) { m_flags = flags; }; int GetSettings() const { return m_flags; }; void SetObjectHideMask(int m_objectHideMask); int GetObjectHideMask() const { return m_objectHideMask; } void SetRenderFlags(int flags); int GetRenderFlags() const { return m_renderFlags; } void SetDebugFlags(int flags); int GetDebugFlags() const { return m_debugFlags; } void DisplayLabels(bool bEnable); bool IsDisplayLabels() const { return (m_flags & SETTINGS_NOLABELS) == 0; }; void DisplayTracks(bool bEnable); bool IsDisplayTracks() const { return (m_flags & SETTINGS_HIDE_TRACKS) == 0; }; void DisplayLinks(bool bEnable); bool IsDisplayLinks() const { return (m_flags & SETTINGS_HIDE_LINKS) == 0; }; void DisplayHelpers(bool bEnable); bool IsDisplayHelpers() const { return (m_flags & SETTINGS_HIDE_HELPERS) == 0; }; void DisplayDimensionFigures(bool bEnable); bool IsDisplayDimensionFigures() const { return m_flags & SETTINGS_SHOW_DIMENSIONFIGURES; }; void SetLabelsDistance(float dist) { m_labelsDistance = dist; }; float GetLabelsDistance() const { return m_labelsDistance; }; bool IsHighlightBreakable() const { return (m_debugFlags & DBG_HIGHLIGHT_BREAKABLE) != 0; } void SetHighlightBreakable(bool bEnable); bool IsHighlightMissingSurfaceType() const { return (m_debugFlags & DBG_HIGHLIGHT_MISSING_SURFACE_TYPE) != 0; } void SetHighlightMissingSurfaceType(bool bEnable); void SaveRegistry(); void LoadRegistry(); private: // Restrict access. CDisplaySettings(const CDisplaySettings&) {} void operator=(const CDisplaySettings&) {} void SetCVar(const char* cvar, bool val); void SetCVarInt(const char* cvar, int val); void SaveValue(const char* sSection, const char* sKey, int value); void LoadValue(const char* sSection, const char* sKey, int& value); void LoadValue(const char* sSection, const char* sKey, bool& value); int m_objectHideMask; int m_renderFlags; int m_flags; //! Debug/profile settings. //! @see EDebugSettingsFlags. int m_debugFlags; float m_labelsDistance; }; #endif // CRYINCLUDE_EDITOR_DISPLAYSETTINGS_H