载入中...
搜索中...
未找到
EffectDefinitionRuntime.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
12#include "effects/EffectTypes.h"
13
14namespace eve::effects {
15
25 std::string stackKey;
26 int priority = 0;
27 double duration = 0.0;
28 double remaining = -1.0;
29 double magnitude = 0.0;
30 std::uint32_t stackCount = 1;
31 std::uint32_t maxStacks = 1;
34 std::vector<std::string> tags;
35};
36
46public:
57 [[nodiscard]] static eve::Result<EffectDefinitionRuntime> create(
59 std::string source, eve::PersistentId instanceId,
61
65 EffectDefinitionRuntime& operator=(EffectDefinitionRuntime&&) noexcept = default;
72
74 [[nodiscard]] const eve::definition::InstanceIdentity& identity() const noexcept;
76 [[nodiscard]] const EffectRuntimeState& state() const noexcept;
78 [[nodiscard]] EffectRuntimeState& state() noexcept;
80 [[nodiscard]] eve::definition::DefinitionHandle definitionHandle() const noexcept;
82 [[nodiscard]] eve::definition::ReloadPolicy reloadPolicy() const noexcept { return policy_; }
84 void setActive(bool active) noexcept;
86 [[nodiscard]] bool isActive() const noexcept;
87
93 [[nodiscard]] eve::Result<void> applyTo(EffectInstance* effect) const;
94
99 [[nodiscard]] eve::Result<eve::definition::ReloadOutcome> reload(eve::definition::ReloadPolicy policy);
100
101private:
102 EffectDefinitionRuntime(eve::definitions::DefinitionRegistry& registry,
103 eve::definition::RuntimeInstance<EffectRuntimeState> runtime, std::string subject,
104 std::string source, eve::definition::ReloadPolicy policy)
105 : registry_(&registry),
106 runtime_(std::move(runtime)),
107 subject_(std::move(subject)),
108 source_(std::move(source)),
109 policy_(policy) {}
110
111 eve::definitions::DefinitionRegistry* registry_ = nullptr; // borrowed
113 std::string subject_;
114 std::string source_;
116};
117
118} // namespace eve::effects
bool & active
int subject
Definition AnimSmr.cpp:163
Common identity and hot-reload contract for typed runtime instances.
Definition, policy, instance and lifecycle value types for effects.
#define EVENGINE_API_FOUNDATION
每个链接组(link group)各自的导出宏。
Definition Export.h:106
std::unique_ptr< ParticleEffect > effect
LogicalId definition
const UnitySourceAsset & source
const std::map< std::string, Value > & definitions
Stable definition reference backed by LogicalId.
Definition ResourceRef.h:85
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Owns one strongly typed runtime state and its definition identity.
Deterministic registry of topic-neutral, versioned JSON definitions.
Definition Definitions.h:58
Id128 public API.
Definition Identity.h:112
Binds a typed effect runtime to a generation-qualified definition.
EffectDefinitionRuntime(EffectDefinitionRuntime &&) noexcept=default
Move an effect runtime while retaining its borrowed registry binding.
Deterministic JSON-compatible payload carried by a definition or instance.
Definition EffectTypes.h:63
ReloadPolicy
Policy used when a live definition is replaced.
@ KeepInstanceValues
Replace the definition generation and preserve all instance values.
Build metadata (engine git commit, build time, third-party version).
Definition Build.cpp:16
One owned runtime effect fact.
Independent policy dimensions used when applying an effect definition.
Definition EffectTypes.h:53
Typed mutable lifecycle values for one effect instance.