3#include "mc/_HeaderOutputPredefine.h"
6#include "mc/client/gui/FontHandle.h"
7#include "mc/client/gui/TextAlignment.h"
8#include "mc/client/gui/controls/UIRenderContext.h"
9#include "mc/client/gui/screens/BatchKey.h"
10#include "mc/client/renderer/screen/MinecraftUIMeasureStrategy.h"
11#include "mc/deps/core/math/Color.h"
12#include "mc/deps/core/utility/NonOwnerPointer.h"
13#include "mc/deps/input/RectangleArea.h"
14#include "mc/deps/minecraft_renderer/renderer/MaterialPtr.h"
15#include "mc/deps/minecraft_renderer/renderer/Mesh.h"
33namespace Core {
class Path; }
53 ::ll::TypedStorage<8, 8, ::Font&> mFont;
54 ::ll::TypedStorage<4, 16, ::RectangleArea> mArea;
55 ::ll::TypedStorage<8, 32, ::std::string> mText;
56 ::ll::TypedStorage<4, 16, ::mce::Color> mColor;
57 ::ll::TypedStorage<1, 1, bool> mShadow;
58 ::ll::TypedStorage<1, 1, bool> mShowColorSymbol;
59 ::ll::TypedStorage<4, 4, int> mCaretLocation;
60 ::ll::TypedStorage<4, 4, float> mFontScale;
61 ::ll::TypedStorage<4, 4, float> mLinePadding;
62 ::ll::TypedStorage<4, 4, ::ui::TextAlignment> mAlignment;
67 TextItem& operator=(TextItem
const&);
68 TextItem(TextItem
const&);
76 ::ll::TypedStorage<8, 8, ::mce::ClientTexture const&> mTexture;
77 ::ll::TypedStorage<4, 8, ::glm::vec2> mPosition;
78 ::ll::TypedStorage<4, 8, ::glm::vec2> mSize;
79 ::ll::TypedStorage<4, 8, ::glm::vec2> mUV;
80 ::ll::TypedStorage<4, 8, ::glm::vec2> mUVSize;
81 ::ll::TypedStorage<1, 1, bool> mColorCorrected;
86 ImageItem& operator=(ImageItem
const&);
87 ImageItem(ImageItem
const&);
95 ::ll::TypedStorage<8, 176, ::BatchKey> mFromBatchKey;
96 ::ll::TypedStorage<8, 24, ::std::vector<::mce::TexturePtr>> mTextures;
97 ::ll::TypedStorage<4, 4, uint> mNumInstances;
98 ::ll::TypedStorage<4, 4, int> mKeepAlive;
99 ::ll::TypedStorage<8, 16, ::mce::MaterialPtr> mMaterial;
100 ::ll::TypedStorage<8, 528, ::mce::Mesh> mMesh;
105 PersistentMeshItem();
110 MCAPI PersistentMeshItem(
111 ::BatchKey
const& batchKey,
112 ::std::vector<::mce::TexturePtr> textures,
113 ::HashedString
const& materialNameHash,
122 ::BatchKey
const& batchKey,
123 ::std::vector<::mce::TexturePtr> textures,
124 ::HashedString
const& materialNameHash,
133 ::ll::TypedStorage<8, 8, ::IClientInstance&> mClient;
134 ::ll::TypedStorage<8, 8, ::ScreenContext&> mScreenContext;
135 ::ll::TypedStorage<8, 32, ::MinecraftUIMeasureStrategy> mMeasureStrategy;
136 ::ll::TypedStorage<4, 4, float> mTextAlpha;
137 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::IUIRepository>> mUIRepository;
138 ::ll::TypedStorage<8, 16, ::std::shared_ptr<::mce::TextureGroup>> mTextureGroup;
139 ::ll::TypedStorage<8, 24, ::Bedrock::NotNullNonOwnerPtr<::mce::TextureGroup>> mStoreCacheTextures;
140 ::ll::TypedStorage<8, 24, ::std::vector<::MinecraftUIRenderContext::TextItem>> mTextToDraw;
141 ::ll::TypedStorage<8, 24, ::std::vector<::MinecraftUIRenderContext::ImageItem>> mImagesToDraw;
142 ::ll::TypedStorage<8, 24, ::std::vector<::std::unique_ptr<::MinecraftUIRenderContext::PersistentMeshItem>>>
144 ::ll::TypedStorage<1, 1, uchar> mStencilRef;
145 ::ll::TypedStorage<4, 4, int> mCurrentPersistentMeshItemIdx;
146 ::ll::TypedStorage<8, 80, ::FontHandle> mDebugTextFontHandle;
147 ::ll::TypedStorage<8, 8, ::UIScene const&> mCurrentScene;
148 ::ll::TypedStorage<4, 20, ::std::optional<::glm::vec4>> mSavedOriginalClippingRectangle;
153 MinecraftUIRenderContext& operator=(MinecraftUIRenderContext
const&);
154 MinecraftUIRenderContext(MinecraftUIRenderContext
const&);
155 MinecraftUIRenderContext();
160 virtual ~MinecraftUIRenderContext() ;
162 virtual int getLineLength(::Font& font, ::std::string
const& text,
float fontSize,
bool showColorSymbol)
const
165 virtual float getTextAlpha() const ;
167 virtual
void setTextAlpha(
float alpha) ;
169 virtual
void drawDebugText(
170 ::RectangleArea const& rect,
171 ::std::
string&& text,
172 ::mce::Color const& color,
174 ::ui::TextAlignment alignment,
175 ::TextMeasureData const& textData,
176 ::CaretMeasureData const& caretData
179 virtual
void drawText(
181 ::RectangleArea const& rect,
182 ::std::
string&& text,
183 ::mce::Color const& color,
185 ::ui::TextAlignment alignment,
186 ::TextMeasureData const& textData,
187 ::CaretMeasureData const& caretData
190 virtual
void flushText(
float deltaTime, ::std::optional<
float> obfuscateSwitchTime) ;
192 virtual
void drawImage(
193 ::mce::ClientTexture const& texture,
194 ::glm::vec2 const& position,
195 ::glm::vec2 const& size,
196 ::glm::vec2 const& uv,
197 ::glm::vec2 const& uvSize,
198 bool const colorCorrected
201 virtual
void drawNineslice(::mce::ClientTexture const& texture, ::NinesliceInfo const& info) ;
204 flushImages(::mce::Color const& color,
float alpha, ::HashedString const& materialNameHash) ;
206 virtual ::mce::TexturePtr getTexture(::ResourceLocation const& resourceLocation,
bool forceReload) const
209 virtual ::mce::TexturePtr getZippedTexture(
210 ::Core::Path const& zippedFolderPath,
211 ::ResourceLocation const& resourceLocation,
215 virtual
bool unloadTexture(::ResourceLocation const& resourceLocation) ;
217 virtual ::UITextureInfoPtr getUITextureInfo(::ResourceLocation const& resourceLocation,
bool forceReload) const
220 virtual
void touchTexture(::ResourceLocation const& resourceLocation) ;
222 virtual
void beginSharedMeshBatch(::ComponentRenderBatch& renderBatch) ;
224 virtual
void endSharedMeshBatch(::ComponentRenderBatch& renderBatch) ;
226 virtual
void reserveSharedMeshBatch(uint64 vertexCount) ;
228 virtual uint64 getSharedMeshBatchVertexCount() const ;
231 drawRectangle(::RectangleArea const& rect, ::mce::Color const& color,
float alpha,
int thickness) ;
233 virtual
void fillRectangle(::RectangleArea const& rect, ::mce::Color const& color,
float alpha) ;
235 virtual
void increaseStencilRef() ;
237 virtual
void decreaseStencilRef() ;
239 virtual
void resetStencilRef() ;
241 virtual
void fillRectangleStencil(::RectangleArea const& rect) ;
243 virtual
void enableScissorTest(::RectangleArea const& rect) ;
245 virtual
void disableScissorTest() ;
247 virtual
void setClippingRectangle(::RectangleArea const& rect) ;
249 virtual
void setFullClippingRectangle() ;
251 virtual
void saveCurrentClippingRectangle() ;
253 virtual
void restoreSavedClippingRectangle() ;
255 virtual ::RectangleArea getFullClippingRectangle() const ;
257 virtual
void cleanup() ;
259 virtual
void removePersistentMeshes() ;
261 virtual ::UIMeasureStrategy& getMeasureStrategy() ;
263 virtual
void snapImageSizeToGrid(::glm::vec2& size) const ;
265 virtual
void snapImagePositionToGrid(::glm::vec2& position) const ;
267 virtual
void notifyImageEstimate(uint64 imageCount) ;
269 virtual
bool updateCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer) ;
271 virtual
void renderCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer,
int pass) ;
278 MinecraftUIRenderContext(::IClientInstance& client, ::ScreenContext& screenContext, ::UIScene const& currentScene);
280 MCAPI
float _getTextAlignmentOffset(::MinecraftUIRenderContext::
TextItem const& textItem,
float lineLength) const;
282 MCAPI
float _getTextAlignmentPosition(::MinecraftUIRenderContext::
TextItem const& textItem) const;
285 _renderTextAligned(::MinecraftUIRenderContext::
TextItem const& textItem,
float tx,
float ty,
bool forceUseCache);
288 _splitTextItemText(::MinecraftUIRenderContext::
TextItem const& textItem, ::std::vector<::std::
string>& lines) const;
294 MCAPI
void* $ctor(::IClientInstance& client, ::ScreenContext& screenContext, ::UIScene const& currentScene);
306 MCAPI
int $getLineLength(::Font& font, ::std::
string const& text,
float fontSize,
bool showColorSymbol) const;
308 MCFOLD
float $getTextAlpha() const;
310 MCAPI
void $setTextAlpha(
float alpha);
312 MCAPI
void $drawDebugText(
313 ::RectangleArea const& rect,
314 ::std::
string&& text,
315 ::mce::Color const& color,
317 ::ui::TextAlignment alignment,
318 ::TextMeasureData const& textData,
319 ::CaretMeasureData const& caretData
322 MCAPI
void $drawText(
324 ::RectangleArea const& rect,
325 ::std::
string&& text,
326 ::mce::Color const& color,
328 ::ui::TextAlignment alignment,
329 ::TextMeasureData const& textData,
330 ::CaretMeasureData const& caretData
333 MCAPI
void $flushText(
float deltaTime, ::std::optional<
float> obfuscateSwitchTime);
335 MCAPI
void $drawImage(
336 ::mce::ClientTexture const& texture,
337 ::glm::vec2 const& position,
338 ::glm::vec2 const& size,
339 ::glm::vec2 const& uv,
340 ::glm::vec2 const& uvSize,
341 bool const colorCorrected
344 MCAPI
void $drawNineslice(::mce::ClientTexture const& texture, ::NinesliceInfo const& info);
346 MCAPI
void $flushImages(::mce::Color const& color,
float alpha, ::HashedString const& materialNameHash);
348 MCAPI ::mce::TexturePtr $getTexture(::ResourceLocation const& resourceLocation,
bool forceReload) const;
350 MCAPI ::mce::TexturePtr $getZippedTexture(
351 ::Core::Path const& zippedFolderPath,
352 ::ResourceLocation const& resourceLocation,
356 MCAPI
bool $unloadTexture(::ResourceLocation const& resourceLocation);
358 MCAPI ::UITextureInfoPtr $getUITextureInfo(::ResourceLocation const& resourceLocation,
bool forceReload) const;
360 MCAPI
void $touchTexture(::ResourceLocation const& resourceLocation);
362 MCAPI
void $beginSharedMeshBatch(::ComponentRenderBatch& renderBatch);
364 MCAPI
void $endSharedMeshBatch(::ComponentRenderBatch& renderBatch);
366 MCAPI
void $reserveSharedMeshBatch(uint64 vertexCount);
368 MCAPI uint64 $getSharedMeshBatchVertexCount() const;
370 MCAPI
void $drawRectangle(::RectangleArea const& rect, ::mce::Color const& color,
float alpha,
int thickness);
372 MCAPI
void $fillRectangle(::RectangleArea const& rect, ::mce::Color const& color,
float alpha);
374 MCAPI
void $increaseStencilRef();
376 MCAPI
void $decreaseStencilRef();
378 MCAPI
void $resetStencilRef();
380 MCAPI
void $fillRectangleStencil(::RectangleArea const& rect);
382 MCAPI
void $enableScissorTest(::RectangleArea const& rect);
384 MCAPI
void $disableScissorTest();
386 MCAPI
void $setClippingRectangle(::RectangleArea const& rect);
388 MCAPI
void $setFullClippingRectangle();
390 MCAPI
void $saveCurrentClippingRectangle();
392 MCAPI
void $restoreSavedClippingRectangle();
394 MCAPI ::RectangleArea $getFullClippingRectangle() const;
396 MCAPI
void $cleanup();
398 MCAPI
void $removePersistentMeshes();
400 MCFOLD ::UIMeasureStrategy& $getMeasureStrategy();
402 MCAPI
void $snapImageSizeToGrid(::glm::vec2& size) const;
404 MCAPI
void $snapImagePositionToGrid(::glm::vec2& position) const;
406 MCAPI
void $notifyImageEstimate(uint64 imageCount);
408 MCAPI
bool $updateCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer);
410 MCAPI
void $renderCustom(::gsl::not_null<::CustomRenderComponent*> customRenderer,
int pass);
Definition ComponentRenderBatch.h:5
Definition CustomRenderComponent.h:5
Definition HashedString.h:5
Definition IClientInstance.h:5
Definition IUIRepository.h:5
Definition MinecraftUIRenderContext.h:5
static MCAPI void ** $vftable()
Definition ResourceLocation.h:15
Definition ScreenContext.h:5
Definition UIMeasureStrategy.h:5
Definition UIRenderContext.h:5
Definition UITextureInfoPtr.h:5
Definition TextureGroup.h:7
Definition TexturePtr.h:19
Definition CaretMeasureData.h:5
Definition MinecraftUIRenderContext.h:17
Definition MinecraftUIRenderContext.h:19
Definition MinecraftUIRenderContext.h:15
Definition NinesliceInfo.h:5
Definition TextMeasureData.h:5
Definition ClientTexture.h:7