Luanti 5.15.0-dev
 
Loading...
Searching...
No Matches
node_visuals.h
Go to the documentation of this file.
1// Luanti
2// SPDX-License-Identifier: LGPL-2.1-or-later
3// Copyright (C) 2025 cx384
4
5#pragma once
6
7#include <unordered_set>
8#include "nodedef.h" // CF_SPECIAL_COUNT
9#include "tile.h"
10
11class Client;
13namespace scene
14{
15 class IMeshManipulator;
16 struct SMesh;
17}
18
19// Stores client only data needed to draw nodes, like textures and meshes
20// Contained in ContentFeatures
21
23{
24 // 0 1 2 3 4 5
25 // up down right left back front
27 // Special tiles
29 u8 solidness = 2; // Used when choosing which face is drawn
30 u8 visual_solidness = 0; // When solidness=0, this tells how it looks like
31 bool backface_culling = true;
32 scene::SMesh *mesh_ptr = nullptr; // mesh in case of mesh node
33 video::SColor minimap_color;
34 std::vector<video::SColor> *palette = nullptr;
35
36 // alpha stays in ContentFeatures due to compatibility code that is necessary,
37 // because it was part of the node definition table in the past.
39
40 // Get color from palette or content features
41 void getColor(u8 param2, video::SColor *color) const;
42
52 static void fillNodeVisuals(NodeDefManager *ndef, Client *client,
53 void *progress_callback_args);
54
56
57private:
58 NodeVisuals(ContentFeatures *features) : f{features} {}
59 friend class DummyGameDef; // Unittests need constructor
60
61 ContentFeatures *f = nullptr;
62
63 // Functions needed for initialisation
65 std::unordered_set<std::string> &pool, const TextureSettings &tsettings);
66 // May override the alpha and drawtype of the content features
68 PreLoadedTextures *texture_pool, const TextureSettings &tsettings);
69 void updateMesh(Client *client, const TextureSettings &tsettings);
70 void collectMaterials(std::vector<u32> &leaves_materials);
71};
72
77{
78 switch (mode) {
79 case ALPHAMODE_BLEND:
83 case ALPHAMODE_CLIP:
84 default:
86 }
87}
Definition client.h:106
Definition dummygamedef.h:18
Definition shader.h:241
Definition texturesource.h:45
This class is for getting the actual properties of nodes from their content ID.
Definition nodedef.h:509
Definition nodedef.h:166
Definition activeobjectmgr.cpp:11
Definition camera.h:24
static MaterialType alpha_mode_to_material_type(AlphaMode mode)
get fitting material type for an alpha mode
Definition node_visuals.h:76
#define CF_SPECIAL_COUNT
Definition nodedef.h:291
AlphaMode
Definition nodedef.h:250
@ ALPHAMODE_CLIP
Definition nodedef.h:252
@ ALPHAMODE_OPAQUE
Definition nodedef.h:253
@ ALPHAMODE_BLEND
Definition nodedef.h:251
Definition nodedef.h:294
Definition node_visuals.h:23
u8 visual_solidness
Definition node_visuals.h:30
TileSpec special_tiles[CF_SPECIAL_COUNT]
Definition node_visuals.h:28
static void fillNodeVisuals(NodeDefManager *ndef, Client *client, void *progress_callback_args)
Definition node_visuals.cpp:550
void getColor(u8 param2, video::SColor *color) const
Definition node_visuals.cpp:541
scene::SMesh * mesh_ptr
Definition node_visuals.h:32
NodeVisuals(ContentFeatures *features)
Definition node_visuals.h:58
video::SColor minimap_color
Definition node_visuals.h:33
bool backface_culling
Definition node_visuals.h:31
DISABLE_CLASS_COPY(NodeVisuals)
void updateTextures(ITextureSource *tsrc, IShaderSource *shdsrc, Client *client, PreLoadedTextures *texture_pool, const TextureSettings &tsettings)
Definition node_visuals.cpp:261
u8 solidness
Definition node_visuals.h:29
void collectMaterials(std::vector< u32 > &leaves_materials)
Definition node_visuals.cpp:527
void updateMesh(Client *client, const TextureSettings &tsettings)
Definition node_visuals.cpp:484
~NodeVisuals()
Definition node_visuals.cpp:206
void preUpdateTextures(ITextureSource *tsrc, std::unordered_set< std::string > &pool, const TextureSettings &tsettings)
Definition node_visuals.cpp:220
ContentFeatures * f
Definition node_visuals.h:61
std::vector< video::SColor > * palette
Definition node_visuals.h:34
TileSpec tiles[6]
Definition node_visuals.h:26
Definition node_visuals.cpp:38
Definition tile.h:233
MaterialType
Definition tile.h:12
@ TILE_MATERIAL_OPAQUE
Definition tile.h:19
@ TILE_MATERIAL_BASIC
Definition tile.h:13
@ TILE_MATERIAL_ALPHA
Definition tile.h:14