тд
Object * ResourceManager :: getobject ( const String& theName ) {
Object * object = objects.getObjectWithName ( theName );
if ( object != NULL )
return object -> retain (),-
// the texture has not been loaded yet Data * data = getResource ( theName );
if ( data == NULL ) return NULL;
for ( Array :: Iterator it = decoders.getlterator (); lit.end (); ++it )
{
ResourceDecoder * decoder = (ResourceDecoder *) it.value ();
if ( decoder -> checkExtension ( theName ) )
if ( ( object = decoder -> decode ( data ) ) != NULL )
{
objects.insert ( object );
object -> setName ( theName ); data -> release ();
return object; }
}
for ( it = decoders.getlterator (); lit.end (); ++it ) {
ResourceDecoder * decoder = (ResourceDecoder *) it.value ();
if ( ( object = decoder -> decode ( data ) ) != NULL ) {
object -> setName ( theName ); data -> release ();
Основные классы для рендерера. Работа с ресурсами
| objects.insert ( object );
return object;
}
i }
; if ( data != NULL ) I data -> release ();
[ (*sysLog) << "Cannot load " << theName << logEndl; return NULL;
; Для точного определения типа возвращенного ресурса удобно восполь\ зоваться конструкцией dynamic_cast языка С++ (для этого в большинстве
компиляторов необходимо включить поддержку RTTI), хотя этого можно
также добиться используя метод isKindOfClass класса Object.
Е На компакт-диске содержится исходный текст декодеров для ряда гра[ фических форматов, таких, как bmp,pcx, gif, tga, wal,png иjpeg.
I Ниже приводится UML-диаграмма классов, используемых для доступа
I к ресурсам.
С помощью введенных классов легко осуществляется работа с различными типами ресурсов, находящихся в разных местах. При этом весь механизм для работы с ресурсами собран в одном месте и работает совершенно прозрачно для всех частей системы.
Переход от хранения ресурсов в одном месте (например, файловой системе на компьютере разработчика) к другому мету и способу (например, внутри гф-архива у пользователя) происходит практически безболезненно. Более того, система может осуществлять поиск ресурсов сразу в нескольких