Использование подобного подхода ведет к разделению ответственности между частями системы и облегчает как разработку всей системы в целом, так и последующее внесение в нее изменений по мере ее развития. Основные объекты (модель, контроллер, вид) могут разрабатываться и тестироваться независимо друг от друга. Кроме того, любой из них может быть заменен другим объектом при условии сохранения интерфейса.

В качестве модели будет выступать класс, содержащий реализацию трехмерной сцены. Он описывается следующим интерфейсом:

class Model : public Object {
protected:
Vector3D pos;
float yaw, pitch, roll;
// starting pos of
// the viewer in the model
// euler angles of the
// viewer
public:
Model ( const char * theName ) : Object ( theName ) {}
// methods for rendering and // getting potential colliders virtual void render ( Views view, const Cameras
camera ) {}
virtual void getColliders ( const BoundingBoxS area,
Arrays colliders ) {}
virtual void update ( Controller *,
float systemTime ) {}
const Vector3DS getPos () const {
return pos;
}

Пишем портальный рендерер (часть I)

float getYaw () const {
return yaw;
}
float getPitch () const {
return pitch;
}
float getRoll () const {
return roll;
}
void setStart ( const Vector3D& v, float y, float p, float r )
{
pos = V;

yaw = у; pitch = p; roll = r;

}
static MetaClass classlnstance ,-
} ;

Величина pos задает начальное положение наблюдателя в сцене, a yaw, pitch и roll - его начальную ориентацию при помощи углов Эйлера.

Метод render служит для отображения модели в заданном виде.

Метод update служит для управления анимацией сцены - модель постоянно получает это сообщение и может использовать это для управления изменяющимися объектами.

Метод getColliders служит для определения объектов в заданной области сцены для последующей проверки на столкновение.

Следующим классом в нашей иерархии будет класс View - абстракция устройства для вывода графической информации. Внутри него инкапсулируется информация о графическом устройстве, его видеорежимах, а также основные методы для работы с этим устройством.


⇐ Предыдущая| |Следующая ⇒