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;
11class Dimension;
12class ExpressionNode;
13class HashedString;
15class Vec3;
16class WeakEntityRef;
17struct ActorUniqueID;
18namespace ParticleSystem { struct ActorBindInfo; }
19// clang-format on
20
21namespace ParticleSystem {
22
23class ParticleEmitter {
24public:
25 // virtual functions
26 // NOLINTBEGIN
27 virtual ~ParticleEmitter() = default;
28
29 virtual void setActorBindInfo(
30 ::Dimension* dimension,
31 ::ActorUniqueID actorId,
32 ::HashedString const& locator,
33 ::Vec3 const& offset
34 ) = 0;
35
36 virtual void setActorBindInfo(::WeakEntityRef actorRef, ::HashedString const& locator, ::Vec3 const& offset) = 0;
37
38 virtual void setActorBindInfo(::Actor* actor, ::HashedString const& locator, ::Vec3 const& offset) = 0;
39
40 virtual void setEnableUpdate(bool enable) = 0;
41
42 virtual void setEnableRender(bool enable) = 0;
43
44 virtual void runInitializationScript(::ExpressionNode const& initializationScript) = 0;
45
46 virtual void onBlockChanged(::BlockPos const& blockPosition) = 0;
47
48 virtual void expire() = 0;
49
50 virtual void
51 emitParticleManually(::Vec3 const& particlePosition, ::Vec3 const& velocityAdd, float const scaleMult) = 0;
52
53 virtual bool isValid() const = 0;
54
55 virtual bool isManualEmitter() const = 0;
56
57 virtual bool expirationRequested() const = 0;
58
59 virtual bool hasExpired() const = 0;
60
61 virtual ::AABB const& getAABB() const = 0;
62
63 virtual ::HashedString const& getEffectName() const = 0;
64
65 virtual uint64 getParticleCount() const = 0;
66
67 virtual uint64 getEffectEmitterCount() const = 0;
68
69 virtual uint64 getEffectParticleCount() const = 0;
70
71 virtual uint64 getTotalEmitterCount() const = 0;
72
73 virtual uint64 getTotalParticleCount() const = 0;
74
75 virtual void tick(::std::chrono::nanoseconds const& dtIn, float const a) = 0;
76
77 virtual void frameUpdate(::ClientFrameUpdateContext& clientFrameUpdateContext) = 0;
78
79 virtual void extractForRendering(::ParticleRenderData& particleRenderData, float a) = 0;
80
81 virtual void setManualParticleEmission(bool manualParticleEmission) = 0;
82
83 virtual ::ParticleSystem::ActorBindInfo getActorBindInfo() const = 0;
84 // NOLINTEND
85
86public:
87 // static variables
88 // NOLINTBEGIN
89 MCAPI static ::std::atomic<int64>& mEmitterLifetimeCounter();
90
91 MCAPI static ::std::atomic<int64>& mEmitterRateCounter();
92
93 MCAPI static ::std::atomic<int64>& mParticleAppearanceCounter();
94
95 MCAPI static ::std::atomic<int64>& mParticleEmitterTickCount();
96
97 MCAPI static ::std::atomic<int64>& mParticleLifetimeCounter();
98
99 MCAPI static ::std::atomic<int64>& mParticleMotionCounter();
100 // NOLINTEND
101
102public:
103 // virtual function thunks
104 // NOLINTBEGIN
105
106 // NOLINTEND
107
108public:
109 // vftables
110 // NOLINTBEGIN
111 MCNAPI static void** $vftable();
112 // NOLINTEND
113};
114
115} // namespace ParticleSystem
Definition AABB.h:18
Definition Actor.h:106
Definition BlockPos.h:19
Definition ClientFrameUpdateContext.h:5
Definition Dimension.h:86
Definition ExpressionNode.h:34
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 ActorBindInfo.h:7