载入中...
搜索中...
未找到
PcgMaterialSelector.cpp
浏览该文件的文档.
2#include "graphics/Texture.h"
4namespace eve::particles {
7 "Pcg material texture must not be null","particles.pcgMaterial"));
8 materials_.push_back(texture);return Result<void>::success();
9}
11 if(!emitter||materials_.size()<2)return Result<int>::failure(Diagnostic::error(
12 DiagnosticCode::InvalidArgument,"Pcg material selection requires an emitter and at least two materials",
13 "particles.pcgMaterial"));
14 std::uint32_t mixed=seed+0x9e3779b9u;mixed=(mixed^(mixed>>16u))*0x85ebca6bu;
15 mixed=(mixed^(mixed>>13u))*0xc2b2ae35u;mixed^=mixed>>16u;
16 const int index=1+static_cast<int>(mixed%static_cast<std::uint32_t>(materials_.size()-1));
17 emitter->setTexture(materials_[static_cast<std::size_t>(index)]);
19}
20}
std::uint32_t seed
Definition PointSet.cpp:807
std::unique_ptr< TrailEmitter > emitter
uint32_t index
static Diagnostic error(DiagnosticCode code, std::string message, std::string path={}, DiagnosticDetails details={}, std::string source={})
Construct an error diagnostic with the standard error severity.
Definition Diagnostic.h:125
Move-only operation result carrying either a value or Status.
Definition Result.h:155
static Result success(T value)
Construct a successful result owning value.
Definition Result.h:164
static Result failure(Status status)
Construct a failed result from a structured status.
Definition Result.h:175
GPU texture created via Graphics::newTexture. Owns GPU resources through an opaque backend handle.
Definition Texture.h:18
ECS emitter entity. Script configures components; ParticleSimSystem / ParticleRenderSystem drive per-...
Result< int > selectAndApply(ParticleEmitter *emitter, std::uint32_t seed) const
Deterministically select [1,count) and atomically apply it to a borrowed emitter.
Result< void > add(graphics::Texture *texture)
Add a borrowed texture. Graphics retains ownership and it must outlive use.