载入中...
搜索中...
未找到
MotionBuilder.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
11
12#include <string>
13#include <utility>
14
15namespace eve::animation {
16
17class MotionSequence;
18
27public:
29 MotionBuilder(MotionRuntime &runtime, float from, float to, float duration);
30
32 MotionBuilder &ease(std::string kind);
34 MotionBuilder &delay(float seconds);
36 MotionBuilder &loops(int count, MotionLoopMode mode = MotionLoopMode::Restart);
44 MotionBuilder &cancelOnError(bool enabled);
45
47 MotionBuilder &style(MotionStyle style);
49 MotionBuilder &frequency(int count);
51 MotionBuilder &dampingRatio(float ratio);
53 MotionBuilder &seed(std::uint32_t value);
54
60
62 [[nodiscard]] eve::Result<MotionHandle> run();
63
65 [[nodiscard]] eve::Result<MotionHandle> bind(IMotionFloatSink &sink);
66
67 [[nodiscard]] MotionRuntime &runtime() noexcept { return runtime_; }
68 [[nodiscard]] const MotionRuntime &runtime() const noexcept { return runtime_; }
69
74 [[nodiscard]] eve::Result<MotionRuntime::FloatDesc> takeDesc();
75
76private:
77 friend class MotionSequence;
78
79 MotionRuntime &runtime_;
81 bool consumed_ = false;
82};
83
86public:
89
91 MotionVec2Builder &ease(std::string kind);
93 MotionVec2Builder &delay(float seconds);
95 MotionVec2Builder &loops(int count, MotionLoopMode mode = MotionLoopMode::Restart);
103 MotionVec2Builder &cancelOnError(bool enabled);
104
106 MotionVec2Builder &style(MotionStyle style);
108 MotionVec2Builder &frequency(int count);
110 MotionVec2Builder &dampingRatio(float ratio);
112 MotionVec2Builder &seed(std::uint32_t value);
115
117 [[nodiscard]] eve::Result<MotionHandle> run();
119 [[nodiscard]] eve::Result<MotionHandle> bind(IMotionVec2Sink &sink);
120
122 [[nodiscard]] MotionRuntime &runtime() noexcept { return runtime_; }
124 [[nodiscard]] const MotionRuntime &runtime() const noexcept { return runtime_; }
126 [[nodiscard]] eve::Result<MotionRuntime::Vec2Desc> takeDesc();
127
128private:
129 friend class MotionSequence;
130
131 MotionRuntime &runtime_;
133 bool consumed_ = false;
134};
135
138public:
141
143 MotionVec3Builder &ease(std::string kind);
145 MotionVec3Builder &delay(float seconds);
156
162 MotionVec3Builder &dampingRatio(float ratio);
164 MotionVec3Builder &seed(std::uint32_t value);
167
169 [[nodiscard]] eve::Result<MotionHandle> run();
172
174 [[nodiscard]] MotionRuntime &runtime() noexcept { return runtime_; }
176 [[nodiscard]] const MotionRuntime &runtime() const noexcept { return runtime_; }
179
180private:
181 friend class MotionSequence;
182
183 MotionRuntime &runtime_;
185 bool consumed_ = false;
186};
187
188
191public:
194
196 MotionColorBuilder &ease(std::string kind);
198 MotionColorBuilder &delay(float seconds);
200 MotionColorBuilder &loops(int count, MotionLoopMode mode = MotionLoopMode::Restart);
208 MotionColorBuilder &cancelOnError(bool enabled);
211
213 [[nodiscard]] eve::Result<MotionHandle> run();
215 [[nodiscard]] eve::Result<MotionHandle> bind(IMotionColorSink &sink);
216
218 [[nodiscard]] MotionRuntime &runtime() noexcept { return runtime_; }
220 [[nodiscard]] const MotionRuntime &runtime() const noexcept { return runtime_; }
222 [[nodiscard]] eve::Result<MotionRuntime::ColorDesc> takeDesc();
223
224private:
225 MotionRuntime &runtime_;
227 bool consumed_ = false;
228};
229
232public:
235
237 MotionQuatBuilder &ease(std::string kind);
239 MotionQuatBuilder &delay(float seconds);
241 MotionQuatBuilder &loops(int count, MotionLoopMode mode = MotionLoopMode::Restart);
249 MotionQuatBuilder &cancelOnError(bool enabled);
252
254 [[nodiscard]] eve::Result<MotionHandle> run();
256 [[nodiscard]] eve::Result<MotionHandle> bind(IMotionQuatSink &sink);
257
259 [[nodiscard]] MotionRuntime &runtime() noexcept { return runtime_; }
261 [[nodiscard]] const MotionRuntime &runtime() const noexcept { return runtime_; }
263 [[nodiscard]] eve::Result<MotionRuntime::QuatDesc> takeDesc();
264
265private:
266 MotionRuntime &runtime_;
268 bool consumed_ = false;
269};
270
271} // namespace eve::animation
double value
float duration
std::string from
#define EVENGINE_API_WORLD
Definition Export.h:109
HexCoordinates to
Cell the unit walks towards on this segment.
Definition HexUnits.cpp:64
JobFunc onComplete
TokenKind kind
Dense motion storage advanced by Animation::advance(SimulationStep).
LitMotion-style typed motion handles, values, and sink interfaces.
std::weak_ptr< Run > run
Definition OnnxGpgpu.cpp:25
std::uint32_t seed
Definition PointSet.cpp:807
std::uint32_t count
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Push target for a MotionColor motion.
Push target for a float motion. Lifetime is borrowed by MotionRuntime.
Definition MotionTypes.h:84
Push target for a MotionQuat motion.
Push target for a MotionVec2 motion.
Definition MotionTypes.h:96
Push target for a MotionVec3 motion.
Configure then bind/run a float motion into a MotionRuntime.
const MotionRuntime & runtime() const noexcept
MotionRuntime & runtime() noexcept
Color fluent builder (Tween / lerp only).
MotionRuntime & runtime() noexcept
Runtime.
const MotionRuntime & runtime() const noexcept
Runtime.
Quaternion fluent builder (Tween / slerp only).
MotionRuntime & runtime() noexcept
Runtime.
const MotionRuntime & runtime() const noexcept
Runtime.
Owns typed motion slots and applies SimulationStep updates.
std::function< void(MotionColor)> ColorCallback
std::function< void(float)> FloatCallback
std::function< void(MotionQuat)> QuatCallback
std::function< void()> VoidCallback
std::function< void(MotionVec2)> Vec2Callback
std::function< void(MotionVec3)> Vec3Callback
Schedule unspawned builders onto a shared MotionRuntime timeline.
const MotionRuntime & runtime() const noexcept
Runtime.
MotionRuntime & runtime() noexcept
Runtime.
const MotionRuntime & runtime() const noexcept
Runtime.
eve::Result< MotionHandle > bind(IMotionVec3Sink &sink)
Binds .
MotionVec3Builder & onUpdate(MotionRuntime::Vec3Callback cb)
On update.
MotionRuntime & runtime() noexcept
Runtime.
MotionVec3Builder & style(MotionStyle style)
Select Tween / Punch / Shake evaluation.
MotionVec3Builder & onCancel(MotionRuntime::VoidCallback cb)
On cancel.
eve::Result< MotionRuntime::Vec3Desc > takeDesc()
Take desc.
MotionVec3Builder & delay(float seconds)
Delay.
MotionVec3Builder & cancelOnError(bool enabled)
Cancel on error.
MotionVec3Builder & ease(std::string kind)
Ease.
eve::Result< MotionHandle > run()
Run.
MotionVec3Builder & frequency(int count)
Oscillation count for Punch/Shake (default 10).
MotionVec3Builder & dampingRatio(float ratio)
Damping ratio for Punch/Shake (0 = none, 1 = full).
MotionVec3Builder & loops(int count, MotionLoopMode mode=MotionLoopMode::Restart)
Loops.
MotionLoopMode
Loop behaviour after a cycle completes.
Definition MotionTypes.h:68
@ Restart
Jump back to start each cycle.
MotionStyle
Evaluation style for a motion slot.
Definition MotionTypes.h:77
bool enabled
Compact RGBA color used by motion adapters.
Definition MotionTypes.h:52
Compact quaternion used by motion adapters (xyzw).
Definition MotionTypes.h:60
Compact float2 used by motion adapters (avoids graphics math deps).
Definition MotionTypes.h:39
Compact float3 used by motion adapters.
Definition MotionTypes.h:45