double SAngleDownloadPlanner::calculatePriority(ProxyObjectPtr proxy) { if (camera == NULL || !proxy) return 0; float radius = proxy->getBounds().radius(); Vector3d objLoc = proxy->getPosition(); Vector3d cameraLoc = camera->getPosition(); if (withinBound(radius, objLoc, cameraLoc)) return 0.99; Vector3d diff = cameraLoc - objLoc; SolidAngle sa = SolidAngle::fromCenterRadius((Vector3f)diff, radius); float priority = (sa.asFloat())/(SolidAngle::Max.asFloat()); return (double)priority; }