#include <Block/AirBlock/AirBlock.hpp>
#include <World/World.hpp>
#include <BlockRegistry/BlockRegistry.hpp>

AirBlock::AirBlock(std::string name) : Block(name, "<AIR>", 1.0f)
{
    mapColor = glm::vec4(0.0f, 0.0f, 0.0f, 1.0f);
}

void AirBlock::loadBlockSprites(BlockAtlas &atlas, Bitmap &icon, VoxelSprite &defaultSprite)
{
    // NOP
}

BlockAtlas::SpriteID AirBlock::getBlockSprite(glm::ivec3 pos, uint8_t meta, World &world)
{
    return GLSL_SVO_VOXEL_AIR;
}

void AirBlock::getCollisionBoxes(World &world, glm::ivec3 pos, std::vector<BoundingBox<wfixed>> &boxes)
{
    // NOP: There are no collision boxes.
}

void AirBlock::getHarvestedStacks(LocalWorld &world, glm::ivec3 pos, std::vector<ItemStack> &stacks)
{
    // NOP
}

bool AirBlock::isFullyOpaque()
{
    return false;
}

bool AirBlock::canReplaceWithPlacedBlock()
{
    return true;
}

bool AirBlock::canSweepAway()
{
    return true;
}