276 lines
9.7 KiB
C++
276 lines
9.7 KiB
C++
// PanelDisplayRender.cpp : implementation file
|
|
//
|
|
|
|
#include "stdafx.h"
|
|
#include "PanelDisplayRender.h"
|
|
#include "DisplaySettings.h"
|
|
#include "Settings.h"
|
|
|
|
#ifdef _DEBUG
|
|
#define new DEBUG_NEW
|
|
#undef THIS_FILE
|
|
static char THIS_FILE[] = __FILE__;
|
|
#endif
|
|
|
|
#define LEAVE_FLAGS (RENDER_FLAG_BBOX)
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPanelDisplayRender dialog
|
|
|
|
|
|
CPanelDisplayRender::CPanelDisplayRender(CWnd* pParent /*=NULL*/)
|
|
: CDialog(CPanelDisplayRender::IDD, pParent)
|
|
{
|
|
//{{AFX_DATA_INIT(CPanelDisplayRender)
|
|
m_beaches = FALSE;
|
|
m_decals = FALSE;
|
|
m_detailTex = FALSE;
|
|
m_fog = FALSE;
|
|
m_shadowMaps = FALSE;
|
|
m_skyBox = FALSE;
|
|
m_staticObj = FALSE;
|
|
m_terrain = FALSE;
|
|
m_water = FALSE;
|
|
m_detailObj = FALSE;
|
|
m_particles = FALSE;
|
|
|
|
m_dbg_time_profile = FALSE;
|
|
m_dbg_frame_profile = FALSE;
|
|
m_dbg_aidebugdraw = FALSE;
|
|
m_dbg_physicsDebugDraw = FALSE;
|
|
m_dbg_memory_info = FALSE;
|
|
m_dbg_mem_stats = FALSE;
|
|
m_dbg_texture_meminfo = FALSE;
|
|
m_dbg_renderer_profile = FALSE;
|
|
m_dbg_renderer_profile_shaders = FALSE;
|
|
m_dbg_renderer_overdraw = FALSE;
|
|
m_dbg_renderer_resources = FALSE;
|
|
m_dbg_debug_lights = FALSE;
|
|
//}}AFX_DATA_INIT
|
|
|
|
Create( IDD,pParent );
|
|
}
|
|
|
|
|
|
void CPanelDisplayRender::DoDataExchange(CDataExchange* pDX)
|
|
{
|
|
CDialog::DoDataExchange(pDX);
|
|
DDX_Control(pDX, IDC_DISPLAY_ALL, m_selectAllBtn);
|
|
DDX_Control(pDX, IDC_DISPLAY_NONE, m_selectNoneBtn);
|
|
DDX_Control(pDX, IDC_DISPLAY_INVERT, m_selectInvertBtn);
|
|
|
|
// Render flags.
|
|
DDX_Check(pDX, IDC_DISPLAY_BEACHES, m_beaches);
|
|
DDX_Check(pDX, IDC_DISPLAY_DECALS, m_decals);
|
|
DDX_Check(pDX, IDC_DISPLAY_DETAILTEX, m_detailTex);
|
|
DDX_Check(pDX, IDC_DISPLAY_FOG, m_fog);
|
|
DDX_Check(pDX, IDC_DISPLAY_SHADOWMAPS, m_shadowMaps);
|
|
DDX_Check(pDX, IDC_DISPLAY_SKYBOX, m_skyBox);
|
|
DDX_Check(pDX, IDC_DISPLAY_STATICOBJ, m_staticObj);
|
|
DDX_Check(pDX, IDC_DISPLAY_TERRAIN, m_terrain);
|
|
DDX_Check(pDX, IDC_DISPLAY_WATER, m_water);
|
|
DDX_Check(pDX, IDC_DISPLAY_DETAILOBJ, m_detailObj);
|
|
DDX_Check(pDX, IDC_DISPLAY_PARTICLES, m_particles);
|
|
|
|
// Debug flags.
|
|
DDX_Check(pDX, IDC_DISPLAY_PROFILE, m_dbg_time_profile);
|
|
DDX_Check(pDX, IDC_DISPLAY_PROFILE2, m_dbg_frame_profile);
|
|
DDX_Check(pDX, IDC_DISPLAY_AIDEBUGDRAW, m_dbg_aidebugdraw);
|
|
DDX_Check(pDX, IDC_MEM_INFO, m_dbg_memory_info);
|
|
DDX_Check(pDX, IDC_MEM_STATS, m_dbg_mem_stats);
|
|
DDX_Check(pDX, IDC_TEXMEM_STATS, m_dbg_texture_meminfo);
|
|
DDX_Check(pDX, IDC_DISPLAY_PHYSICSDEBUGDRAW, m_dbg_physicsDebugDraw);
|
|
DDX_Check(pDX, IDC_DISPLAY_PROFILERENDERER, m_dbg_renderer_profile);
|
|
DDX_Check(pDX, IDC_DISPLAY_PROFILESHADERS, m_dbg_renderer_profile_shaders);
|
|
DDX_Check(pDX, IDC_DISPLAY_OVERDRAW, m_dbg_renderer_overdraw);
|
|
DDX_Check(pDX, IDC_DISPLAY_RENDERERRESOURCES, m_dbg_renderer_resources);
|
|
DDX_Check(pDX, IDC_DISPLAY_DEBUG_LIGHTS, m_dbg_debug_lights);
|
|
}
|
|
|
|
|
|
BEGIN_MESSAGE_MAP(CPanelDisplayRender, CDialog)
|
|
ON_BN_CLICKED(IDC_DISPLAY_FOG, OnChangeRenderFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_ALL, OnDisplayAll)
|
|
ON_BN_CLICKED(IDC_DISPLAY_NONE, OnDisplayNone)
|
|
ON_BN_CLICKED(IDC_DISPLAY_INVERT, OnDisplayInvert)
|
|
ON_BN_CLICKED(IDC_FILL_MODE, OnFillMode)
|
|
ON_BN_CLICKED(IDC_WIREFRAME_MODE, OnWireframeMode)
|
|
ON_BN_CLICKED(IDC_DISPLAY_SKYBOX, OnChangeRenderFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_TERRAIN, OnChangeRenderFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_WATER, OnChangeRenderFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_BEACHES, OnChangeRenderFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_SHADOWMAPS, OnChangeRenderFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_DETAILTEX, OnChangeRenderFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_STATICOBJ, OnChangeRenderFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_DECALS, OnChangeRenderFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_DETAILOBJ, OnChangeRenderFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_PARTICLES, OnChangeRenderFlag)
|
|
ON_BN_CLICKED(IDC_HIDE_HELPERS, OnBnClickedHideHelpers)
|
|
|
|
// Debug flags.
|
|
ON_BN_CLICKED(IDC_MEM_INFO, OnChangeDebugFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_PROFILE, OnChangeDebugFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_PROFILE2, OnChangeDebugFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_AIDEBUGDRAW, OnChangeDebugFlag)
|
|
ON_BN_CLICKED(IDC_MEM_STATS, OnChangeDebugFlag)
|
|
ON_BN_CLICKED(IDC_TEXMEM_STATS, OnChangeDebugFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_PHYSICSDEBUGDRAW, OnChangeDebugFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_PROFILERENDERER, OnChangeDebugFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_PROFILESHADERS, OnChangeDebugFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_OVERDRAW, OnChangeDebugFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_RENDERERRESOURCES, OnChangeDebugFlag)
|
|
ON_BN_CLICKED(IDC_DISPLAY_DEBUG_LIGHTS, OnChangeDebugFlag)
|
|
END_MESSAGE_MAP()
|
|
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CPanelDisplayRender message handlers
|
|
|
|
BOOL CPanelDisplayRender::OnInitDialog()
|
|
{
|
|
CDialog::OnInitDialog();
|
|
|
|
SetControls();
|
|
|
|
if (!GetIEditor()->GetDisplaySettings()->IsDisplayHelpers())
|
|
CheckDlgButton( IDC_HIDE_HELPERS,BST_CHECKED );
|
|
else
|
|
CheckDlgButton( IDC_HIDE_HELPERS,BST_UNCHECKED );
|
|
|
|
if (GetIEditor()->GetDisplaySettings()->GetDisplayMode() == DISPLAYMODE_SOLID)
|
|
{
|
|
CheckDlgButton( IDC_FILL_MODE,BST_CHECKED );
|
|
CheckDlgButton( IDC_WIREFRAME_MODE,BST_UNCHECKED );
|
|
}
|
|
else
|
|
{
|
|
CheckDlgButton( IDC_FILL_MODE,BST_UNCHECKED );
|
|
CheckDlgButton( IDC_WIREFRAME_MODE,BST_CHECKED );
|
|
}
|
|
|
|
return TRUE; // return TRUE unless you set the focus to a control
|
|
// EXCEPTION: OCX Property Pages should return FALSE
|
|
}
|
|
|
|
void CPanelDisplayRender::SetControls()
|
|
{
|
|
uint flags = GetIEditor()->GetDisplaySettings()->GetRenderFlags();
|
|
m_beaches = (flags&RENDER_FLAG_BEACHES)?TRUE:FALSE;
|
|
m_decals = (flags&RENDER_FLAG_DECALS)?TRUE:FALSE;
|
|
m_detailTex = (flags&RENDER_FLAG_DETAILTEX)?TRUE:FALSE;
|
|
m_fog = (flags&RENDER_FLAG_FOG)?TRUE:FALSE;
|
|
m_shadowMaps = (flags&RENDER_FLAG_SHADOWMAPS)?TRUE:FALSE;
|
|
m_skyBox = (flags&RENDER_FLAG_SKYBOX)?TRUE:FALSE;
|
|
m_staticObj = (flags&RENDER_FLAG_STATICOBJ)?TRUE:FALSE;
|
|
m_terrain = (flags&RENDER_FLAG_TERRAIN)?TRUE:FALSE;
|
|
m_water = (flags&RENDER_FLAG_WATER)?TRUE:FALSE;
|
|
m_detailObj = (flags&RENDER_FLAG_DETAILOBJ)?TRUE:FALSE;
|
|
m_particles = (flags&RENDER_FLAG_PARTICLES)?TRUE:FALSE;
|
|
|
|
flags = GetIEditor()->GetDisplaySettings()->GetDebugFlags();
|
|
m_dbg_time_profile = (flags&DBG_TIMEPROFILE)?TRUE:FALSE;
|
|
m_dbg_frame_profile = (flags&DBG_FRAMEPROFILE)?TRUE:FALSE;
|
|
m_dbg_aidebugdraw = (flags&DBG_AI_DEBUGDRAW)?TRUE:FALSE;
|
|
m_dbg_physicsDebugDraw = (flags&DBG_PHYSICS_DEBUGDRAW)?TRUE:FALSE;
|
|
m_dbg_memory_info = (flags&DBG_MEMINFO)?TRUE:FALSE;
|
|
m_dbg_mem_stats = (flags&DBG_MEMSTATS)?TRUE:FALSE;
|
|
m_dbg_texture_meminfo = (flags&DBG_TEXTURE_MEMINFO)?TRUE:FALSE;
|
|
m_dbg_renderer_profile = (flags&DBG_RENDERER_PROFILE)?TRUE:FALSE;
|
|
m_dbg_renderer_profile_shaders = (flags&DBG_RENDERER_PROFILESHADERS)?TRUE:FALSE;
|
|
m_dbg_renderer_overdraw = (flags&DBG_RENDERER_OVERDRAW)?TRUE:FALSE;
|
|
m_dbg_renderer_resources = (flags&DBG_RENDERER_RESOURCES)?TRUE:FALSE;
|
|
m_dbg_debug_lights = (flags&DBG_DEBUG_LIGHTS)?TRUE:FALSE;
|
|
|
|
UpdateData(FALSE);
|
|
}
|
|
|
|
void CPanelDisplayRender::OnChangeRenderFlag()
|
|
{
|
|
UpdateData(TRUE);
|
|
uint flags = GetIEditor()->GetDisplaySettings()->GetRenderFlags();
|
|
flags = 0;
|
|
|
|
flags |= (m_beaches)?RENDER_FLAG_BEACHES:0;
|
|
flags |= (m_decals)?RENDER_FLAG_DECALS:0;
|
|
flags |= (m_detailTex)?RENDER_FLAG_DETAILTEX:0;
|
|
flags |= (m_fog)?RENDER_FLAG_FOG:0;
|
|
flags |= (m_shadowMaps)?RENDER_FLAG_SHADOWMAPS:0;
|
|
flags |= (m_skyBox)?RENDER_FLAG_SKYBOX:0;
|
|
flags |= (m_staticObj)?RENDER_FLAG_STATICOBJ:0;
|
|
flags |= (m_terrain)?RENDER_FLAG_TERRAIN:0;
|
|
flags |= (m_water)?RENDER_FLAG_WATER:0;
|
|
flags |= (m_detailObj)?RENDER_FLAG_DETAILOBJ:0;
|
|
flags |= (m_particles)?RENDER_FLAG_PARTICLES:0;
|
|
|
|
GetIEditor()->GetDisplaySettings()->SetRenderFlags( flags );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CPanelDisplayRender::OnChangeDebugFlag()
|
|
{
|
|
UpdateData(TRUE);
|
|
uint flags = GetIEditor()->GetDisplaySettings()->GetDebugFlags();
|
|
flags = 0;
|
|
|
|
flags |= (m_dbg_time_profile)?DBG_TIMEPROFILE:0;
|
|
flags |= (m_dbg_frame_profile)?DBG_FRAMEPROFILE:0;
|
|
flags |= (m_dbg_aidebugdraw)?DBG_AI_DEBUGDRAW:0;
|
|
flags |= (m_dbg_physicsDebugDraw)?DBG_PHYSICS_DEBUGDRAW:0;
|
|
flags |= (m_dbg_memory_info)?DBG_MEMINFO:0;
|
|
flags |= (m_dbg_mem_stats)?DBG_MEMSTATS:0;
|
|
flags |= (m_dbg_texture_meminfo)?DBG_TEXTURE_MEMINFO:0;
|
|
flags |= (m_dbg_renderer_profile)?DBG_RENDERER_PROFILE:0;
|
|
flags |= (m_dbg_renderer_profile_shaders)?DBG_RENDERER_PROFILESHADERS:0;
|
|
flags |= (m_dbg_renderer_overdraw)?DBG_RENDERER_OVERDRAW:0;
|
|
flags |= (m_dbg_renderer_resources)?DBG_RENDERER_RESOURCES:0;
|
|
flags |= (m_dbg_debug_lights)?DBG_DEBUG_LIGHTS:0;
|
|
|
|
GetIEditor()->GetDisplaySettings()->SetDebugFlags( flags );
|
|
}
|
|
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CPanelDisplayRender::OnDisplayAll()
|
|
{
|
|
uint flags = GetIEditor()->GetDisplaySettings()->GetRenderFlags();
|
|
flags |= 0xFFFFFFFF & ~(LEAVE_FLAGS);
|
|
GetIEditor()->GetDisplaySettings()->SetRenderFlags( flags );
|
|
SetControls();
|
|
}
|
|
|
|
void CPanelDisplayRender::OnDisplayNone()
|
|
{
|
|
uint flags = GetIEditor()->GetDisplaySettings()->GetRenderFlags();
|
|
flags &= (LEAVE_FLAGS);
|
|
GetIEditor()->GetDisplaySettings()->SetRenderFlags( flags );
|
|
SetControls();
|
|
}
|
|
|
|
void CPanelDisplayRender::OnDisplayInvert()
|
|
{
|
|
uint flags0 = GetIEditor()->GetDisplaySettings()->GetRenderFlags();
|
|
uint flags = ~flags0;
|
|
flags &= ~(LEAVE_FLAGS);
|
|
flags |= flags0 & (LEAVE_FLAGS);
|
|
GetIEditor()->GetDisplaySettings()->SetRenderFlags( flags );
|
|
SetControls();
|
|
}
|
|
|
|
void CPanelDisplayRender::OnFillMode()
|
|
{
|
|
GetIEditor()->GetDisplaySettings()->SetDisplayMode( DISPLAYMODE_SOLID );
|
|
}
|
|
|
|
void CPanelDisplayRender::OnWireframeMode()
|
|
{
|
|
GetIEditor()->GetDisplaySettings()->SetDisplayMode( DISPLAYMODE_WIREFRAME );
|
|
}
|
|
|
|
//////////////////////////////////////////////////////////////////////////
|
|
void CPanelDisplayRender::OnBnClickedHideHelpers()
|
|
{
|
|
if (IsDlgButtonChecked( IDC_HIDE_HELPERS ))
|
|
GetIEditor()->GetDisplaySettings()->DisplayHelpers( false );
|
|
else
|
|
GetIEditor()->GetDisplaySettings()->DisplayHelpers( true );
|
|
}
|