const SGMaterial* material = _material;
_haveHit = false;
- _center = SGVec3d(inverseMatrix.preMult(_center.osg()));
- _down = SGVec3d(osg::Matrix::transform3x3(_down.osg(), inverseMatrix));
+ _center = toSG(inverseMatrix.preMult(toOsg(_center)));
+ _down = toSG(osg::Matrix::transform3x3(toOsg(_down), inverseMatrix));
if (velocity) {
SGVec3d staticCenter(_center);
_sceneryHit = ori.transform(_sceneryHit);
_sceneryHit += dt*velocity->linear;
}
- _sceneryHit = SGVec3d(matrix.preMult(_sceneryHit.osg()));
+ _sceneryHit = toSG(matrix.preMult(toOsg(_sceneryHit)));
} else {
_material = material;
_haveHit = haveHit;
SGLineSegmentd downSeg(_center, _center + _maxDown*_down);
double maxDist = bound._radius + _radius;
- return distSqr(downSeg, SGVec3d(bound._center)) <= maxDist*maxDist;
+ SGVec3d boundCenter(toVec3d(toSG(bound._center)));
+ return distSqr(downSeg, boundCenter) <= maxDist*maxDist;
}
SGSharedPtr<simgear::BVHNode> getBVHNode() const
SGGeod geodPt = SGGeod::fromCart(pt);
// Don't blow away the cache ground_radius and stuff if there's no
// scenery
- if (!globals->get_tile_mgr()->scenery_available(geodPt, rad)) {
+ if (!globals->get_tile_mgr()->schedule_scenery(geodPt, rad, 1.0)) {
SG_LOG(SG_FLIGHT, SG_WARN, "prepare_ground_cache(): scenery_available "
"returns false at " << geodPt << " " << pt << " " << rad);
return false;
if (_id == transform.getId()) {
_foundId = true;
- return;
+ } else {
+ transform.traverse(*this);
}
- transform.traverse(*this);
-
if (_foundId) {
SGMatrixd toWorld = transform.getToWorldTransform(_time);
SGVec3d referencePoint = _bodyToWorld.xformPt(SGVec3d::zeros());
class FGGroundCache::CatapultFinder : public BVHVisitor {
public:
CatapultFinder(const SGSphered& sphere, const double& t) :
+ _haveLineSegment(false),
_sphere(sphere),
- _time(t),
- _haveLineSegment(false)
+ _time(t)
{ }
virtual void apply(BVHGroup& leaf)