#include "Model3DList.h" #include "Model3D.h" #include "Text.h" using namespace Framework; const char* Standart3DTypes::cube = "f_würfel"; const char* Standart3DTypes::texturModel = "f_texturModel"; // Inhalt der Model3DList Klasse // Konstruktor Model3DList::Model3DList() : ReferenceCounter() { models = new RCArray< Model3DData >(); names = new RCArray< Text >(); } // Destruktor Model3DList::~Model3DList() { models->release(); names->release(); } // Fügt der Liste ein Model Hinzu // mdl: Das Model // name: Der name, unter dem das Model in der Liste gespeichert wird bool Model3DList::addModel( Model3DData* mdl, const char* name ) { for( auto i : *names ) { if( i->istGleich( name ) ) { mdl->release(); return 0; } } models->add( mdl ); names->add( new Text( name ) ); return 1; } // Entfernt ein Model aus der Liste // name: Der Name des Models void Model3DList::removeModel( const char* name ) { int index = 0; for( auto i : *names ) { if( i->istGleich( name ) ) { names->remove( index ); models->remove( index ); return; } index++; } } // Überprüft, ob unter einem bestimmten Namen ein Model abgespeichert wurde // name: Der Name // return: true, wenn ein Model mit dem Namen existiert bool Model3DList::hatModel( const char* name ) const { for( auto i : *names ) { if( i->istGleich( name ) ) { return 1; } } return 0; } // Gibt ein bestimmtes Model zurück // name: Der Name des Models Model3DData* Model3DList::getModel( const char* name ) const { int index = 0; for( auto i : *names ) { if( i->istGleich( name ) ) { return models->get( index ); } index++; } return 0; } // Gibt ein bestimmtes Model ohne erhöhten Reference Counter zurück // name: Der Name des Models Model3DData* Model3DList::zModel( const char* name ) const { int index = 0; for( auto i : *names ) { if( i->istGleich( name ) ) { return models->z( index ); } index++; } return 0; } //! remove All models DLLEXPORT void Model3DList::removeAll() { models->leeren(); names->leeren(); }