LeviLamina
Loading...
Searching...
No Matches
ParticleEffect.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/deps/core/string/HashedString.h"
7
8// auto generated forward declare list
9// clang-format off
10class Random;
11namespace ParticleSystem { class EmitterInitialComponentBase; }
12namespace ParticleSystem { class EmitterLifetimeComponentBase; }
13namespace ParticleSystem { class EmitterRateComponentBase; }
14namespace ParticleSystem { class EmitterShapeComponentBase; }
15namespace ParticleSystem { class ParticleAppearanceComponentBase; }
16namespace ParticleSystem { class ParticleCurveBase; }
17namespace ParticleSystem { class ParticleEffectComponentRegistry; }
18namespace ParticleSystem { class ParticleEventNode; }
19namespace ParticleSystem { class ParticleInitialComponentBase; }
20namespace ParticleSystem { class ParticleLifetimeComponentBase; }
21namespace ParticleSystem { class ParticleMotionComponentBase; }
22namespace SharedTypes::v1_20_80 { struct ParticleCurve; }
23namespace SharedTypes::v1_20_80 { struct ParticleEffectComponents; }
24namespace SharedTypes::v1_20_80 { struct ParticleEffectData; }
25namespace SharedTypes::v1_20_80 { struct ParticleEventNode; }
26namespace cereal { struct ReflectionCtx; }
27// clang-format on
28
29namespace ParticleSystem {
30
31class ParticleEffect {
32public:
33 // member variables
34 // NOLINTBEGIN
35 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::ParticleSystem::EmitterInitialComponentBase>>>
36 mEmitterInitialComponents;
37 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::ParticleSystem::EmitterLifetimeComponentBase>>>
38 mEmitterLifetimeComponents;
39 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::ParticleSystem::EmitterRateComponentBase>>>
40 mEmitterRateComponents;
41 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::ParticleSystem::EmitterShapeComponentBase>>>
42 mEmitterShapeComponents;
43 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::ParticleSystem::ParticleAppearanceComponentBase>>>
44 mParticleAppearanceComponents;
45 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::ParticleSystem::ParticleInitialComponentBase>>>
46 mParticleInitialComponents;
47 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::ParticleSystem::ParticleLifetimeComponentBase>>>
48 mParticleLifetimeComponents;
49 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::ParticleSystem::ParticleMotionComponentBase>>>
50 mParticleMotionComponents;
51 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::ParticleSystem::ParticleCurveBase>>> mParticleCurves;
52 ::ll::TypedStorage<
53 8,
54 64,
55 ::std::unordered_map<::HashedString, ::std::unique_ptr<::ParticleSystem::ParticleEventNode>>>
56 mParticleEvents;
57 ::ll::TypedStorage<8, 32, ::std::string> mName;
58 ::ll::TypedStorage<8, 32, ::std::string> mContainerName;
59 ::ll::TypedStorage<8, 48, ::HashedString> mMaterialNameHash;
60 ::ll::TypedStorage<8, 32, ::std::string> mTextureName;
61 // NOLINTEND
62
63public:
64 // prevent constructor by default
65 ParticleEffect();
66
67public:
68 // member functions
69 // NOLINTBEGIN
70 MCAPI ParticleEffect(
71 ::SharedTypes::v1_20_80::ParticleEffectData& data,
72 ::ParticleSystem::ParticleEffectComponentRegistry const* particleComponentRegistry
73 );
74
75 MCAPI void
76 _addEffectCurveFromData(::HashedString const& curveName, ::SharedTypes::v1_20_80::ParticleCurve& curveData);
77
78 MCAPI void _generateEffectComponents(
79 ::SharedTypes::v1_20_80::ParticleEffectComponents& componentData,
80 ::ParticleSystem::ParticleEffectComponentRegistry const* particleComponentRegistry
81 );
82
83 MCAPI void _generateEffectCurves(
84 ::std::optional<::std::map<::std::string, ::SharedTypes::v1_20_80::ParticleCurve>>& curveData
85 );
86
87 MCAPI void _generateEffectEvents(
88 ::std::optional<::std::map<::std::string, ::SharedTypes::v1_20_80::ParticleEventNode>>& eventData
89 );
90
91 MCAPI void _sortEffectComponentsForExecutionOrder();
92
93 MCAPI bool isManualEmitter() const;
94
95 MCAPI ~ParticleEffect();
96 // NOLINTEND
97
98public:
99 // static functions
100 // NOLINTBEGIN
101 MCAPI static ::Random& getRandomNumberGenerator();
102
103 MCAPI static void registerParticleEffectData(::cereal::ReflectionCtx& ctx);
104 // NOLINTEND
105
106public:
107 // static variables
108 // NOLINTBEGIN
109 MCAPI static ::std::unique_ptr<::Random>& mRandomNumberGenerator();
110 // NOLINTEND
111
112public:
113 // constructor thunks
114 // NOLINTBEGIN
115 MCAPI void* $ctor(
116 ::SharedTypes::v1_20_80::ParticleEffectData& data,
117 ::ParticleSystem::ParticleEffectComponentRegistry const* particleComponentRegistry
118 );
119 // NOLINTEND
120
121public:
122 // destructor thunk
123 // NOLINTBEGIN
124 MCAPI void $dtor();
125 // NOLINTEND
126};
127
128} // namespace ParticleSystem
Definition EmitterInitialComponentBase.h:7
Definition EmitterLifetimeComponentBase.h:7
Definition EmitterRateComponentBase.h:7
Definition EmitterShapeComponentBase.h:7
Definition ParticleAppearanceComponentBase.h:7
Definition ParticleCurveBase.h:7
Definition ParticleEffectComponentRegistry.h:7
Definition ParticleEffect.h:7
Definition ParticleEventNode.h:7
Definition ParticleInitialComponentBase.h:7
Definition ParticleLifetimeComponentBase.h:7
Definition ParticleMotionComponentBase.h:7
Definition Random.h:10
Definition ParticleCurve.h:18
Definition ParticleEffectComponents.h:15
Definition ParticleEffectData.h:19
Definition ParticleEventNode.h:18
Definition ReflectionCtx.h:11