Allow different light cycle for different continents [breaks packed sheets]
This commit is contained in:
parent
661bb29406
commit
f7ad6e1a94
8 changed files with 26 additions and 7 deletions
|
@ -300,6 +300,9 @@ void CContinentParameters::build(const NLGEORGES::UFormElm &item)
|
||||||
if(readSeason<EGSPD::CSeason::Invalid)
|
if(readSeason<EGSPD::CSeason::Invalid)
|
||||||
ForceDisplayedSeason[season]= readSeason;
|
ForceDisplayedSeason[season]= readSeason;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Read light cycle
|
||||||
|
item.getValueByName(LightCycle, "LightCycle");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -393,6 +396,8 @@ void CContinentParameters::serial(class NLMISC::IStream &f) throw(NLMISC::EStrea
|
||||||
f.serial(SkySheet[i]);
|
f.serial(SkySheet[i]);
|
||||||
f.serialEnum(ForceDisplayedSeason[i]);
|
f.serialEnum(ForceDisplayedSeason[i]);
|
||||||
}
|
}
|
||||||
|
//
|
||||||
|
f.serial(LightCycle);
|
||||||
}
|
}
|
||||||
|
|
||||||
//=========================================================================
|
//=========================================================================
|
||||||
|
|
|
@ -62,9 +62,12 @@ public:
|
||||||
/// LandscapeIG filename.
|
/// LandscapeIG filename.
|
||||||
std::string LandscapeIG;
|
std::string LandscapeIG;
|
||||||
|
|
||||||
// New Sky system : gives name of the sky sheet per season. If present, this bypass the SkyDay & SkyNight fields
|
/// New Sky system : gives name of the sky sheet per season. If present, this bypass the SkyDay & SkyNight fields
|
||||||
std::string SkySheet[EGSPD::CSeason::Invalid];
|
std::string SkySheet[EGSPD::CSeason::Invalid];
|
||||||
|
|
||||||
|
/// Light Cycle sheet
|
||||||
|
std::string LightCycle;
|
||||||
|
|
||||||
/// SkyDay filename.
|
/// SkyDay filename.
|
||||||
std::string SkyDay;
|
std::string SkyDay;
|
||||||
|
|
||||||
|
|
|
@ -420,6 +420,11 @@ void CContinent::select(const CVectorD &pos, NLMISC::IProgressCallback &progress
|
||||||
progress.progress (0);
|
progress.progress (0);
|
||||||
progress.pushCropedValues (0, 1.f/3.f);
|
progress.pushCropedValues (0, 1.f/3.f);
|
||||||
|
|
||||||
|
{
|
||||||
|
H_AUTO(InitRZWorldLightCycle)
|
||||||
|
loadWorldLightCycle(CSheetId(LightCycle));
|
||||||
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
H_AUTO(InitRZWorldIndoor)
|
H_AUTO(InitRZWorldIndoor)
|
||||||
if (!ClientCfg.Light)
|
if (!ClientCfg.Light)
|
||||||
|
|
|
@ -587,7 +587,7 @@ void CContinentManager::reloadWeather()
|
||||||
|
|
||||||
WeatherManager.init();
|
WeatherManager.init();
|
||||||
// Load description of light cycles for each season.
|
// Load description of light cycles for each season.
|
||||||
loadWorldLightCycle();
|
loadWorldLightCycle(CSheetId::Unknown); //FIXME
|
||||||
// Load global weather function parameters
|
// Load global weather function parameters
|
||||||
loadWeatherFunctionParams();
|
loadWeatherFunctionParams();
|
||||||
|
|
||||||
|
|
|
@ -411,7 +411,7 @@ static void initWeather()
|
||||||
{
|
{
|
||||||
WeatherManager.init();
|
WeatherManager.init();
|
||||||
// Load description of light cycles for each season.
|
// Load description of light cycles for each season.
|
||||||
loadWorldLightCycle();
|
loadWorldLightCycle(CSheetId::Unknown); // FIXME
|
||||||
// Load global weather function parameters
|
// Load global weather function parameters
|
||||||
loadWeatherFunctionParams();
|
loadWeatherFunctionParams();
|
||||||
//
|
//
|
||||||
|
|
|
@ -442,7 +442,7 @@ class CAHReloadSeason: public IActionHandler
|
||||||
virtual void execute (CCtrlBase * /* pCaller */, const string &/* Params */)
|
virtual void execute (CCtrlBase * /* pCaller */, const string &/* Params */)
|
||||||
{
|
{
|
||||||
// reload all parameters for weather
|
// reload all parameters for weather
|
||||||
loadWorldLightCycle();
|
loadWorldLightCycle(CSheetId::Unknown); // FIXME
|
||||||
loadWeatherFunctionParams();
|
loadWeatherFunctionParams();
|
||||||
WeatherManager.init();
|
WeatherManager.init();
|
||||||
ContinentMngr.reloadWeather();
|
ContinentMngr.reloadWeather();
|
||||||
|
|
|
@ -87,9 +87,14 @@ void buildLightCycleDesc(CLightCycleDesc &dest,EGSPD::CSeason::TSeason season)
|
||||||
else dest.DuskRatio = 0.5f;
|
else dest.DuskRatio = 0.5f;
|
||||||
}
|
}
|
||||||
|
|
||||||
void loadWorldLightCycle()
|
void loadWorldLightCycle(CSheetId lightCycle)
|
||||||
{
|
{
|
||||||
CEntitySheet *sheet = SheetMngr.get(CSheetId("ryzom.light_cycle"));
|
nldebug("Load light cycle '%s'", lightCycle.toString().c_str());
|
||||||
|
|
||||||
|
if (lightCycle == CSheetId::Unknown)
|
||||||
|
lightCycle = CSheetId("ryzom.light_cycle");
|
||||||
|
|
||||||
|
CEntitySheet *sheet = SheetMngr.get(lightCycle);
|
||||||
nlassert(sheet);
|
nlassert(sheet);
|
||||||
if (sheet->type() != CEntitySheet::LIGHT_CYCLE)
|
if (sheet->type() != CEntitySheet::LIGHT_CYCLE)
|
||||||
{
|
{
|
||||||
|
|
|
@ -20,6 +20,7 @@
|
||||||
#define CL_WORLD_LIGHT_CYCLE_H
|
#define CL_WORLD_LIGHT_CYCLE_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <nel/misc/sheet_id.h>
|
||||||
#include "game_share/season.h"
|
#include "game_share/season.h"
|
||||||
|
|
||||||
struct CLightCycleDesc;
|
struct CLightCycleDesc;
|
||||||
|
@ -47,7 +48,7 @@ extern EGSPD::CSeason::TSeason StartupSeason;
|
||||||
extern CWeatherFunctionParamsSheet *WeatherFunctionParams;
|
extern CWeatherFunctionParamsSheet *WeatherFunctionParams;
|
||||||
|
|
||||||
// load the world light cycle from a sheet
|
// load the world light cycle from a sheet
|
||||||
void loadWorldLightCycle();
|
void loadWorldLightCycle(NLMISC::CSheetId lightCycleSheet);
|
||||||
|
|
||||||
// load the weather function params
|
// load the weather function params
|
||||||
void loadWeatherFunctionParams();
|
void loadWeatherFunctionParams();
|
||||||
|
|
Loading…
Reference in a new issue