1
0
Fork 0

- remove trailing spaces

- fix many cases of broken indentation (but not all)
- unify indendation
- ...
This commit is contained in:
mfranz 2006-06-09 18:48:57 +00:00
parent 4db6e924fe
commit 942561d64c
5 changed files with 258 additions and 253 deletions

View file

@ -74,9 +74,9 @@ FGAIBase::~FGAIBase() {
globals->get_scenery()->get_scene_graph()->removeKid(aip.getSceneGraph()); globals->get_scenery()->get_scene_graph()->removeKid(aip.getSceneGraph());
} }
if (props) { if (props) {
SGPropertyNode* parent = props->getParent(); SGPropertyNode* parent = props->getParent();
if (parent) if (parent)
parent->removeChild(props->getName(), props->getIndex(), false); parent->removeChild(props->getName(), props->getIndex(), false);
} }
delete fp; delete fp;
fp = 0; fp = 0;
@ -85,22 +85,24 @@ FGAIBase::~FGAIBase() {
void FGAIBase::readFromScenario(SGPropertyNode* scFileNode) void FGAIBase::readFromScenario(SGPropertyNode* scFileNode)
{ {
if (!scFileNode) if (!scFileNode)
return; return;
setPath(scFileNode->getStringValue("model", "Models/Geometry/glider.ac")); setPath(scFileNode->getStringValue("model", "Models/Geometry/glider.ac"));
setHeading(scFileNode->getDoubleValue("heading", 0.0)); setHeading(scFileNode->getDoubleValue("heading", 0.0));
setSpeed(scFileNode->getDoubleValue("speed", 0.0)); setSpeed(scFileNode->getDoubleValue("speed", 0.0));
setAltitude(scFileNode->getDoubleValue("altitude", 0.0)); setAltitude(scFileNode->getDoubleValue("altitude", 0.0));
setLongitude(scFileNode->getDoubleValue("longitude", 0.0)); setLongitude(scFileNode->getDoubleValue("longitude", 0.0));
setLatitude(scFileNode->getDoubleValue("latitude", 0.0)); setLatitude(scFileNode->getDoubleValue("latitude", 0.0));
setBank(scFileNode->getDoubleValue("roll", 0.0)); setBank(scFileNode->getDoubleValue("roll", 0.0));
} }
void FGAIBase::update(double dt) { void FGAIBase::update(double dt) {
if (_otype == otStatic) return; if (_otype == otStatic)
if (_otype == otBallistic) CalculateMach(); return;
if (_otype == otBallistic)
CalculateMach();
ft_per_deg_lat = 366468.96 - 3717.12 * cos(pos.lat()*SGD_DEGREES_TO_RADIANS); ft_per_deg_lat = 366468.96 - 3717.12 * cos(pos.lat()*SGD_DEGREES_TO_RADIANS);
ft_per_deg_lon = 365228.16 * cos(pos.lat()*SGD_DEGREES_TO_RADIANS); ft_per_deg_lon = 365228.16 * cos(pos.lat()*SGD_DEGREES_TO_RADIANS);
@ -114,7 +116,7 @@ void FGAIBase::Transform() {
} else { } else {
aip.setOrientation(roll, pitch, hdg); aip.setOrientation(roll, pitch, hdg);
} }
aip.update(); aip.update();
} }
} }
@ -137,10 +139,10 @@ bool FGAIBase::init() {
// Register that one at the scenery manager // Register that one at the scenery manager
globals->get_scenery()->register_placement_transform(aip.getTransform()); globals->get_scenery()->register_placement_transform(aip.getTransform());
} else { } else {
if (!model_path.empty()) { if (!model_path.empty()) {
SG_LOG(SG_INPUT, SG_WARN, "AIBase: Could not load model " << model_path); SG_LOG(SG_INPUT, SG_WARN, "AIBase: Could not load model " << model_path);
} }
} }
setDie(false); setDie(false);
@ -148,30 +150,31 @@ bool FGAIBase::init() {
} }
ssgBranch * FGAIBase::load3DModel(const string& fg_root, ssgBranch * FGAIBase::load3DModel(const string& fg_root,
const string &path, const string &path,
SGPropertyNode *prop_root, SGPropertyNode *prop_root,
double sim_time_sec) double sim_time_sec)
{ {
// some more code here to check whether a model with this name has already been loaded // some more code here to check whether a model with this name has already been loaded
// if not load it, otherwise, get the memory pointer and do something like // if not load it, otherwise, get the memory pointer and do something like
// SetModel as in ATC/AIEntity.cxx // SetModel as in ATC/AIEntity.cxx
model = manager->getModel(path); model = manager->getModel(path);
if (!(model)) if (!(model)) {
{
model = sgLoad3DModel(fg_root, model = sgLoad3DModel(fg_root,
path, path,
prop_root, prop_root,
sim_time_sec); sim_time_sec);
manager->setModel(path, model); manager->setModel(path, model);
} }
return model; return model;
} }
bool FGAIBase::isa( object_type otype ) { bool FGAIBase::isa( object_type otype ) {
if ( otype == _otype ) { return true; } if ( otype == _otype )
else { return false; } return true;
else
return false;
} }
@ -206,7 +209,7 @@ void FGAIBase::bind() {
props->tie("radar/elevation-deg", SGRawValuePointer<double>(&elevation)); props->tie("radar/elevation-deg", SGRawValuePointer<double>(&elevation));
props->tie("radar/range-nm", SGRawValuePointer<double>(&range)); props->tie("radar/range-nm", SGRawValuePointer<double>(&range));
props->tie("radar/h-offset", SGRawValuePointer<double>(&horiz_offset)); props->tie("radar/h-offset", SGRawValuePointer<double>(&horiz_offset));
props->tie("radar/v-offset", SGRawValuePointer<double>(&vert_offset)); props->tie("radar/v-offset", SGRawValuePointer<double>(&vert_offset));
props->tie("radar/x-shift", SGRawValuePointer<double>(&x_shift)); props->tie("radar/x-shift", SGRawValuePointer<double>(&x_shift));
props->tie("radar/y-shift", SGRawValuePointer<double>(&y_shift)); props->tie("radar/y-shift", SGRawValuePointer<double>(&y_shift));
props->tie("radar/rotation", SGRawValuePointer<double>(&rotation)); props->tie("radar/rotation", SGRawValuePointer<double>(&rotation));
@ -392,43 +395,44 @@ int FGAIBase::getID() const {
} }
void FGAIBase::CalculateMach() { void FGAIBase::CalculateMach() {
// Calculate rho at altitude, using standard atmosphere // Calculate rho at altitude, using standard atmosphere
// For the temperature T and the pressure p, // For the temperature T and the pressure p,
if (altitude < 36152) { // curve fits for the troposphere if (altitude < 36152) { // curve fits for the troposphere
T = 59 - 0.00356 * altitude; T = 59 - 0.00356 * altitude;
p = 2116 * pow( ((T + 459.7) / 518.6) , 5.256); p = 2116 * pow( ((T + 459.7) / 518.6) , 5.256);
} else if ( 36152 < altitude && altitude < 82345 ) { // lower stratosphere } else if ( 36152 < altitude && altitude < 82345 ) { // lower stratosphere
T = -70; T = -70;
p = 473.1 * pow( e , 1.73 - (0.000048 * altitude) ); p = 473.1 * pow( e , 1.73 - (0.000048 * altitude) );
} else { // upper stratosphere } else { // upper stratosphere
T = -205.05 + (0.00164 * altitude); T = -205.05 + (0.00164 * altitude);
p = 51.97 * pow( ((T + 459.7) / 389.98) , -11.388); p = 51.97 * pow( ((T + 459.7) / 389.98) , -11.388);
} }
rho = p / (1718 * (T + 459.7)); rho = p / (1718 * (T + 459.7));
// calculate the speed of sound at altitude // calculate the speed of sound at altitude
// a = sqrt ( g * R * (T + 459.7)) // a = sqrt ( g * R * (T + 459.7))
// where: // where:
// a = speed of sound [ft/s] // a = speed of sound [ft/s]
// g = specific heat ratio, which is usually equal to 1.4 // g = specific heat ratio, which is usually equal to 1.4
// R = specific gas constant, which equals 1716 ft-lb/slug/°R // R = specific gas constant, which equals 1716 ft-lb/slug/°R
a = sqrt ( 1.4 * 1716 * (T + 459.7)); a = sqrt ( 1.4 * 1716 * (T + 459.7));
// calculate Mach number // calculate Mach number
Mach = speed/a; Mach = speed/a;
// cout << "Speed(ft/s) "<< speed <<" Altitude(ft) "<< altitude << " Mach " << Mach; // cout << "Speed(ft/s) "<< speed <<" Altitude(ft) "<< altitude << " Mach " << Mach;
} }
int FGAIBase::_newAIModelID() { int FGAIBase::_newAIModelID() {
static int id = 0; static int id = 0;
if (!++id) id++; // id = 0 is not allowed. if (!++id)
id++; // id = 0 is not allowed.
return id; return id;
} }

View file

@ -90,7 +90,7 @@ protected:
double pitch; // degrees, nose-down is negative double pitch; // degrees, nose-down is negative
double speed; // knots true airspeed double speed; // knots true airspeed
double altitude; // meters above sea level double altitude; // meters above sea level
double vs; // vertical speed, feet per minute double vs; // vertical speed, feet per minute
double turn_radius_ft; // turn radius ft at 15 kts rudder angle 15 degrees double turn_radius_ft; // turn radius ft at 15 kts rudder angle 15 degrees
double ft_per_deg_lon; double ft_per_deg_lon;
@ -167,40 +167,40 @@ public:
double rho; double rho;
double T; // temperature, degs farenheit double T; // temperature, degs farenheit
double p; // pressure lbs/sq ft double p; // pressure lbs/sq ft
double a; // speed of sound at altitude (ft/s) double a; // speed of sound at altitude (ft/s)
double Mach; // Mach number double Mach; // Mach number
static const double e; static const double e;
static const double lbs_to_slugs; static const double lbs_to_slugs;
inline double _getRange() { return range; }; inline double _getRange() { return range; };
ssgBranch * load3DModel(const string& fg_root, ssgBranch * load3DModel(const string& fg_root,
const string &path, const string &path,
SGPropertyNode *prop_root, SGPropertyNode *prop_root,
double sim_time_sec); double sim_time_sec);
static bool _isNight(); static bool _isNight();
}; };
inline void FGAIBase::setManager(FGAIManager* mgr, SGPropertyNode* p) { inline void FGAIBase::setManager(FGAIManager* mgr, SGPropertyNode* p) {
manager = mgr; manager = mgr;
props = p; props = p;
} }
inline void FGAIBase::setPath(const char* model ) { inline void FGAIBase::setPath(const char* model ) {
model_path.append(model); model_path.append(model);
} }
inline void FGAIBase::setSpeed( double speed_KTAS ) { inline void FGAIBase::setSpeed( double speed_KTAS ) {
speed = tgt_speed = speed_KTAS; speed = tgt_speed = speed_KTAS;
} }
inline void FGAIBase::setRadius( double radius ) { inline void FGAIBase::setRadius( double radius ) {
turn_radius_ft = radius; turn_radius_ft = radius;
} }
inline void FGAIBase::setHeading( double heading ) { inline void FGAIBase::setHeading( double heading ) {
hdg = tgt_heading = heading; hdg = tgt_heading = heading;
} }
inline void FGAIBase::setAltitude( double altitude_ft ) { inline void FGAIBase::setAltitude( double altitude_ft ) {
@ -209,12 +209,12 @@ inline void FGAIBase::setAltitude( double altitude_ft ) {
} }
inline void FGAIBase::setBank( double bank ) { inline void FGAIBase::setBank( double bank ) {
roll = tgt_roll = bank; roll = tgt_roll = bank;
no_roll = false; no_roll = false;
} }
inline void FGAIBase::setPitch( double newpitch ) { inline void FGAIBase::setPitch( double newpitch ) {
pitch = tgt_pitch = newpitch; pitch = tgt_pitch = newpitch;
} }
inline void FGAIBase::setLongitude( double longitude ) { inline void FGAIBase::setLongitude( double longitude ) {

View file

@ -111,7 +111,7 @@ TACAN::init ()
_yaw_node = fgGetNode("/orientation/side-slip-deg", true); _yaw_node = fgGetNode("/orientation/side-slip-deg", true);
_serviceable_node = node->getChild("serviceable", 0, true); _serviceable_node = node->getChild("serviceable", 0, true);
_electrical_node = fgGetNode("/systems/electrical/outputs/tacan", true); _electrical_node = fgGetNode("/systems/electrical/outputs/tacan", true);
_ident_node = node->getChild("ident", 0, true); _ident_node = node->getChild("ident", 0, true);
SGPropertyNode *fnode = node->getChild("frequencies", 0, true); SGPropertyNode *fnode = node->getChild("frequencies", 0, true);
_source_node = fnode->getChild("source", 0, true); _source_node = fnode->getChild("source", 0, true);
_frequency_node = fnode->getChild("selected-mhz", 0, true); _frequency_node = fnode->getChild("selected-mhz", 0, true);

View file

@ -68,7 +68,7 @@ private:
SGPropertyNode_ptr _x_shift_node; SGPropertyNode_ptr _x_shift_node;
SGPropertyNode_ptr _y_shift_node; SGPropertyNode_ptr _y_shift_node;
SGPropertyNode_ptr _rotation_node; SGPropertyNode_ptr _rotation_node;
/*SGPropertyNode_ptr _x_shift_calibration_node; /*SGPropertyNode_ptr _x_shift_calibration_node;
SGPropertyNode_ptr _y_shift_calibration_node; SGPropertyNode_ptr _y_shift_calibration_node;
SGPropertyNode_ptr _distance_calibration_node;*/ SGPropertyNode_ptr _distance_calibration_node;*/

View file

@ -110,8 +110,8 @@ wxRadarBg::init ()
void void
wxRadarBg::update (double delta_time_sec) wxRadarBg::update (double delta_time_sec)
{ {
if( ! sim_init_done ) { if ( ! sim_init_done ) {
if( ! fgGetBool("sim/sceneryloaded", false) ) if ( ! fgGetBool("sim/sceneryloaded", false) )
return; return;
sim_init_done = true; sim_init_done = true;
} }
@ -125,16 +125,16 @@ wxRadarBg::update (double delta_time_sec)
float range_nm = _Instrument->getFloatValue("range", 40.0); float range_nm = _Instrument->getFloatValue("range", 40.0);
float range_m = range_nm * SG_NM_TO_METER; float range_m = range_nm * SG_NM_TO_METER;
if( last_switchKnob != switchKnob ) { if ( last_switchKnob != switchKnob ) {
// since 3D models don't share textures with the rest of the world // since 3D models don't share textures with the rest of the world
// we must locate them and replace their handle by hand // we must locate them and replace their handle by hand
// only do that when the instrument is turned on // only do that when the instrument is turned on
if( last_switchKnob == "off" ) if ( last_switchKnob == "off" )
odg->set_texture( odgauge_name, resultTexture->getHandle()); odg->set_texture( odgauge_name, resultTexture->getHandle());
last_switchKnob = switchKnob; last_switchKnob = switchKnob;
} }
FGViewer *current__view = globals->get_current_view(); FGViewer *current__view = globals->get_current_view();
if( current__view->getInternal() && if ( current__view->getInternal() &&
(current__view->getHeadingOffset_deg() <= 15.0 || current__view->getHeadingOffset_deg() >= 345.0) && (current__view->getHeadingOffset_deg() <= 15.0 || current__view->getHeadingOffset_deg() >= 345.0) &&
(current__view->getPitchOffset_deg() <= 15.0 || current__view->getPitchOffset_deg() >= 350.0) ) { (current__view->getPitchOffset_deg() <= 15.0 || current__view->getPitchOffset_deg() >= 350.0) ) {
@ -148,191 +148,192 @@ wxRadarBg::update (double delta_time_sec)
glMatrixMode(GL_MODELVIEW); glMatrixMode(GL_MODELVIEW);
glLoadIdentity(); glLoadIdentity();
glPushMatrix(); glPushMatrix();
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); glPolygonMode(GL_FRONT_AND_BACK, GL_FILL);
glBindTexture(GL_TEXTURE_2D, 0); glBindTexture(GL_TEXTURE_2D, 0);
if( switchKnob == "off" ) {
_Instrument->setStringValue("status",""); if ( switchKnob == "off" ) {
} else if( switchKnob == "stby" ) { _Instrument->setStringValue("status","");
_Instrument->setStringValue("status","STBY"); } else if ( switchKnob == "stby" ) {
} else if( switchKnob == "tst" ) { _Instrument->setStringValue("status","STBY");
_Instrument->setStringValue("status","TST"); } else if ( switchKnob == "tst" ) {
// find something interesting to do... _Instrument->setStringValue("status","TST");
// find something interesting to do...
} else {
string display_mode = _Instrument->getStringValue("display-mode", "arc");
// pretend we have a scan angle bigger then the FOV
// TODO:check real fov, enlarge if < nn, and do clipping if > mm
const float fovFactor = 1.45f;
float view_heading = get_heading() * SG_DEGREES_TO_RADIANS;
float range = 200.0f / range_nm;
_Instrument->setStringValue("status", modeButton.c_str());
if ( display_mode == "arc" ) {
glTranslatef(0.0f, -180.0f, 0.0f);
range = 2*180.0f / range_nm;
} else if ( display_mode == "map" ) {
// float view_heading = get_track() * SG_DEGREES_TO_RADIANS;
} else if ( display_mode == "plan" ) {
// no sense I presume
view_heading = 0;
} else { } else {
string display_mode = _Instrument->getStringValue("display-mode", "arc"); // rose
}
range /= SG_NM_TO_METER;
// we will rotate the echo quads, this gives a better rendering
const float rot_x = cos ( view_heading );
const float rot_y = sin ( view_heading );
// pretend we have a scan angle bigger then the FOV list_of_SGWxRadarEcho *radarEcho = &radarEchoBuffer;
// TODO:check real fov, enlarge if < nn, and do clipping if > mm list_of_SGWxRadarEcho::iterator iradarEcho;
const float fovFactor = 1.45f; const float LWClevel[] = { 0.1f, 0.5f, 2.1f };
float view_heading = get_heading() * SG_DEGREES_TO_RADIANS; const float symbolSize = 1.0f / 8.0f ;
float range = 200.0f / range_nm; // draw the radar echo, we do that in 3 passes, one for each color level
_Instrument->setStringValue("status", modeButton.c_str()); // this is to 'merge' same colors together
if( display_mode == "arc" ) { glBindTexture(GL_TEXTURE_2D, wxEcho->getHandle() );
glTranslatef(0.0f, -180.0f, 0.0f); glColor3f(1.0f, 1.0f, 1.0f);
range = 2*180.0f / range_nm; glBegin( GL_QUADS );
} else if( display_mode == "map" ) {
// float view_heading = get_track() * SG_DEGREES_TO_RADIANS;
} else if( display_mode == "plan" ) {
// no sense I presume
view_heading = 0;
} else {
// rose
}
range /= SG_NM_TO_METER;
// we will rotate the echo quads, this gives a better rendering
const float rot_x = cos ( view_heading );
const float rot_y = sin ( view_heading );
list_of_SGWxRadarEcho *radarEcho = &radarEchoBuffer; for (int level = 0; level <= 2 ; level++ ) {
list_of_SGWxRadarEcho::iterator iradarEcho; float col = level * symbolSize;
const float LWClevel[] = { 0.1f, 0.5f, 2.1f }; for (iradarEcho = radarEcho->begin() ; iradarEcho != radarEcho->end() ; iradarEcho++ ) {
const float symbolSize = 1.0f / 8.0f ; int cloudId = (iradarEcho->cloudId) ;
// draw the radar echo, we do that in 3 passes, one for each color level bool upgrade = ((cloudId >> 5) & 1);
// this is to 'merge' same colors together float lwc = iradarEcho->LWC + (upgrade ? 1.0f : 0.0f);
glBindTexture(GL_TEXTURE_2D, wxEcho->getHandle() ); // skip ns
glColor3f(1.0f, 1.0f, 1.0f); if ( iradarEcho->LWC >= 0.5 && iradarEcho->LWC <= 0.6)
glBegin( GL_QUADS ); continue;
if ( (! iradarEcho->lightning) && ( lwc >= LWClevel[level]) ) {
for(int level = 0; level <= 2 ; level++ ) { float dist = sgSqrt( iradarEcho->dist );
float col = level * symbolSize; float size = iradarEcho->radius * 2.0;
for(iradarEcho = radarEcho->begin() ; iradarEcho != radarEcho->end() ; iradarEcho++ ) { if ( dist - size > range_m )
int cloudId = (iradarEcho->cloudId) ;
bool upgrade = ((cloudId >> 5) & 1);
float lwc = iradarEcho->LWC + (upgrade ? 1.0f : 0.0f);
// skip ns
if( iradarEcho->LWC >= 0.5 && iradarEcho->LWC <= 0.6)
continue; continue;
if( (! iradarEcho->lightning) && ( lwc >= LWClevel[level]) ) { dist = dist * range;
float dist = sgSqrt( iradarEcho->dist ); size = size * range;
float size = iradarEcho->radius * 2.0; // compute the relative angle from the view direction
if( dist - size > range_m ) float angle = ( view_heading + iradarEcho->heading );
continue; if ( angle > SG_PI )
dist = dist * range; angle -= 2.0*SG_PI;
size = size * range; if ( angle < - SG_PI )
// compute the relative angle from the view direction angle += 2.0*SG_PI;
float angle = ( view_heading + iradarEcho->heading ); // and apply a fov factor to simulate a greater scan angle
if( angle > SG_PI ) angle = angle * fovFactor + SG_PI / 2.0;
angle -= 2.0*SG_PI; float x = cos( angle ) * dist;
if( angle < - SG_PI ) float y = sin( angle ) * dist;
angle += 2.0*SG_PI; // use different shapes so the display is less boring
// and apply a fov factor to simulate a greater scan angle float row = symbolSize * (float) (4 + (cloudId & 3) );
angle = angle * fovFactor + SG_PI / 2.0; float size_x = rot_x * size;
float x = cos( angle ) * dist; float size_y = rot_y * size;
float y = sin( angle ) * dist; glTexCoord2f( col, row);
// use different shapes so the display is less boring glVertex2f( x - size_x, y - size_y);
float row = symbolSize * (float) (4 + (cloudId & 3) ); glTexCoord2f( col+symbolSize, row);
float size_x = rot_x * size; glVertex2f( x + size_y, y - size_x);
float size_y = rot_y * size; glTexCoord2f( col+symbolSize, row+symbolSize);
glTexCoord2f( col, row); glVertex2f( x + size_x, y + size_y);
glVertex2f( x - size_x, y - size_y); glTexCoord2f( col, row+symbolSize);
glTexCoord2f( col+symbolSize, row); glVertex2f( x - size_y, y + size_x);
glVertex2f( x + size_y, y - size_x);
glTexCoord2f( col+symbolSize, row+symbolSize);
glVertex2f( x + size_x, y + size_y);
glTexCoord2f( col, row+symbolSize);
glVertex2f( x - size_y, y + size_x);
}
} }
} }
glEnd(); // GL_QUADS }
glEnd(); // GL_QUADS
// draw lightning echos // draw lightning echos
if( drawLightning ) { if ( drawLightning ) {
float col = 3 * symbolSize; float col = 3 * symbolSize;
float row = 4 * symbolSize; float row = 4 * symbolSize;
for(iradarEcho = radarEcho->begin() ; iradarEcho != radarEcho->end() ; iradarEcho++ ) { for (iradarEcho = radarEcho->begin() ; iradarEcho != radarEcho->end() ; iradarEcho++ ) {
if( iradarEcho->lightning ) { if ( iradarEcho->lightning ) {
float dist = iradarEcho->dist; float dist = iradarEcho->dist;
dist = dist * range; dist = dist * range;
float angle = (view_heading - iradarEcho->heading); float angle = (view_heading - iradarEcho->heading);
if( angle > SG_PI ) if ( angle > SG_PI )
angle -= 2.0*SG_PI; angle -= 2.0*SG_PI;
if( angle < - SG_PI ) if ( angle < - SG_PI )
angle += 2.0*SG_PI; angle += 2.0*SG_PI;
angle = angle * fovFactor - SG_PI / 2.0; angle = angle * fovFactor - SG_PI / 2.0;
float x = cos( angle ) * dist; float x = cos( angle ) * dist;
float y = sin( angle ) * dist; float y = sin( angle ) * dist;
glColor3f(1.0f, 1.0f, 1.0f); glColor3f(1.0f, 1.0f, 1.0f);
float size = symbolSize * 0.5f; float size = symbolSize * 0.5f;
glBegin( GL_QUADS ); glBegin( GL_QUADS );
glTexCoord2f( col, row); glTexCoord2f( col, row);
glVertex2f( x - size, y - size); glVertex2f( x - size, y - size);
glTexCoord2f( col+symbolSize, row); glTexCoord2f( col+symbolSize, row);
glVertex2f( x + size, y - size); glVertex2f( x + size, y - size);
glTexCoord2f( col+symbolSize, row+symbolSize); glTexCoord2f( col+symbolSize, row+symbolSize);
glVertex2f( x + size, y + size); glVertex2f( x + size, y + size);
glTexCoord2f( col, row+symbolSize); glTexCoord2f( col, row+symbolSize);
glVertex2f( x - size, y + size); glVertex2f( x - size, y + size);
glEnd(); glEnd();
}
} }
} }
// erase what is out of sight of antenna }
/* // erase what is out of sight of antenna
|\ /| /*
| \ / | |\ /|
| \ / | | \ / |
--------- | \ / |
| | ---------
| | | |
--------- | |
*/ ---------
float yOffset = 180.0f, xOffset = 256.0f; */
float yOffset = 180.0f, xOffset = 256.0f;
if( display_mode != "arc" ) {
yOffset = 40.0f; if ( display_mode != "arc" ) {
xOffset = 240.0f; yOffset = 40.0f;
} xOffset = 240.0f;
}
if ( display_mode != "plan" ) {
glDisable(GL_BLEND); if ( display_mode != "plan" ) {
glColor4f(1.0f, 0.0f, 0.0f, 0.01f); glDisable(GL_BLEND);
glColor4f(1.0f, 0.0f, 0.0f, 0.01f);
glBegin( GL_QUADS ); glBegin( GL_QUADS );
glTexCoord2f( 0.5f, 0.25f); glTexCoord2f( 0.5f, 0.25f);
glVertex2f(-xOffset, 0.0 + yOffset); glVertex2f(-xOffset, 0.0 + yOffset);
glTexCoord2f( 1.0f, 0.25f); glTexCoord2f( 1.0f, 0.25f);
glVertex2f(xOffset, 0.0 + yOffset); glVertex2f(xOffset, 0.0 + yOffset);
glTexCoord2f( 1.0f, 0.5f); glTexCoord2f( 1.0f, 0.5f);
glVertex2f(xOffset, 256.0 + yOffset); glVertex2f(xOffset, 256.0 + yOffset);
glTexCoord2f( 0.5f, 0.5f); glTexCoord2f( 0.5f, 0.5f);
glVertex2f(-xOffset, 256.0 + yOffset); glVertex2f(-xOffset, 256.0 + yOffset);
glEnd(); glEnd();
glColor4f(0.0f, 0.0f, 0.0f, 0.0f); glColor4f(0.0f, 0.0f, 0.0f, 0.0f);
// glColor4f(0.0f, 1.0f, 0.0f, 1.0f); // glColor4f(0.0f, 1.0f, 0.0f, 1.0f);
glDisable(GL_ALPHA_TEST); glDisable(GL_ALPHA_TEST);
glBindTexture(GL_TEXTURE_2D, 0); glBindTexture(GL_TEXTURE_2D, 0);
glBegin( GL_TRIANGLES ); glBegin( GL_TRIANGLES );
glVertex2f(0.0, 0.0); glVertex2f(0.0, 0.0);
glVertex2f(-256.0, 0.0); glVertex2f(-256.0, 0.0);
glVertex2f(-256.0, 256.0 * tan(30*SG_DEGREES_TO_RADIANS)); glVertex2f(-256.0, 256.0 * tan(30*SG_DEGREES_TO_RADIANS));
glVertex2f(0.0, 0.0); glVertex2f(0.0, 0.0);
glVertex2f(256.0, 0.0); glVertex2f(256.0, 0.0);
glVertex2f(256.0, 256.0 * tan(30*SG_DEGREES_TO_RADIANS)); glVertex2f(256.0, 256.0 * tan(30*SG_DEGREES_TO_RADIANS));
glVertex2f(-256, 0.0); glVertex2f(-256, 0.0);
glVertex2f(256.0, 0.0); glVertex2f(256.0, 0.0);
glVertex2f(-256.0, -256.0); glVertex2f(-256.0, -256.0);
glVertex2f(256, 0.0); glVertex2f(256, 0.0);
glVertex2f(256.0, -256.0); glVertex2f(256.0, -256.0);
glVertex2f(-256.0, -256.0); glVertex2f(-256.0, -256.0);
glEnd(); glEnd();
}
// DEBUG only
/* glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
glBegin( GL_LINES );
glVertex2f(0.0, 0.0);
glVertex2f(-256.0, 256.0);
glVertex2f(0.0, 0.0);
glVertex2f(256.0, 256.0);
glEnd();*/
glEnable(GL_BLEND);
glEnable(GL_ALPHA_TEST);
} }
// DEBUG only
/* glColor4f(1.0f, 0.0f, 0.0f, 1.0f);
glBegin( GL_LINES );
glVertex2f(0.0, 0.0);
glVertex2f(-256.0, 256.0);
glVertex2f(0.0, 0.0);
glVertex2f(256.0, 256.0);
glEnd();*/
glEnable(GL_BLEND);
glEnable(GL_ALPHA_TEST);
}
glPopMatrix(); glPopMatrix();
odg->endCapture( resultTexture->getHandle() ); odg->endCapture( resultTexture->getHandle() );
} }