mirror of
https://github.com/luanti-org/luanti.git
synced 2025-08-01 17:38:41 +00:00
Allow ObjDefManager instances to be cloned
This commit is contained in:
parent
d1c6cc72cc
commit
2062c80e21
13 changed files with 370 additions and 5 deletions
|
@ -72,6 +72,14 @@ void OreManager::clear()
|
|||
}
|
||||
|
||||
|
||||
OreManager *OreManager::clone() const
|
||||
{
|
||||
auto mgr = new OreManager();
|
||||
ObjDefManager::cloneTo(mgr);
|
||||
return mgr;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
|
@ -106,9 +114,37 @@ size_t Ore::placeOre(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax)
|
|||
}
|
||||
|
||||
|
||||
void Ore::cloneTo(Ore *def) const
|
||||
{
|
||||
ObjDef::cloneTo(def);
|
||||
NodeResolver::cloneTo(def);
|
||||
def->c_ore = c_ore;
|
||||
def->c_wherein = c_wherein;
|
||||
def->clust_scarcity = clust_scarcity;
|
||||
def->clust_num_ores = clust_num_ores;
|
||||
def->clust_size = clust_size;
|
||||
def->y_min = y_min;
|
||||
def->y_max = y_max;
|
||||
def->ore_param2 = ore_param2;
|
||||
def->flags = flags;
|
||||
def->nthresh = nthresh;
|
||||
def->np = np;
|
||||
def->noise = nullptr; // cannot be shared! so created on demand
|
||||
def->biomes = biomes;
|
||||
}
|
||||
|
||||
|
||||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
ObjDef *OreScatter::clone() const
|
||||
{
|
||||
auto def = new OreScatter();
|
||||
Ore::cloneTo(def);
|
||||
return def;
|
||||
}
|
||||
|
||||
|
||||
void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed,
|
||||
v3s16 nmin, v3s16 nmax, u8 *biomemap)
|
||||
{
|
||||
|
@ -158,6 +194,19 @@ void OreScatter::generate(MMVManip *vm, int mapseed, u32 blockseed,
|
|||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
ObjDef *OreSheet::clone() const
|
||||
{
|
||||
auto def = new OreSheet();
|
||||
Ore::cloneTo(def);
|
||||
|
||||
def->column_height_max = column_height_max;
|
||||
def->column_height_min = column_height_min;
|
||||
def->column_midpoint_factor = column_midpoint_factor;
|
||||
|
||||
return def;
|
||||
}
|
||||
|
||||
|
||||
void OreSheet::generate(MMVManip *vm, int mapseed, u32 blockseed,
|
||||
v3s16 nmin, v3s16 nmax, u8 *biomemap)
|
||||
{
|
||||
|
@ -221,6 +270,20 @@ OrePuff::~OrePuff()
|
|||
}
|
||||
|
||||
|
||||
ObjDef *OrePuff::clone() const
|
||||
{
|
||||
auto def = new OrePuff();
|
||||
Ore::cloneTo(def);
|
||||
|
||||
def->np_puff_top = np_puff_top;
|
||||
def->np_puff_bottom = np_puff_bottom;
|
||||
def->noise_puff_top = nullptr; // cannot be shared, on-demand
|
||||
def->noise_puff_bottom = nullptr;
|
||||
|
||||
return def;
|
||||
}
|
||||
|
||||
|
||||
void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed,
|
||||
v3s16 nmin, v3s16 nmax, u8 *biomemap)
|
||||
{
|
||||
|
@ -294,6 +357,14 @@ void OrePuff::generate(MMVManip *vm, int mapseed, u32 blockseed,
|
|||
///////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
ObjDef *OreBlob::clone() const
|
||||
{
|
||||
auto def = new OreBlob();
|
||||
Ore::cloneTo(def);
|
||||
return def;
|
||||
}
|
||||
|
||||
|
||||
void OreBlob::generate(MMVManip *vm, int mapseed, u32 blockseed,
|
||||
v3s16 nmin, v3s16 nmax, u8 *biomemap)
|
||||
{
|
||||
|
@ -366,6 +437,19 @@ OreVein::~OreVein()
|
|||
}
|
||||
|
||||
|
||||
ObjDef *OreVein::clone() const
|
||||
{
|
||||
auto def = new OreVein();
|
||||
Ore::cloneTo(def);
|
||||
|
||||
def->random_factor = random_factor;
|
||||
def->noise2 = nullptr; // cannot be shared, on-demand
|
||||
def->sizey_prev = sizey_prev;
|
||||
|
||||
return def;
|
||||
}
|
||||
|
||||
|
||||
void OreVein::generate(MMVManip *vm, int mapseed, u32 blockseed,
|
||||
v3s16 nmin, v3s16 nmax, u8 *biomemap)
|
||||
{
|
||||
|
@ -434,6 +518,19 @@ OreStratum::~OreStratum()
|
|||
}
|
||||
|
||||
|
||||
ObjDef *OreStratum::clone() const
|
||||
{
|
||||
auto def = new OreStratum();
|
||||
Ore::cloneTo(def);
|
||||
|
||||
def->np_stratum_thickness = np_stratum_thickness;
|
||||
def->noise_stratum_thickness = nullptr; // cannot be shared, on-demand
|
||||
def->stratum_thickness = stratum_thickness;
|
||||
|
||||
return def;
|
||||
}
|
||||
|
||||
|
||||
void OreStratum::generate(MMVManip *vm, int mapseed, u32 blockseed,
|
||||
v3s16 nmin, v3s16 nmax, u8 *biomemap)
|
||||
{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue