1
0
Fork 0

Merge remote branch 'gitorious/next' into next

This commit is contained in:
Tim Moore 2010-12-04 16:27:25 +01:00
commit c9d29905dd
9 changed files with 75 additions and 35 deletions

View file

@ -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);

View file

@ -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
{ {

View file

@ -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;

View file

@ -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);

View file

@ -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);
} }

View file

@ -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) :

View file

@ -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,

View file

@ -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;

View file

@ -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();