Merge branch 'master' into cxx17
This commit is contained in:
commit
f009ef1135
1 changed files with 69 additions and 16 deletions
|
@ -104,6 +104,7 @@ namespace EC
|
|||
EntitiesType *entities;
|
||||
const BitsetType *signature;
|
||||
void *userData;
|
||||
std::unordered_set<std::size_t> dead;
|
||||
};
|
||||
/// Temporary struct used internally by ThreadPool
|
||||
template <typename Function>
|
||||
|
@ -114,6 +115,7 @@ namespace EC
|
|||
BitsetType *signature;
|
||||
void *userData;
|
||||
Function *fn;
|
||||
std::unordered_set<std::size_t> dead;
|
||||
};
|
||||
/// Temporary struct used internally by ThreadPool
|
||||
struct TPFnDataStructTwo {
|
||||
|
@ -122,6 +124,7 @@ namespace EC
|
|||
EntitiesType *entities;
|
||||
void *userData;
|
||||
const std::vector<std::size_t> *matching;
|
||||
std::unordered_set<std::size_t> dead;
|
||||
};
|
||||
/// Temporary struct used internally by ThreadPool
|
||||
struct TPFnDataStructThree {
|
||||
|
@ -131,6 +134,7 @@ namespace EC
|
|||
const std::vector<BitsetType*> *bitsets;
|
||||
EntitiesType *entities;
|
||||
std::mutex *mutex;
|
||||
std::unordered_set<std::size_t> dead;
|
||||
};
|
||||
/// Temporary struct used internally by ThreadPool
|
||||
struct TPFnDataStructFour {
|
||||
|
@ -140,6 +144,7 @@ namespace EC
|
|||
multiMatchingEntities;
|
||||
BitsetType *signatures;
|
||||
std::mutex *mutex;
|
||||
std::unordered_set<std::size_t> dead;
|
||||
};
|
||||
/// Temporary struct used internally by ThreadPool
|
||||
struct TPFnDataStructFive {
|
||||
|
@ -149,6 +154,7 @@ namespace EC
|
|||
void *userData;
|
||||
std::vector<std::vector<std::size_t> >*
|
||||
multiMatchingEntities;
|
||||
std::unordered_set<std::size_t> dead;
|
||||
};
|
||||
/// Temporary struct used internally by ThreadPool
|
||||
struct TPFnDataStructSix {
|
||||
|
@ -158,6 +164,7 @@ namespace EC
|
|||
multiMatchingEntities;
|
||||
BitsetType *bitsets;
|
||||
std::mutex *mutex;
|
||||
std::unordered_set<std::size_t> dead;
|
||||
};
|
||||
/// Temporary struct used internally by ThreadPool
|
||||
template <typename Iterable>
|
||||
|
@ -167,6 +174,7 @@ namespace EC
|
|||
EntitiesType *entities;
|
||||
Iterable *iterable;
|
||||
void *userData;
|
||||
std::unordered_set<std::size_t> dead;
|
||||
};
|
||||
// end section for "temporary" structures }}}
|
||||
|
||||
|
@ -752,12 +760,17 @@ namespace EC
|
|||
fnDataAr[i].entities = &entities;
|
||||
fnDataAr[i].signature = &signatureBitset;
|
||||
fnDataAr[i].userData = userData;
|
||||
for(std::size_t j = begin; j < end; ++j) {
|
||||
if(!isAlive(j)) {
|
||||
fnDataAr[i].dead.insert(j);
|
||||
}
|
||||
}
|
||||
|
||||
threadPool->queueFn([&function] (void *ud) {
|
||||
auto *data = static_cast<TPFnDataStructZero*>(ud);
|
||||
for(std::size_t i = data->range[0]; i < data->range[1];
|
||||
++i) {
|
||||
if(!data->manager->isAlive(i)) {
|
||||
if(data->dead.find(i) != data->dead.end()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -870,11 +883,16 @@ namespace EC
|
|||
fnDataAr[i].signature = &signatureBitset;
|
||||
fnDataAr[i].userData = userData;
|
||||
fnDataAr[i].fn = function;
|
||||
for(std::size_t j = begin; j < end; ++j) {
|
||||
if(!isAlive(j)) {
|
||||
fnDataAr[i].dead.insert(j);
|
||||
}
|
||||
}
|
||||
threadPool->queueFn([] (void *ud) {
|
||||
auto *data = static_cast<TPFnDataStructOne<Function>*>(ud);
|
||||
for(std::size_t i = data->range[0]; i < data->range[1];
|
||||
++i) {
|
||||
if(!data->manager->isAlive(i)) {
|
||||
if(data->dead.find(i) != data->dead.end()) {
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -1015,13 +1033,17 @@ namespace EC
|
|||
fnDataAr[i].entities = &entities;
|
||||
fnDataAr[i].userData = userData;
|
||||
fnDataAr[i].matching = &matching;
|
||||
for(std::size_t j = begin; j < end; ++j) {
|
||||
if(!isAlive(matching.at(j))) {
|
||||
fnDataAr[i].dead.insert(j);
|
||||
}
|
||||
}
|
||||
threadPool->queueFn([&function, helper] (void* ud) {
|
||||
auto *data = static_cast<TPFnDataStructTwo*>(ud);
|
||||
for(std::size_t i = data->range[0];
|
||||
i < data->range[1];
|
||||
++i) {
|
||||
if(data->manager->isAlive(
|
||||
data->matching->at(i))) {
|
||||
if(data->dead.find(i) == data->dead.end()) {
|
||||
helper.callInstancePtr(
|
||||
data->matching->at(i),
|
||||
*data->manager,
|
||||
|
@ -1085,11 +1107,16 @@ namespace EC
|
|||
fnDataAr[i].bitsets = &bitsets;
|
||||
fnDataAr[i].entities = &entities;
|
||||
fnDataAr[i].mutex = &mutex;
|
||||
for(std::size_t j = begin; j < end; ++j) {
|
||||
if(!isAlive(j)) {
|
||||
fnDataAr[i].dead.insert(j);
|
||||
}
|
||||
}
|
||||
threadPool->queueFn([] (void *ud) {
|
||||
auto *data = static_cast<TPFnDataStructThree*>(ud);
|
||||
for(std::size_t i = data->range[0]; i < data->range[1];
|
||||
++i) {
|
||||
if(!data->manager->isAlive(i)) {
|
||||
if(data->dead.find(i) != data->dead.end()) {
|
||||
continue;
|
||||
}
|
||||
for(std::size_t j = 0; j < data->bitsets->size();
|
||||
|
@ -1457,12 +1484,17 @@ namespace EC
|
|||
fnDataAr[i].multiMatchingEntities = &multiMatchingEntities;
|
||||
fnDataAr[i].signatures = signatureBitsets;
|
||||
fnDataAr[i].mutex = &mutex;
|
||||
for(std::size_t j = begin; j < end; ++j) {
|
||||
if(!isAlive(j)) {
|
||||
fnDataAr[i].dead.insert(j);
|
||||
}
|
||||
}
|
||||
|
||||
threadPool->queueFn([] (void *ud) {
|
||||
auto *data = static_cast<TPFnDataStructFour*>(ud);
|
||||
for(std::size_t i = data->range[0]; i < data->range[1];
|
||||
++i) {
|
||||
if(!data->manager->isAlive(i)) {
|
||||
if(data->dead.find(i) != data->dead.end()) {
|
||||
continue;
|
||||
}
|
||||
for(std::size_t j = 0; j < SigList::size; ++j) {
|
||||
|
@ -1524,13 +1556,16 @@ namespace EC
|
|||
fnDataAr[i].userData = userData;
|
||||
fnDataAr[i].multiMatchingEntities =
|
||||
&multiMatchingEntities;
|
||||
for(std::size_t j = begin; j < end; ++j) {
|
||||
if(!isAlive(multiMatchingEntities.at(index).at(j))) {
|
||||
fnDataAr[i].dead.insert(j);
|
||||
}
|
||||
}
|
||||
threadPool->queueFn([&func] (void *ud) {
|
||||
auto *data = static_cast<TPFnDataStructFive*>(ud);
|
||||
for(std::size_t i = data->range[0];
|
||||
i < data->range[1]; ++i) {
|
||||
if(data->manager->isAlive(
|
||||
data->multiMatchingEntities
|
||||
->at(data->index).at(i))) {
|
||||
if(data->dead.find(i) == data->dead.end()) {
|
||||
Helper::call(
|
||||
data->multiMatchingEntities
|
||||
->at(data->index).at(i),
|
||||
|
@ -1657,12 +1692,17 @@ namespace EC
|
|||
fnDataAr[i].multiMatchingEntities = &multiMatchingEntities;
|
||||
fnDataAr[i].bitsets = signatureBitsets;
|
||||
fnDataAr[i].mutex = &mutex;
|
||||
for(std::size_t j = begin; j < end; ++j) {
|
||||
if(!isAlive(j)) {
|
||||
fnDataAr[i].dead.insert(j);
|
||||
}
|
||||
}
|
||||
|
||||
threadPool->queueFn([] (void *ud) {
|
||||
auto *data = static_cast<TPFnDataStructSix*>(ud);
|
||||
for(std::size_t i = data->range[0]; i < data->range[1];
|
||||
++i) {
|
||||
if(!data->manager->isAlive(i)) {
|
||||
if(data->dead.find(i) != data->dead.end()) {
|
||||
continue;
|
||||
}
|
||||
for(std::size_t j = 0; j < SigList::size; ++j) {
|
||||
|
@ -1729,13 +1769,16 @@ namespace EC
|
|||
fnDataAr[i].userData = userData;
|
||||
fnDataAr[i].multiMatchingEntities =
|
||||
&multiMatchingEntities;
|
||||
for(std::size_t j = begin; j < end; ++j) {
|
||||
if(!isAlive(multiMatchingEntities.at(index).at(j))) {
|
||||
fnDataAr[i].dead.insert(j);
|
||||
}
|
||||
}
|
||||
threadPool->queueFn([&func] (void *ud) {
|
||||
auto *data = static_cast<TPFnDataStructFive*>(ud);
|
||||
for(std::size_t i = data->range[0];
|
||||
i < data->range[1]; ++i) {
|
||||
if(data->manager->isAlive(
|
||||
data->multiMatchingEntities
|
||||
->at(data->index).at(i))) {
|
||||
if(data->dead.find(i) == data->dead.end()) {
|
||||
Helper::callPtr(
|
||||
data->multiMatchingEntities
|
||||
->at(data->index).at(i),
|
||||
|
@ -1809,13 +1852,18 @@ namespace EC
|
|||
fnDataAr[i].entities = &entities;
|
||||
fnDataAr[i].signature = &signatureBitset;
|
||||
fnDataAr[i].userData = userData;
|
||||
for(std::size_t j = begin; j < end; ++j) {
|
||||
if(!isAlive(j)) {
|
||||
fnDataAr[i].dead.insert(j);
|
||||
}
|
||||
}
|
||||
threadPool->queueFn([&fn] (void *ud) {
|
||||
auto *data = static_cast<TPFnDataStructZero*>(ud);
|
||||
for(std::size_t i = data->range[0]; i < data->range[1];
|
||||
++i) {
|
||||
if(!data->manager->isAlive(i)) {
|
||||
if(data->dead.find(i) != data->dead.end()) {
|
||||
continue;
|
||||
} else if((*data->signature
|
||||
} else if((*data->signature
|
||||
& std::get<BitsetType>(
|
||||
data->entities->at(i)))
|
||||
== *data->signature) {
|
||||
|
@ -1891,12 +1939,17 @@ namespace EC
|
|||
fnDataAr[i].entities = &entities;
|
||||
fnDataAr[i].iterable = &iterable;
|
||||
fnDataAr[i].userData = userData;
|
||||
for(std::size_t j = begin; j < end; ++j) {
|
||||
if(!isAlive(j)) {
|
||||
fnDataAr[i].dead.insert(j);
|
||||
}
|
||||
}
|
||||
threadPool->queueFn([&fn] (void *ud) {
|
||||
auto *data = static_cast<TPFnDataStructSeven<Iterable>*>(ud);
|
||||
bool isValid;
|
||||
for(std::size_t i = data->range[0]; i < data->range[1];
|
||||
++i) {
|
||||
if(!data->manager->isAlive(i)) {
|
||||
if(data->dead.find(i) != data->dead.end()) {
|
||||
continue;
|
||||
}
|
||||
isValid = true;
|
||||
|
|
Loading…
Reference in a new issue