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);
	}
}