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 BlockSource;
17class HashedString;
18class LightTexture;
19class Matrix;
23namespace LightPropagation { class LightVolumeManager; }
24namespace ParticleSystem { class ParticleEmitter; }
25// clang-format on
26
28public:
29 // ParticleSystemEngine inner types define
30 using ParticleSlotMap = ::Bedrock::dense_slot_map<
31 ::std::unique_ptr<::ParticleSystem::ParticleEmitter>,
32 64,
33 32,
34 ::std::allocator<::std::unique_ptr<::ParticleSystem::ParticleEmitter>>>;
35
36public:
37 // member variables
38 // NOLINTBEGIN
39 ::ll::TypedStorage<
40 8,
41 72,
42 ::Bedrock::dense_slot_map<
43 ::std::unique_ptr<::ParticleSystem::ParticleEmitter>,
44 64,
45 32,
46 ::std::allocator<::std::unique_ptr<::ParticleSystem::ParticleEmitter>>>>
47 mEmitterMap;
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;
63 // NOLINTEND
64
65public:
66 // prevent constructor by default
67 ParticleSystemEngine& operator=(ParticleSystemEngine const&);
68 ParticleSystemEngine(ParticleSystemEngine const&);
69 ParticleSystemEngine();
70
71public:
72 // virtual functions
73 // NOLINTBEGIN
74 virtual ~ParticleSystemEngine() /*override*/ = default;
75 // NOLINTEND
76
77public:
78 // member functions
79 // NOLINTBEGIN
80 MCAPI ParticleSystemEngine(
81 ::ParticleEffectGroup& particleEffectGroup,
82 ::BlockSource& region,
83 ::std::weak_ptr<::LightPropagation::LightVolumeManager> lightVolumeManager,
84 ::LightTexture& lightTexture
85 );
86
87 MCAPI void clear();
88
89 MCAPI ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>
90 createParticleEmitter(
91 ::std::shared_ptr<::ParticleEffectInfo> const& effectInfo,
92 ::Matrix const& transform,
93 ::MolangVariableMap molangVariableMap
94 );
95
96 MCAPI ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>
97 createParticleEmitter(::HashedString const& effectName, ::Vec3 const& pos, ::MolangVariableMap molangVariableMap);
98
99 MCAPI ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>
100 createParticleEmitter(
101 ::HashedString const& effectName,
102 ::Matrix const& transform,
103 ::MolangVariableMap molangVariableMap
104 );
105
106 MCAPI ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32>
107 createParticleEmitter(
108 ::HashedString const& effectName,
109 ::Actor const& actor,
110 ::HashedString const& locator,
111 ::Vec3 const& offset,
112 ::MolangVariableMap molangVariableMap
113 );
114
115 MCAPI void emitParticleManually(
116 ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32> emitterHandle,
117 ::Vec3 const& particlePosition,
118 ::Vec3 const& velocityAdd,
119 float scaleMult
120 );
121
122 MCAPI uint64 getEffectEmitterCount(::HashedString const& effectName) const;
123
124 MCAPI uint64 getEffectParticleCount(::HashedString const& effectName) const;
125
126 MCAPI void setEmitterIsManuallyEmitted(
127 ::Bedrock::slot_map_handle<::std::unique_ptr<::ParticleSystem::ParticleEmitter>, 64, 32> emitterHandle
128 );
129
130 MCAPI void tick(float a, bool paused);
131 // NOLINTEND
132
133public:
134 // constructor thunks
135 // NOLINTBEGIN
136 MCAPI void* $ctor(
137 ::ParticleEffectGroup& particleEffectGroup,
138 ::BlockSource& region,
139 ::std::weak_ptr<::LightPropagation::LightVolumeManager> lightVolumeManager,
140 ::LightTexture& lightTexture
141 );
142 // NOLINTEND
143};
Definition Actor.h:114
Definition EnableNonOwnerReferences.h:7
Definition BlockSource.h:71
Definition HashedString.h:5
Definition LightVolumeManager.h:7
Definition LightTexture.h:5
Definition Matrix.h:10
Definition MolangVariableMap.h:17
Definition ParticleEffectGroup.h:5
Definition ParticleEffectInfo.h:5
Definition ParticleSystemEngine.h:5
Definition ParticleEmitter.h:7