3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/particlesystem/particle/ParticleRenderer.h"
7#include "mc/deps/core/container/dense_slot_map.h"
8#include "mc/deps/core/container/slot_map_handle.h"
9#include "mc/deps/core/math/Color.h"
10#include "mc/deps/core/math/Vec3.h"
11#include "mc/deps/core/string/HashedString.h"
12#include "mc/deps/core/utility/EnableNonOwnerReferences.h"
30 using ParticleSlotMap = ::Bedrock::dense_slot_map<
31 ::std::unique_ptr<::ParticleSystem::ParticleEmitter>,
34 ::std::allocator<::std::unique_ptr<::ParticleSystem::ParticleEmitter>>>;
42 ::Bedrock::dense_slot_map<
43 ::std::unique_ptr<::ParticleSystem::ParticleEmitter>,
46 ::std::allocator<::std::unique_ptr<::ParticleSystem::ParticleEmitter>>>>
48 ::ll::TypedStorage<8, 24, ::std::vector<::gsl::not_null<::ParticleSystem::ParticleEmitter*>>> mEmitterTickQueue;
49 ::ll::TypedStorage<8, 64, ::ParticleRenderer> mParticleRenderer;
50 ::ll::TypedStorage<1, 1, bool> mLastTickTimeValid;
51 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mLastTickTime;
52 ::ll::TypedStorage<8, 8, ::ParticleEffectGroup&> mParticleEffectGroup;
53 ::ll::TypedStorage<8, 8, ::std::reference_wrapper<::BlockSource>> mBlockSource;
54 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::LightPropagation::LightVolumeManager>> mLightVolumeManager;
55 ::ll::TypedStorage<8, 8, ::LightTexture&> mLightTexture;
56 ::ll::TypedStorage<4, 4096, ::std::array<::std::array<::mce::Color, 16>, 16>> mLightTextureData;
57 ::ll::TypedStorage<4, 4, int> mFramesToInterpolate;
58 ::ll::TypedStorage<1, 1, bool> mBeingDestroyed;
59 ::ll::TypedStorage<8, 8, uint64> mTotalParticleCount;
60 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, uint64>> mEffectEmitterCounts;
61 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, uint64>> mEffectParticleCounts;
62 ::ll::TypedStorage<4, 12, ::Vec3> mLastCameraPosition;
67 ParticleSystemEngine& operator=(ParticleSystemEngine
const&);
68 ParticleSystemEngine(ParticleSystemEngine
const&);
69 ParticleSystemEngine();
74 virtual ~ParticleSystemEngine() =
default;
83 ::std::weak_ptr<::LightPropagation::LightVolumeManager> lightVolumeManager,
85 int framesToInterpolate
90 MCAPI ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>
91 createParticleEmitter(
92 ::std::shared_ptr<::ParticleEffectInfo>
const& effectInfo,
97 MCAPI ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>
100 MCAPI ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>
101 createParticleEmitter(
107 MCAPI ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>
108 createParticleEmitter(
116 MCAPI
void emitParticleManually(
118 ::Vec3 const& particlePosition,
119 ::Vec3 const& velocityAdd,
123 MCAPI uint64 getEffectEmitterCount(
::HashedString const& effectName)
const;
125 MCAPI uint64 getEffectParticleCount(
::HashedString const& effectName)
const;
127 MCAPI
void setEmitterIsManuallyEmitted(
131 MCAPI
void tick(
float a,
bool paused);
140 ::std::weak_ptr<::LightPropagation::LightVolumeManager> lightVolumeManager,
142 int framesToInterpolate
Definition EnableNonOwnerReferences.h:7
Definition BlockSource.h:72
Definition HashedString.h:5
Definition LightVolumeManager.h:7
Definition LightTexture.h:5
Definition MolangVariableMap.h:17
Definition ParticleEffectGroup.h:5
Definition ParticleEffectInfo.h:5
Definition ParticleSystemEngine.h:5
MCAPI ParticleSystemEngine(::ParticleEffectGroup &particleEffectGroup, ::BlockSource ®ion, ::std::weak_ptr<::LightPropagation::LightVolumeManager > lightVolumeManager, ::LightTexture &lightTexture, int framesToInterpolate)
MCAPI void * $ctor(::ParticleEffectGroup &particleEffectGroup, ::BlockSource ®ion, ::std::weak_ptr<::LightPropagation::LightVolumeManager > lightVolumeManager, ::LightTexture &lightTexture, int framesToInterpolate)
Definition ParticleEmitter.h:7
Definition slot_map_handle.h:8