#include "bullet.h" #include "world.h" Bullet::Bullet(Player& player) { m_startpos = m_currentpos = player.GetPOV() + player.GetDirection(); m_velocity = player.GetDirection(); } Bullet::~Bullet() {} bool Bullet::Update(World* world, float elapsedtime) { for (int x = 0; x < 1000; ++x) { m_currentpos += m_velocity * elapsedtime; if (!world->ChunkAt(m_currentpos)) return true; else if (world->BlockAt(m_currentpos) != BTYPE_AIR) { world->ChangeBlockAtPosition(BTYPE_AIR, m_currentpos); return true; } else if ((m_currentpos - m_startpos).Length() > VIEW_DISTANCE) return true; } return false; } void Bullet::Transpose(int& x, int& z) { m_currentpos.x -= x * CHUNK_SIZE_X; m_currentpos.z -= z * CHUNK_SIZE_Z; m_startpos.x -= x * CHUNK_SIZE_X; m_startpos.z -= z * CHUNK_SIZE_Z; } Vector3f& Bullet::getPos() { return m_currentpos; }