Recast  1
Game with custom magic
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
Public Member Functions | Protected Attributes | List of all members
GeneratableChunkedTemperatureWorld Class Reference

#include <GeneratableChunkedTemperatureWorld.hpp>

Inheritance diagram for GeneratableChunkedTemperatureWorld:
Inheritance graph
Collaboration diagram for GeneratableChunkedTemperatureWorld:
Collaboration graph

Public Member Functions

 GeneratableChunkedTemperatureWorld (GeneratableChunkedTemperatureWorldTypedefs::NeedChunkFn needChunkFn, GeneratableChunkedTemperatureWorldTypedefs::MakeChunkFn makeChunkFn)
 
bool hasOrIsGeneratableChunk (Coord x, Coord y, Coord z) const noexceptoverride
 
std::shared_ptr
< ITemperatureWorldBoundable
< ITemperatureWorld > > 
getOrGenerateChunk (Coord x, Coord y, Coord z) override
 
void addChunk (std::shared_ptr< ITemperatureWorldBoundable< ITemperatureWorld >> chunk) override
 
void removeChunk (std::shared_ptr< ITemperatureWorldBoundable< ITemperatureWorld >> chunk) override
 
void onChunkAdd (OnChunkEventFn func) override
 
void onChunkRemove (OnChunkEventFn func) override
 
- Public Member Functions inherited from ITemperatureWorld
virtual ~ITemperatureWorld () noexcept=default
 
- Public Member Functions inherited from ChunkedTemperatureWorld
 ChunkedTemperatureWorld ()
 
bool hasChunk (Coord x, Coord y, Coord z) const noexceptoverride
 
std::shared_ptr
< ITemperatureWorldBoundable
< ITemperatureWorld > > 
getChunk (Coord x, Coord y, Coord z) const override
 
void foreachChunk (ForeachChunkFn func) const override
 
bool has (Coord x, Coord y, Coord z) const noexceptoverride
 
Temperature get (Coord x, Coord y, Coord z) const override
 
void set (Coord x, Coord y, Coord z, Temperature temperature) override
 
void amplify (Coord x, Coord y, Coord z, Temperature temperature) override
 
Coord previousCoordX (Coord x) const noexceptoverride
 
Coord previousCoordY (Coord y) const noexceptoverride
 
Coord previousCoordZ (Coord z) const noexceptoverride
 
Coord nextCoordX (Coord x) const noexceptoverride
 
Coord nextCoordY (Coord y) const noexceptoverride
 
Coord nextCoordZ (Coord z) const noexceptoverride
 

Protected Attributes

GeneratableChunkedTemperatureWorldTypedefs::NeedChunkFn _needChunkFn
 
GeneratableChunkedTemperatureWorldTypedefs::MakeChunkFn _makeChunkFn
 
std::list< OnChunkEventFn_onChunkAddListeners
 
std::list< OnChunkEventFn_onChunkRemoveListeners
 
- Protected Attributes inherited from ChunkedTemperatureWorld
std::list< std::shared_ptr
< ITemperatureWorldBoundable
< ITemperatureWorld > > > 
_chunks
 

Additional Inherited Members

- Public Types inherited from ITemperatureWorldChunkableMixin
using ForeachChunkFn = std::function< void(const std::shared_ptr< ITemperatureWorldBoundable< ITemperatureWorld >> &)>
 
- Public Types inherited from ITemperatureWorldChunkableObservableMixin
using OnChunkEventFn = std::function< void(std::shared_ptr< ITemperatureWorldBoundable< ITemperatureWorld >>)>
 

Detailed Description

Implementation of temperature world divided by chunks. It's backed by std::list. It will create new chunk if client accesses temperature of point in non-existing chunk.

Constructor & Destructor Documentation

GeneratableChunkedTemperatureWorld::GeneratableChunkedTemperatureWorld ( GeneratableChunkedTemperatureWorldTypedefs::NeedChunkFn  needChunkFn,
GeneratableChunkedTemperatureWorldTypedefs::MakeChunkFn  makeChunkFn 
)

Member Function Documentation

void GeneratableChunkedTemperatureWorld::addChunk ( std::shared_ptr< ITemperatureWorldBoundable< ITemperatureWorld >>  chunk)
overridevirtual

Adds a chunk to this temperature world.

Parameters
chunkChunk to add.

Reimplemented from ChunkedTemperatureWorld.

Reimplemented in ScalingGeneratableChunkedTemperatureWorld.

Here is the call graph for this function:

Here is the caller graph for this function:

shared_ptr< ITemperatureWorldBoundable< ITemperatureWorld > > GeneratableChunkedTemperatureWorld::getOrGenerateChunk ( Coord  x,
Coord  y,
Coord  z 
)
overridevirtual

Retrieves chunk which holds this point. If chunk doesn't exist, the method will generate chunk if it's possible.

Parameters
xX coordinate.
yY coordinate.
zZ coordinate.
Returns
Chunk at the point.

Implements ITemperatureWorldChunkableGeneratableMixin.

Here is the call graph for this function:

bool GeneratableChunkedTemperatureWorld::hasOrIsGeneratableChunk ( Coord  x,
Coord  y,
Coord  z 
) const
overridevirtualnoexcept

Tells whether the chunk which holds this point exists. If chunk doesn't exist, the method will tell whether it will generated on getOrGenerateChunk call. This method doesn't throw exceptions.

Parameters
xX coordinate.
yY coordinate.
zZ coordinate.
Returns
True if chunk exists.

Implements ITemperatureWorldChunkableGeneratableMixin.

void GeneratableChunkedTemperatureWorld::onChunkAdd ( OnChunkEventFn  func)
overridevirtual

Subscribes listener to chunk add events.

Parameters
funcListener.

Implements ITemperatureWorldChunkableObservableMixin.

void GeneratableChunkedTemperatureWorld::onChunkRemove ( OnChunkEventFn  func)
overridevirtual

Subscribes listener to chunk remove events.

Parameters
funcListener.

Implements ITemperatureWorldChunkableObservableMixin.

void GeneratableChunkedTemperatureWorld::removeChunk ( std::shared_ptr< ITemperatureWorldBoundable< ITemperatureWorld >>  chunk)
overridevirtual

Removes chunk from this temperature world.

Parameters
chunkChunk to remove.

Reimplemented from ChunkedTemperatureWorld.

Reimplemented in ScalingGeneratableChunkedTemperatureWorld.

Here is the call graph for this function:

Here is the caller graph for this function:

Member Data Documentation

GeneratableChunkedTemperatureWorldTypedefs::MakeChunkFn GeneratableChunkedTemperatureWorld::_makeChunkFn
protected
GeneratableChunkedTemperatureWorldTypedefs::NeedChunkFn GeneratableChunkedTemperatureWorld::_needChunkFn
protected
std::list<OnChunkEventFn> GeneratableChunkedTemperatureWorld::_onChunkAddListeners
protected
std::list<OnChunkEventFn> GeneratableChunkedTemperatureWorld::_onChunkRemoveListeners
protected

The documentation for this class was generated from the following files: