| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 | class ComponentsBank{	private EntityAI	m_EntityParent;	private ref Component	m_Components[COMP_TYPE_COUNT];			void ComponentsBank(EntityAI entity_parent)	{		m_EntityParent = entity_parent;	}	Component GetComponent(int comp_type, string extended_class_name="")	{		if ( !Component.IsTypeExist(comp_type) )		{			Component.LogErrorBadCompType(comp_type, "EntityAI.GetComponent(int comp_type)");			return NULL;		}				if ( !IsComponentAlreadyExist(comp_type) )		{			CreateComponent(comp_type, extended_class_name);		}				return m_Components[comp_type];			}		bool DeleteComponent(int comp_type)	{		if ( IsComponentAlreadyExist(comp_type) )		{			m_Components[comp_type] = NULL;			return true;		}				return false;	}	private Component CreateComponent(int comp_type, string extended_class_name="")	{		if ( !Component.IsTypeExist(comp_type) )		{			Component.LogErrorBadCompType(comp_type, "EntityAI->CreateComponent(int comp_type)");			return NULL;		}				if ( IsComponentAlreadyExist(comp_type) )		{			Component.LogWarningAlredyExist(comp_type, "EntityAI->CreateComponent(int comp_type)");			return m_Components[comp_type];		}						string clas_name = extended_class_name;				if ( clas_name == string.Empty )		{			clas_name = Component.GetNameByType(comp_type);		}				Component comp = Component.Cast(clas_name.ToType().Spawn());				comp.SetParentEntityAI(m_EntityParent);		comp.Event_OnAwake();				m_Components[comp_type] = comp;				comp.Event_OnInit();				return comp;	}	bool IsComponentAlreadyExist(int comp_type)	{		if ( m_Components[comp_type] != NULL )		{			return true;		}				return false;	}}
 |