Cuberite
A lightweight, fast and extensible game server for Minecraft
CompoGen.h
Go to the documentation of this file.
1 
2 // CompoGen.h
3 
4 /* Interfaces to the various terrain composition generators:
5  - cCompoGenSameBlock
6  - cCompoGenDebugBiomes
7  - cCompoGenClassic
8  - cCompoGenBiomal
9  - cCompoGenNether
10  - cCompoGenCache
11 */
12 
13 
14 
15 
16 
17 #pragma once
18 
19 #include "ComposableGenerator.h"
20 #include "../Noise/Noise.h"
21 
22 
23 
24 
25 
28 {
29 public:
32  m_IsBedrocked(true)
33  {}
34 
35 protected:
36 
39 
40  // cTerrainCompositionGen overrides:
41  virtual void ComposeTerrain(cChunkDesc & a_ChunkDesc, const cChunkDesc::Shape & a_Shape) override;
42  virtual void InitializeCompoGen(cIniFile & a_IniFile) override;
43 } ;
44 
45 
46 
47 
48 
51 {
52 public:
54 
55 protected:
56 
57  // cTerrainCompositionGen overrides:
58  virtual void ComposeTerrain(cChunkDesc & a_ChunkDesc, const cChunkDesc::Shape & a_Shape) override;
59 } ;
60 
61 
62 
63 
64 
67 {
68 public:
69  cCompoGenClassic(void);
70 
71 protected:
72 
82 
83  // cTerrainCompositionGen overrides:
84  virtual void ComposeTerrain(cChunkDesc & a_ChunkDesc, const cChunkDesc::Shape & a_Shape) override;
85  virtual void InitializeCompoGen(cIniFile & a_IniFile) override;
86 } ;
87 
88 
89 
90 
91 
94 {
95 public:
96  cCompoGenNether(int a_Seed);
97 
98 protected:
101 
103 
104  // cTerrainCompositionGen overrides:
105  virtual void ComposeTerrain(cChunkDesc & a_ChunkDesc, const cChunkDesc::Shape & a_Shape) override;
106  virtual void InitializeCompoGen(cIniFile & a_IniFile) override;
107 } ;
108 
109 
110 
111 
112 
116 {
117 public:
118  cCompoGenCache(std::unique_ptr<cTerrainCompositionGen> a_Underlying, int a_CacheSize);
119  virtual ~cCompoGenCache() override;
120 
121  // cTerrainCompositionGen override:
122  virtual void ComposeTerrain(cChunkDesc & a_ChunkDesc, const cChunkDesc::Shape & a_Shape) override;
123  virtual void InitializeCompoGen(cIniFile & a_IniFile) override;
124 
125 protected:
126 
127  std::unique_ptr<cTerrainCompositionGen> m_Underlying;
128 
129  struct sCacheData
130  {
131  int m_ChunkX;
132  int m_ChunkZ;
134  cChunkDesc::BlockNibbleBytes m_BlockMetas; // The metas are uncompressed, 1 meta per byte
136  } ;
137 
138  // To avoid moving large amounts of data for the MRU behavior, we MRU-ize indices to an array of the actual data
140  int * m_CacheOrder; // MRU-ized order, indices into m_CacheData array
141  sCacheData * m_CacheData; // m_CacheData[m_CacheOrder[0]] is the most recently used
142 
143  // Cache statistics
146  int m_TotalChain; // Number of cache items walked to get to a hit (only added for hits)
147 } ;
@ E_BLOCK_STONE
Definition: BlockType.h:11
unsigned char BLOCKTYPE
The datatype used by blockdata.
Definition: ChunkDef.h:41
BLOCKTYPE BlockTypes[NumBlocks]
The type used for block type operations and storage, AXIS_ORDER ordering.
Definition: ChunkDef.h:140
HEIGHTTYPE HeightMap[Width *Width]
The type used for any heightmap operations and storage; idx = x + Width * z; Height points to the hig...
Definition: ChunkDef.h:132
Byte Shape[256 *16 *16]
The datatype used to represent the entire chunk worth of shape.
Definition: ChunkDesc.h:36
NIBBLETYPE BlockNibbleBytes[cChunkDef::NumBlocks]
Uncompressed block metas, 1 meta per byte.
Definition: ChunkDesc.h:39
cCompoGenSameBlock(void)
Definition: CompoGen.h:30
virtual void ComposeTerrain(cChunkDesc &a_ChunkDesc, const cChunkDesc::Shape &a_Shape) override
Generates the chunk's composition into a_ChunkDesc, using the terrain shape provided in a_Shape.
Definition: CompoGen.cpp:23
BLOCKTYPE m_BlockType
Definition: CompoGen.h:37
virtual void InitializeCompoGen(cIniFile &a_IniFile) override
Reads parameters from the ini file, prepares generator for use.
Definition: CompoGen.cpp:53
cCompoGenDebugBiomes(void)
Definition: CompoGen.h:53
virtual void ComposeTerrain(cChunkDesc &a_ChunkDesc, const cChunkDesc::Shape &a_Shape) override
Generates the chunk's composition into a_ChunkDesc, using the terrain shape provided in a_Shape.
Definition: CompoGen.cpp:66
BLOCKTYPE m_BlockBeach
Definition: CompoGen.h:79
virtual void ComposeTerrain(cChunkDesc &a_ChunkDesc, const cChunkDesc::Shape &a_Shape) override
Generates the chunk's composition into a_ChunkDesc, using the terrain shape provided in a_Shape.
Definition: CompoGen.cpp:135
BLOCKTYPE m_BlockTop
Definition: CompoGen.h:76
BLOCKTYPE m_BlockBeachBottom
Definition: CompoGen.h:80
BLOCKTYPE m_BlockMiddle
Definition: CompoGen.h:77
BLOCKTYPE m_BlockSea
Definition: CompoGen.h:81
BLOCKTYPE m_BlockBottom
Definition: CompoGen.h:78
virtual void InitializeCompoGen(cIniFile &a_IniFile) override
Reads parameters from the ini file, prepares generator for use.
Definition: CompoGen.cpp:197
cCompoGenClassic(void)
Definition: CompoGen.cpp:118
cCompoGenNether(int a_Seed)
Definition: CompoGen.cpp:217
virtual void ComposeTerrain(cChunkDesc &a_ChunkDesc, const cChunkDesc::Shape &a_Shape) override
Generates the chunk's composition into a_ChunkDesc, using the terrain shape provided in a_Shape.
Definition: CompoGen.cpp:228
cNoise m_Noise2
Definition: CompoGen.h:100
cNoise m_Noise1
Definition: CompoGen.h:99
virtual void InitializeCompoGen(cIniFile &a_IniFile) override
Reads parameters from the ini file, prepares generator for use.
Definition: CompoGen.cpp:320
double m_MaxThreshold
Definition: CompoGen.h:102
Caches most-recently-used chunk composition of another composition generator.
Definition: CompoGen.h:116
sCacheData * m_CacheData
Definition: CompoGen.h:141
virtual ~cCompoGenCache() override
Definition: CompoGen.cpp:353
virtual void InitializeCompoGen(cIniFile &a_IniFile) override
Reads parameters from the ini file, prepares generator for use.
Definition: CompoGen.cpp:429
int * m_CacheOrder
Definition: CompoGen.h:140
virtual void ComposeTerrain(cChunkDesc &a_ChunkDesc, const cChunkDesc::Shape &a_Shape) override
Generates the chunk's composition into a_ChunkDesc, using the terrain shape provided in a_Shape.
Definition: CompoGen.cpp:365
cCompoGenCache(std::unique_ptr< cTerrainCompositionGen > a_Underlying, int a_CacheSize)
Definition: CompoGen.cpp:332
int m_TotalChain
Definition: CompoGen.h:146
std::unique_ptr< cTerrainCompositionGen > m_Underlying
Definition: CompoGen.h:127
cChunkDef::BlockTypes m_BlockTypes
Definition: CompoGen.h:133
cChunkDesc::BlockNibbleBytes m_BlockMetas
Definition: CompoGen.h:134
cChunkDef::HeightMap m_HeightMap
Definition: CompoGen.h:135
The interface that a terrain composition generator must implement Terrain composition takes chunk coo...
Definition: Noise.h:20