Recast  1
Game with custom magic
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Pages
ScalingGeneratableChunkedTemperatureWorldInjector.hpp
Go to the documentation of this file.
1 //
2 // Created by Oleg Morozenkov on 20.06.17.
3 //
4 
5 #ifndef RECAST_SCALINGGENERATABLECHUNKEDTEMPERATUREWORLDINJECTOR_H
6 #define RECAST_SCALINGGENERATABLECHUNKEDTEMPERATUREWORLDINJECTOR_H
7 
8 
9 #include <chrono>
10 #include <memory>
22 
29 public:
31 
37  bool hasChunkBounds() const noexcept;
38 
45 
51  void setChunkBounds(Parallelepiped chunkBounds);
52 
58  bool hasTemperatureExchangeCoefficient() const noexcept;
59 
66  double temperatureExchangeCoefficient() const;
67 
74  void setTemperatureExchangeCoefficient(double temperatureExchangeCoefficient);
75 
81  bool hasMinUpdateDelta() const noexcept;
82 
89  std::chrono::milliseconds minUpdateDelta() const;
90 
97  void setMinUpdateDelta(std::chrono::milliseconds minUpdateDelta);
98 
104  std::shared_ptr<ITemperatureWorldChunkableObservable<ITemperatureWorldChunkableGeneratable<ITemperatureWorldChunkableMutable<ITemperatureWorldChunkable<ITemperatureWorld>>>>> world();
105 
111  std::shared_ptr<IUpdater> updater();
112 
118  std::shared_ptr<ITimerBlockable<ITimer>> timer();
119 
120 protected:
121  static bool _needChunkFn(Coord x, Coord y, Coord z) noexcept;
122  static std::shared_ptr<ITemperatureWorldBoundable<ITemperatureWorld>> _makeChunkFn(Parallelepiped baseChunkBounds, Coord x, Coord y, Coord z);
123  static std::shared_ptr<IUpdaterTemperatureWorldSemiChunkUpdatable<IUpdater>> _makeChunkUpdaterFn(double temperatureExchangeCoefficient, std::function<std::shared_ptr<ITimerBlockable<ITimer>>()> timerFactory, std::shared_ptr<ITemperatureWorldBoundable<ITemperatureWorld>> chunk);
124 
125  void _makeWorld();
126  void _makeUpdater();
127 
128  std::unique_ptr<Parallelepiped> _chunkBounds;
129  std::unique_ptr<double> _temperatureExchangeCoefficient;
130  std::unique_ptr<std::chrono::milliseconds> _minUpdateDelta;
131 
132  std::shared_ptr<ITemperatureWorldChunkableObservable<ITemperatureWorldChunkableGeneratable<ITemperatureWorldChunkableMutable<ITemperatureWorldChunkable<ITemperatureWorld>>>>> _world;
133  std::shared_ptr<IUpdater> _updater;
134 };
135 
136 
137 #endif //RECAST_SCALINGGENERATABLECHUNKEDTEMPERATUREWORLDINJECTOR_H
std::shared_ptr< IUpdater > _updater
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.hpp:133
void setChunkBounds(Parallelepiped chunkBounds)
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:31
std::shared_ptr< ITemperatureWorldChunkableObservable< ITemperatureWorldChunkableGeneratable< ITemperatureWorldChunkableMutable< ITemperatureWorldChunkable< ITemperatureWorld > > > > > _world
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.hpp:132
std::unique_ptr< std::chrono::milliseconds > _minUpdateDelta
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.hpp:130
static std::shared_ptr< ITemperatureWorldBoundable< ITemperatureWorld > > _makeChunkFn(Parallelepiped baseChunkBounds, Coord x, Coord y, Coord z)
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:101
double temperatureExchangeCoefficient() const
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:39
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.hpp:28
bool hasChunkBounds() const noexcept
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:23
Definition: Coord.hpp:16
bool hasTemperatureExchangeCoefficient() const noexcept
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:35
std::shared_ptr< ITemperatureWorldChunkableObservable< ITemperatureWorldChunkableGeneratable< ITemperatureWorldChunkableMutable< ITemperatureWorldChunkable< ITemperatureWorld > > > > > world()
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:60
Definition: Parallelepiped.hpp:17
void _makeUpdater()
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:89
ScalingGeneratableChunkedTemperatureWorldInjector()
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:17
static std::shared_ptr< IUpdaterTemperatureWorldSemiChunkUpdatable< IUpdater > > _makeChunkUpdaterFn(double temperatureExchangeCoefficient, std::function< std::shared_ptr< ITimerBlockable< ITimer >>()> timerFactory, std::shared_ptr< ITemperatureWorldBoundable< ITemperatureWorld >> chunk)
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:112
std::shared_ptr< ITimerBlockable< ITimer > > timer()
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:74
std::unique_ptr< double > _temperatureExchangeCoefficient
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.hpp:129
Parallelepiped chunkBounds() const
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:27
void setTemperatureExchangeCoefficient(double temperatureExchangeCoefficient)
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:43
void _makeWorld()
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:80
std::unique_ptr< Parallelepiped > _chunkBounds
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.hpp:128
void setMinUpdateDelta(std::chrono::milliseconds minUpdateDelta)
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:55
static bool _needChunkFn(Coord x, Coord y, Coord z) noexcept
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:97
std::shared_ptr< IUpdater > updater()
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:67
bool hasMinUpdateDelta() const noexcept
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:47
std::chrono::milliseconds minUpdateDelta() const
Definition: ScalingGeneratableChunkedTemperatureWorldInjector.cpp:51