Changeset 12715

Timestamp:
Sep 28, 2012, 8:20:36 PM (12 years ago)
Author:
ben
Message:

Fixes actor viewer bug where view was obstructed by map's water level. Fixes #1562.
Adds water plane option to actor viewer.

Location:
ps/trunk/source
Files:
13 edited

Legend:

Unmodified
Added
Removed
  • ps/trunk/source/ps/GameSetup/GameSetup.cpp

    r12566 r12715  
    212212        g_Game->GetView()->BeginFrame();
    213213
     214
     215
     216
    214217    // start new frame
    215218    g_Renderer.BeginFrame();
  • ps/trunk/source/renderer/DecalRData.cpp

    r12334 r12715  
    3939// efficient rendering.
    4040
    41 CDecalRData::CDecalRData(CModelDecal* decal)
    42     : m_Decal(decal), m_IndexArray(GL_STATIC_DRAW), m_Array(GL_STATIC_DRAW)
     41CDecalRData::CDecalRData(CModelDecal* decal)
     42    : m_Decal(decal), m_IndexArray(GL_STATIC_DRAW), m_Array(GL_STATIC_DRAW)
    4343{
    4444    m_Position.type = GL_FLOAT;
     
    6161}
    6262
    63 void CDecalRData::Update()
    64 {
     63void CDecalRData::Update(CSimulation2* simulation)
     64{
     65    m_Simulation = simulation;
    6566    if (m_UpdateFlags != 0)
    6667    {
     
    202203    // Construct vertex data arrays
    203204
    204     CmpPtr<ICmpWaterManager> cmpWaterManager(*g_Game->GetSimulation2(), SYSTEM_ENTITY);
     205    CmpPtr<ICmpWaterManager> cmpWaterManager(*, SYSTEM_ENTITY);
    205206
    206207    m_Array.SetNumVertices((i1-i0+1)*(j1-j0+1));
  • ps/trunk/source/renderer/DecalRData.h

    r12306 r12715  
    1 /* Copyright (C) 2011 Wildfire Games.
     1/* Copyright (C) 201 Wildfire Games.
    22 * This file is part of 0 A.D.
    33 *
     
    2626
    2727class CModelDecal;
     28
    2829
    2930class CDecalRData : public CRenderData
    3031{
    3132public:
    32     CDecalRData(CModelDecal* decal);
     33    CDecalRData(CModelDecal* decal);
    3334    ~CDecalRData();
    3435
    35     void Update();
     36    void Update();
    3637
    3738    static void RenderDecals(std::vector<CDecalRData*>& decals, const CShaderDefines& context,
     
    5152
    5253    CModelDecal* m_Decal;
     54
     55
    5356};
    5457
  • ps/trunk/source/renderer/PatchRData.cpp

    r12334 r12715  
    6060///////////////////////////////////////////////////////////////////
    6161// CPatchRData constructor
    62 CPatchRData::CPatchRData(CPatch* patch) :
     62CPatchRData::CPatchRData(CPatch* patch) :
    6363    m_Patch(patch), m_VBSides(0),
    6464    m_VBBase(0), m_VBBaseIndices(0),
    6565    m_VBBlends(0), m_VBBlendIndices(0),
    66     m_VBWater(0), m_VBWaterIndices(0)
     66    m_VBWater(0), m_VBWaterIndices(0),
     67    m_Simulation(simulation)
    6768{
    6869    ENSURE(patch);
     
    573574    ssize_t vsize = PATCH_SIZE + 1;
    574575    CTerrain* terrain = m_Patch->m_Parent;
    575     CmpPtr<ICmpWaterManager> cmpWaterManager(*g_Game->GetSimulation2(), SYSTEM_ENTITY);
     576    CmpPtr<ICmpWaterManager> cmpWaterManager(*, SYSTEM_ENTITY);
    576577
    577578    for (ssize_t k = 0; k < vsize; k++)
     
    659660}
    660661
    661 void CPatchRData::Update()
    662 {
     662void CPatchRData::Update(CSimulation2* simulation)
     663{
     664    m_Simulation = simulation;
    663665    if (m_UpdateFlags!=0) {
    664666        // TODO,RC 11/04/04 - need to only rebuild necessary bits of renderdata rather
     
    12931295    // We need to use this to access the water manager or we may not have the
    12941296    // actual values but some compiled-in defaults
    1295     CmpPtr<ICmpWaterManager> cmpWaterManager(*g_Game->GetSimulation2(), SYSTEM_ENTITY);
     1297    CmpPtr<ICmpWaterManager> cmpWaterManager(*, SYSTEM_ENTITY);
    12961298    if (!cmpWaterManager)
    12971299        return;
  • ps/trunk/source/renderer/PatchRData.h

    r12306 r12715  
    2828
    2929class CPatch;
     30
    3031class CTerrainTextureEntry;
    3132class CTextRenderer;
     
    3738{
    3839public:
    39     CPatchRData(CPatch* patch);
     40    CPatchRData(CPatch* patch);
    4041    ~CPatchRData();
    4142
    42     void Update();
     43    void Update();
    4344    void RenderOutline();
    4445    void RenderSides(CShaderProgramPtr& shader);
     
    158159    CVertexBuffer::VBChunk* m_VBWaterIndices;
    159160
     161
     162
    160163    // Build water vertices and indices (vertex buffer and data vector)
    161164    void BuildWater();
  • ps/trunk/source/renderer/Renderer.cpp

    r12513 r12715  
    802802
    803803//////////////////////////////////////////////////////////////////////////////////////////
     804
     805
     806
     807
     808
     809
    804810// SetClearColor: set color used to clear screen in BeginFrame()
    805811void CRenderer::SetClearColor(SColor4ub color)
  • ps/trunk/source/renderer/Renderer.h

    r12513 r12715  
    3535
    3636// necessary declarations
     37
     38
     39
     40
     41
    3742class CPatch;
    38 class CMaterial;
    39 class CModel;
    40 class CLightEnv;
    4143class CShaderDefines;
    42 
     44class CShaderManager;
     45class CSimulation2;
     46class CTextureManager;
     47class CTimeManager;
    4348class RenderPathVertexShader;
     49
     50
    4451class WaterManager;
    45 class SkyManager;
    46 class CTextureManager;
    47 class CShaderManager;
    48 class CParticleManager;
    49 class TerrainRenderer;
    50 class CTimeManager;
    51 class CMaterialManager;
    5252
    5353// rendering modes
     
    178178    void EndFrame();
    179179
     180
     181
     182
     183
     184
     185
     186
    180187    // set color used to clear screen in BeginFrame()
    181188    void SetClearColor(SColor4ub color);
  • ps/trunk/source/renderer/TerrainRenderer.cpp

    r12428 r12715  
    8585    /// Fancy water shader
    8686    CShaderProgramPtr fancyWaterShader;
     87
     88
    8789};
    8890
     
    102104}
    103105
     106
     107
     108
     109
    104110
    105111///////////////////////////////////////////////////////////////////
     
    113119    {
    114120        // no renderdata for patch, create it now
    115         data = new CPatchRData(patch);
     121        data = new CPatchRData(patch);
    116122        patch->SetRenderData(data);
    117123    }
    118     data->Update();
     124    data->Update();
    119125
    120126    m->visiblePatches.push_back(data);
     
    131137    {
    132138        // no renderdata for decal, create it now
    133         data = new CDecalRData(decal);
     139        data = new CDecalRData(decal);
    134140        decal->SetRenderData(data);
    135141    }
    136     data->Update();
     142    data->Update();
    137143
    138144    m->visibleDecals.push_back(data);
  • ps/trunk/source/renderer/TerrainRenderer.h

    r12306 r12715  
    2525
    2626class CPatch;
     27
    2728class ShadowMap;
    2829class WaterManager;
     
    4243    TerrainRenderer();
    4344    ~TerrainRenderer();
     45
     46
     47
     48
     49
     50
    4451
    4552    /**
  • ps/trunk/source/tools/atlas/AtlasUI/ScenarioEditor/Sections/Object/Object.cpp

    r12509 r12715  
    4242    ID_ViewerMove,
    4343    ID_ViewerGround,
     44
    4445    ID_ViewerShadows,
    4546    ID_ViewerPolyCount,
     
    8283    bool m_ViewerMove;
    8384    bool m_ViewerGround;
     85
    8486    bool m_ViewerShadows;
    8587    bool m_ViewerPolyCount;
     
    372374    m_ViewerMove = false;
    373375    m_ViewerGround = true;
     376
    374377    m_ViewerShadows = true;
    375378    m_ViewerPolyCount = false;
     
    392395        viewerButtonsLeft->Add(Tooltipped(new wxButton(m_ViewerPanel, ID_ViewerMove,        _("Move")),           _("Toggle movement along ground when playing walk/run animations")), wxSizerFlags().Expand());
    393396        viewerButtonsLeft->Add(Tooltipped(new wxButton(m_ViewerPanel, ID_ViewerGround,      _("Ground")),         _("Toggle the ground plane")), wxSizerFlags().Expand());
     397
    394398        viewerButtonsLeft->Add(Tooltipped(new wxButton(m_ViewerPanel, ID_ViewerShadows,     _("Shadows")),        _("Toggle shadow rendering")), wxSizerFlags().Expand());
    395399        viewerButtonsLeft->Add(Tooltipped(new wxButton(m_ViewerPanel, ID_ViewerPolyCount,   _("Poly count")),     _("Toggle polygon-count statistics - turn off ground and shadows for more useful data")), wxSizerFlags().Expand());
    396         viewerButtonsLeft->Add(Tooltipped(new wxButton(m_ViewerPanel, ID_ViewerBoundingBox, _("Bounding Boxes")), _("Toggle bounding boxes")), wxSizerFlags().Expand());
    397400
    398401        wxSizer* viewerButtonsRight = new wxBoxSizer(wxVERTICAL);
    399402        viewerButtonsRight->SetMinSize(110,-1);
     403
    400404        viewerButtonsRight->Add(Tooltipped(new wxButton(m_ViewerPanel, ID_ViewerAxesMarker,  _("Axes Marker")), _("Toggle the axes marker (R=X, G=Y, B=Z)")), wxSizerFlags().Expand());
    401405        viewerButtonsRight->Add(Tooltipped(new wxButton(m_ViewerPanel, ID_ViewerPropPoints,  _("Prop Points")), _("Toggle prop points (works best in wireframe mode)")), wxSizerFlags().Expand());
     
    488492    POST_MESSAGE(SetViewParamB, (AtlasMessage::eRenderView::ACTOR, L"walk", m_ViewerMove));
    489493    POST_MESSAGE(SetViewParamB, (AtlasMessage::eRenderView::ACTOR, L"ground", m_ViewerGround));
     494
    490495    POST_MESSAGE(SetViewParamB, (AtlasMessage::eRenderView::ACTOR, L"shadows", m_ViewerShadows));
    491496    POST_MESSAGE(SetViewParamB, (AtlasMessage::eRenderView::ACTOR, L"stats", m_ViewerPolyCount));
     
    516521        POST_MESSAGE(SetViewParamB, (AtlasMessage::eRenderView::ACTOR, L"ground", m_ViewerGround));
    517522        break;
     523
     524
     525
     526
    518527    case ID_ViewerShadows:
    519528        m_ViewerShadows = !m_ViewerShadows;
     
    560569    EVT_BUTTON(ID_ViewerMove, ObjectBottomBar::OnViewerSetting)
    561570    EVT_BUTTON(ID_ViewerGround, ObjectBottomBar::OnViewerSetting)
     571
    562572    EVT_BUTTON(ID_ViewerShadows, ObjectBottomBar::OnViewerSetting)
    563573    EVT_BUTTON(ID_ViewerPolyCount, ObjectBottomBar::OnViewerSetting)
  • ps/trunk/source/tools/atlas/GameInterface/ActorViewer.cpp

    r11944 r12715  
    5555#include "simulation2/components/ICmpUnitMotion.h"
    5656#include "simulation2/components/ICmpVisual.h"
     57
    5758#include "simulation2/helpers/Render.h"
    5859
     
    8283    bool WalkEnabled;
    8384    bool GroundEnabled;
     85
    8486    bool ShadowsEnabled;
    8587    bool SelectionBoxEnabled;
     
    248250    m.WalkEnabled = false;
    249251    m.GroundEnabled = true;
     252
    250253    m.ShadowsEnabled = g_Renderer.GetOptionBool(CRenderer::OPT_SHADOWS);
    251254    m.SelectionBoxEnabled = false;
     
    291294        cmpTerrain->ReloadTerrain();
    292295
     296
    293297    CmpPtr<ICmpRangeManager> cmpRangeManager(m.Simulation2, SYSTEM_ENTITY);
    294298    if (cmpRangeManager)
     
    446450void ActorViewer::SetWalkEnabled(bool enabled)    { m.WalkEnabled = enabled; }
    447451void ActorViewer::SetGroundEnabled(bool enabled)  { m.GroundEnabled = enabled; }
     452
     453
     454
     455
     456
     457
     458
     459
     460
    448461void ActorViewer::SetShadowsEnabled(bool enabled) { m.ShadowsEnabled = enabled; }
    449462void ActorViewer::SetBoundingBoxesEnabled(bool enabled) { m.SelectionBoxEnabled = enabled; }
     
    465478    g_Renderer.SetClearColor(m.Background);
    466479
    467     // Disable shadows locally (avoid clobbering global state)
     480    // locally (avoid clobbering global state)
    468481    bool oldShadows = g_Renderer.GetOptionBool(CRenderer::OPT_SHADOWS);
    469482    g_Renderer.SetOptionBool(CRenderer::OPT_SHADOWS, m.ShadowsEnabled);
     
    473486
    474487    bool oldWater = g_Renderer.GetWaterManager()->m_RenderWater;
    475     g_Renderer.GetWaterManager()->m_RenderWater = false;
     488    g_Renderer.GetWaterManager()->m_RenderWater = m.WaterEnabled;
     489
     490    // Set simulation context for rendering purposes
     491    g_Renderer.SetSimulation(&m.Simulation2);
    476492
    477493    g_Renderer.BeginFrame();
  • ps/trunk/source/tools/atlas/GameInterface/ActorViewer.h

    r11944 r12715  
    4141    void SetWalkEnabled(bool enabled);
    4242    void SetGroundEnabled(bool enabled);
     43
    4344    void SetShadowsEnabled(bool enabled);
    4445    void SetStatsEnabled(bool enabled);
  • ps/trunk/source/tools/atlas/GameInterface/View.cpp

    r11944 r12715  
    133133    else if (name == L"ground")
    134134        m_ActorViewer->SetGroundEnabled(value);
     135
     136
    135137    else if (name == L"shadows")
    136138        m_ActorViewer->SetShadowsEnabled(value);
Note: See TracChangeset for help on using the changeset viewer.