3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/particlesystem/particle/ParticleEmitter.h"
7#include "mc/deps/core/utility/buffer_span.h"
8#include "mc/world/phys/AABB.h"
18namespace mce {
class Color; }
21namespace ParticleSystem {
35 ::ll::TypedStorage<4, 24, ::AABB> mHitShape;
36 ::ll::TypedStorage<4, 4, float> mHitAlpha;
37 ::ll::TypedStorage<1, 1, uchar> mHitAxis;
44 ::ll::TypedStorage<4, 4, float> mEmissionAccumulator;
45 ::ll::TypedStorage<4, 4, float> mCurrentEmitRate;
51 virtual ::Vec3
const& getPosition()
const = 0;
53 virtual ::Matrix
const& getTransform()
const = 0;
55 virtual ::Vec3
const& getWorldPosition()
const = 0;
57 virtual ::Vec3
const& getWorldVelocity()
const = 0;
59 virtual void setMaxNumParticles(uint64) = 0;
61 virtual uint64 getMaxNumParticles()
const = 0;
63 virtual uint64 getNumParticles()
const = 0;
65 virtual uint64 getNumParticlesEmitted()
const = 0;
67 virtual void setActorFrameOfReference(
bool,
bool,
bool) = 0;
69 virtual void setEmitRate(
float emitRate);
71 virtual float getEmitRate()
const;
73 virtual void setEmissionDuration(
float) = 0;
75 virtual float& getEmissionAccumulator();
77 virtual void setSleepDuration(
float) = 0;
79 virtual void setFacing(::HashedString
const&) = 0;
81 virtual bool blockListInitialized() = 0;
83 virtual void initializeBlockList(::buffer_span<::std::string>) = 0;
85 virtual bool blockAtPositionIsInList(::BlockPos
const&) = 0;
87 virtual ::BrightnessPair getBrightnessPairAtBlock(::BlockPos
const&)
const = 0;
89 virtual ::BrightnessPair getMaxBrightnessPairAroundBlock(
91 ::std::optional<::std::pair<::BlockPos, ::BlockPos>>
const&
94 virtual bool getVisibilityAtBlock(::BlockPos
const&)
const = 0;
96 virtual ::mce::Color getGameplayLightForParticle(::ParticleSystem::CommonParticle
const&)
const = 0;
98 virtual ::BrightnessPair getBrightnessPairForParticle(::ParticleSystem::CommonParticle
const&)
const = 0;
100 virtual ::std::vector<::AABB>
const& getCollisionShapesForBlockPosition(::BlockPos
const&) = 0;
102 virtual ::std::vector<::AABB>& getCollisionAabbList() = 0;
104 virtual ::std::vector<::ParticleSystem::ComponentAccessParticleEmitter::CollisionHelper>&
105 getCollisionSweepList() = 0;
107 virtual void fireEvent(::HashedString
const&, ::Vec3
const&, ::Vec3
const&) = 0;
109 virtual void fireEvent(::HashedString
const&, ::Matrix
const&, ::Vec3
const&) = 0;
111 virtual bool getUseActorPosition()
const = 0;
113 virtual bool getUseActorRotation()
const = 0;
115 virtual void getParticleWorldPositionAndVelocity(::ParticleSystem::CommonParticle&, ::Vec3&, ::Vec3&) = 0;
117 virtual bool getAreParticlesFromActorButWorldRelative()
const = 0;
119 virtual ~ComponentAccessParticleEmitter() ;
131 MCAPI
void $setEmitRate(
float emitRate);
133 MCFOLD
float $getEmitRate()
const;
135 MCFOLD
float& $getEmissionAccumulator();
Definition HashedString.h:5
Definition ComponentAccessParticleEmitter.h:7
Definition BrightnessPair.h:8
Definition CommonParticle.h:7
Definition ComponentAccessParticleEmitter.h:15