Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

Changeset 2790


Ignore:
Timestamp:
Mar 16, 2009, 11:47:06 AM (15 years ago)
Author:
bknecht
Message:

Ugly hack to use GUI ingame. Hack itself needs improvement AND of course it should be hackfree!

Location:
code/trunk/src
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • code/trunk/src/ogreceguirenderer/OgreCEGUIRenderer.cpp

    r2757 r2790  
    33        created:        11/5/2004
    44        author:         Paul D Turner
    5        
     5
    66        purpose:        Implementation of Renderer class for Ogre engine
    77*************************************************************************/
     
    5454        Utility function to create a render operation and vertex buffer to render quads
    5555*************************************************************************/
    56 static void createQuadRenderOp(Ogre::RenderOperation &d_render_op, 
     56static void createQuadRenderOp(Ogre::RenderOperation &d_render_op,
    5757    Ogre::HardwareVertexBufferSharedPtr &d_buffer, size_t nquads)
    5858{
     
    7272
    7373        // create hardware vertex buffer
    74         d_buffer = HardwareBufferManager::getSingleton().createVertexBuffer(vd->getVertexSize(0), nquads, 
     74        d_buffer = HardwareBufferManager::getSingleton().createVertexBuffer(vd->getVertexSize(0), nquads,
    7575        HardwareBuffer::HBU_DYNAMIC_WRITE_ONLY_DISCARDABLE, false);
    7676
     
    8383}
    8484
    85 static void destroyQuadRenderOp(Ogre::RenderOperation &d_render_op, 
     85static void destroyQuadRenderOp(Ogre::RenderOperation &d_render_op,
    8686    Ogre::HardwareVertexBufferSharedPtr &d_buffer)
    8787{
     
    146146                d_sorted = false;
    147147                QuadInfo quad;
    148                
     148
    149149                // set quad position, flipping y co-ordinates, and applying appropriate texel origin offset
    150150                quad.position.d_left    = dest_rect.d_left;
     
    170170                quad.bottomLeftCol      = colourToOgre(colours.d_top_left);
    171171                quad.bottomRightCol     = colourToOgre(colours.d_top_right);
    172                
     172
    173173                // set quad split mode
    174174                quad.splitMode = quad_split_mode;
     
    229229                buffmem->tv1 = quad.texPosition.d_bottom;
    230230                ++buffmem;
    231    
     231
    232232                // setup Vertex 2...
    233                
     233
    234234                // top-left to bottom-right diagonal
    235235                if (quad.splitMode == TopLeftToBottomRight)
     
    253253                }
    254254                ++buffmem;
    255    
     255
    256256                // setup Vertex 3...
    257257                buffmem->x = quad.position.d_left;
     
    262262                buffmem->tv1 = quad.texPosition.d_top;
    263263                ++buffmem;
    264    
     264
    265265                // setup Vertex 4...
    266266                buffmem->x = quad.position.d_right;
     
    271271                buffmem->tv1 = quad.texPosition.d_bottom;
    272272                ++buffmem;
    273    
     273
    274274                // setup Vertex 5...
    275275                buffmem->x = quad.position.d_right;
     
    280280                buffmem->tv1 = quad.texPosition.d_top;
    281281                ++buffmem;
    282    
     282
    283283                // setup Vertex 6...
    284                
     284
    285285                // top-left to bottom-right diagonal
    286286                if (quad.splitMode == TopLeftToBottomRight)
     
    305305                ++buffmem;
    306306            }
    307    
     307
    308308            // ensure we leave the buffer in the unlocked state
    309309            d_buffer->unlock();
    310310        }
    311        
     311
    312312        /// Render the buffer
    313313        d_bufferPos = 0;
     
    318318        while(i != d_quadlist.end())
    319319        {
    320            
     320
    321321            d_currTexture = i->texture;
    322322            d_render_op.vertexData->vertexStart = d_bufferPos;
     
    426426
    427427/*************************************************************************
    428         setup states etc       
     428        setup states etc
    429429*************************************************************************/
    430430void OgreCEGUIRenderer::initRenderStates(void)
     
    469469
    470470
    471  
    472 /*************************************************************************
    473         sort quads list according to texture   
     471
     472/*************************************************************************
     473        sort quads list according to texture
    474474*************************************************************************/
    475475void OgreCEGUIRenderer::sortQuads(void)
     
    525525
    526526                // setup Vertex 2...
    527                
     527
    528528                // top-left to bottom-right diagonal
    529529                if (quad_split_mode == TopLeftToBottomRight)
     
    577577
    578578                // setup Vertex 6...
    579                
     579
    580580                // top-left to bottom-right diagonal
    581581                if (quad_split_mode == TopLeftToBottomRight)
     
    614614/*************************************************************************
    615615        convert ARGB colour value to whatever the Ogre render system is
    616         expecting.     
     616        expecting.
    617617*************************************************************************/
    618618uint32 OgreCEGUIRenderer::colourToOgre(const colour& col) const
     
    628628
    629629/*************************************************************************
    630         Set the scene manager to be used for rendering the GUI. 
     630        Set the scene manager to be used for rendering the GUI.
    631631*************************************************************************/
    632632void OgreCEGUIRenderer::setTargetSceneManager(Ogre::SceneManager* scene_manager)
     
    650650
    651651/*************************************************************************
    652         Set the target render queue for GUI rendering. 
     652        Set the target render queue for GUI rendering.
    653653*************************************************************************/
    654654void OgreCEGUIRenderer::setTargetRenderQueue(Ogre::uint8 queue_id, bool post_queue)
     
    724724
    725725/*************************************************************************
    726         Create a texture from an existing Ogre::TexturePtr object       
     726        Create a texture from an existing Ogre::TexturePtr object
    727727*************************************************************************/
    728728Texture* OgreCEGUIRenderer::createTexture(Ogre::TexturePtr& texture)
     
    749749
    750750/*************************************************************************
    751 Set the size of the display in pixels. 
     751Set the size of the display in pixels.
    752752*************************************************************************/
    753753void OgreCEGUIRenderer::setDisplaySize(const Size& sz)
     
    767767        is rendered
    768768*************************************************************************/
    769 void CEGUIRQListener::renderQueueStarted(Ogre::uint8 id, const Ogre::String& invocation, 
     769void CEGUIRQListener::renderQueueStarted(Ogre::uint8 id, const Ogre::String& invocation,
    770770                                                                                 bool& skipThisQueue)
    771771{
  • code/trunk/src/orxonox/gamestates/GSGUI.cc

    r2087 r2790  
    5151
    5252        // show main menu
     53        guiManager_->loadScene("MainMenu");
    5354        guiManager_->showGUI("MainMenu", 0);
    5455        getParent()->getViewport()->setCamera(guiManager_->getCamera());
  • code/trunk/src/orxonox/gamestates/GSLevel.h

    r2710 r2790  
    4343        ~GSLevel();
    4444
     45        // was private before (is public now because of console command in GSStandalone)
     46        void setConfigValues();
     47
    4548    protected:
    4649        void enter(Ogre::Viewport* viewport);
     
    7174        ConsoleCommand*       ccTkeybind_;
    7275
    73     private:
    74         void setConfigValues();
    75 
    7676    };
    7777}
  • code/trunk/src/orxonox/gamestates/GSStandalone.cc

    r2087 r2790  
    3030#include "GSStandalone.h"
    3131
     32#include <OgreViewport.h>
     33#include <OgreCamera.h>
    3234#include "core/Core.h"
     35#include "core/ConsoleCommand.h"
     36#include "gui/GUIManager.h"
    3337
    3438namespace orxonox
    3539{
     40    SetConsoleCommand(GSStandalone, showGUI, true).setAsInputCommand();
     41
     42    bool GSStandalone::guiShowing_s = false;
     43
    3644    GSStandalone::GSStandalone()
    3745        : GameState<GSGraphics>("standalone")
     
    4351    }
    4452
     53    void GSStandalone::showGUI()
     54    {
     55        GSStandalone::guiShowing_s = true;
     56    }
     57
    4558    void GSStandalone::enter()
    4659    {
     
    4861
    4962        GSLevel::enter(this->getParent()->getViewport());
     63
     64        guiManager_ = getParent()->getGUIManager();
     65        // not sure if necessary
     66        // guiManager_->loadScene("IngameMenu");
    5067    }
    5168
     
    5976    void GSStandalone::ticked(const Clock& time)
    6077    {
     78        if (guiShowing_s)
     79        {
     80            guiManager_->showGUI("IngameMenu", this->getParent()->getViewport()->getCamera()->getSceneManager());
     81        }
     82        else
     83        {
     84            if (guiManager_)
     85                guiManager_->hideGUI();
     86        }
     87        // tick CEGUI
     88        guiManager_->tick(time.getDeltaTime());
     89
    6190        GSLevel::ticked(time);
    6291        this->tickChild(time);
  • code/trunk/src/orxonox/gamestates/GSStandalone.h

    r2087 r2790  
    4141        GSStandalone();
    4242        ~GSStandalone();
     43        static void showGUI();
    4344
    4445    private:
     
    4647        void leave();
    4748        void ticked(const Clock& time);
     49
     50        GUIManager*     guiManager_;
     51        static bool     guiShowing_s;
    4852    };
    4953}
  • code/trunk/src/orxonox/gui/GUIManager.cc

    r2759 r2790  
    172172
    173173                // load the background scene
    174                 loadScenes();
     174                //loadScenes();
    175175                //CEGUI::KeyEventArgs e;
    176176                //e.codepoint
     
    190190
    191191        return true;
     192    }
     193
     194    void GUIManager::loadScene(const std::string& name)
     195    {
     196        if (name.compare("IngameMenu") == 0)
     197        {
     198            try
     199            {
     200                /*this->scriptModule_ = new LuaScriptModule();
     201                this->luaState_ = this->scriptModule_->getLuaState();
     202                this->guiSystem_ = new System(this->guiRenderer_, this->resourceProvider_, 0, this->scriptModule_);
     203                tolua_Core_open(this->scriptModule_->getLuaState());
     204                tolua_Orxonox_open(this->scriptModule_->getLuaState());
     205                */
     206                this->scriptModule_->executeScriptFile("ingameGUI.lua", "GUI");
     207            }
     208            catch (CEGUI::Exception& ex)
     209            {
     210#if CEGUI_VERSION_MINOR < 6
     211                throw GeneralException(ex.getMessage().c_str());
     212#else
     213                throw GeneralException(ex.getMessage().c_str(), ex.getLine(),
     214                                       ex.getFileName().c_str(), ex.getName().c_str());
     215#endif
     216            }
     217        }
     218        else
     219        {
     220            loadScenes();
     221        }
    192222    }
    193223
     
    241271            try
    242272            {
     273                COUT (0) << "************* sceneManager: " << sceneManager << std::endl;
    243274                if (!sceneManager)
    244275                {
     
    287318            return;
    288319        //this->viewport_->setCamera(0);
    289         this->guiRenderer_->setTargetSceneManager(0);
     320        // has no effect since you cannot assign 0 as SceneManager
     321        //this->guiRenderer_->setTargetSceneManager(0);
    290322        this->state_ = Ready;
    291323        InputManager::getInstance().requestLeaveState("gui");
  • code/trunk/src/orxonox/gui/GUIManager.h

    r2710 r2790  
    7070
    7171        bool initialise(Ogre::RenderWindow* renderWindow);
     72        void loadScene(const std::string& name);
    7273        void tick(float dt)
    7374        {
Note: See TracChangeset for help on using the changeset viewer.