итак:
1) жуткая каша - блиц стайл. про разделение на файлы уже говорили, рекомендую попробывать - забористая штука
2) индикаторы движения камеры должны лежать внутри камеры.
3) зачем ты хранишь id-шник внутри пули?
4) зачем ты сдвигаешь часть массива после удаленной пули? тебе важен порядок - нет. вот и меняй с последним.
5)
float speed=sp; speed=speed/100;
xMoveEntity(model,0,0,speed);
аналогично
xMoveEntity(model,0,0,sp/100);
компилятор скорее всего сгенерирует один и тот-же код, но все же, чтобы пальцы болели меньше - нужно писать компактнее.
int cBullet::getId()const{return id;} void cBullet::setId(unsigned int sid){id=sid;}
тут у тебя есть тривиальный геттер и сеттер. почему просто не открыл доступ к id?
ну и еще - класса, безполезнее чем cUnit я в жизни не видывал. почитай про виртуальные функции и абстрактные классы.
в остальном все круто - переменные стараешься инициализировать в инициализаторах класса, константность логически константных функций соблюдаешь, лишнего в открытом доступе нет. видно, что книгу уже читал
молодец.
настроение хорошее. два наших проекта отправили в Сочи на ТЭФИ 2011