diff --git a/Minecraft.World/LightSourceTile.cpp b/Minecraft.World/LightSourceTile.cpp index fe7dbccb8..388ab84ba 100644 --- a/Minecraft.World/LightSourceTile.cpp +++ b/Minecraft.World/LightSourceTile.cpp @@ -4,25 +4,15 @@ #include "LightSourceTile.h" LightSourceTile::LightSourceTile(int id) - : Tile(id, Material::air, /*isSolidRender=*/false) + : Tile(id, Material::decoration, /*isSolidRender=*/false) { setLightEmission(1.0f); setDestroyTime(0.0f); } -AABB* LightSourceTile::getAABB(Level* level, int x, int y, int z) -{ - return nullptr; // нет физической коллизии -} - -AABB* LightSourceTile::getTileAABB(Level* level, int x, int y, int z) -{ - return nullptr; // нет коллизии для выделения -} - bool LightSourceTile::isSolidRender(bool isServerLevel) { - return false; // не закрывает соседние грани + return false; } bool LightSourceTile::isCubeShaped() @@ -32,10 +22,40 @@ bool LightSourceTile::isCubeShaped() int LightSourceTile::getRenderShape() { - return Tile::SHAPE_INVISIBLE; // рендер пропускается + return Tile::SHAPE_INVISIBLE; +} + +AABB* LightSourceTile::getAABB(Level* level, int x, int y, int z) +{ + return nullptr; // нет физической коллизии +} + +AABB* LightSourceTile::getTileAABB(Level* level, int x, int y, int z) +{ + return nullptr; // нет рамки выделения +} + +HitResult* LightSourceTile::clip(Level* level, int x, int y, int z, Vec3* a, Vec3* b) +{ + return nullptr; // луч проходит сквозь блок, прицел не реагирует +} + +float LightSourceTile::getDestroyProgress(shared_ptr player, Level* level, int x, int y, int z) +{ + return 0.0f; // прогресс разрушения всегда 0 — сломать невозможно +} + +bool LightSourceTile::mayPick() +{ + return false; // нельзя подобрать средней кнопкой +} + +int LightSourceTile::getResourceCount(Random* random) +{ + return 0; // не выбрасывает ничего } bool LightSourceTile::isPathfindable(LevelSource* level, int x, int y, int z) { - return true; // мобы проходят сквозь блок + return true; // мобы проходят насквозь } diff --git a/Minecraft.World/LightSourceTile.h b/Minecraft.World/LightSourceTile.h index 60cff73da..f83589e21 100644 --- a/Minecraft.World/LightSourceTile.h +++ b/Minecraft.World/LightSourceTile.h @@ -6,15 +6,29 @@ class LightSourceTile : public Tile public: LightSourceTile(int id); - // Нет коллизии - AABB* getAABB(Level* level, int x, int y, int z) override; - AABB* getTileAABB(Level* level, int x, int y, int z) override; - // Нет визуала bool isSolidRender(bool isServerLevel) override; bool isCubeShaped() override; int getRenderShape() override; + // Нет коллизии с сущностями + AABB* getAABB(Level* level, int x, int y, int z) override; + + // Нет рамки выделения при наведении + AABB* getTileAABB(Level* level, int x, int y, int z) override; + + // Нельзя навести прицел — луч сквозь блок + HitResult* clip(Level* level, int x, int y, int z, Vec3* a, Vec3* b) override; + + // Нельзя сломать + float getDestroyProgress(shared_ptr player, Level* level, int x, int y, int z) override; + + // Нельзя подобрать средней кнопкой мыши + bool mayPick() override; + + // Не выбрасывает предметы при удалении + int getResourceCount(Random* random) override; + // Не мешает движению bool isPathfindable(LevelSource* level, int x, int y, int z) override; };