Ignore:
Timestamp:
08/15/06 22:47:29 (18 years ago)
Author:
szydlowski
Message:

Demo mode complete, added command line parsing for easy benchmark scripting

File:
1 edited

Legend:

Unmodified
Added
Removed
  • GTP/trunk/App/Demos/Vis/KdTreeDemo/OGRE/include/TestKdTreeAppListener.h

    r1202 r1204  
    6161class KdTreeAppListener: public FrameListener, public KeyListener 
    6262{ 
     63 
     64public: 
     65        // visualization modes for scene nodes 
     66        enum VizMode 
     67        { 
     68                NODEVIZ_NONE,  
     69                NODEVIZ_RENDER_NODES,  
     70                NODEVIZ_RENDER_NODES_AND_CONTENT,  
     71                NODEVIZ_MODES_NUM 
     72        }; 
     73 
     74        enum AppState 
     75        { 
     76                AS_NORMAL, 
     77                AS_RECORD, 
     78                AS_PLAYBACK 
     79        }; 
     80 
     81        struct Options 
     82        { 
     83                Options(): 
     84                mDemoMode(false), 
     85                mRotateSpeed(36.0f), 
     86                mMoveSpeed(100.0f), 
     87                mRotationPeriod(30.0f), 
     88                mMaxDepth(12), 
     89                mKT(2.0f), 
     90                mKI(1.0f), 
     91                mRenderMethod("CHC") 
     92                { 
     93 
     94                } 
     95 
     96                String mDemoInfileName; 
     97                String mDemoOutfileName; 
     98                String mDemoLogfileName; 
     99                bool mDemoMode; 
     100                Degree mRotateSpeed; 
     101                Real mMoveSpeed; 
     102                Real mRotationPeriod; 
     103                int mMaxDepth; 
     104                Real mKT; 
     105                Real mKI; 
     106                String mRenderMethod; 
     107        }; 
     108 
     109    // Constructor takes a RenderWindow because it uses that to determine input context 
     110    KdTreeAppListener(RenderWindow* win, SceneManager* sm, const Options& options,   
     111                bool useBufferedInputKeys = false, bool useBufferedInputMouse = false); 
     112 
     113    virtual ~KdTreeAppListener(); 
     114 
     115        void initOverlayElement(OverlayElement **elInfo, String ext,  
     116                String name, int top, String caption); 
     117 
     118        void initStatsOverlay(); 
     119 
     120        void initKdTreeOverlay(); 
     121 
     122        void showDebugOverlay(bool show); 
     123 
     124        void toggleVizCamera(); 
     125 
     126    virtual bool processUnbufferedKeyInput(const FrameEvent& evt); 
     127 
     128    bool processUnbufferedMouseInput(const FrameEvent& evt); 
     129 
     130        void moveCamera(); 
     131 
     132    // Override frameStarted event to process that (don't care about frameEnded) 
     133    bool frameStarted(const FrameEvent& evt); 
     134 
     135    bool frameEnded(const FrameEvent& evt); 
     136 
     137        void switchMouseMode(); 
     138 
     139        void switchKeyMode(); 
     140 
     141        void keyClicked(KeyEvent* e); 
     142 
     143        void keyPressed(KeyEvent* e) {}; 
     144        void keyReleased(KeyEvent* e) {}; 
     145 
     146 
    63147protected: 
    64         int mSceneDetailIndex ; 
    65     Real mMoveSpeed; 
    66     Degree mRotateSpeed; 
    67         Real mRotationPeriod; 
     148        // basic 
     149        RenderWindow* mWindow; 
     150        SceneManager *mSceneMgr; 
     151        Options mOptions; 
     152        bool mUseBufferedInputKeys, mUseBufferedInputMouse, mInputTypeSwitchingOn; 
     153 
     154        // elements 
     155        SceneNode *mCamNode; 
     156        Camera* mCamera; 
     157        Camera* mTopCam; 
     158 
     159        // toggle 
     160        bool mStatsOn; 
     161 
     162        bool mVizCamera; 
    68163        bool mShowTree; 
    69164        bool mFreeMove; 
    70165        bool mTopCamFollow; 
    71166 
     167        // counters 
     168        int mSeqNum; 
     169        unsigned int mNumScreenShots; 
     170 
     171        // rendering/texture options 
     172        int mSceneDetailIndex; 
     173        TextureFilterOptions mFiltering; 
     174        int mAniso; 
     175 
     176        // chc stats 
    72177        Real mDelayedQueriesIssued; 
    73178        Real mDelayedTraversedNodes; 
    74179 
    75         int mSeqNum; 
    76  
    77         Overlay* mDebugOverlay; 
    78         Overlay* mKdTreeOverlay; 
     180        // overlays 
     181        Overlay *mDemoOverlay; 
     182        Overlay *mDebugOverlay; 
     183        Overlay *mKdTreeOverlay; 
     184 
     185        OverlayElement *mDemoStatus; 
    79186 
    80187        OverlayElement *mKdTreeMaxDepthInfo; 
     
    95202        OverlayElement *mQueriesIssuedInfo; 
    96203 
     204        // input 
    97205        EventProcessor* mEventProcessor; 
    98206        InputReader* mInputDevice; 
    99         SceneNode *mCamNode; 
    100         Camera* mCamera; 
    101         Camera* mTopCam; 
    102         SceneManager *mSceneMgr; 
    103         Radian mDeathAngle; 
    104  
     207 
     208        // movement 
    105209        Vector3 mTranslateVector; 
    106         RenderWindow* mWindow; 
    107         bool mStatsOn; 
    108         bool mUseBufferedInputKeys, mUseBufferedInputMouse, mInputTypeSwitchingOn; 
    109         unsigned int mNumScreenShots; 
     210        Vector3 mVizCamTransVect; 
     211        Radian mRotX, mRotY; 
    110212        float mMoveScale; 
    111213        Degree mRotScale; 
     214        Radian mDeathAngle; 
     215 
    112216        // just to stop toggles flipping too fast 
    113217        Real mTimeUntilNextToggle ; 
    114         Radian mRotX, mRotY; 
    115         TextureFilterOptions mFiltering; 
    116         int mAniso; 
    117  
    118         // stuff for the viz camera 
    119         bool mVizCamera; 
    120         Vector3 mVizCamTransVect; 
    121  
    122     void updateStats(void); 
    123218 
    124219        // stuff for walkthrough recording/playback 
    125         String mDemoInfileName; 
    126         String mDemoOutfileName; 
    127  
    128         enum AppState 
    129         { 
    130                 AS_NORMAL, 
    131                 AS_RECORD, 
    132                 AS_PLAYBACK 
    133         }; 
    134  
     220        //std::ofstream mDemoFramesLog; 
     221        std::list<Real> mDemoFPS; 
     222        Real mTimeUntilNextLogWrite; 
    135223        FrameList mFrameList; 
    136224        FrameList::iterator mCurrFrame; 
    137225        Real mTimeRemaining; 
     226        Real mWaitBeforeDemoStart; 
    138227 
    139228        AppState mAppState; 
    140  
    141         Overlay * mDemoOverlay; 
    142         OverlayElement * mDemoStatus; 
    143229 
    144230        void setDemoOverlay(); 
     
    148234 
    149235        void saveFrameInfo(Real elapsedTime); 
    150          
     236 
    151237        /** save demo frame data to file **/ 
    152238        static void saveFrames(const String& filename, FrameList& framelist); 
     
    159245        static void loadFramesBinary(const String& filename, FrameList& framelist); 
    160246 
    161 public: 
    162         // visualization modes for scene nodes 
    163         enum  
    164         { 
    165                 NODEVIZ_NONE,  
    166                 NODEVIZ_RENDER_NODES,  
    167                 NODEVIZ_RENDER_NODES_AND_CONTENT,  
    168                 NODEVIZ_MODES_NUM 
    169         }; 
    170  
    171     // Constructor takes a RenderWindow because it uses that to determine input context 
    172     KdTreeAppListener(RenderWindow* win, SceneManager* sm, Real rs, Real ms, Real rp,  
    173                 const String& infile, const String& outfile,  
    174                 bool useBufferedInputKeys = false, bool useBufferedInputMouse = false); 
    175  
    176     virtual ~KdTreeAppListener(); 
    177  
    178         void initOverlayElement(OverlayElement **elInfo, String ext,  
    179                 String name, int top, String caption); 
    180  
    181         void initStatsOverlay(); 
    182  
    183         void initKdTreeOverlay(); 
    184  
    185         void showDebugOverlay(bool show); 
    186  
    187         void toggleVizCamera(); 
    188  
    189     virtual bool processUnbufferedKeyInput(const FrameEvent& evt); 
    190  
    191     bool processUnbufferedMouseInput(const FrameEvent& evt); 
    192  
    193         void moveCamera(); 
    194  
    195     // Override frameStarted event to process that (don't care about frameEnded) 
    196     bool frameStarted(const FrameEvent& evt); 
    197  
    198     bool frameEnded(const FrameEvent& evt); 
    199  
    200         void switchMouseMode(); 
    201  
    202         void switchKeyMode(); 
    203  
    204         void keyClicked(KeyEvent* e); 
    205  
    206         void keyPressed(KeyEvent* e) {}; 
    207         void keyReleased(KeyEvent* e) {}; 
     247        void updateStats(void); 
    208248}; 
    209249 
Note: See TracChangeset for help on using the changeset viewer.