K5EngineЖурнал

Обновление движка и новая статья

Автор:

Готова новая статья: "Графическая система движка"
Так же к ней прилагается пачка уроков по одному на каждый раздел, описанный в статье.

Так же обновился движок:
1. В процессе написания статьи некоторый старый код был приведён к "современной" структуре.
2. Добавлены типы указателей для некоторых классов.
3. В списки графических объектов добавлены методы:
    - получение объекта по его индивидуальному идентификатору:
        TObject* Get(const unsigned long &ObjId)
    - группа методов для извлечение объекта из списка:
        TObject* Extract(const int &Id) - по позиции в списке
        TObject* Extract(const unsigned long &ObjId) - по индивидуальному идентификатору
        TObject* Extract(const wstring &ObjName) - по имени
Так же подобные методы добавлены в TSpriteBank
4. В менеджер списков графических объектов добавлены методы для получения графического объекта по его идентификатору:
    TObject* Get(const int &List, const unsigned long &Id)
    TObject* Get(const wstring &List, const unsigned long &Id)

Планы на ближайшее будущее:
1. Статья, описывающая систему событий движка.
2. Создание roadmap

Критика, конструктивные предложения и идеи приветствуются :)

20 июля 2010

Комментарии [2]

#1
23:42, 26 июля 2010

вместо кучи функций с разными параметрами удобнее был бы 1 темплейт такого типа

template<class Cons>
int Get( SomeList& list, Cons& cons )
{
  for ( all objects )
  {
    if (cons(object) )
    {
       list.push(object);
    }
  }
}

// применение
class SomeObject
{
  int id;
public:
  SomeObject( int i ) : id(i) {}
  bool operator(TObject* obj )
  {
    return obj->GetId() == id;
  }
}

SomeObject some;
SomeList list;
int i = Get( list, some );
if ( i > 0 )
{
  list[i]->DoSomething();
}

в принципе функция Get может быть устроена по другому, но я думаю основная суть понятна...

#2
1:38, 27 июля 2010

Pushkoff
По сути да. Мысль ясна.
Тут надо бы подумать, так как сейчас подобные инструментальные функции реализованы как члены классов, которые их используют. При том вообще это как одно из архитектурных решений работает: единой написание интерфейсов у объектов движка.

K5EngineЖурнал

Тема в архиве.