source: GTP/trunk/App/Demos/Vis/KdTreeDemo/OGRE/include/TestKdTreeAppListener.h @ 1187

Revision 1187, 4.2 KB checked in by szydlowski, 18 years ago (diff)

visualization in test app working, some issues to resolve

Line 
1/*
2-----------------------------------------------------------------------------
3This source file is part of OGRE
4    (Object-oriented Graphics Rendering Engine)
5For the latest info, see http://www.ogre3d.org/
6
7Copyright (c) 2000-2005 The OGRE Team
8Also see acknowledgements in Readme.html
9
10You may use this sample code for anything you like, it is not covered by the
11LGPL like the rest of the engine.
12-----------------------------------------------------------------------------
13*/
14/*
15-----------------------------------------------------------------------------
16Filename:    ExampleFrameListener.h
17Description: Defines an example frame listener which responds to frame events.
18This frame listener just moves a specified camera around based on
19keyboard and mouse movements.
20Mouse:    Freelook
21W or Up:  Forward
22S or Down:Backward
23A:        Step left
24D:        Step right
25             PgUp:     Move upwards
26             PgDown:   Move downwards
27             F:        Toggle frame rate stats on/off
28                         R:        Render mode
29             T:        Cycle texture filtering
30                       Bilinear, Trilinear, Anisotropic(8)
31             P:        Toggle on/off display of camera position / orientation
32-----------------------------------------------------------------------------
33*/
34
35#ifndef __KdTreeAppListener_H__
36#define __KdTreeAppListener_H__
37
38#include "Ogre.h"
39#include "OgreKeyEvent.h"
40#include "OgreEventListeners.h"
41#include "OgreStringConverter.h"
42#include "OgreException.h"
43
44#define VIZ_VIEWPORT_Z_ORDER 10
45
46using namespace Ogre;
47
48class KdTreeAppListener: public FrameListener, public KeyListener
49{
50protected:
51        int mSceneDetailIndex ;
52    Real mMoveSpeed;
53    Degree mRotateSpeed;
54        Real mRotationPeriod;
55        bool mShowTree;
56        bool mFreeMove;
57
58        Real mDelayedQueriesIssued;
59        Real mDelayedTraversedNodes;
60
61        int mSeqNum;
62
63        Overlay* mDebugOverlay;
64        Overlay* mKdTreeOverlay;
65
66        OverlayElement *mKdTreeMaxDepthInfo;
67        OverlayElement *mKTInfo;
68        OverlayElement *mKIInfo;
69        OverlayElement *mHighlightLevelInfo;
70        OverlayElement *mBuildMethodInfo;
71        OverlayElement *mRenderMethodInfo;
72        OverlayElement *mMovementInfo;
73
74        OverlayElement *mFrustumCulledNodesInfo;
75        OverlayElement *mQueryCulledNodesInfo;
76        OverlayElement *mTraversedNodesInfo;
77        OverlayElement *mHierarchyNodesInfo;
78        OverlayElement *mRenderedNodesInfo;
79        OverlayElement *mObjectsCountInfo;
80        OverlayElement *mQueriesIssuedInfo;
81
82        EventProcessor* mEventProcessor;
83        InputReader* mInputDevice;
84        SceneNode *mCamNode;
85        Camera* mCamera;
86        Camera* mTopCam;
87        SceneManager *mSceneMgr;
88        Radian mDeathAngle;
89
90        Vector3 mTranslateVector;
91        RenderWindow* mWindow;
92        bool mStatsOn;
93        bool mUseBufferedInputKeys, mUseBufferedInputMouse, mInputTypeSwitchingOn;
94        unsigned int mNumScreenShots;
95        float mMoveScale;
96        Degree mRotScale;
97        // just to stop toggles flipping too fast
98        Real mTimeUntilNextToggle ;
99        Radian mRotX, mRotY;
100        TextureFilterOptions mFiltering;
101        int mAniso;
102
103        // stuff for the viz camera
104        bool mVizCamera;
105        Vector3 mVizCamTransVect;
106
107    void updateStats(void);
108
109public:
110
111        // visualization modes for scene nodes
112        enum
113        {
114                NODEVIZ_NONE,
115                NODEVIZ_RENDER_NODES,
116                NODEVIZ_RENDER_NODES_AND_CONTENT,
117                NODEVIZ_MODES_NUM
118        };
119
120    // Constructor takes a RenderWindow because it uses that to determine input context
121    KdTreeAppListener(RenderWindow* win, SceneManager* sm, Real rs, Real ms, Real rp,
122                bool useBufferedInputKeys = false, bool useBufferedInputMouse = false);
123
124    virtual ~KdTreeAppListener();
125
126        void initOverlayElement(OverlayElement **elInfo, String ext,
127                String name, int top, String caption);
128
129        void initStatsOverlay();
130
131        void initKdTreeOverlay();
132
133        void showDebugOverlay(bool show);
134
135        void toggleVizCamera();
136
137    virtual bool processUnbufferedKeyInput(const FrameEvent& evt);
138
139    bool processUnbufferedMouseInput(const FrameEvent& evt);
140
141        void moveCamera();
142
143    // Override frameStarted event to process that (don't care about frameEnded)
144    bool frameStarted(const FrameEvent& evt);
145
146    bool frameEnded(const FrameEvent& evt);
147
148        void switchMouseMode();
149
150        void switchKeyMode();
151
152        void keyClicked(KeyEvent* e);
153
154        void keyPressed(KeyEvent* e) {};
155        void keyReleased(KeyEvent* e) {};
156};
157
158#endif
159
Note: See TracBrowser for help on using the repository browser.