File: cellborder.hpp

package info (click to toggle)
openmw 0.49.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 33,992 kB
  • sloc: cpp: 372,479; xml: 2,149; sh: 1,403; python: 797; makefile: 26
file content (51 lines) | stat: -rw-r--r-- 1,225 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
#ifndef GAME_RENDER_CELLBORDER
#define GAME_RENDER_CELLBORDER

#include <map>
#include <osg/Group>

#include <components/esm/refid.hpp>

namespace Resource
{
    class SceneManager;
}

namespace Terrain
{
    class Storage;
    class World;

    /**
     * @Brief Handles the debug cell borders.
     */
    class CellBorder
    {
    public:
        typedef std::map<std::pair<int, int>, osg::ref_ptr<osg::Node>> CellGrid;

        CellBorder(Terrain::World* world, osg::Group* root, int borderMask, Resource::SceneManager* sceneManager);

        void createCellBorderGeometry(int x, int y);
        void destroyCellBorderGeometry(int x, int y);

        /**
          Destroys the geometry for all borders.
        */
        void destroyCellBorderGeometry();

        static osg::ref_ptr<osg::Group> createBorderGeometry(float x, float y, float size, Storage* terrain,
            Resource::SceneManager* sceneManager, int mask, ESM::RefId worldspace, float offset = 10.0,
            osg::Vec4f color = { 1, 1, 0, 0 });

    protected:
        Terrain::World* mWorld;
        Resource::SceneManager* mSceneManager;
        osg::Group* mRoot;

        CellGrid mCellBorderNodes;
        int mBorderMask;
    };
}

#endif