diff --git a/src/kiwano/base/component/ComponentManager.cpp b/src/kiwano/base/component/ComponentManager.cpp index 5a77ec6b..a0d3dbb7 100644 --- a/src/kiwano/base/component/ComponentManager.cpp +++ b/src/kiwano/base/component/ComponentManager.cpp @@ -33,12 +33,23 @@ Component* ComponentManager::AddComponent(ComponentPtr component) { KGE_ASSERT(component && "AddComponent failed, NULL pointer exception"); + if (component) + { + size_t hash = std::hash{}(component->GetName()); + AddComponent(hash, component); + } + return component.Get(); +} + +Component* ComponentManager::AddComponent(size_t index, ComponentPtr component) +{ + KGE_ASSERT(component && "AddComponent failed, NULL pointer exception"); + if (component) { component->InitComponent(target_); - size_t hash = std::hash{}(component->GetName()); - components_.insert(std::make_pair(hash, component)); + components_.insert(std::make_pair(index, component)); } return component.Get(); } diff --git a/src/kiwano/base/component/ComponentManager.h b/src/kiwano/base/component/ComponentManager.h index 6f3c6b70..139a2832 100644 --- a/src/kiwano/base/component/ComponentManager.h +++ b/src/kiwano/base/component/ComponentManager.h @@ -46,6 +46,12 @@ public: /// @param component 组件 Component* AddComponent(ComponentPtr component); + /// \~chinese + /// @brief 添加组件 + /// @param index 索引值 + /// @param component 组件 + Component* AddComponent(size_t index, ComponentPtr component); + /// \~chinese /// @brief 获取组件 Component* GetComponent(const String& name);