载入中...
搜索中...
未找到
TrailEffect.h
浏览该文件的文档.
1#pragma once
2#include "common/Export.h"
3
4
5#include <glm/vec2.hpp>
6#include <glm/vec3.hpp>
7
8#include <cstddef>
9#include <cstdint>
10#include <deque>
11#include <vector>
12
13namespace eve::stylize {
14
17 std::size_t maxSamples = 48;
18 float lifetime = 0.28f;
19 float minSampleDistance = 0.015f;
20 float teleportDistance = 2.f;
21};
22
25
28 glm::vec3 root{0.f};
29 glm::vec3 tip{0.f};
30 float age = 0.f;
31 std::uint32_t segment = 0;
32};
33
36 glm::vec3 position{0.f};
37 glm::vec2 uv{0.f};
38 float alpha = 0.f;
39};
40
43 std::vector<TrailVertex> vertices;
44 std::vector<std::uint32_t> indices;
45};
46
56public:
58 explicit TrailEmitter(TrailSettings settings = {});
59 TrailEmitter(const TrailEmitter&) = delete;
61
63 void setSettings(TrailSettings settings);
65 [[nodiscard]] TrailSettings settings() const noexcept { return settings_; }
67 void update(float dtSeconds);
69 [[nodiscard]] TrailAppendResult append(glm::vec3 root, glm::vec3 tip);
71 void breakTrail() noexcept;
73 void clear() noexcept;
75 [[nodiscard]] std::size_t sampleCount() const noexcept { return samples_.size(); }
77 [[nodiscard]] TrailMeshSnapshot buildMesh() const;
78
79private:
80 static void validateSettings(const TrailSettings& settings);
81
82 TrailSettings settings_;
83 std::deque<TrailSample> samples_;
84 std::uint32_t segment_ = 0;
85 bool forceBreak_ = true;
86};
87
88} // namespace eve::stylize
int tip
Definition AnimSmr.cpp:121
int root
Definition AnimSmr.cpp:119
#define EVENGINE_API_WORLD
Definition Export.h:109
TerrainThermalSettings settings
Deterministic CPU sampler and ribbon mesh generator for weapon trails.
Definition TrailEffect.h:55
TrailSettings settings() const noexcept
Return a value snapshot of current settings.
Definition TrailEffect.h:65
TrailEmitter(const TrailEmitter &)=delete
TrailEmitter & operator=(const TrailEmitter &)=delete
TrailAppendResult
Result of attempting to append one weapon-edge sample.
Definition TrailEffect.h:24
Owning CPU snapshot suitable for upload by a graphics adapter.
Definition TrailEffect.h:42
std::vector< std::uint32_t > indices
Definition TrailEffect.h:44
std::vector< TrailVertex > vertices
Definition TrailEffect.h:43
One retained pair of weapon root/tip positions.
Definition TrailEffect.h:27
Sampling and retention policy for a weapon ribbon trail.
Definition TrailEffect.h:16
Backend-neutral vertex emitted by TrailEmitter.
Definition TrailEffect.h:35