//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#include <Main/globals.hxx>
FGAIManager::FGAIManager() {
_dt = 0.0;
mNumAiModels = 0;
+ for (unsigned i = 0; i < FGAIBase::MAX_OBJECTS; ++i)
+ mNumAiTypeModels[i] = 0;
}
FGAIManager::~FGAIManager() {
if ((*ai_list_itr)->getDie()) {
tmgr->release((*ai_list_itr)->getID());
--mNumAiModels;
+ --(mNumAiTypeModels[(*ai_list_itr)->getType()]);
(*ai_list_itr)->unbind();
ai_list_itr = ai_list.erase(ai_list_itr);
} else {
void
FGAIManager::attach(SGSharedPtr<FGAIBase> model)
{
- model->setManager(this);
+ unsigned idx = mNumAiTypeModels[model->getType()];
+ const char* typeString = model->getTypeString();
+ SGPropertyNode* root = globals->get_props()->getNode("ai/models", true);
+ SGPropertyNode* p = root->getNode(typeString, idx, true);
+ model->setManager(this, p);
ai_list.push_back(model);
++mNumAiModels;
+ ++(mNumAiTypeModels[model->getType()]);
model->init();
model->bind();
}
while(ai_list_itr != ai_list.end()) {
if ((*ai_list_itr)->getID() == ID) {
--mNumAiModels;
+ --(mNumAiTypeModels[(*ai_list_itr)->getType()]);
(*ai_list_itr)->unbind();
ai_list_itr = ai_list.erase(ai_list_itr);
} else