Merge remote branch 'gitorious/next' into next
This commit is contained in:
commit
c9d29905dd
9 changed files with 75 additions and 35 deletions
|
@ -143,7 +143,10 @@ FGRunway* FGAirport::getRunwayByIdent(const string& aIdent) const
|
||||||
|
|
||||||
FGAirport::Runway_iterator
|
FGAirport::Runway_iterator
|
||||||
FGAirport::getIteratorForRunwayIdent(const string& aIdent) const
|
FGAirport::getIteratorForRunwayIdent(const string& aIdent) const
|
||||||
{
|
{
|
||||||
|
if (aIdent.empty())
|
||||||
|
return mRunways.end();
|
||||||
|
|
||||||
loadRunways();
|
loadRunways();
|
||||||
|
|
||||||
string ident(aIdent);
|
string ident(aIdent);
|
||||||
|
|
|
@ -137,6 +137,8 @@ void HUD::init()
|
||||||
_font_renderer->setPointSize(_font_size);
|
_font_renderer->setPointSize(_font_size);
|
||||||
_text_list.setFont(_font_renderer);
|
_text_list.setFont(_font_renderer);
|
||||||
|
|
||||||
|
currentColorChanged();
|
||||||
|
|
||||||
_path->fireValueChanged();
|
_path->fireValueChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -446,29 +448,9 @@ void HUD::valueChanged(SGPropertyNode *node)
|
||||||
load(fgGetString("/sim/hud/path[1]", "Huds/default.xml"));
|
load(fgGetString("/sim/hud/path[1]", "Huds/default.xml"));
|
||||||
|
|
||||||
if (!strcmp(node->getName(), "current-color")) {
|
if (!strcmp(node->getName(), "current-color")) {
|
||||||
int i = node->getIntValue();
|
currentColorChanged();
|
||||||
if (i < 0)
|
|
||||||
i = 0;
|
|
||||||
SGPropertyNode *n = fgGetNode("/sim/hud/palette", true);
|
|
||||||
if ((n = n->getChild("color", i, false))) {
|
|
||||||
if (n->hasValue("red"))
|
|
||||||
_red->setFloatValue(n->getFloatValue("red", 1.0));
|
|
||||||
if (n->hasValue("green"))
|
|
||||||
_green->setFloatValue(n->getFloatValue("green", 1.0));
|
|
||||||
if (n->hasValue("blue"))
|
|
||||||
_blue->setFloatValue(n->getFloatValue("blue", 1.0));
|
|
||||||
if (n->hasValue("alpha"))
|
|
||||||
_alpha->setFloatValue(n->getFloatValue("alpha", 0.67));
|
|
||||||
if (n->hasValue("alpha-clamp"))
|
|
||||||
_alpha_clamp->setFloatValue(n->getFloatValue("alpha-clamp", 0.01));
|
|
||||||
if (n->hasValue("brightness"))
|
|
||||||
_brightness->setFloatValue(n->getFloatValue("brightness", 0.75));
|
|
||||||
if (n->hasValue("antialiased"))
|
|
||||||
_antialiasing->setBoolValue(n->getBoolValue("antialiased", false));
|
|
||||||
if (n->hasValue("transparent"))
|
|
||||||
_transparency->setBoolValue(n->getBoolValue("transparent", false));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
_scr_width = _scr_widthN->getIntValue();
|
_scr_width = _scr_widthN->getIntValue();
|
||||||
_scr_height = _scr_heightN->getIntValue();
|
_scr_height = _scr_heightN->getIntValue();
|
||||||
|
|
||||||
|
@ -487,6 +469,36 @@ void HUD::valueChanged(SGPropertyNode *node)
|
||||||
_listener_active = false;
|
_listener_active = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void HUD::currentColorChanged()
|
||||||
|
{
|
||||||
|
SGPropertyNode *n = fgGetNode("/sim/hud/palette", true);
|
||||||
|
int index = _current->getIntValue();
|
||||||
|
if (index < 0) {
|
||||||
|
index = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
n = n->getChild("color", index, false);
|
||||||
|
if (!n) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (n->hasValue("red"))
|
||||||
|
_red->setFloatValue(n->getFloatValue("red", 1.0));
|
||||||
|
if (n->hasValue("green"))
|
||||||
|
_green->setFloatValue(n->getFloatValue("green", 1.0));
|
||||||
|
if (n->hasValue("blue"))
|
||||||
|
_blue->setFloatValue(n->getFloatValue("blue", 1.0));
|
||||||
|
if (n->hasValue("alpha"))
|
||||||
|
_alpha->setFloatValue(n->getFloatValue("alpha", 0.67));
|
||||||
|
if (n->hasValue("alpha-clamp"))
|
||||||
|
_alpha_clamp->setFloatValue(n->getFloatValue("alpha-clamp", 0.01));
|
||||||
|
if (n->hasValue("brightness"))
|
||||||
|
_brightness->setFloatValue(n->getFloatValue("brightness", 0.75));
|
||||||
|
if (n->hasValue("antialiased"))
|
||||||
|
_antialiasing->setBoolValue(n->getBoolValue("antialiased", false));
|
||||||
|
if (n->hasValue("transparent"))
|
||||||
|
_transparency->setBoolValue(n->getBoolValue("transparent", false));
|
||||||
|
}
|
||||||
|
|
||||||
void HUD::setColor() const
|
void HUD::setColor() const
|
||||||
{
|
{
|
||||||
|
|
|
@ -202,6 +202,8 @@ private:
|
||||||
void draw3D();
|
void draw3D();
|
||||||
void draw2D(GLfloat, GLfloat, GLfloat, GLfloat);
|
void draw2D(GLfloat, GLfloat, GLfloat, GLfloat);
|
||||||
|
|
||||||
|
void currentColorChanged();
|
||||||
|
|
||||||
class Input;
|
class Input;
|
||||||
class Item;
|
class Item;
|
||||||
class Label;
|
class Label;
|
||||||
|
|
|
@ -162,7 +162,7 @@ CameraInfo* CameraGroup::addCamera(unsigned flags, Camera* camera,
|
||||||
if (bufferMap.count(Camera::COLOR_BUFFER) != 0) {
|
if (bufferMap.count(Camera::COLOR_BUFFER) != 0) {
|
||||||
farCamera->attach(
|
farCamera->attach(
|
||||||
Camera::COLOR_BUFFER,
|
Camera::COLOR_BUFFER,
|
||||||
bufferMap.find(Camera::COLOR_BUFFER)->second._texture);
|
bufferMap.find(Camera::COLOR_BUFFER)->second._texture.get());
|
||||||
}
|
}
|
||||||
_viewer->addSlave(farCamera, projection, view, useMasterSceneData);
|
_viewer->addSlave(farCamera, projection, view, useMasterSceneData);
|
||||||
installCullVisitor(farCamera);
|
installCullVisitor(farCamera);
|
||||||
|
|
|
@ -35,6 +35,7 @@
|
||||||
#include <simgear/structure/event_mgr.hxx>
|
#include <simgear/structure/event_mgr.hxx>
|
||||||
#include <simgear/sound/soundmgr_openal.hxx>
|
#include <simgear/sound/soundmgr_openal.hxx>
|
||||||
#include <simgear/misc/ResourceManager.hxx>
|
#include <simgear/misc/ResourceManager.hxx>
|
||||||
|
#include <simgear/props/propertyObject.hxx>
|
||||||
|
|
||||||
#include <Aircraft/controls.hxx>
|
#include <Aircraft/controls.hxx>
|
||||||
#include <Airports/runways.hxx>
|
#include <Airports/runways.hxx>
|
||||||
|
@ -148,6 +149,7 @@ FGGlobals::FGGlobals() :
|
||||||
channellist( NULL )
|
channellist( NULL )
|
||||||
{
|
{
|
||||||
simgear::ResourceManager::instance()->addProvider(new AircraftResourceProvider());
|
simgear::ResourceManager::instance()->addProvider(new AircraftResourceProvider());
|
||||||
|
simgear::PropertyObjectBase::setDefaultRoot(props);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -39,6 +39,9 @@ BasicWaypt::BasicWaypt(const SGGeod& aPos, const string& aIdent, Route* aOwner)
|
||||||
_pos(aPos),
|
_pos(aPos),
|
||||||
_ident(aIdent)
|
_ident(aIdent)
|
||||||
{
|
{
|
||||||
|
if (aPos.getElevationFt() > -999.0) {
|
||||||
|
setAltitude(aPos.getElevationFt(), RESTRICT_AT);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
BasicWaypt::BasicWaypt(const SGWayPoint& aWP, Route* aOwner) :
|
BasicWaypt::BasicWaypt(const SGWayPoint& aWP, Route* aOwner) :
|
||||||
|
|
|
@ -187,9 +187,6 @@ bool FGAISchedule::init()
|
||||||
|
|
||||||
bool FGAISchedule::update(time_t now, const SGVec3d& userCart)
|
bool FGAISchedule::update(time_t now, const SGVec3d& userCart)
|
||||||
{
|
{
|
||||||
if (!fgGetBool("/sim/traffic-manager/enabled"))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
time_t
|
time_t
|
||||||
totalTimeEnroute,
|
totalTimeEnroute,
|
||||||
elapsedTimeEnroute,
|
elapsedTimeEnroute,
|
||||||
|
|
|
@ -75,7 +75,11 @@ using std::strcmp;
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
* TrafficManager
|
* TrafficManager
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
FGTrafficManager::FGTrafficManager()
|
FGTrafficManager::FGTrafficManager() :
|
||||||
|
inited(false),
|
||||||
|
enabled("/sim/traffic-manager/enabled"),
|
||||||
|
aiEnabled("/sim/ai/enabled"),
|
||||||
|
metarValid("/environment/metar/valid")
|
||||||
{
|
{
|
||||||
//score = 0;
|
//score = 0;
|
||||||
//runCount = 0;
|
//runCount = 0;
|
||||||
|
@ -125,6 +129,10 @@ FGTrafficManager::~FGTrafficManager()
|
||||||
|
|
||||||
void FGTrafficManager::init()
|
void FGTrafficManager::init()
|
||||||
{
|
{
|
||||||
|
if (!enabled || !aiEnabled) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
heuristicsVector heuristics;
|
heuristicsVector heuristics;
|
||||||
HeuristicMap heurMap;
|
HeuristicMap heurMap;
|
||||||
|
|
||||||
|
@ -218,13 +226,22 @@ void FGTrafficManager::init()
|
||||||
compareSchedules);
|
compareSchedules);
|
||||||
currAircraft = scheduledAircraft.begin();
|
currAircraft = scheduledAircraft.begin();
|
||||||
currAircraftClosest = scheduledAircraft.begin();
|
currAircraftClosest = scheduledAircraft.begin();
|
||||||
|
|
||||||
|
inited = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FGTrafficManager::update(double /*dt */ )
|
void FGTrafficManager::update(double /*dt */ )
|
||||||
{
|
{
|
||||||
if (fgGetBool("/environment/metar/valid") == false) {
|
if (!enabled || !aiEnabled || !metarValid) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!inited) {
|
||||||
|
// lazy-initialization, we've been enabled at run-time
|
||||||
|
SG_LOG(SG_GENERAL, SG_INFO, "doing lazy-init of TrafficManager");
|
||||||
|
init();
|
||||||
|
}
|
||||||
|
|
||||||
time_t now = time(NULL) + fgGetLong("/sim/time/warp");
|
time_t now = time(NULL) + fgGetLong("/sim/time/warp");
|
||||||
if (scheduledAircraft.size() == 0) {
|
if (scheduledAircraft.size() == 0) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
#define _TRAFFICMGR_HXX_
|
#define _TRAFFICMGR_HXX_
|
||||||
|
|
||||||
#include <simgear/structure/subsystem_mgr.hxx>
|
#include <simgear/structure/subsystem_mgr.hxx>
|
||||||
|
#include <simgear/props/propertyObject.hxx>
|
||||||
#include <simgear/xml/easyxml.hxx>
|
#include <simgear/xml/easyxml.hxx>
|
||||||
#include <simgear/misc/sg_path.hxx>
|
#include <simgear/misc/sg_path.hxx>
|
||||||
|
|
||||||
|
@ -54,19 +55,19 @@
|
||||||
#include "Schedule.hxx"
|
#include "Schedule.hxx"
|
||||||
|
|
||||||
|
|
||||||
typedef vector<int> IdList;
|
typedef std::vector<int> IdList;
|
||||||
typedef vector<int>::iterator IdListIterator;
|
typedef std::vector<int>::iterator IdListIterator;
|
||||||
|
|
||||||
class Heuristic
|
class Heuristic
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
string registration;
|
std::string registration;
|
||||||
unsigned int runCount;
|
unsigned int runCount;
|
||||||
unsigned int hits;
|
unsigned int hits;
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef vector<Heuristic> heuristicsVector;
|
typedef std::vector<Heuristic> heuristicsVector;
|
||||||
typedef vector<Heuristic>::iterator heuristicsVectorIterator;
|
typedef std::vector<Heuristic>::iterator heuristicsVectorIterator;
|
||||||
|
|
||||||
typedef std::map < std::string, Heuristic> HeuristicMap;
|
typedef std::map < std::string, Heuristic> HeuristicMap;
|
||||||
typedef HeuristicMap::iterator HeuristicMapIterator;
|
typedef HeuristicMap::iterator HeuristicMapIterator;
|
||||||
|
@ -77,11 +78,13 @@ typedef HeuristicMap::iterator HeuristicMapIterator;
|
||||||
class FGTrafficManager : public SGSubsystem, public XMLVisitor
|
class FGTrafficManager : public SGSubsystem, public XMLVisitor
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
bool inited;
|
||||||
|
|
||||||
ScheduleVector scheduledAircraft;
|
ScheduleVector scheduledAircraft;
|
||||||
ScheduleVectorIterator currAircraft, currAircraftClosest;
|
ScheduleVectorIterator currAircraft, currAircraftClosest;
|
||||||
vector<string> elementValueStack;
|
vector<string> elementValueStack;
|
||||||
|
|
||||||
string mdl, livery, registration, callsign, fltrules,
|
std::string mdl, livery, registration, callsign, fltrules,
|
||||||
port, timeString, departurePort, departureTime, arrivalPort, arrivalTime,
|
port, timeString, departurePort, departureTime, arrivalPort, arrivalTime,
|
||||||
repeat, acType, airline, m_class, flighttype, requiredAircraft, homePort;
|
repeat, acType, airline, m_class, flighttype, requiredAircraft, homePort;
|
||||||
int cruiseAlt;
|
int cruiseAlt;
|
||||||
|
@ -96,6 +99,7 @@ private:
|
||||||
void readTimeTableFromFile(SGPath infilename);
|
void readTimeTableFromFile(SGPath infilename);
|
||||||
void Tokenize(const string& str, vector<string>& tokens, const string& delimiters = " ");
|
void Tokenize(const string& str, vector<string>& tokens, const string& delimiters = " ");
|
||||||
|
|
||||||
|
simgear::PropertyObject<bool> enabled, aiEnabled, metarValid;
|
||||||
public:
|
public:
|
||||||
FGTrafficManager();
|
FGTrafficManager();
|
||||||
~FGTrafficManager();
|
~FGTrafficManager();
|
||||||
|
|
Loading…
Add table
Reference in a new issue