извините, если здесь уже есть решение, не могу его найти.
Я хочу использовать карту / словарь для хранения списков компонентов. Все компоненты наследуются от одного и того же класса. Поэтому, чтобы сохранить порядок, я хочу использовать класс в качестве ключа и иметь только компоненты этого класса в правильном списке:
private val components : Map<KClass<T : IComponent>, List<T>>
Пример кода:
class GameObject
{
val components : ObjectMap<KClass<out IComponent>, Array<*>> = ObjectMap()
fun update(deltaTime: Float)
{
for(componentFamily in components.values())
{
for(component in componentFamily)
{
component.update(deltaTime)
}
}
}
inline fun <reified T : IComponent> get() : T?
{
return components.get(T::class)[0] // This does not work - it returns Any?, not T?
}
}
То, что делает то, что пытается сделать мой код. Я знаю, что это неправильно, но надеюсь, что вы поняли идею.
Ключи: классы, наследуемые от IComponent
Значения: объекты того же типа, что и ключ, под которым они находятся.
Спасибо, что посмотрели:)