Float FireTower(Script * script) { Tower * tower = (Tower *)script->GetSource(); if ((tower != NULL) && (tower->GetState() == true) && (tower->CheckType(OBJ_TYPE_TOWER) == true)) { AddProjectile(tower); return true; } return false; }
void CQuadField::MovedProjectile(CProjectile* p) { if (!p->synced) return; // hit-scan projectiles do NOT move! if (p->hitscan) return; const CProjectile::QuadFieldCellData& qfcd = p->GetQuadFieldCellData(); const int2 oldCellCoors = qfcd.GetCoor(0); const int2 newCellCoors = { std::max(0, std::min(int(p->pos.x / quadSizeX), numQuadsX - 1)), std::max(0, std::min(int(p->pos.z / quadSizeZ), numQuadsZ - 1)) }; if (newCellCoors != oldCellCoors) { RemoveProjectile(p); AddProjectile(p); } }