天气控制

来源:互联网 发布:网络本科入学考试难吗 编辑:程序博客网 时间:2024/05/16 17:25

// 天气类型  =1,晴天 =2,阴天 =3,雾天 =4,雨天 =5,雪天

void  postWeather()
{
        //float fval, s, c;
    static float angle = 0.0f;
    char str[256], *cp = getenv("MPI_LOCATE_VEGA_PRIME");
 
    switch (m_curWeatherIdx)
 {

    case 1: // default settings
        m_env->setVisibilityColor(1.0f, 1.0f, 1.0f, 1.0f);
        m_env->setVisibilityRangeOpaque(60000.0f);
        m_sun->setHorizonColor(1.0f, 0.545f, 0.239f, 1.0f);
        m_skyDome->setGroundColor(0.2117f, 0.286f, 0.15f, 1.0f);
                   if (vpEnvGlobals::instance()->getSkyLightEnable()))
        {
            m_cloudLayer->setCoverageScale(0.26f);
            m_cloudLayer->setTextureTiling(2.0f, 2.0f);
            m_cloudLayer->setColor(0.3f, 0.3f, 0.3f, 1.0f);

        }
        else
        {
            sprintf(str, "%s/config/vegaprime/vpenv/cloud_scattered.inta", cp);
            m_cloudLayer->setTextureFile(str);
            m_cloudLayer->setTextureTiling(3.0f, 3.0f);
            m_cloudLayer->setColor(0.96f, 0.98f, 0.98f, 1.0f);
        }
        m_cloudLayer->setElevation(3000.0f, 5000.0f);
        m_cloudLayer->setTransitionRange(500.0f, 500.0f);
        m_wind->setSpeed(100.0f);
        m_snow->setEnable(false);
        m_rain->setEnable(false);
        break;
    case 2: // clear day, sparse clouds
        m_env->setVisibilityColor(1.0f, 1.0f, 1.0f, 1.0f);
        m_env->setVisibilityRangeOpaque(100000.0f);
        m_sun->setHorizonColor(1.0f, 0.6f, 0.29f, 1.0f);
        m_skyDome->setGroundColor(0.33f, 0.29f, 0.15f, 1.0f);
                   if (vpEnvGlobals::instance()->getSkyLightEnable())
        {

            m_cloudLayer->setCoverageScale(0.1f);
        }
        else

        {
            sprintf(str, "%s/config/vegaprime/vpenv/cloud_few.inta", cp);
            m_cloudLayer->setTextureFile(str);
            m_cloudLayer->setTextureTiling(5.0f, 5.0f);
            m_cloudLayer->setColor(0.96f, 0.98f, 0.98f, 1.0f);
        }
        m_cloudLayer->setElevation(3000.0f, 5000.0f);
        m_cloudLayer->setTransitionRange(500.0f, 500.0f);
        m_wind->setSpeed(15.0f);
        m_snow->setEnable(false);
        m_rain->setEnable(false);
        break;
     
    case 3: // overcast with fog
 
        m_env->setVisibilityColor(0.75f, 0.75f, 0.75f, 1.0f);

        m_env->setVisibilityRangeOpaque(5000.0f);
        m_sun->setHorizonColor(1.0f, 0.6f, 0.29f, 1.0f);
        m_skyDome->setGroundColor(0.8f, 0.82f, 0.83f, 1.0f);
                   if (vpEnvGlobals::instance()->getSkyLightEnable())
        {

            m_cloudLayer->setCoverageScale(0.5f);
        }
        else
        {
            sprintf(str, "%s/config/vegaprime/vpenv/cloud_overcast.inta", cp);
            m_cloudLayer->setTextureFile(str);
            m_cloudLayer->setTextureTiling(3.0f, 3.0f);
            m_cloudLayer->setColor(0.69f, 0.75f, 0.77f, 1.0f);
        }

        m_cloudLayer->setElevation(500.0f, 3000.0f);

        m_cloudLayer->setTransitionRange(500.0f, 500.0f);
        m_wind->setSpeed(0.0f);

        m_snow->setEnable(false);
        m_rain->setEnable(false); 
        break;
    case 4: // stormy, high wind,rain; L4 p0 m0 y) w4 f& Y7 D# [
        m_env->setVisibilityColor(0.40f, 0.43f, 0.45f, 1.0f);
        m_env->setVisibilityRangeOpaque(50000.0f);
        m_sun->setHorizonColor(0.65f, 0.45f, 0.25f, 1.0f);
        m_skyDome->setGroundColor(0.33f, 0.29f, 0.15f, 1.0f);
                   if (vpEnvGlobals::instance()->getSkyLightEnable())

        {

            m_cloudLayer->setCoverageScale(0.4f);
        }
        else
        {
            sprintf(str, "%s/config/vegaprime/vpenv/cloud_storm.inta", cp);
            m_cloudLayer->setTextureFile(str);
            m_cloudLayer->setTextureTiling(3.0f, 3.0f);
            m_cloudLayer->setColor(0.52f, 0.56f, 0.61f, 1.0f);
        }

        m_cloudLayer->setElevation(1000.0f, 4000.0f);
        m_cloudLayer->setTransitionRange(500.0f, 500.0f);
        m_wind->setSpeed(5.0f);
        m_snow->setEnable(false);

        m_rain->setEnable(true);
        break;

        case 5: // stormy, high wind,snow
        m_env->setVisibilityColor(0.40f, 0.43f, 0.45f, 1.0f);
        m_env->setVisibilityRangeOpaque(50000.0f);

        m_sun->setHorizonColor(0.65f, 0.45f, 0.25f, 1.0f);

        m_skyDome->setGroundColor(0.33f, 0.29f, 0.15f, 1.0f);
                   if (vpEnvGlobals::instance()->getSkyLightEnable())

        {

            m_cloudLayer->setCoverageScale(0.4f);

        }
        else
        {
            sprintf(str, "%s/config/vegaprime/vpenv/cloud_storm.inta", cp);
            m_cloudLayer->setTextureFile(str);

            m_cloudLayer->setTextureTiling(3.0f, 3.0f);
            m_cloudLayer->setColor(0.52f, 0.56f, 0.61f, 1.0f);
        }

        m_cloudLayer->setElevation(1000.0f, 4000.0f);
        m_cloudLayer->setTransitionRange(500.0f, 500.0f);
        m_wind->setSpeed(5.0f);

        m_snow->setEnable(true);

        m_rain->setEnable(false);
        break;
    default:
        break;

    }

}

 

原创粉丝点击