#include "bullet.h" #include "world.h" Bullet::Bullet(Vector3f pos, Vector3f dir) : m_startpos(pos), m_currentpos(pos), m_velocity(dir) {} Bullet::Bullet(Vector3f pos, Vector3f dir, uint64_t tid): m_startpos(pos), m_currentpos(pos), m_velocity(dir), m_tid(tid) {} 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; } uint64_t Bullet::getTeamID(){ return m_tid; }