summaryrefslogtreecommitdiff
path: root/src/engine/editor/Editor.cpp
diff options
context:
space:
mode:
authorcoco875 <59367621+coco875@users.noreply.github.com>2025-05-23 22:49:06 +0000
committerGitHub <noreply@github.com>2025-05-23 16:49:06 -0600
commit9363e3d77631b1028a765c075a00293bd20c9ba7 (patch)
treeab10b69b18b3ecd2eab6d871340d296d0957f6d0 /src/engine/editor/Editor.cpp
parentaf4535c3c578425a456c8c34c42f10108f94fd1c (diff)
fix memory leaks, avoid invalidate texture (#207)
* Fixed macos * More stupid fixes * update with main and update torch and lus and enable action on this branch * Update FrameInterpolation.h * Update FrameInterpolation.cpp * fix some memory leak * Update torch * Update torch * update torch and lus * reduce texture import * don't use fork of torch and lus * Update torch * Update torch --------- Co-authored-by: Lywx <kiritodev01@gmail.com>
Diffstat (limited to 'src/engine/editor/Editor.cpp')
-rw-r--r--src/engine/editor/Editor.cpp19
1 files changed, 15 insertions, 4 deletions
diff --git a/src/engine/editor/Editor.cpp b/src/engine/editor/Editor.cpp
index 446da7487..23a947a09 100644
--- a/src/engine/editor/Editor.cpp
+++ b/src/engine/editor/Editor.cpp
@@ -30,6 +30,11 @@ namespace Editor {
Editor::Editor() {
}
+ Editor::~Editor() {
+ ClearObjects();
+ ClearMatrixPool();
+ }
+
void Editor::Load() {
printf("Editor: Loading Editor...\n");
eObjectPicker.Load();
@@ -58,10 +63,16 @@ namespace Editor {
Ship::Coords mousePos = wnd->GetMousePos();
bool isMouseDown = wnd->GetMouseState(Ship::LUS_MOUSE_BTN_LEFT);
- eGameObjects.erase(
- std::remove_if(eGameObjects.begin(), eGameObjects.end(),
- [](const auto& object) { return (*object->DespawnFlag) == object->DespawnValue; }),
- eGameObjects.end());
+ auto it = std::remove_if(eGameObjects.begin(), eGameObjects.end(),
+ [](auto& object) {
+ if (*object->DespawnFlag == object->DespawnValue) {
+ delete object; // Free the pointed-to memory
+ return true; // Remove the pointer from the vector
+ }
+ return false;
+ });
+
+ eGameObjects.erase(it, eGameObjects.end());
if (isMouseDown && !wasMouseDown) {
// Mouse just pressed (Pressed state)