#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(); names = new RCArray(); } // 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(); }