blob: 567d326329094f0f0e68ae916231dff5f240100c (
plain) (
blame)
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
|
#pragma once
class CVehicle;
enum eDoorState
{
DOORST_SWINGING,
// actually wrong though,
// OPEN is really MAX_ANGLE and CLOSED is MIN_ANGLE
DOORST_OPEN,
DOORST_CLOSED
};
class CDoor
{
public:
float m_fMaxAngle;
float m_fMinAngle;
// direction of rotation for air resistance
int8 m_nDirn;
// axis in which this door rotates
int8 m_nAxis;
int8 m_nDoorState;
float m_fAngle;
float m_fPrevAngle;
float m_fAngVel;
CVector m_vecSpeed;
CDoor(void);
void Init(float minAngle, float maxAngle, int8 dir, int8 axis) {
m_fMinAngle = minAngle;
m_fMaxAngle = maxAngle;
m_nDirn = dir;
m_nAxis = axis;
}
void Open(float ratio);
void Process(CVehicle *veh);
float RetAngleWhenClosed(void); // dead
float RetAngleWhenOpen(void);
float GetAngleOpenRatio(void);
bool IsFullyOpen(void);
bool IsClosed(void); // dead
};
class CTrainDoor
{
public:
float m_fClosedPosn;
float m_fOpenPosn;
int8 m_nDirn;
int8 m_nDoorState; // same enum as above?
int8 m_nAxis;
float m_fPosn;
float m_fPrevPosn;
int field_14; // unused?
CTrainDoor(void);
void Init(float open, float closed, int8 dir, int8 axis) {
m_fOpenPosn = open;
m_fClosedPosn = closed;
m_nDirn = dir;
m_nAxis = axis;
}
bool IsClosed(void);
bool IsFullyOpen(void);
float RetTranslationWhenClosed(void);
float RetTranslationWhenOpen(void);
void Open(float ratio);
};
|