terrain-module/terrain_modifier_composite.h
2026-04-22 22:48:20 +02:00

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);