#include <simgear/structure/exception.hxx>
#include <simgear/timing/timestamp.hxx>
-#include <Airports/simple.hxx>
+#include <Airports/airport.hxx>
#include <Airports/dynamics.hxx>
#include <Airports/runways.hxx>
return SGGeodesy::direct(start->geod(), heading, length * 0.5);
}
-FGTaxiNode* FGTaxiSegment::getEnd() const
+FGTaxiNodeRef FGTaxiSegment::getEnd() const
{
- return static_cast<FGTaxiNode*>(NavDataCache::instance()->loadById(endNode));
+ return FGPositioned::loadById<FGTaxiNode>(endNode);
}
-FGTaxiNode* FGTaxiSegment::getStart() const
+FGTaxiNodeRef FGTaxiSegment::getStart() const
{
- return static_cast<FGTaxiNode*>(NavDataCache::instance()->loadById(startNode));
+ return FGPositioned::loadById<FGTaxiNode>(startNode);
}
double FGTaxiSegment::getLength() const
airport[0], airport[1], airport[2]);
cacheData.append(buffer);
if (!cacheData.exists()) {
- cacheData.create_dir(0777);
+ cacheData.create_dir(0755);
}
cacheData.append(airport + "-groundnet-cache.txt");
cachefile.open(cacheData.str().c_str());
airport[0], airport[1], airport[2]);
cacheData.append(buffer);
if (!cacheData.exists()) {
- cacheData.create_dir(0777);
+ cacheData.create_dir(0755);
}
int index;
double elev;
return NavDataCache::instance()->findGroundNetNode(parent->guid(), aGeod, onRunway, aRunway);
}
-FGTaxiNode* FGGroundNetwork::findNode(PositionedID idx) const
+FGTaxiNodeRef FGGroundNetwork::findNode(PositionedID idx) const
{
-
- return static_cast<FGTaxiNode*>(NavDataCache::instance()->loadById(idx));
+ return FGPositioned::loadById<FGTaxiNode>(idx);
}
FGTaxiSegment *FGGroundNetwork::findSegment(unsigned idx) const
{}
double score;
- FGTaxiNode_ptr previousNode;
+ FGTaxiNodeRef previousNode;
};
FGTaxiRoute FGGroundNetwork::findShortestRoute(PositionedID start, PositionedID end,
}
BOOST_FOREACH(PositionedID targetId, cache->groundNetEdgesFrom(best->guid(), !fullSearch)) {
- FGTaxiNode* tgt = (FGTaxiNode*) cache->loadById(targetId);
+ FGTaxiNodeRef tgt = FGPositioned::loadById<FGTaxiNode>(targetId);
double edgeLength = dist(best->cart(), tgt->cart());
double alt = searchData[best].score + edgeLength + edgePenalty(tgt);
if (alt < searchData[tgt].score) { // Relax (u,v)
//osg::Node *custom_obj;
SGMaterial *mat;
if (segments[pos]->hasBlock(now)) {
- mat = matlib->find("UnidirectionalTaperRed");
+ mat = matlib->find("UnidirectionalTaperRed", center);
} else {
- mat = matlib->find("UnidirectionalTaperGreen");
+ mat = matlib->find("UnidirectionalTaperGreen", center);
}
if (mat)
geode->setEffect(mat->get_effect());
//osg::Node *custom_obj;
SGMaterial *mat;
if (segments[k]->hasBlock(now)) {
- mat = matlib->find("UnidirectionalTaperRed");
+ mat = matlib->find("UnidirectionalTaperRed", segCenter);
} else {
- mat = matlib->find("UnidirectionalTaperGreen");
+ mat = matlib->find("UnidirectionalTaperGreen", segCenter);
}
if (mat)
geode->setEffect(mat->get_effect());