summaryrefslogtreecommitdiff
path: root/common/light.h
blob: bd656d2eca02a5e042106747c778cfc36d626a84 (plain)
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
//
//	light.h
////////////////////////////////////////////////////

#ifndef _LIGHT_H_
#define _LIGHT_H_

#define LC_LIGHT_HIDDEN				0x01
#define LC_LIGHT_SELECTED			0x02
#define LC_LIGHT_FOCUSED			0x04
#define LC_LIGHT_TARGET_SELECTED	0x08
#define LC_LIGHT_TARGET_FOCUSED		0x10
#define LC_LIGHT_ENABLED			0x20

class Light
{
public:
	Light();
	~Light();

	Light* m_pNext;

	bool IsVisible()
		{ return (m_nState & LC_LIGHT_HIDDEN) == 0; } 
	bool IsSelected()
		{ return (m_nState & (LC_LIGHT_SELECTED|LC_LIGHT_TARGET_SELECTED)) != 0; } 
	void Select()
		{ m_nState |= (LC_LIGHT_SELECTED|LC_LIGHT_TARGET_SELECTED); } 
	void UnSelect()
		{ m_nState &= ~(LC_LIGHT_SELECTED|LC_LIGHT_FOCUSED|LC_LIGHT_TARGET_SELECTED|LC_LIGHT_TARGET_FOCUSED); } 
	void UnFocus()
		{ m_nState &= ~(LC_LIGHT_FOCUSED|LC_LIGHT_TARGET_FOCUSED); } 
	void FocusEye()
		{ m_nState |= (LC_LIGHT_FOCUSED|LC_LIGHT_SELECTED); } 
	void FocusTarget()
		{ m_nState |= (LC_LIGHT_TARGET_FOCUSED|LC_LIGHT_TARGET_SELECTED); } 
	const char* GetName()
		{ return m_strName; }

	void MinIntersectDist(CLICKLINE* Line);
	void UpdatePosition(unsigned short nTime, bool bAnimation);

protected:
	void RemoveKeys();

	BoundingBox m_BoundingBox;
	BoundingBox m_TargetBoundingBox;

	unsigned char m_nState;
	char m_strName[81];
};

#endif // _LIGHT_H_