Kiwano Engine
v1.3.x
ComponentManager.h
1
// Copyright (c) 2016-2018 Kiwano - Nomango
2
//
3
// Permission is hereby granted, free of charge, to any person obtaining a copy
4
// of this software and associated documentation files (the "Software"), to deal
5
// in the Software without restriction, including without limitation the rights
6
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
7
// copies of the Software, and to permit persons to whom the Software is
8
// furnished to do so, subject to the following conditions:
9
//
10
// The above copyright notice and this permission notice shall be included in
11
// all copies or substantial portions of the Software.
12
//
13
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
14
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
15
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
16
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
17
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
18
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
19
// THE SOFTWARE.
20
21
#pragma once
22
#include <kiwano/core/IntrusiveList.h>
23
#include <kiwano/base/component/Component.h>
24
25
namespace
kiwano
26
{
27
35
typedef
UnorderedMap<size_t, RefPtr<Component>>
ComponentMap
;
36
41
class
KGE_API
ComponentManager
42
{
43
public
:
47
Component
* AddComponent(
RefPtr<Component>
component);
48
53
Component
* AddComponent(
size_t
index,
RefPtr<Component>
component);
54
57
Component
* GetComponent(
StringView
name);
58
61
Component
* GetComponent(
size_t
name_hash);
62
65
ComponentMap
& GetAllComponents();
66
69
const
ComponentMap
& GetAllComponents()
const
;
70
73
void
RemoveComponent(
RefPtr<Component>
component);
74
78
void
RemoveComponent(
StringView
name);
79
83
void
RemoveComponent(
size_t
name_hash);
84
87
void
RemoveAllComponents();
88
91
void
Update(
Duration
dt);
92
95
void
Render(
RenderContext
& ctx);
96
99
void
DispatchToComponents(
Event
* evt);
100
101
protected
:
102
ComponentManager
(
Actor
* target);
103
104
private
:
105
Actor
* target_;
106
ComponentMap
components_;
107
};
108
111
}
// namespace kiwano
kiwano::Actor
角色
Definition:
Actor.h:63
kiwano::BasicStringView< char >
kiwano::ComponentManager
组件管理器
Definition:
ComponentManager.h:42
kiwano::Component
组件
Definition:
Component.h:48
kiwano::Event
事件
Definition:
Event.h:43
kiwano::RefBasePtr
引用计数智能指针
Definition:
RefBasePtr.hpp:35
kiwano::RenderContext
渲染上下文
Definition:
RenderContext.h:62
kiwano::ComponentMap
UnorderedMap< size_t, RefPtr< Component > > ComponentMap
组件映射
Definition:
ComponentManager.h:35
kiwano::Duration
时间段
Definition:
Duration.h:48
src
kiwano
base
component
ComponentManager.h
制作者
1.9.4