LeviLamina
Loading...
Searching...
No Matches
ParticleSystemEngine.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
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/utility/EnableNonOwnerReferences.h"
12
13// auto generated forward declare list
14// clang-format off
15class Actor;
16class BlockPos;
17class BlockSource;
19class HashedString;
20class LightTexture;
21class Matrix;
26class ScreenContext;
27namespace LightPropagation { class LightVolumeManager; }
28namespace ParticleSystem { class ParticleEmitter; }
29// clang-format on
30
32public:
33 // ParticleSystemEngine inner types define
34 using ParticleSlotMap = ::Bedrock::dense_slot_map<
35 ::std::unique_ptr<::ParticleSystem::ParticleEmitter>,
36 64,
37 32,
38 ::std::allocator<::std::unique_ptr<::ParticleSystem::ParticleEmitter>>>;
39
40public:
41 // member variables
42 // NOLINTBEGIN
43 ::ll::TypedStorage<
44 8,
45 72,
46 ::Bedrock::dense_slot_map<
47 ::std::unique_ptr<::ParticleSystem::ParticleEmitter>,
48 64,
49 32,
50 ::std::allocator<::std::unique_ptr<::ParticleSystem::ParticleEmitter>>>>
51 mEmitterMap;
52 ::ll::TypedStorage<8, 24, ::std::vector<::gsl::not_null<::ParticleSystem::ParticleEmitter*>>> mEmitterTickQueue;
53 ::ll::TypedStorage<8, 64, ::ParticleRenderer> mParticleRenderer;
54 ::ll::TypedStorage<1, 1, bool> mLastTickTimeValid;
55 ::ll::TypedStorage<8, 8, ::std::chrono::steady_clock::time_point> mLastTickTime;
56 ::ll::TypedStorage<8, 8, ::ParticleEffectGroup&> mParticleEffectGroup;
57 ::ll::TypedStorage<8, 8, ::std::reference_wrapper<::BlockSource>> mBlockSource;
58 ::ll::TypedStorage<8, 16, ::std::weak_ptr<::LightPropagation::LightVolumeManager>> mLightVolumeManager;
59 ::ll::TypedStorage<8, 8, ::LightTexture&> mLightTexture;
60 ::ll::TypedStorage<4, 4096, ::std::array<::std::array<::mce::Color, 16>, 16>> mLightTextureData;
61 ::ll::TypedStorage<4, 4, int> mFramesToInterpolate;
62 ::ll::TypedStorage<1, 1, bool> mBeingDestroyed;
63 ::ll::TypedStorage<8, 8, uint64> mTotalParticleCount;
64 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, uint64>> mEffectEmitterCounts;
65 ::ll::TypedStorage<8, 64, ::std::unordered_map<::HashedString, uint64>> mEffectParticleCounts;
66 ::ll::TypedStorage<4, 12, ::Vec3> mLastCameraPosition;
67 // NOLINTEND
68
69public:
70 // prevent constructor by default
71 ParticleSystemEngine& operator=(ParticleSystemEngine const&);
72 ParticleSystemEngine(ParticleSystemEngine const&);
73 ParticleSystemEngine();
74
75public:
76 // virtual functions
77 // NOLINTBEGIN
78 virtual ~ParticleSystemEngine() /*override*/;
79 // NOLINTEND
80
81public:
82 // member functions
83 // NOLINTBEGIN
84 MCAPI ParticleSystemEngine(
85 ::ParticleEffectGroup& particleEffectGroup,
86 ::BlockSource& region,
87 ::std::weak_ptr<::LightPropagation::LightVolumeManager> lightVolumeManager,
88 ::LightTexture& lightTexture
89 );
90
91 MCAPI void clear();
92
93 MCAPI ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>
94 createParticleEmitter(
95 ::std::shared_ptr<::ParticleEffectInfo> const& effectInfo,
96 ::Matrix const& transform,
97 ::MolangVariableMap molangVariableMap
98 );
99
100 MCAPI ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>
101 createParticleEmitter(::HashedString const& effectName, ::Vec3 const& pos, ::MolangVariableMap molangVariableMap);
102
103 MCAPI ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>
104 createParticleEmitter(
105 ::HashedString const& effectName,
106 ::Matrix const& transform,
107 ::MolangVariableMap molangVariableMap
108 );
109
110 MCAPI ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>
111 createParticleEmitter(
112 ::HashedString const& effectName,
113 ::Actor const& actor,
114 ::HashedString const& locator,
115 ::Vec3 const& offset,
116 ::MolangVariableMap molangVariableMap
117 );
118
119 MCAPI void emitParticleManually(
120 ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32> emitterHandle,
121 ::Vec3 const& particlePosition,
122 ::Vec3 const& velocityAdd,
123 float scaleMult
124 );
125
126 MCAPI void extractForRendering(::ParticleRenderData& particleRenderData, float a);
127
128 MCAPI void frameUpdate(::ClientFrameUpdateContext& clientFrameUpdateContext);
129
130 MCAPI uint64 getEffectEmitterCount(::HashedString const& effectName) const;
131
132 MCAPI uint64 getEffectParticleCount(::HashedString const& effectName) const;
133
134 MCFOLD ::Bedrock::dense_slot_map<
135 ::std::unique_ptr<::ParticleSystem::ParticleEmitter>,
136 64,
137 32,
138 ::std::allocator<::std::unique_ptr<::ParticleSystem::ParticleEmitter>>> const&
139 getEmitters();
140
141 MCFOLD ::ParticleEffectGroup& getParticleEffectGroup() const;
142
143 MCAPI ::ParticleSystem::ParticleEmitter* getParticleEmitter(
144 ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32> emitterHandle
145 );
146
147 MCAPI void onBlockPositionChanged(::BlockPos const& blockPosition);
148
149 MCAPI void onDimensionChanged(::BlockSource& newSource);
150
151 MCAPI void render(
152 ::ScreenContext& screenContext,
153 ::Vec3 const& cameraTargetPos,
154 ::Vec3 const& cameraPos,
155 ::ParticleRenderData const& particleRenderData
156 );
157
158 MCAPI void setEmitterIsManuallyEmitted(
159 ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32> emitterHandle
160 );
161
162 MCAPI void tick(float a, bool paused);
163 // NOLINTEND
164
165public:
166 // constructor thunks
167 // NOLINTBEGIN
168 MCAPI void* $ctor(
169 ::ParticleEffectGroup& particleEffectGroup,
170 ::BlockSource& region,
171 ::std::weak_ptr<::LightPropagation::LightVolumeManager> lightVolumeManager,
172 ::LightTexture& lightTexture
173 );
174 // NOLINTEND
175
176public:
177 // destructor thunk
178 // NOLINTBEGIN
179 MCAPI void $dtor();
180 // NOLINTEND
181
182public:
183 // vftables
184 // NOLINTBEGIN
185 MCNAPI static void** $vftable();
186 // NOLINTEND
187};
Definition Actor.h:125
Definition EnableNonOwnerReferences.h:7
Definition BlockPos.h:21
Definition BlockSource.h:73
Definition ClientFrameUpdateContext.h:5
Definition HashedString.h:5
Definition LightVolumeManager.h:7
Definition LightTexture.h:5
Definition Matrix.h:10
Definition MolangVariableMap.h:18
Definition ParticleEffectGroup.h:5
Definition ParticleEffectInfo.h:5
Definition ParticleRenderData.h:5
Definition ParticleSystemEngine.h:5
static MCAPI void ** $vftable()
Definition ParticleEmitter.h:7
Definition ScreenContext.h:5