1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-01 17:38:41 +00:00

Schematics: Remove referenced schematics from Decorations on clear

This commit is contained in:
kwolekr 2015-04-17 00:52:48 -04:00
parent f0a1379e5a
commit 406d9ba87b
6 changed files with 67 additions and 38 deletions

View file

@ -61,7 +61,16 @@ struct CutoffData {
class Decoration : public ObjDef, public NodeResolver {
public:
INodeDefManager *ndef;
Decoration();
virtual ~Decoration();
virtual void resolveNodeNames();
size_t placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
//size_t placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p) = 0;
virtual int getHeight() = 0;
u32 flags;
int mapseed;
@ -75,42 +84,32 @@ public:
std::set<u8> biomes;
//std::list<CutoffData> cutoffs;
//JMutex cutoff_mutex;
Decoration();
virtual ~Decoration();
virtual void resolveNodeNames();
size_t placeDeco(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
//size_t placeCutoffs(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p) = 0;
virtual int getHeight() = 0;
};
class DecoSimple : public Decoration {
public:
virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p);
bool canPlaceDecoration(MMVManip *vm, v3s16 p);
virtual int getHeight();
virtual void resolveNodeNames();
std::vector<content_t> c_decos;
std::vector<content_t> c_spawnby;
s16 deco_height;
s16 deco_height_max;
s16 nspawnby;
virtual void resolveNodeNames();
bool canPlaceDecoration(MMVManip *vm, v3s16 p);
virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p);
virtual int getHeight();
};
class DecoSchematic : public Decoration {
public:
Rotation rotation;
Schematic *schematic;
std::string filename;
DecoSchematic();
virtual size_t generate(MMVManip *vm, PseudoRandom *pr, v3s16 p);
virtual int getHeight();
Rotation rotation;
Schematic *schematic;
};
@ -124,7 +123,7 @@ public:
class DecorationManager : public ObjDefManager {
public:
DecorationManager(IGameDef *gamedef);
~DecorationManager() {}
virtual ~DecorationManager() {}
const char *getObjectTitle() const
{
@ -145,8 +144,6 @@ public:
}
}
void clear();
size_t placeAllDecos(Mapgen *mg, u32 blockseed, v3s16 nmin, v3s16 nmax);
};