-
Notifications
You must be signed in to change notification settings - Fork 20
/
Copy pathSector.h
53 lines (42 loc) · 1.36 KB
/
Sector.h
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
52
53
#ifndef SECTOR_H
#define SECTOR_H
#include "../CommonTypes.h"
#include "../math/Vector3.h"
#include "../render/IDriver3D.h"
#include <vector>
class IDriver3D;
class Camera;
struct CollisionPacket;
struct RaycastPacket;
#define INVALID_SECTOR 0xffff
#define SECTOR_TYPE_DUNGEON 1
#define SECTOR_TYPE_25D 2
#define SECTOR_TYPE_INTERIOR 4
#define SECTOR_TYPE_EXTERIOR 8
//max 65535 sectors:
class Sector
{
public:
Sector();
virtual ~Sector();
void AddObject(uint32_t uHandle);
void RemoveObject(uint32_t uHandle);
void AddLight(const Vector3& rvLoc) { m_Lights.push_back( xlNew LightObject(rvLoc) ); }
void AddLight(LightObject *pLight) { m_Lights.push_back( pLight ); }
const std::vector<LightObject *>& GetLightList() { return m_Lights; }
virtual void Render(IDriver3D *pDriver, Camera *pCamera) {};
virtual void Collide(CollisionPacket *packet, Vector3 *bounds, const Vector3& vOffset) {};
virtual void Raycast(RaycastPacket *packet, const Vector3& vOffset) {};
virtual void Update(float dt) {};
uint32_t m_uTypeFlags;
uint32_t m_uID;
int32_t m_x, m_y;
bool m_bActive;
Vector3 m_Bounds[2]; //24 bytes.
std::vector<uint32_t> m_Objects; //4*cbjCnt + ~8
std::vector<LightObject *> m_Lights;
char m_szName[64];
uint8_t *m_pValidNodes;
static uint32_t s_MaxSecDrawCnt;
};
#endif //SECTOR_H