30 lines
750 B
C++
30 lines
750 B
C++
#pragma once
|
|
|
|
#include "macros.h"
|
|
#include "terrain/terrain_modifier.h"
|
|
|
|
class TerrainModifierComposite : public TerrainModifier {
|
|
GDCLASS(TerrainModifierComposite, TerrainModifier);
|
|
static void _bind_methods();
|
|
void push_all_changes();
|
|
void update_sub_modifiers();
|
|
void terrain_changed(Terrain *terrain);
|
|
|
|
public:
|
|
GDENUM(CompositeMode, Normal, Add, Multiply, Max, Min, Average, NormalMultiply);
|
|
|
|
protected:
|
|
void _notification(int what);
|
|
|
|
public:
|
|
float evaluate_at(Vector2 world_coordinate, float before) override;
|
|
|
|
private:
|
|
Vector<TerrainModifier *> sub_modifiers{};
|
|
CompositeMode mode{ Normal };
|
|
|
|
public:
|
|
GET_SET_FNS_EX(CompositeMode, mode, push_all_changes());
|
|
};
|
|
|
|
MAKE_TYPE_INFO(TerrainModifierComposite::CompositeMode, Variant::INT);
|