X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fworld%2FWorld.cpp;fp=src%2Fworld%2FWorld.cpp;h=505cbbb70f3838c0b89e0a27d5d18a2d41b752df;hb=68f47f2824989b21ff9a480a367a6d0a41804f41;hp=3ff7da341e3e52f2d6989a2bf67969f896d51b98;hpb=d4c71969df4f6b5e6b750c98268d30ca6784908b;p=blank.git diff --git a/src/world/World.cpp b/src/world/World.cpp index 3ff7da3..505cbbb 100644 --- a/src/world/World.cpp +++ b/src/world/World.cpp @@ -114,6 +114,26 @@ Entity *World::AddEntity(std::uint32_t id) { return &*entity; } +Entity &World::ForceAddEntity(std::uint32_t id) { + if (entities.empty() || entities.back().ID() < id) { + entities.emplace_back(); + entities.back().ID(id); + return entities.back(); + } + + auto position = entities.begin(); + auto end = entities.end(); + while (position != end && position->ID() < id) { + ++position; + } + if (position != end && position->ID() == id) { + return *position; + } + auto entity = entities.emplace(position); + entity->ID(id); + return *entity; +} + namespace {