void ActorFactory::CreateActorFromTemplate(const char* i_pTemplateActorName, const char* i_pActorName) { if (i_pTemplateActorName && strlen(i_pTemplateActorName) > 0 && i_pActorName && strlen(i_pActorName) > 0) { MGDVector<Component*> pTemplateComponents; SystemManager::GetSingleton().GetComponentsFromTemplate(ObjectId(i_pTemplateActorName), pTemplateComponents); MGDVector<Component*> pNewComponents; for (uint32 uiIndex = 0; uiIndex < pTemplateComponents.size(); ++uiIndex) { Component* pComponent = GetSingleton().m_Factory.Create(pTemplateComponents[uiIndex]->GetID(), i_pActorName, true); if (pComponent) { pComponent->CreateFromTemplate(pTemplateComponents[uiIndex], ObjectId(i_pActorName)); SystemManager::GetSingleton().AddComponent(pComponent, ObjectId(i_pActorName)); pNewComponents.push_back(pComponent); } } InitComponents(pNewComponents); } }