LeviLamina
Loading...
Searching...
No Matches
ParticleEmitter.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated forward declare list
6// clang-format off
7class AABB;
8class Actor;
9class BlockPos;
10class Dimension;
11class ExpressionNode;
12class HashedString;
14class Vec3;
15class WeakEntityRef;
16struct ActorUniqueID;
18namespace Core::Profile { class CounterToken; }
19namespace ParticleSystem { struct ActorBindInfo; }
20// clang-format on
21
22namespace ParticleSystem {
23
24class ParticleEmitter {
25public:
26 // virtual functions
27 // NOLINTBEGIN
28 virtual ~ParticleEmitter() = default;
29
30 virtual void setActorBindInfo(::Dimension*, ::ActorUniqueID, ::HashedString const&, ::Vec3 const&) = 0;
31
32 virtual void setActorBindInfo(::WeakEntityRef, ::HashedString const&, ::Vec3 const&) = 0;
33
34 virtual void setActorBindInfo(::Actor*, ::HashedString const&, ::Vec3 const&) = 0;
35
36 virtual void setEnableUpdate(bool) = 0;
37
38 virtual void setEnableRender(bool) = 0;
39
40 virtual void runInitializationScript(::ExpressionNode const&) = 0;
41
42 virtual void onBlockChanged(::BlockPos const&) = 0;
43
44 virtual void expire() = 0;
45
46 virtual void emitParticleManually(::Vec3 const&, ::Vec3 const&, float const) = 0;
47
48 virtual bool isValid() const = 0;
49
50 virtual bool isManualEmitter() const = 0;
51
52 virtual bool expirationRequested() const = 0;
53
54 virtual bool hasExpired() const = 0;
55
56 virtual ::AABB const& getAABB() const = 0;
57
58 virtual ::HashedString const& getEffectName() const = 0;
59
60 virtual uint64 getParticleCount() const = 0;
61
62 virtual uint64 getEffectEmitterCount() const = 0;
63
64 virtual uint64 getEffectParticleCount() const = 0;
65
66 virtual uint64 getTotalEmitterCount() const = 0;
67
68 virtual uint64 getTotalParticleCount() const = 0;
69
70 virtual void tick(::std::chrono::nanoseconds const&, float const) = 0;
71
72 virtual void frameUpdate(::ClientFrameUpdateContext&) = 0;
73
74 virtual void extractForRendering(::ParticleRenderData&, float) = 0;
75
76 virtual void setManualParticleEmission(bool) = 0;
77
78 virtual ::ParticleSystem::ActorBindInfo getActorBindInfo() const = 0;
79 // NOLINTEND
80
81public:
82 // static functions
83 // NOLINTBEGIN
84 MCAPI static void initProfileTracking();
85 // NOLINTEND
86
87public:
88 // static variables
89 // NOLINTBEGIN
90 MCAPI static ::Core::Profile::CounterToken& mEmitterLifetimeCounterToken();
91
92 MCAPI static ::Core::Profile::CounterToken& mEmitterRateCounterToken();
93
94 MCAPI static ::Core::Profile::CounterToken& mParticleAppearanceCounterToken();
95
96 MCAPI static ::Core::Profile::CounterToken& mParticleEmitterTickCountToken();
97
98 MCAPI static ::Core::Profile::CounterToken& mParticleLifetimeCounterToken();
99
100 MCAPI static ::Core::Profile::CounterToken& mParticleMotionCounterToken();
101 // NOLINTEND
102
103public:
104 // virtual function thunks
105 // NOLINTBEGIN
106
107 // NOLINTEND
108
109public:
110 // vftables
111 // NOLINTBEGIN
112 MCNAPI static void** $vftable();
113 // NOLINTEND
114};
115
116} // namespace ParticleSystem
Definition AABB.h:18
Definition Actor.h:105
Definition BlockPos.h:19
Definition CounterToken.h:7
Definition Dimension.h:85
Definition ExpressionNode.h:33
Definition HashedString.h:5
Definition ParticleRenderData.h:5
Definition ParticleEmitter.h:7
static MCAPI void ** $vftable()
Definition Vec3.h:10
Definition WeakEntityRef.h:14
Definition ActorUniqueID.h:5
Definition ClientFrameUpdateContext.h:5
Definition ActorBindInfo.h:7