Changeset 75


Ignore:
Timestamp:
05/03/05 02:44:23 (20 years ago)
Author:
mattausch
Message:
 
Location:
trunk/VUT
Files:
2 added
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/VUT/work/TestCullingTerrain/TerrainContentGenerator.cpp

    r74 r75  
    66*/ 
    77#include "TerrainContentGenerator.h" 
    8  
     8#include <windows.h> 
    99/********************************************/ 
    1010/*  TerrainContentGenerator implementation  */ 
    1111/********************************************/ 
    1212//----------------------------------------------------------------------- 
    13 TerrainContentGenerator::TerrainContentGenerator( SceneManager *sm, RayQueryExecutor *rayQueryEx ) 
     13TerrainContentGenerator::TerrainContentGenerator(SceneManager *sm) 
    1414{ 
    1515        mSceneMgr = sm; 
    16         mRayQueryExecutor = rayQueryEx; 
     16        mRayQueryExecutor = new RayQueryExecutor(sm); 
    1717 
    18         mMinPos = Vector3(-200.0f, -70.0f, 200.0f); 
    19         mMaxPos = Vector3(200.0f, 70.0f, 200.0f); 
     18        mMinPos = Vector3(-500.0f, 5000.0f, -500.0f); 
     19        mMaxPos = Vector3(500.0f, 5000.0f, 500.0f); 
    2020 
    2121        mMinAngle = 0; 
     
    2525} 
    2626//----------------------------------------------------------------------- 
    27 void TerrainContentGenerator::generateScene( int numObjects ) 
     27TerrainContentGenerator::~TerrainContentGenerator() 
    2828{ 
    29         srand (time (0)); 
     29        delete mRayQueryExecutor; 
     30} 
     31//----------------------------------------------------------------------- 
     32void TerrainContentGenerator::generateScene(int numObjects, const String &meshName) 
     33{ 
     34        srand (time(0)); 
    3035         
    3136        Vector3 rotationRatio; 
    3237        Vector3 translationRatio; 
    3338 
    34         for(int i=0; i < numObjects; i++) 
     39        for(int i=0; i < numObjects; ++i) 
    3540        { 
    3641                rotationRatio.x = rand() / (float) RAND_MAX; 
     
    4247                translationRatio.z = rand() / (float) RAND_MAX; 
    4348 
    44                 generateSceneObject(translationRatio, rotationRatio, i, "sphere.mesh"); 
     49                generateSceneObject(translationRatio, rotationRatio, i, meshName); 
    4550        } 
    4651} 
     
    5358        Vector3 position = mMinPos + translationRatio * (mMaxPos - mMinPos); 
    5459 
    55         position.y = 5000; 
    56      
    5760        Vector3 queryResult; 
    5861 
    59         if(mRayQueryExecutor->executeRayQuery(&queryResult, position, Vector3::NEGATIVE_UNIT_Y)) 
     62        char msg[100]; 
     63        sprintf(msg, "pos: %3.3f %3.3f %3.3f\n", position.x, position.y, position.z); 
     64 
     65        if (mRayQueryExecutor->executeRayQuery(&queryResult, position, Vector3::NEGATIVE_UNIT_Y)) 
    6066        { 
    6167                char name[16]; 
    62                 sprintf( name, "%s%d", entName.c_str(), mCount++); 
    63  
     68                sprintf(name, "%s%d", entName.c_str(), mCount++); 
     69                OutputDebugString("Creating new object "); OutputDebugString(msg); 
    6470                Entity *ent = mSceneMgr->createEntity(name, entName); 
    6571                SceneNode *currentObject = mSceneMgr->getRootSceneNode()-> 
     
    6773                currentObject->attachObject(ent); 
    6874                currentObject->setScale(0.1f, 0.1f, 0.1f); 
     75                currentObject->setPosition(position); 
     76        } 
     77        else 
     78        { 
     79                OutputDebugString(msg); 
    6980        } 
    7081} 
  • trunk/VUT/work/TestCullingTerrain/TerrainContentGenerator.h

    r74 r75  
    2424{ 
    2525public: 
    26         TerrainContentGenerator(SceneManager *sm, RayQueryExecutor *rayQueryEx); 
     26        TerrainContentGenerator(SceneManager *sm); 
     27        ~TerrainContentGenerator(); 
    2728        /** Generates a the scene hierarchy with random values . 
    2829                @param number of objects to generate 
     30                @param the name of the mesh to be generated 
    2931        */ 
    30         void generateScene(int numObjects); 
     32        void generateScene(int numObjects, const String &meshName); 
    3133        /** Generates a new scene object  
    3234                @param tranlationRatio ratio between minimal and maximal possible translation 
  • trunk/VUT/work/TestCullingTerrain/TestCullingTerrainApplication.cpp

    r74 r75  
    2525TestCullingTerrainApplication::~TestCullingTerrainApplication() 
    2626{ 
    27         delete mRayQueryExecutor; 
    2827        delete mTerrainContentGenerator; 
    2928} 
    30  
    3129//----------------------------------------------------------------------- 
    3230void TestCullingTerrainApplication::createCamera( void ) 
     
    4442} 
    4543//----------------------------------------------------------------------- 
    46 void TestCullingTerrainApplication::createScene( void ) 
    47 { 
    48         mRayQueryExecutor = new RayQueryExecutor(mSceneMgr); 
    49         mTerrainContentGenerator = new TerrainContentGenerator(mSceneMgr, mRayQueryExecutor); 
    50  
     44void TestCullingTerrainApplication::createScene() 
     45{ 
    5146        // Set ambient light 
    5247        mSceneMgr->setAmbientLight(ColourValue(0.5, 0.5, 0.5)); 
     
    9388        mCamera->setPosition(707,2500,528); 
    9489        mCamera->setOrientation(Quaternion(-0.3486, 0.0122, 0.9365, 0.0329)); 
    95  
     90         
    9691        // CEGUI setup 
    9792        setupGui(); 
    9893 
    99         mTerrainContentGenerator->generateScene(100); 
     94        mTerrainContentGenerator = new TerrainContentGenerator(mSceneMgr); 
     95        mTerrainContentGenerator->generateScene(300, "robot.mesh"); 
    10096} 
    10197//----------------------------------------------------------------------- 
    10298void TestCullingTerrainApplication::setupGui( void ) 
    10399{ 
    104          mGUIRenderer = new CEGUI::OgreCEGUIRenderer(mWindow, Ogre::RENDER_QUEUE_OVERLAY, false, 3000, ST_EXTERIOR_CLOSE); 
     100         mGUIRenderer = new CEGUI::OgreCEGUIRenderer(mWindow, Ogre::RENDER_QUEUE_OVERLAY,  
     101                 false, 3000, ST_EXTERIOR_CLOSE); 
    105102     mGUISystem = new CEGUI::System(mGUIRenderer); 
    106103 
     
    111108                (CEGUI::utf8*)"TaharezLook", (CEGUI::utf8*)"MouseArrow"); 
    112109 
    113          CEGUI::MouseCursor::getSingleton().show( ); 
     110         CEGUI::MouseCursor::getSingleton().show(); 
    114111} 
    115112//----------------------------------------------------------------------- 
    116113void TestCullingTerrainApplication::createFrameListener(void) 
    117114{ 
    118         mFrameListener= new MouseQueryListener(mWindow, mCamera, mSceneMgr, mGUIRenderer, mRayQueryExecutor); 
     115        mFrameListener= new MouseQueryListener(mWindow, mCamera, mSceneMgr, mGUIRenderer); 
    119116        mFrameListener->showDebugOverlay(true); 
    120117        mRoot->addFrameListener(mFrameListener); 
     
    130127/***********************************************/ 
    131128//----------------------------------------------------------------------- 
    132 MouseQueryListener::MouseQueryListener(RenderWindow* win, Camera* cam, SceneManager *sceneManager, CEGUI::Renderer *renderer, RayQueryExecutor *rqe) 
    133         : ExampleFrameListener(win, cam, false, true), mGUIRenderer(renderer), mShutdownRequested(false), mRayQueryExecutor(rqe) 
    134 { 
    135  
     129MouseQueryListener::MouseQueryListener(RenderWindow* win, Camera* cam,  
     130                                                                           SceneManager *sceneManager,  
     131                                                                           CEGUI::Renderer *renderer):  
     132ExampleFrameListener(win, cam, false, true), mGUIRenderer(renderer),  
     133mShutdownRequested(false) 
     134{ 
    136135        // Setup default variables 
    137136        mCurrentObject = NULL; 
     
    153152 
    154153        mRayQueryExecutor = new RayQueryExecutor(mSceneMgr); 
    155  
     154         
    156155        // show overlay 
    157156        Overlay* pOver = OverlayManager::getSingleton().getByName("Example/VisibilityDemoOverlay");  
     
    184183{ 
    185184        // Update CEGUI with the mouse motion 
    186     CEGUI::System::getSingleton().injectMouseMove(e->getRelX() * mGUIRenderer->getWidth(), e->getRelY() * mGUIRenderer->getHeight()); 
     185    CEGUI::System::getSingleton().injectMouseMove(e->getRelX() * mGUIRenderer->getWidth(),  
     186                e->getRelY() * mGUIRenderer->getHeight()); 
    187187} 
    188188//----------------------------------------------------------------------- 
     
    202202         { 
    203203                         char name[16]; 
    204              sprintf( name, "Robot%d", mCount++ ); 
     204             sprintf(name, "Robot%d", mCount++); 
    205205 
    206206             Entity *ent = mSceneMgr->createEntity(name, "robot.mesh"); 
    207207             mCurrentObject = mSceneMgr->getRootSceneNode()-> 
    208                                  createChildSceneNode( String(name) + "Node", queryResult); 
    209              mCurrentObject->attachObject( ent ); 
    210              mCurrentObject->setScale( 0.1f, 0.1f, 0.1f ); 
     208                                 createChildSceneNode(String(name) + "Node", queryResult); 
     209             mCurrentObject->attachObject(ent); 
     210             mCurrentObject->setScale(0.1f, 0.1f, 0.1f); 
     211                          
    211212         } 
    212213 
     
    216217     else if (e->getButtonID() & InputEvent::BUTTON1_MASK) 
    217218     { 
    218          CEGUI::MouseCursor::getSingleton().hide( ); 
     219         CEGUI::MouseCursor::getSingleton().hide(); 
    219220         mRMouseDown = true; 
    220221     } // else if 
     
    227228    if (e->getButtonID() & InputEvent::BUTTON0_MASK) 
    228229    { 
    229                 CEGUI::MouseCursor::getSingleton().show( ); 
     230                CEGUI::MouseCursor::getSingleton().show(); 
    230231        mLMouseDown = false; 
    231232    } 
     
    233234    else if (e->getButtonID() & InputEvent::BUTTON1_MASK) 
    234235    { 
    235         CEGUI::MouseCursor::getSingleton().show( ); 
     236        CEGUI::MouseCursor::getSingleton().show(); 
    236237        mRMouseDown = false; 
    237238    } 
    238239}  
    239240//----------------------------------------------------------------------- 
    240 void MouseQueryListener::mouseDragged (MouseEvent *e) 
     241void MouseQueryListener::mouseDragged(MouseEvent *e) 
    241242 { 
    242243         // If we are dragging the left mouse button.             
    243          if ( mLMouseDown ) 
     244         if (mLMouseDown) 
    244245     { 
    245246                 Vector3 queryResult; 
     
    252253     } 
    253254         // If we are dragging the right mouse button. 
    254          if ( mRMouseDown ) 
     255         if (mRMouseDown) 
    255256         { 
    256257                 mCamera->yaw( -e->getRelX() * mRotateSpeed ); 
     
    271272                        mCamera->getPosition().z); 
    272273        } 
    273           
     274         
    274275        return ExampleFrameListener::frameStarted(evt); 
    275276} 
     
    371372        catch( Ogre::Exception& e )  
    372373        { 
    373         MessageBox( NULL, e.getFullDescription().c_str(), "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL); 
     374        MessageBox( NULL, e.getFullDescription().c_str(),  
     375                        "An exception has occured!", MB_OK | MB_ICONERROR | MB_TASKMODAL); 
    374376    }    
    375377 
  • trunk/VUT/work/TestCullingTerrain/TestCullingTerrainApplication.h

    r74 r75  
    3030 
    3131    MouseQueryListener(RenderWindow* win, Camera* cam, SceneManager *sceneManager,  
    32                 CEGUI::Renderer *renderer, RayQueryExecutor *rqe); 
     32                CEGUI::Renderer *renderer); 
    3333 
    3434 
     
    103103        CEGUI::OgreCEGUIRenderer *mGUIRenderer; 
    104104        CEGUI::System *mGUISystem; 
    105         RayQueryExecutor *mRayQueryExecutor; 
    106         TerrainContentGenerator *mTerrainContentGenerator; 
     105//      RayQueryExecutor *mRayQueryExecutor; 
    107106 
    108107        Vector3 mMinTranslation; 
     
    112111        Vector3 mMaxAngle; 
    113112 
     113        TerrainContentGenerator *mTerrainContentGenerator; 
     114 
    114115private: 
    115116        void chooseSceneManager(void); 
Note: See TracChangeset for help on using the changeset viewer.