载入中...
搜索中...
未找到
BeamSkillEffect.h
浏览该文件的文档.
1#pragma once
2
3#include "common/Result.h"
7
8#include <glm/vec3.hpp>
9
10#include <span>
11#include <vector>
12
13namespace eve::stylize {
14
16enum class BeamSkillPreset : std::uint8_t { Laser, Lightning, ChainLightning };
17
26public:
28 explicit BeamSkillEffect(BeamSkillPreset preset);
29
31 void setPath(std::span<const glm::vec3> points);
32
34 void setEndpoints(const glm::vec3& start, const glm::vec3& end);
35
37 void play() noexcept { effect_.play(); }
38
40 void stop(float fadeOutSeconds = 0.f) { effect_.stop(fadeOutSeconds); }
41
43 void update(float deltaSeconds) { effect_.update(deltaSeconds); }
44
46 [[nodiscard]] BeamBuildResult build(const glm::vec3& cameraForward) const;
47
55 [[nodiscard]] eve::Result<MeshEffectSubmitStatus> submit(
56 MeshEffectRenderer& renderer, const glm::vec3& cameraForward,
58
60 [[nodiscard]] BeamEffectConfig& geometry() noexcept { return geometry_; }
61
63 [[nodiscard]] MeshEffectInstance& effect() noexcept { return effect_; }
64
66 [[nodiscard]] BeamSkillPreset preset() const noexcept { return preset_; }
67
68private:
69 BeamSkillPreset preset_;
70 BeamEffectConfig geometry_;
71 MeshEffectInstance effect_{"slash"};
72 std::vector<glm::vec3> path_;
73};
74
75} // namespace eve::stylize
Duration start
#define EVENGINE_API_WORLD
Definition Export.h:109
glm::vec4 tint
std::shared_ptr< const std::vector< glm::vec2 > > points
Move-only, checked operation results for the common layer.
Move-only operation result carrying either a value or Status.
Definition Result.h:155
Gameplay-facing recipe for laser and lightning mesh effects.
BeamEffectConfig & geometry() noexcept
Access mutable geometry controls for per-skill overrides.
MeshEffectInstance & effect() noexcept
Access the owned style/playback instance for exposed parameters.
BeamSkillPreset preset() const noexcept
Return the selected immutable behavior preset.
void update(float deltaSeconds)
Advance the owned effect envelope with caller-provided simulation time.
void play() noexcept
Restart the effect playback envelope.
void stop(float fadeOutSeconds=0.f)
Stop immediately or fade using the requested duration.
Runtime state for a shader effect attached to a renderable mesh.
Definition MeshEffect.h:40
Render-thread adapter from stylize runtime state to Graphics mesh draws.
eve::Color Color
RGBA color used by every graphics draw call. Lives inside eve::graphics so including a graphics heade...
Definition Color.h:13
BeamSkillPreset
Production-oriented beam behavior preset.
Owning beam generation result suitable for MeshEffectRenderer::submitTrail.
Definition BeamEffect.h:33
Shape and deterministic noise controls for one 3D beam or lightning arc.
Definition BeamEffect.h:14