载入中...
搜索中...
未找到
BrushKernel.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
6
7#include <vector>
8
9namespace eve::editor {
10
13 float centerX = 0.f;
14 float centerY = 0.f;
15 float radius = 0.5f;
16 float rotation = 0.f;
17};
18
20struct BrushPoint {
21 int x = 0;
22 int y = 0;
23 float weight = 0.f;
24};
25
28public:
30 virtual ~IBrushSampleSink() = default;
32 virtual void emit(int x, int y, float weight) = 0;
33};
34
37public:
39 virtual ~IBrushFalloff() = default;
41 virtual float evaluate(float normalizedDistance) const = 0;
42};
43
46public:
48 float evaluate(float normalizedDistance) const override;
49};
50
53public:
55 float evaluate(float normalizedDistance) const override;
56};
57
59class SmoothBrushFalloff final : public IBrushFalloff {
60public:
62 float evaluate(float normalizedDistance) const override;
63};
64
67public:
69 virtual ~IBrushKernel() = default;
71 virtual EditRegion bounds(const BrushSample &sample) const = 0;
73 virtual void sample(const BrushSample &sample, IBrushSampleSink &sink) const = 0;
74};
75
78public:
80 explicit CircleBrushKernel(const IBrushFalloff *falloff = nullptr);
82 void setFalloff(const IBrushFalloff *falloff) { falloff_ = falloff; }
84 EditRegion bounds(const BrushSample &sample) const override;
86 void sample(const BrushSample &sample, IBrushSampleSink &sink) const override;
87private:
88 const IBrushFalloff *falloff_ = nullptr;
89};
90
93public:
95 explicit BoxBrushKernel(const IBrushFalloff *falloff = nullptr);
97 void setFalloff(const IBrushFalloff *falloff) { falloff_ = falloff; }
99 EditRegion bounds(const BrushSample &sample) const override;
101 void sample(const BrushSample &sample, IBrushSampleSink &sink) const override;
102private:
103 const IBrushFalloff *falloff_ = nullptr;
104};
105
108public:
110 void emit(int x, int y, float weight) override;
112 void clear() { points_.clear(); }
114 int size() const { return static_cast<int>(points_.size()); }
116 const BrushPoint &point(int index) const;
117private:
118 std::vector<BrushPoint> points_;
119};
120
121} // namespace eve::editor
float y
Definition AnimClip.cpp:738
float x
Definition AnimClip.cpp:738
#define EVENGINE_API_ORCHESTRATION
Definition Export.h:111
uint32_t index
glm::vec3 point
Rotatable square kernel using a non-owning falloff strategy.
Definition BrushKernel.h:92
void setFalloff(const IBrushFalloff *falloff)
Sets the falloff.
Definition BrushKernel.h:97
Convenience sink for previews, tests and command construction.
int size() const
Returns the size of .
Circular weighted kernel using a non-owning falloff strategy.
Definition BrushKernel.h:77
void setFalloff(const IBrushFalloff *falloff)
Sets the falloff.
Definition BrushKernel.h:82
EVENGINE_API_ORCHESTRATION public API.
Definition BrushKernel.h:45
Replaceable mapping from normalized distance to brush strength.
Definition BrushKernel.h:36
virtual ~IBrushFalloff()=default
Releases IBrushFalloff resources.
virtual float evaluate(float normalizedDistance) const =0
Evaluate.
Shape protocol shared by tile, terrain, mask and custom tools.
Definition BrushKernel.h:66
virtual EditRegion bounds(const BrushSample &sample) const =0
Bounds.
virtual ~IBrushKernel()=default
Releases IBrushKernel resources.
virtual void sample(const BrushSample &sample, IBrushSampleSink &sink) const =0
Sample.
Receives weighted points without constraining their storage.
Definition BrushKernel.h:27
virtual ~IBrushSampleSink()=default
Releases IBrushSampleSink resources.
virtual void emit(int x, int y, float weight)=0
Emit.
EVENGINE_API_ORCHESTRATION public API.
Definition BrushKernel.h:52
SmoothBrushFalloff public API.
Definition BrushKernel.h:59
float evaluate(float normalizedDistance) const override
Evaluate.
EditRegion public API.
One weighted grid coordinate emitted by a brush kernel.
Definition BrushKernel.h:20
Location and size passed to an interchangeable brush kernel.
Definition BrushKernel.h:12
glm::vec4 bounds