-void*
-FGAIManager::createCarrier( FGAIModelEntity *entity ) {
-
- // cout << "creating carrier" << endl;
-
- FGAICarrier* ai_carrier = new FGAICarrier(this);
- ai_list.push_back(ai_carrier);
- ++numObjects[0];
- ++numObjects[FGAIBase::otCarrier];
- ai_carrier->setHeading(entity->heading);
- ai_carrier->setSpeed(entity->speed);
- ai_carrier->setPath(entity->path.c_str());
- ai_carrier->setAltitude(entity->altitude);
- ai_carrier->setLongitude(entity->longitude);
- ai_carrier->setLatitude(entity->latitude);
- ai_carrier->setRudder(entity->rudder);
- ai_carrier->setSolidObjects(entity->solid_objects);
- ai_carrier->setWireObjects(entity->wire_objects);
- ai_carrier->setCatapultObjects(entity->catapult_objects);
- ai_carrier->setParkingPositions(entity->ppositions);
- ai_carrier->setRadius(entity->radius);
- ai_carrier->setSign(entity->pennant_number);
- ai_carrier->setName(entity->name);
- ai_carrier->setFlolsOffset(entity->flols_offset);
- ai_carrier->setWind_from_east(entity->wind_from_east);
- ai_carrier->setWind_from_north(entity->wind_from_north);
- ai_carrier->setTACANChannelID(entity->TACAN_channel_ID);
- ai_carrier->setMaxLat(entity->max_lat);
- ai_carrier->setMinLat(entity->min_lat);
- ai_carrier->setMaxLong(entity->max_long);
- ai_carrier->setMinLong(entity->min_long);
-
-
- if ( entity->fp ) {
- ai_carrier->setFlightPlan(entity->fp);
+void
+FGAIManager::attach(FGAIBase *model)
+{
+ //unsigned idx = mNumAiTypeModels[model->getType()];
+ const char* typeString = model->getTypeString();
+ SGPropertyNode* root = globals->get_props()->getNode("ai/models", true);
+ SGPropertyNode* p;
+ int i;
+
+ // find free index in the property tree, if we have
+ // more than 10000 mp-aircrafts in the property tree we should optimize the mp-server
+ for (i = 0; i < 10000; i++) {
+ p = root->getNode(typeString, i, false);
+
+ if (!p || !p->getBoolValue("valid", false))
+ break;
+
+ if (p->getIntValue("id",-1)==model->getID()) {
+ p->setStringValue("callsign","***invalid node***"); //debug only, should never set!