7 for (
int i = 0; i < MAX_SCAN; i++)
19 tcasmode = Bus::TcasEnum::Clear_Of_Conflict;
20 for (
int i = 0; i < MAX_SCAN; i++)
32 float tcastime = 999.0f;
34 for (
int t = 1; t < MAX_SCAN; t++)
66 if (timetoimpact < tcastime)
68 tcastime = timetoimpact;
80 if (tcastime < 40.0f &&
tcasmode == Bus::TcasEnum::Clear_Of_Conflict)
82 tcasmode = Bus::TcasEnum::Traffic_Advisory;
85 else if (tcastime < 25.0f)
89 D3DXVec3TransformCoord(&result1, &result1,
matrixView);
91 if (result1.z != 0.0f)
93 const float bear1 = D3DXToDegree(atanf(result1.x / result1.z));
94 float mark1 = D3DXToDegree(atanf(result1.y / result1.z));
95 float f_temp = sqrtf(mark1 * mark1 + bear1 * bear1);
98 f_temp = 180.0f / f_temp;
101 if (result1.z > 0.0f)
107 if (
tcasmode != Bus::TcasEnum::RA_Monitor_Climb)
112 if (
tcasmode != Bus::TcasEnum::RA_Monitor_Descent)
113 tcasmode = Bus::TcasEnum::RA_Descend;
119 else if (tcastime >= 40.0f &&
tcasmode != Bus::TcasEnum::Clear_Of_Conflict)
122 if (
coctime > 10.0f || tcastime == 999.0f)
123 tcasmode = Bus::TcasEnum::Clear_Of_Conflict;
131 case Bus::TcasEnum::Clear_Of_Conflict: command.
name =
"TCASClear";
break;
132 case Bus::TcasEnum::Traffic_Advisory: command.
name =
"TCASTraffic";
break;
133 case Bus::TcasEnum::RA_Climb: command.
name =
"TCASClimb";
break;
134 case Bus::TcasEnum::RA_Descend: command.
name =
"TCASDescend";
break;
135 default: command.
name =
"TCASMonitor";
break;
140 sprintf_s(msg, 999,
"TCAS traffic ordinal %i tti %.1f mode %i",
146 if (
tcasmode == Bus::TcasEnum::RA_Climb)
147 tcasmode = Bus::TcasEnum::RA_Monitor_Climb;
148 else if (
tcasmode == Bus::TcasEnum::RA_Descend)
149 tcasmode = Bus::TcasEnum::RA_Monitor_Descent;
void FrameMove(float fElapsedTime) override
std::vector< Command > commandStream
TCAS(Bus *prmBus, Logger *prmLogger, D3DXMATRIX *prmMatrixView)
s_network_objects playerships[MAX_SCAN]
float olddistance[MAX_SCAN]
void Log(const char *msg, Level level=Info, int errorCode=0)