Thank you.
Force update for SetNWN2Fog?
Débuté par
rjshae
, juil. 28 2010 03:53
#1
Posté 28 juillet 2010 - 03:53
The only way I seem to be able to get SetNWN2Fog to work properly is if I set it, then exit the area and re-enter. If I just set it nothing happens, even if I let the game time cycle through 24 hours. Does anybody know if there is a function that will force a refresh to the new fog state?
Thank you.
Thank you.
#2
Posté 28 juillet 2010 - 04:42
I don't have a problem with fog, it's in my codebase for weather, and i use a combination of SEF emitters as well as the fog which together end up making a good effect. However you might not be setting it for all the time periods you need to, this is the code i am using...
/**
* Description
* @author
* @param
* @see
* @return
*/
void CSLSetNWN2Fog( object oTarget, int nColor, float fFogStart, float fFogEnd)
{
SetNWN2Fog( oTarget, FOG_TYPE_NWN2_SUNRISE, nColor, fFogStart, fFogEnd );
SetNWN2Fog( oTarget, FOG_TYPE_NWN2_DAYTIME, nColor, fFogStart, fFogEnd );
SetNWN2Fog( oTarget, FOG_TYPE_NWN2_SUNSET, nColor, fFogStart, fFogEnd );
SetNWN2Fog( oTarget, FOG_TYPE_NWN2_MOONRISE, nColor, fFogStart, fFogEnd );
SetNWN2Fog( oTarget, FOG_TYPE_NWN2_NIGHTTIME, nColor, fFogStart, fFogEnd );
SetNWN2Fog( oTarget, FOG_TYPE_NWN2_MOONSET, nColor, fFogStart, fFogEnd );
}
/**
* Description
* @author
* @param
* @see
* @return
*/
void CSLResetNWN2Fog(object oTarget )
{
ResetNWN2Fog( oTarget, FOG_TYPE_NWN2_SUNRISE);
ResetNWN2Fog( oTarget, FOG_TYPE_NWN2_DAYTIME);
ResetNWN2Fog( oTarget, FOG_TYPE_NWN2_SUNSET);
ResetNWN2Fog( oTarget, FOG_TYPE_NWN2_MOONRISE);
ResetNWN2Fog( oTarget, FOG_TYPE_NWN2_NIGHTTIME);
ResetNWN2Fog( oTarget, FOG_TYPE_NWN2_MOONSET);
}
/// then this is an excerpt of how i set the actual fog
if ( iWeatherState & CSL_WEATHER_ATMOS_HAZE )
{
if (DEBUGGING >= 8) { SendMessageToPC( GetFirstPC(), "CSLEnviroSetWeather fog set to haze" ); }
CSLSetNWN2Fog( oArea, COLOR_WHITE, 35.0f-(iWeatherPower*3.0f), 180.0f-(iWeatherPower*16.0f) );
DelayCommand( 1.0f, CSLEnviroAreaEffectsFill( oArea, ENVIRO_SEF_WHITEHAZE, 0.0f, bRemovePreviousEfectFill ) );
bRemovePreviousEfectFill = FALSE;
}
else if ( iWeatherState & CSL_WEATHER_ATMOS_FOG )
{
if (DEBUGGING >= 8) { SendMessageToPC( GetFirstPC(), "CSLEnviroSetWeather fog set to fog" ); }
CSLSetNWN2Fog( oArea, COLOR_WHITE, 30.0f-(iWeatherPower*4.0f), 125.0f-(iWeatherPower*5.0f));
DelayCommand( 1.0f, CSLEnviroAreaEffectsFill( oArea, ENVIRO_SEF_WHITEFOG, 0.0f, bRemovePreviousEfectFill ) );
bRemovePreviousEfectFill = FALSE;
}
else if ( iWeatherState & CSL_WEATHER_ATMOS_SMOKE )
{
if (DEBUGGING >= 8) { SendMessageToPC( GetFirstPC(), "CSLEnviroSetWeather fog set to smoke" ); }
CSLSetNWN2Fog( oArea, COLOR_GREY, 35.0f-(iWeatherPower*2.0f), 160.0f-(iWeatherPower*5.0f));
DelayCommand( 1.0f, CSLEnviroAreaEffectsFill( oArea, ENVIRO_SEF_SMOKE, 0.0f, bRemovePreviousEfectFill ) );
bRemovePreviousEfectFill = FALSE;
}
else if ( iWeatherState & CSL_WEATHER_ATMOS_BLACK )
{
if (DEBUGGING >= 8) { SendMessageToPC( GetFirstPC(), "CSLEnviroSetWeather fog set to black" ); }
CSLSetNWN2Fog( oArea, COLOR_BLACK, 40.0f-(iWeatherPower*2.0f), 160.0f-(iWeatherPower*5.0f));
DelayCommand( 1.0f, CSLEnviroAreaEffectsFill( oArea, ENVIRO_SEF_BLACKFOG, 0.0f, bRemovePreviousEfectFill ) );
bRemovePreviousEfectFill = FALSE;
}
else if ( iWeatherState & CSL_WEATHER_ATMOS_FIERY )
{
if (DEBUGGING >= 8) { SendMessageToPC( GetFirstPC(), "CSLEnviroSetWeather fog set to fiery" ); }
CSLSetNWN2Fog( oArea, COLOR_RED, 40.0f-(iWeatherPower*2.0f), 160.0f-(iWeatherPower*5.0f));
DelayCommand( 1.0f, CSLEnviroAreaEffectsFill( oArea, ENVIRO_SEF_REDFOG, 0.0f, bRemovePreviousEfectFill ) );
bRemovePreviousEfectFill = FALSE;
}
else if ( iWeatherState & CSL_WEATHER_ATMOS_ACIDIC )
{
if (DEBUGGING >= 8) { SendMessageToPC( GetFirstPC(), "CSLEnviroSetWeather fog set to acidic" ); }
CSLSetNWN2Fog( oArea, COLOR_GREEN, 40.0f-(iWeatherPower*2.0f), 160.0f-(iWeatherPower*5.0f));
DelayCommand( 1.0f, CSLEnviroAreaEffectsFill( oArea, ENVIRO_SEF_GREENFOG, 0.0f, bRemovePreviousEfectFill ) );
bRemovePreviousEfectFill = FALSE;
}
else if ( iWeatherState & CSL_WEATHER_ATMOS_SAND )
{
if (DEBUGGING >= 8) { SendMessageToPC( GetFirstPC(), "CSLEnviroSetWeather fog set to sand" ); }
CSLSetNWN2Fog( oArea, COLOR_BROWN, 15.0f-(iWeatherPower*3.0f), 100.0f-(iWeatherPower*15.0f));
//DelayCommand( 1.0f, CSLEnviroAreaEffectsFill( oArea, ENVIRO_SEF_ORANGEFOG, 0.0f, bRemovePreviousEfectFill ) );
DelayCommand( 1.0f, CSLEnviroAreaEffectsFill( oArea, ENVIRO_SEF_SANDSTORM, 0.0f, bRemovePreviousEfectFill ) );
bRemovePreviousEfectFill = FALSE;
}
else if ( iWeatherState & CSL_WEATHER_TYPE_SNOW )
{
if (DEBUGGING >= 8) { SendMessageToPC( GetFirstPC(), "CSLEnviroSetWeather fog set to snow" ); }
CSLSetNWN2Fog( oArea, COLOR_WHITE, 30.0f-(iWeatherPower*5.0f), 120.0f-(iWeatherPower*15.0f));
DelayCommand( 1.0f, CSLEnviroAreaEffectsFill( oArea, ENVIRO_SEF_ORANGEFOG, 0.0f, bRemovePreviousEfectFill ) );
bRemovePreviousEfectFill = FALSE;
}
else
{
if (DEBUGGING >= 8) { SendMessageToPC( GetFirstPC(), "CSLEnviroSetWeather weather set to no visual effects" ); }
CSLResetNWN2Fog(oArea);
if ( bRemovePreviousEfectFill )
{
DelayCommand( 0.5f, CSLEnviroAreaEffectsRemove( oArea ) );
}
}
#3
Posté 28 juillet 2010 - 07:10
Actually I did set it for all time periods, so I don't believe that's the problem. Maybe there's a patch fix for it then? Dunno. Thanks for the response.





Retour en haut







