Environment

class Environment

The main class that manages environment data. Usually, you will create a single instance of Environment, which will persist while your 3D game or simulation world is active.

If you use environment directly and not via TrueSkyRenderer, you must call the following each frame:

SetRealTime(time_seconds); skyKeyframer->TimeStep(step_days); Update();

Public Functions

Environment(simul::base::MemoryInterface *mem = NULL)

Constructor - initialize with an optional memory allocator.

virtual ~Environment()

Destructor.

void CreateSubObjects()

Call this to create the keyframer sub-objects. If not called before the first Update(), it will be called from there.

void SetRealTime(double rt_sec)

Call this once per frame before Update() if you use real-time updates for clouds, rain, lightning, sky keyframes etc.

void Update()

Call this once per-frame.

void Save(simul::sky::Output &os) const

Save a sky sequence as binary (the .seq file format); this is a low-overhead method of storing and retrieving sequences, but is subject to format changes, so sequences should generally be stored as text (see SaveToText).

void Load(simul::sky::Input &is)

Load a sequence from the binary .seq format.

void SaveToText(simul::crossplatform::TextOutput &output) const

Save a sky sequence as text (the .sq file format). This is the standard means of storing sequences.

void LoadFromText(simul::crossplatform::TextInput &input)

Load a sequence from the text .sq format.

void New()

Clear the sequence.

void Reset()

Force recalculation of any cached values.

CloudKeyframer *GetCloudKeyframer(sky::uid uid)

Get the cloud keyframer with the specified uid.

bool DeleteCloudKeyframer(sky::uid uid)

Delete the specified cloud layer.

bool DeleteCloudKeyframe(sky::uid uid)

Delete the specified cloud keyframe.

CloudKeyframer *GetDefaultCloudKeyframer()
unsigned GetKeyframersChecksum() const

A checksum for the keyframer setup.

sky::BaseKeyframe *GetCloudKeyframe(sky::uid uid) const
CloudKeyframer *GetCloudKeyframerByLayerIndex(int layer) const
sky::uid GetCloudKeyframerUIDByLayerIndex(int layer) const
virtual clouds::CloudKeyframer *CreateCloudKeyframer(base::MemoryInterface *m, bool make2d, sky::uid uid = 0)

Override this to create a custom derived keyframer. Valid id’s are anything greater than zero.

Public Members

std::map<sky::uid, simul::clouds::CloudKeyframer*> cloudKeyframers

Map of 3D Cloud Layers.

simul::sky::SkyKeyframer *skyKeyframer

The atmosphere/sky keyframer.

unsigned setupChecksum

Public Static Functions

static Environment *Create(simul::base::MemoryInterface *m = nullptr)

Create an Environment.

static void Destroy(Environment *env)

Destroy an Environment .