Ejemplo n.º 1
0
void Scene::updateBodyDetails(Camera *cam) {
    for (unsigned int i = 0; i < m_bodies.size(); i++) {
        Planet *body = &m_bodies.at(i);

        // determine what level the planet should be rendered at
        Vector3 eye_to_planet = body->getCenter() - cam->getEye();
        float dist = eye_to_planet.length();
        dist -= body->getRadius();

        if (dist >= 0 && dist < .9) {
            body->setDetail(VERY_HIGH);
        } else if (dist >= .9 && dist < 1.5) {
            body->setDetail(HIGH);
        } else if (dist >= 1.5 && dist < 2.5) {
            body->setDetail(MEDIUM);
        } else if (dist >= 2.5 && dist < 4) {
            body->setDetail(LOW);
        } else {
            body->setDetail(VERY_LOW);
        }
    }
}