feat: started work on terrain editor tools
This commit is contained in:
parent
a61b52806a
commit
ac139f01b6
11 changed files with 423 additions and 0 deletions
51
modules/terrain/terrain_modifier.h
Normal file
51
modules/terrain/terrain_modifier.h
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
#pragma once
|
||||
|
||||
#include "core/object/object.h"
|
||||
#include "core/variant/variant.h"
|
||||
#include "macros.h"
|
||||
#include "scene/3d/node_3d.h"
|
||||
#include "scene/resources/curve.h"
|
||||
|
||||
class TerrainModifier : public Node3D {
|
||||
GDCLASS(TerrainModifier, Node3D);
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
GDENUM(BlendMode, Add, Subtract, Override);
|
||||
|
||||
protected:
|
||||
float blend(float under, float over, float weight);
|
||||
|
||||
public:
|
||||
virtual float evaluate_at(Vector2 world_coordinate, float before);
|
||||
|
||||
private:
|
||||
float blend_distance{ 1.0 };
|
||||
BlendMode blend_mode{ Add };
|
||||
|
||||
public:
|
||||
GET_SET_FNS(float, blend_distance);
|
||||
GET_SET_FNS(BlendMode, blend_mode);
|
||||
};
|
||||
|
||||
MAKE_TYPE_INFO(TerrainModifier::BlendMode, Variant::INT);
|
||||
|
||||
class TerrainModifierDistance : public TerrainModifier {
|
||||
GDCLASS(TerrainModifierDistance, TerrainModifier);
|
||||
static void _bind_methods();
|
||||
|
||||
protected:
|
||||
virtual float distance_at(Vector2 const &world_coordinate);
|
||||
|
||||
public:
|
||||
float evaluate_at(Vector2 world_coordinate, float before) override;
|
||||
PackedStringArray get_configuration_warnings() const override;
|
||||
|
||||
private:
|
||||
Ref<Curve> distance_weight_curve{};
|
||||
Ref<Curve> distance_height_curve{};
|
||||
|
||||
public:
|
||||
GET_SET_FNS_EX(Ref<Curve>, distance_weight_curve, update_configuration_warnings());
|
||||
GET_SET_FNS_EX(Ref<Curve>, distance_height_curve, update_configuration_warnings());
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue