diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2024-01-16 16:40:50 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2024-01-16 16:40:50 -0500 |
| commit | 68271dcae1eae2781ed414ce31eade2f766ca251 (patch) | |
| tree | 32409554594895e7697827bb8788a4f2f18b5ac4 | |
| parent | 595ca439df5c17ce402fccecf257b5fff9ef0ad0 (diff) | |
pass current level when creating generic ents to set level as parent ent
| -rw-r--r-- | editor/editor.cpp | 2 | ||||
| -rw-r--r-- | src/entities.cpp | 5 | ||||
| -rw-r--r-- | src/entities.hpp | 2 | ||||
| -rw-r--r-- | src/game.cpp | 2 |
4 files changed, 5 insertions, 6 deletions
diff --git a/editor/editor.cpp b/editor/editor.cpp index 6ce8f76..f676e0c 100644 --- a/editor/editor.cpp +++ b/editor/editor.cpp @@ -277,7 +277,7 @@ void PkeEditor_Tick(double delta) { if (et->createInstanceCallback.func) { reinterpret_cast<void(*)()>(et->createInstanceCallback.func)(); } else { - EntityType_CreateGenericInstance(et, nullptr, nullptr); + EntityType_CreateGenericInstance(et, PkeLevel_Get(pkeSettings.rt.activeLevel), nullptr); } } diff --git a/src/entities.cpp b/src/entities.cpp index fa0cdf9..be0286c 100644 --- a/src/entities.cpp +++ b/src/entities.cpp @@ -38,11 +38,10 @@ EntityType *EntityType_Create() { return &entityType; } -Entity_Base *EntityType_CreateGenericInstance(EntityType *et, CompInstance *srcInstance, InstPos *instPos) { +Entity_Base *EntityType_CreateGenericInstance(EntityType *et, Entity_Base *levelEnt, CompInstance *srcInstance, InstPos *instPos) { assert(et != nullptr); Entity_Base *genericEntity = ECS_CreateGenericEntity(); - auto *level = PkeLevel_Get(pkeSettings.rt.activeLevel); - ECS_CreateEntity(genericEntity, level); + ECS_CreateEntity(genericEntity, levelEnt); for (size_t i = 0; i < et->detailsCount; ++i) { auto &etd = et->details[i]; diff --git a/src/entities.hpp b/src/entities.hpp index 743029d..9907ab6 100644 --- a/src/entities.hpp +++ b/src/entities.hpp @@ -48,7 +48,7 @@ void EntityType_Init(); EntityType *EntityType_FindByTypeCode(const char *typeCode); EntityType *EntityType_FindByEntityHandle(EntityHandle handle); EntityType *EntityType_Create(); -Entity_Base *EntityType_CreateGenericInstance(EntityType *et, CompInstance *srcInstance = nullptr, InstPos *instPos = nullptr); +Entity_Base *EntityType_CreateGenericInstance(EntityType *et, Entity_Base *levelEnt, CompInstance *srcInstance = nullptr, InstPos *instPos = nullptr); void EntityType_Load(EntityType &et); void EntityType_Tick(double delta); void EntityType_Tick_Late(double delta); diff --git a/src/game.cpp b/src/game.cpp index 5c43042..00e7edc 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -262,7 +262,7 @@ void ParseInstance(Entity_Base *parentEntity, std::ifstream &stream) { if (etPtr->createInstanceCallback.func != nullptr) { reinterpret_cast<void(*)()>(etPtr->createInstanceCallback.func)(); } else { - EntityType_CreateGenericInstance(etPtr, &comp, &instPos); + EntityType_CreateGenericInstance(etPtr, parentEntity, &comp, &instPos); fprintf(stdout ,"[Game::ParseInstance] No callback func to create instance."); } break; |
