This Trac instance is not used for development anymore!

We migrated our development workflow to git and Gitea.
To test the future redirection, replace trac by ariadne in the page URL.

Changeset 309 for ps


Ignore:
Timestamp:
05/29/04 23:04:18 (21 years ago)
Author:
notpete
Message:

Added singleton creation/destruction for a bunch of graphics related classes; a half dozen minor changes related to model submission, command lines.

File:
1 edited

Legend:

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

    r284 r309  
    1818#include "sysdep/ia32.h"
    1919#endif
    20 #include "ps/Config.h"
     20#include "Config.h"
    2121#include "MapReader.h"
    2222#include "Terrain.h"
     23#include "TextureManager.h"
     24#include "ObjectManager.h"
     25#include "SkeletonAnimManager.h"
    2326#include "Renderer.h"
    2427#include "Model.h"
     
    4851// using VBOs on laptop Radeon cards
    4952static bool g_NoGLVBO=false;
    50 
     53// flag to switch on shadows
     54static bool g_Shadows=false;
     55// flag to switch off pbuffers
     56static bool g_NoPBuffer=false;
    5157static bool g_VSync = false;
    5258
     
    223229
    224230//////////////////////////////////////////////////////////////////////////////////////////////////
     231// SubmitModelRecursive: recurse down given model, submitting it and all it's descendents to the
     232// renderer
     233void SubmitModelRecursive(CModel* model)
     234{
     235    g_Renderer.Submit(model);
     236
     237    const std::vector<CModel::Prop>& props=model->GetProps();
     238    for (uint i=0;i<props.size();i++) {
     239        SubmitModelRecursive(props[i].m_Model);
     240    }
     241}
     242
     243//////////////////////////////////////////////////////////////////////////////////////////////////
    225244// RenderModels: iterate through model list and submit all models in viewing frustum to the
    226245// Renderer
     
    230249
    231250    const std::vector<CUnit*>& units=g_UnitMan.GetUnits();
    232     uint i;
    233     for (i=0;i<units.size();++i) {
    234         if (frustum.IsBoxVisible(CVector3D(0,0,0),units[i]->m_Model->GetBounds())) {
    235             g_Renderer.Submit(units[i]->m_Model);
     251    for (uint i=0;i<units.size();++i) {
     252        if (frustum.IsBoxVisible(CVector3D(0,0,0),units[i]->GetModel()->GetBounds())) {
     253            SubmitModelRecursive(units[i]->GetModel());
    236254        }
    237255    }
     
    249267    const std::vector<CUnit*>& units=g_UnitMan.GetUnits();
    250268    for (i=0;i<units.size();++i) {
    251         g_Renderer.Submit(units[i]->m_Model);
     269        SubmitModelRecursive(units[i]->GetModel());
    252270    }
    253271   
     
    354372    const std::vector<CUnit*>& units=g_UnitMan.GetUnits();
    355373    for (uint i=0;i<units.size();++i) {
    356         units[i]->m_Model->Update(time);
     374        units[i]->GetModel()->Update(time);
    357375    }
    358376
     
    388406                        g_NoGLVBO=true;
    389407                    }
     408                    else if (strncmp(argv[i]+1,"nopbuffer",9)==0) {
     409                        g_NoPBuffer=true;
     410                    }
     411                    break;
     412
     413                case 's':
     414                    if (strncmp(argv[i]+1,"shadows",7)==0) {
     415                        g_Shadows=true;
     416                    }
    390417                    break;
    391418            }
     
    505532    font = font_load("fonts/verdana.fnt");
    506533
     534    // create renderer
     535    new CRenderer;
     536
    507537    // set renderer options from command line options - NOVBO must be set before opening the renderer
    508     g_Renderer.SetOption(CRenderer::OPT_NOVBO,g_NoGLVBO);
     538    g_Renderer.SetOptionBool(CRenderer::OPT_NOVBO,g_NoGLVBO);
     539    g_Renderer.SetOptionBool(CRenderer::OPT_SHADOWS,g_Shadows);
     540    g_Renderer.SetOptionBool(CRenderer::OPT_NOPBUFFER,g_NoPBuffer);
     541
     542    // create terrain related stuff
     543    new CTextureManager;
     544
     545    // create actor related stuff
     546    new CSkeletonAnimManager;
     547    new CObjectManager;
     548    new CUnitManager;
    509549
    510550    // terr_init actually opens the renderer and loads a bunch of resources as well as setting up
     
    620660    delete &g_EntityTemplateCollection;
    621661
     662    // destroy actor related stuff
     663    delete CUnitManager::GetSingletonPtr();
     664    delete CObjectManager::GetSingletonPtr();
     665    delete CSkeletonAnimManager::GetSingletonPtr();
     666
     667    // destroy terrain related stuff
     668    delete CTextureManager::GetSingletonPtr();
     669
     670    // destroy renderer
     671    delete CRenderer::GetSingletonPtr();
     672
    622673    return 0;
    623674}
Note: See TracChangeset for help on using the changeset viewer.