summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2024-01-16 16:40:50 -0500
committerJonathan Bradley <jcb@pikum.xyz>2024-01-16 16:40:50 -0500
commit68271dcae1eae2781ed414ce31eade2f766ca251 (patch)
tree32409554594895e7697827bb8788a4f2f18b5ac4
parent595ca439df5c17ce402fccecf257b5fff9ef0ad0 (diff)
pass current level when creating generic ents to set level as parent ent
-rw-r--r--editor/editor.cpp2
-rw-r--r--src/entities.cpp5
-rw-r--r--src/entities.hpp2
-rw-r--r--src/game.cpp2
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;