213 lines
6.7 KiB
C++
213 lines
6.7 KiB
C++
////////////////////////////////////////////////////////////////////////////
|
|
//
|
|
// Crytek Engine Source File.
|
|
// Copyright (C), Crytek Studios, 2001.
|
|
// -------------------------------------------------------------------------
|
|
// File name: DisplaySettings.cpp
|
|
// Version: v1.00
|
|
// Created: 3/12/2001 by Timur.
|
|
// Compilers: Visual C++ 6.0
|
|
// Description: Display Settings implementation.
|
|
// -------------------------------------------------------------------------
|
|
// History:
|
|
//
|
|
////////////////////////////////////////////////////////////////////////////
|
|
|
|
#include "StdAfx.h"
|
|
#include "DisplaySettings.h"
|
|
#include "Objects\ClassDesc.h"
|
|
#include "Settings.h"
|
|
|
|
#include <IConsole.h>
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
CDisplaySettings::CDisplaySettings()
|
|
{
|
|
m_flags = 0;
|
|
m_objectHideMask = 0;
|
|
m_displayMode = DISPLAYMODE_SOLID;
|
|
m_displayLabels = true;
|
|
// All flags enabled by default.
|
|
m_renderFlags = (1<<15)-1;
|
|
m_renderFlags &= ~(RENDER_FLAG_BBOX);
|
|
m_debugFlags = 0;
|
|
m_labelsDistance = 100;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
CDisplaySettings::~CDisplaySettings()
|
|
{
|
|
}
|
|
|
|
void CDisplaySettings::SaveRegistry()
|
|
{
|
|
int displayLabels = m_displayLabels;
|
|
SaveValue("Settings","ObjectHideMask",m_objectHideMask);
|
|
SaveValue("Settings","RenderFlags",m_renderFlags );
|
|
SaveValue("Settings","DisplayMode",(int)m_displayMode);
|
|
SaveValue("Settings","DisplayFlags",m_flags );
|
|
SaveValue("Settings","DebugFlags",m_debugFlags );
|
|
SaveValue("Settings","LabelsDistance",m_labelsDistance );
|
|
}
|
|
|
|
void CDisplaySettings::LoadRegistry()
|
|
{
|
|
int dispMode = (int)m_displayMode;
|
|
LoadValue( "Settings","ObjectHideMask",m_objectHideMask );
|
|
LoadValue( "Settings","RenderFlags",m_renderFlags );
|
|
LoadValue( "Settings","DisplayMode",dispMode );
|
|
m_displayMode = (EDisplayMode)dispMode;
|
|
LoadValue( "Settings","DisplayFlags",m_flags );
|
|
LoadValue("Settings","DebugFlags",m_debugFlags );
|
|
int temp = m_labelsDistance;
|
|
LoadValue("Settings","LabelsDistance",temp );
|
|
m_labelsDistance = temp;
|
|
|
|
gSettings.objectHideMask = m_objectHideMask;
|
|
}
|
|
|
|
void CDisplaySettings::SetObjectHideMask( int hideMask )
|
|
{
|
|
int prevMask = m_objectHideMask;
|
|
m_objectHideMask = hideMask;
|
|
|
|
gSettings.objectHideMask = m_objectHideMask;
|
|
};
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CDisplaySettings::PostInitApply()
|
|
{
|
|
SetRenderFlags( m_renderFlags );
|
|
SetDebugFlags( m_debugFlags );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CDisplaySettings::SetRenderFlags( int flags )
|
|
{
|
|
int prev = m_renderFlags;
|
|
m_renderFlags = flags;
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
//SetCVar( "e_bboxes",m_renderFlags&RENDER_FLAG_BBOX );
|
|
SetCVar( "e_beach",m_renderFlags&RENDER_FLAG_BEACHES );
|
|
SetCVar( "e_decals",m_renderFlags&RENDER_FLAG_DECALS );
|
|
SetCVar( "e_detail_texture",m_renderFlags&RENDER_FLAG_DETAILTEX );
|
|
SetCVar( "e_fog",m_renderFlags&RENDER_FLAG_FOG );
|
|
//SetCVar( "e_indoors",m_renderFlags&RENDER_FLAG_INDOORS );
|
|
SetCVar( "e_bflyes",m_renderFlags&RENDER_FLAG_LIVINGOBJ );
|
|
SetCVar( "e_bugs",m_renderFlags&RENDER_FLAG_LIVINGOBJ );
|
|
SetCVar( "e_vegetation",m_renderFlags&RENDER_FLAG_STATICOBJ );
|
|
SetCVar( "e_shadow_maps",m_renderFlags&RENDER_FLAG_SHADOWMAPS );
|
|
SetCVar( "e_sky_box",m_renderFlags&RENDER_FLAG_SKYBOX );
|
|
SetCVar( "e_terrain",m_renderFlags&RENDER_FLAG_TERRAIN );
|
|
SetCVar( "e_water_ocean",m_renderFlags&RENDER_FLAG_WATER );
|
|
SetCVar( "e_detail_objects",m_renderFlags&RENDER_FLAG_DETAILOBJ );
|
|
SetCVar( "e_particles",m_renderFlags&RENDER_FLAG_PARTICLES );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CDisplaySettings::SetDebugFlags( int flags )
|
|
{
|
|
m_debugFlags = flags;
|
|
|
|
//
|
|
SetCVar( "e_time_profiling",m_debugFlags&DBG_TIMEPROFILE );
|
|
SetCVar( "ai_debugdraw",m_debugFlags&DBG_AI_DEBUGDRAW );
|
|
SetCVarInt( "r_LogUsedTextures",(m_debugFlags&DBG_TEXTURE_MEMINFO) ? 2:0 );
|
|
SetCVarInt( "memstats",(m_debugFlags&DBG_MEMSTATS) ? 1000:0 );
|
|
SetCVarInt( "p_draw_helpers",(m_debugFlags&DBG_PHYSICS_DEBUGDRAW) ? 5634:0 );
|
|
|
|
SetCVarInt( "r_Profile",(m_debugFlags&DBG_RENDERER_PROFILE) ? 4:0 );
|
|
SetCVar( "r_ProfileShaders",(m_debugFlags&DBG_RENDERER_PROFILESHADERS) );
|
|
|
|
SetCVarInt( "r_MeasureOverdraw",(m_debugFlags&DBG_RENDERER_OVERDRAW) ? 4:0 );
|
|
SetCVarInt( "r_Stats",(m_debugFlags&DBG_RENDERER_RESOURCES) ? 4:0 );
|
|
SetCVarInt( "e_debug_light",(m_debugFlags&DBG_DEBUG_LIGHTS) ? 1:0 );
|
|
|
|
ISystem *pSystem = GetIEditor()->GetSystem();
|
|
if (pSystem)
|
|
{
|
|
bool bOn = (m_debugFlags&DBG_FRAMEPROFILE) != 0;
|
|
pSystem->GetIProfileSystem()->Enable( bOn,bOn );
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CDisplaySettings::SetCVar( const char *cvar,bool value )
|
|
{
|
|
ICVar *var = GetIEditor()->GetSystem()->GetIConsole()->GetCVar(cvar);
|
|
if (var) {
|
|
var->Set( (value)?1:0 );
|
|
}
|
|
else
|
|
{
|
|
CLogFile::FormatLine( "Console Variable %s not declared",cvar );
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CDisplaySettings::SetCVarInt( const char *cvar,int value )
|
|
{
|
|
ICVar *var = GetIEditor()->GetSystem()->GetIConsole()->GetCVar(cvar);
|
|
if (var) {
|
|
var->Set( value );
|
|
}
|
|
else
|
|
{
|
|
CLogFile::FormatLine( "Console Variable %s not declared",cvar );
|
|
}
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CDisplaySettings::DisplayLabels( bool bEnable )
|
|
{
|
|
if (bEnable)
|
|
m_flags &= ~SETTINGS_NOLABELS;
|
|
else
|
|
m_flags |= SETTINGS_NOLABELS;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CDisplaySettings::DisplayTracks( bool bEnable )
|
|
{
|
|
if (bEnable)
|
|
m_flags &= ~SETTINGS_HIDE_TRACKS;
|
|
else
|
|
m_flags |= SETTINGS_HIDE_TRACKS;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CDisplaySettings::DisplayLinks( bool bEnable )
|
|
{
|
|
if (bEnable)
|
|
m_flags &= ~SETTINGS_HIDE_LINKS;
|
|
else
|
|
m_flags |= SETTINGS_HIDE_LINKS;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CDisplaySettings::DisplayHelpers( bool bEnable )
|
|
{
|
|
if (bEnable)
|
|
m_flags &= ~SETTINGS_HIDE_HELPERS;
|
|
else
|
|
m_flags |= SETTINGS_HIDE_HELPERS;
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CDisplaySettings::SaveValue( const char *sSection,const char *sKey,int value )
|
|
{
|
|
AfxGetApp()->WriteProfileInt( sSection,sKey,value );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CDisplaySettings::LoadValue( const char *sSection,const char *sKey,int &value )
|
|
{
|
|
value = AfxGetApp()->GetProfileInt(sSection,sKey,value );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CDisplaySettings::LoadValue( const char *sSection,const char *sKey,bool &value )
|
|
{
|
|
value = AfxGetApp()->GetProfileInt(sSection,sKey,value );
|
|
} |