#include "irrlichttypes_extrabloated.h"
#include "irr_ptr.h"
#include "util/numeric.h"
#include "client/tile.h"
#include "voxel.h"
#include <array>
#include <map>
#include <unordered_map>
Go to the source code of this file.
Classes | |
struct | MeshMakeData |
class | MeshTriangle |
class | MapBlockBspTree |
Implements a binary space partitioning tree See also: https://en.wikipedia.org/wiki/Binary_space_partitioning. More... | |
struct | MapBlockBspTree::TreeNode |
class | PartialMeshBuffer |
class | MapBlockMesh |
struct | MapBlockMesh::AnimationInfo |
Functions | |
video::SColor | encode_light (u16 light, u8 emissive_light) |
u16 | getInteriorLight (MapNode n, s32 increment, const NodeDefManager *ndef) |
u16 | getFaceLight (MapNode n, MapNode n2, const NodeDefManager *ndef) |
u16 | getSmoothLightSolid (const v3s16 &p, const v3s16 &face_dir, const v3s16 &corner, MeshMakeData *data) |
u16 | getSmoothLightTransparent (const v3s16 &p, const v3s16 &corner, MeshMakeData *data) |
void | get_sunlight_color (video::SColorf *sunlight, u32 daynight_ratio) |
void | final_color_blend (video::SColor *result, u16 light, u32 daynight_ratio) |
void | final_color_blend (video::SColor *result, const video::SColor &data, const video::SColorf &dayLight) |
void | getNodeTileN (MapNode mn, const v3s16 &p, u8 tileindex, MeshMakeData *data, TileSpec &tile) |
void | getNodeTile (MapNode mn, const v3s16 &p, const v3s16 &dir, MeshMakeData *data, TileSpec &tile) |
u8 | get_solid_sides (MeshMakeData *data) |
Return bitset of the sides of the mesh that consist of solid nodes only Bits: 0 0 -Z +Z -X +X -Y +Y. | |
video::SColor encode_light | ( | u16 | light, |
u8 | emissive_light ) |
Encodes light of a node. The result is not the final color, but a half-baked vertex color. You have to multiply the resulting color with the node's color.
light | the first 8 bits are day light, the last 8 bits are night light |
emissive_light | amount of light the surface emits, from 0 to LIGHT_SUN. |
Referenced by MapblockMeshGenerator::blendLightColor(), MapblockMeshGenerator::blendLightColor(), MapblockMeshGenerator::drawAutoLightedCuboid(), MapblockMeshGenerator::drawGlasslikeFramedNode(), MapblockMeshGenerator::drawSolidNode(), final_color_blend(), MapblockMeshGenerator::prepareLiquidNodeDrawing(), ClientEnvironment::step(), GenericCAO::updateLight(), and MapblockMeshGenerator::useTile().
void final_color_blend | ( | video::SColor * | result, |
const video::SColor & | data, | ||
const video::SColorf & | dayLight ) |
Gives the final SColor shown on screen.
result | output color |
data | the half-baked vertex color |
dayLight | color of the sunlight |
void final_color_blend | ( | video::SColor * | result, |
u16 | light, | ||
u32 | daynight_ratio ) |
Gives the final SColor shown on screen.
result | output color |
light | first 8 bits are day light, second 8 bits are night light |
References encode_light(), final_color_blend(), and get_sunlight_color().
Referenced by MapBlockMesh::MapBlockMesh(), MapBlockMesh::animate(), final_color_blend(), ClientEnvironment::step(), GenericCAO::updateLight(), and Game::updatePointedThing().
u8 get_solid_sides | ( | MeshMakeData * | data | ) |
Return bitset of the sides of the mesh that consist of solid nodes only Bits: 0 0 -Z +Z -X +X -Y +Y.
References NodeDefManager::get(), VoxelManipulator::getNodeRefUnsafe(), MeshMakeData::m_blockpos, MeshMakeData::m_vmanip, MAP_BLOCKSIZE, MeshMakeData::nodedef, and MeshMakeData::side_length.
Referenced by MeshUpdateWorkerThread::doUpdate().
void get_sunlight_color | ( | video::SColorf * | sunlight, |
u32 | daynight_ratio ) |
Returns the sunlight's color from the current day-night ratio.
Referenced by MapBlockMesh::MapBlockMesh(), MapBlockMesh::animate(), final_color_blend(), and GameGlobalShaderConstantSetter::onSetConstants().
u16 getFaceLight | ( | MapNode | n, |
MapNode | n2, | ||
const NodeDefManager * | ndef ) |
References getFaceLight(), LIGHTBANK_DAY, and LIGHTBANK_NIGHT.
u16 getInteriorLight | ( | MapNode | n, |
s32 | increment, | ||
const NodeDefManager * | ndef ) |
References getInteriorLight(), LIGHTBANK_DAY, and LIGHTBANK_NIGHT.
void getNodeTile | ( | MapNode | mn, |
const v3s16 & | p, | ||
const v3s16 & | dir, | ||
MeshMakeData * | data, | ||
TileSpec & | tile ) |
References dir(), MapNode::getFaceDir(), getNodeTileN(), MeshMakeData::nodedef, None, p(), R180, R270, R90, TileSpec::rotation, and TileSpec::world_aligned.
Referenced by MapblockMeshGenerator::getTile().
void getNodeTileN | ( | MapNode | mn, |
const v3s16 & | p, | ||
u8 | tileindex, | ||
MeshMakeData * | data, | ||
TileSpec & | tile ) |
References NodeDefManager::get(), MapNode::getColor(), TileSpec::layers, MeshMakeData::m_crack_pos_relative, MATERIAL_FLAG_CRACK, MeshMakeData::nodedef, and p().
Referenced by getNodeTile(), and MapblockMeshGenerator::getTile().
u16 getSmoothLightSolid | ( | const v3s16 & | p, |
const v3s16 & | face_dir, | ||
const v3s16 & | corner, | ||
MeshMakeData * | data ) |
References getSmoothLightTransparent(), and p().
Referenced by MapblockMeshGenerator::drawSolidNode().
u16 getSmoothLightTransparent | ( | const v3s16 & | p, |
const v3s16 & | corner, | ||
MeshMakeData * | data ) |
References getSmoothLightCombined(), and p().
Referenced by MapblockMeshGenerator::getSmoothLightFrame(), and getSmoothLightSolid().