LeviLamina
Loading...
Searching...
No Matches
ComponentAccessParticleEmitter.h
1#pragma once
2
3#include "mc/_HeaderOutputPredefine.h"
4
5// auto generated inclusion list
6#include "mc/client/particlesystem/particle/ParticleEmitter.h"
7#include "mc/deps/core/utility/buffer_span.h"
8#include "mc/world/phys/AABB.h"
9
10// auto generated forward declare list
11// clang-format off
12class BlockPos;
13class HashedString;
14class Matrix;
15class Vec3;
16struct BrightnessPair;
17namespace ParticleSystem { struct CommonParticle; }
18namespace mce { class Color; }
19// clang-format on
20
21namespace ParticleSystem {
22
23class ComponentAccessParticleEmitter : public ::ParticleSystem::ParticleEmitter {
24public:
25 // ComponentAccessParticleEmitter inner types declare
26 // clang-format off
27 struct CollisionHelper;
28 // clang-format on
29
30 // ComponentAccessParticleEmitter inner types define
31 struct CollisionHelper {
32 public:
33 // member variables
34 // NOLINTBEGIN
35 ::ll::TypedStorage<4, 24, ::AABB> mHitShape;
36 ::ll::TypedStorage<4, 4, float> mHitAlpha;
37 ::ll::TypedStorage<1, 1, uchar> mHitAxis;
38 // NOLINTEND
39
40 public:
41 // prevent constructor by default
42 CollisionHelper();
43
44 public:
45 // member functions
46 // NOLINTBEGIN
47 MCAPI CollisionHelper(float alpha, uchar hitAxis, ::AABB const& hitShape);
48 // NOLINTEND
49
50 public:
51 // constructor thunks
52 // NOLINTBEGIN
53 MCAPI void* $ctor(float alpha, uchar hitAxis, ::AABB const& hitShape);
54 // NOLINTEND
55 };
56
57public:
58 // member variables
59 // NOLINTBEGIN
60 ::ll::TypedStorage<4, 4, float> mEmissionAccumulator;
61 ::ll::TypedStorage<4, 4, float> mCurrentEmitRate;
62 // NOLINTEND
63
64public:
65 // virtual functions
66 // NOLINTBEGIN
67 virtual ::Vec3 const& getPosition() const = 0;
68
69 virtual ::Matrix const& getTransform() const = 0;
70
71 virtual ::Vec3 const& getWorldPosition() const = 0;
72
73 virtual ::Vec3 const& getWorldVelocity() const = 0;
74
75 virtual void setMaxNumParticles(uint64 num) = 0;
76
77 virtual uint64 getMaxNumParticles() const = 0;
78
79 virtual uint64 getNumParticles() const = 0;
80
81 virtual uint64 getNumParticlesEmitted() const = 0;
82
83 virtual void setActorFrameOfReference(bool useActorPosition, bool useActorRotation, bool useEmitterVelocity) = 0;
84
85 virtual void setEmitRate(float emitRate);
86
87 virtual float getEmitRate() const;
88
89 virtual void setEmissionDuration(float activeTime) = 0;
90
91 virtual float& getEmissionAccumulator();
92
93 virtual void setSleepDuration(float sleepTime) = 0;
94
95 virtual void setFacing(::HashedString const& facing) = 0;
96
97 virtual bool blockListInitialized() = 0;
98
99 virtual void initializeBlockList(::buffer_span<::std::string> blockList) = 0;
100
101 virtual bool blockAtPositionIsInList(::BlockPos const& blockPos) = 0;
102
103 virtual ::BrightnessPair getBrightnessPairAtBlock(::BlockPos const& blockPosition) const = 0;
104
105 virtual ::std::pair<::BrightnessPair, ::BlockPos>
106 getBrightestNeighbor(::BlockPos const& blockPosition, ::ParticleSystem::CommonParticle const& particle) const = 0;
107
108 virtual bool getVisibilityAtBlock(::BlockPos const& blockPosition) const = 0;
109
110 virtual ::mce::Color getGameplayLightForParticle(::ParticleSystem::CommonParticle const& particle) const = 0;
111
112 virtual ::BrightnessPair getBrightnessPairForParticle(::ParticleSystem::CommonParticle const& particle) const = 0;
113
114 virtual ::std::vector<::AABB> const& getCollisionShapesForBlockPosition(::BlockPos const& blockPosition) = 0;
115
116 virtual ::std::vector<::AABB>& getCollisionAabbList() = 0;
117
118 virtual ::std::vector<::ParticleSystem::ComponentAccessParticleEmitter::CollisionHelper>&
119 getCollisionSweepList() = 0;
120
121 virtual void fireEvent(::HashedString const& eventName, ::Vec3 const& position, ::Vec3 const& velocity) = 0;
122
123 virtual void fireEvent(::HashedString const& eventName, ::Matrix const& transform, ::Vec3 const& velocity) = 0;
124
125 virtual bool getUseActorPosition() const = 0;
126
127 virtual bool getUseActorRotation() const = 0;
128
129 virtual void getParticleWorldPositionAndVelocity(
130 ::ParticleSystem::CommonParticle& particle,
131 ::Vec3& particleWorldPosition,
132 ::Vec3& particleWorldVelocity
133 ) = 0;
134
135 virtual bool getAreParticlesFromActorButWorldRelative() const = 0;
136 // NOLINTEND
137
138public:
139 // virtual function thunks
140 // NOLINTBEGIN
141 MCFOLD void $setEmitRate(float emitRate);
142
143 MCFOLD float $getEmitRate() const;
144
145 MCFOLD float& $getEmissionAccumulator();
146 // NOLINTEND
147};
148
149} // namespace ParticleSystem
Definition BlockPos.h:21
Definition HashedString.h:5
Definition Matrix.h:10
Definition ComponentAccessParticleEmitter.h:7
Definition Vec3.h:10
Definition Color.h:13
Definition BrightnessPair.h:8
Definition CommonParticle.h:7
Definition ComponentAccessParticleEmitter.h:15