I was pretty confused about how smart pointers work when I began sprawl, so I heavily overused std::shared_ptr. Some thoughts here:
References support polymorphism the same way raw pointers do.
Shared pointers are for sharing ownership; for one-time-use functions, we can pass a const reference to an object managed by a smart pointer - we don't need to use shared pointers.
We use shared pointers in a lot of places we probably don't need to (Entity, Identity, etc). I think we can probably have GameObjects insantiate unique_ptr() for components, and then pass references to the underlying component
We can probably pass references to identities as well (who really owns them)
We can definitely copy entity names, don't need shared pointers.
I was pretty confused about how smart pointers work when I began sprawl, so I heavily overused
std::shared_ptr
. Some thoughts here:References support polymorphism the same way raw pointers do.
Shared pointers are for sharing ownership; for one-time-use functions, we can pass a const reference to an object managed by a smart pointer - we don't need to use shared pointers.
We use shared pointers in a lot of places we probably don't need to (Entity, Identity, etc). I think we can probably have GameObjects insantiate unique_ptr() for components, and then pass references to the underlying component
We can probably pass references to identities as well (who really owns them)
We can definitely copy entity names, don't need shared pointers.