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;
47 MCAPI CollisionHelper(
float alpha, uchar hitAxis, ::AABB
const& hitShape);
53 MCAPI
void* $ctor(
float alpha, uchar hitAxis, ::AABB
const& hitShape);
60 ::ll::TypedStorage<4, 4, float> mEmissionAccumulator;
61 ::ll::TypedStorage<4, 4, float> mCurrentEmitRate;
67 virtual ::Vec3
const& getPosition()
const = 0;
69 virtual ::Matrix
const& getTransform()
const = 0;
71 virtual ::Vec3
const& getWorldPosition()
const = 0;
73 virtual ::Vec3
const& getWorldVelocity()
const = 0;
75 virtual void setMaxNumParticles(uint64 num) = 0;
77 virtual uint64 getMaxNumParticles()
const = 0;
79 virtual uint64 getNumParticles()
const = 0;
81 virtual uint64 getNumParticlesEmitted()
const = 0;
83 virtual void setActorFrameOfReference(
bool useActorPosition,
bool useActorRotation,
bool useEmitterVelocity) = 0;
85 virtual void setEmitRate(
float emitRate);
87 virtual float getEmitRate()
const;
89 virtual void setEmissionDuration(
float activeTime) = 0;
91 virtual float& getEmissionAccumulator();
93 virtual void setSleepDuration(
float sleepTime) = 0;
95 virtual void setFacing(::HashedString
const& facing) = 0;
97 virtual bool blockListInitialized() = 0;
99 virtual void initializeBlockList(::buffer_span<::std::string> blockList) = 0;
101 virtual bool blockAtPositionIsInList(::BlockPos
const& blockPos) = 0;
103 virtual ::BrightnessPair getBrightnessPairAtBlock(::BlockPos
const& blockPosition)
const = 0;
105 virtual ::std::pair<::BrightnessPair, ::BlockPos>
106 getBrightestNeighbor(::BlockPos
const& blockPosition, ::ParticleSystem::CommonParticle
const& particle)
const = 0;
108 virtual bool getVisibilityAtBlock(::BlockPos
const& blockPosition)
const = 0;
110 virtual ::mce::Color getGameplayLightForParticle(::ParticleSystem::CommonParticle
const& particle)
const = 0;
112 virtual ::BrightnessPair getBrightnessPairForParticle(::ParticleSystem::CommonParticle
const& particle)
const = 0;
114 virtual ::std::vector<::AABB>
const& getCollisionShapesForBlockPosition(::BlockPos
const& blockPosition) = 0;
116 virtual ::std::vector<::AABB>& getCollisionAabbList() = 0;
118 virtual ::std::vector<::ParticleSystem::ComponentAccessParticleEmitter::CollisionHelper>&
119 getCollisionSweepList() = 0;
121 virtual void fireEvent(::HashedString
const& eventName, ::Vec3
const& position, ::Vec3
const& velocity) = 0;
123 virtual void fireEvent(::HashedString
const& eventName, ::Matrix
const& transform, ::Vec3
const& velocity) = 0;
125 virtual bool getUseActorPosition()
const = 0;
127 virtual bool getUseActorRotation()
const = 0;
129 virtual void getParticleWorldPositionAndVelocity(
130 ::ParticleSystem::CommonParticle& particle,
131 ::Vec3& particleWorldPosition,
132 ::Vec3& particleWorldVelocity
135 virtual bool getAreParticlesFromActorButWorldRelative()
const = 0;
141 MCFOLD
void $setEmitRate(
float emitRate);
143 MCFOLD
float $getEmitRate()
const;
145 MCFOLD
float& $getEmissionAccumulator();
Definition HashedString.h:5
Definition ComponentAccessParticleEmitter.h:7
Definition BrightnessPair.h:8
Definition CommonParticle.h:7
Definition ComponentAccessParticleEmitter.h:15