Develop and Download Open Source Software

Browse Subversion Repository

Contents of /trunk/CRailLink.h

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1 - (show annotations) (download) (as text)
Sun Aug 15 01:53:13 2010 UTC (13 years, 9 months ago) by okadu
File MIME type: text/x-chdr
File size: 2218 byte(s)


1 #ifndef CRAILLINK_H_INCLUDED
2 #define CRAILLINK_H_INCLUDED
3
4 class CRailWayLink;
5 class CRailConnector;
6 class CRailWay;
7
8 #include "CVertexDump.h"
9
10 /*
11 * レール分割子
12 */
13 class CRailSplitter{
14 public:
15 VEC3 m_Pos; // 座標
16 VEC3 m_Right; // up
17 VEC3 m_Up; // right
18 VEC3 m_Dir; // dir
19 int m_Selected; // 選択フラグ
20 public:
21 CRailSplitter(){}
22 CRailSplitter(const VEC3 &p, const VEC3 &d){
23 m_Pos = p; m_Dir = d; m_Selected = 0;
24 }
25 CRailSplitter(const VEC3 &p, const VEC3 &r, const VEC3 &u, const VEC3 &d){
26 m_Pos = p; m_Right = r; m_Up = u; m_Dir = d; m_Selected = 0;
27 }
28 CRailSplitter Get(int rev){
29 return rev ? CRailSplitter(m_Pos, -m_Right, m_Up, -m_Dir) : *this;
30 }
31 float CalcDist(CRailSplitter &rhs){ return V3Len(&(rhs.m_Pos-m_Pos)); }
32 void CalcCantAxis(float);
33 CRailSplitter CalcMid(CRailSplitter *, float);
34 char *Read(char *);
35 void Save(FILE *, char *);
36 };
37
38 // 反復子
39 typedef list<CRailSplitter>::iterator IRailSplitter;
40 typedef list<CRailSplitter>::reverse_iterator RIRailSplitter;
41
42 /*
43 * コネクタリンク
44 */
45 class CRailConnectorLink{
46 public:
47 int m_Side; // サイド
48 int m_Point; // ポイント
49 float m_Cant; // カント量
50 CRailConnector *m_Link; // リンク
51 public:
52 CRailConnectorLink(){ m_Side = m_Point = 0; m_Link = NULL; }
53 CRailConnectorLink::CRailConnectorLink(int side, int point, CRailConnector *link){
54 m_Side = side; m_Point = point; m_Link = link;
55 }
56 void Connect(CRailWayLink &);
57 void Disconnect();
58 VEC3 GetPos();
59 VEC3 GetRight();
60 VEC3 GetUp();
61 VEC3 GetDir();
62 CRailSplitter GetSplitter(int);
63 float GetCant();
64 bool GetShadowTerminate();
65 int GetLinkCount();
66 void RestoreAddress();
67 char *Read(char *, char *);
68 void Save(FILE *, char *);
69 };
70
71 /*
72 * レールリンク
73 */
74 class CRailWayLink{
75 public:
76 int m_Side; // サイド
77 CRailWay *m_Link; // リンク
78 public:
79 CRailWayLink(){ m_Side = 0; m_Link = NULL; }
80 CRailWayLink::CRailWayLink(int side, CRailWay *link){ m_Side = side; m_Link = link; }
81 float GetCant();
82 VEC3 GetPos();
83 VEC3 GetOppositePos();
84 VEC3 GetFirstDir();
85 void WarpToOppositeEnd();
86 void RestoreAddress();
87 char *Read(char *, char *);
88 void Save(FILE *, char *);
89 };
90
91 #endif

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26