From 28f96e91c22ccd6a603cb5ffe22e2ed7fce15719 Mon Sep 17 00:00:00 2001 From: Jack Andersen Date: Sun, 26 May 2019 18:59:19 -1000 Subject: [PATCH] More linux and memory leak fixes --- dewfile.json | 2 +- src/Core/Resource/Collision/CCollisionMesh.h | 1 + src/Core/Resource/Collision/SOBBTreeNode.h | 1 + .../Resource/Script/Property/CArrayProperty.h | 2 ++ src/Core/Resource/Script/Property/IProperty.h | 8 ++---- src/Core/Scene/CScriptNode.cpp | 2 +- src/Core/Scene/CScriptNode.h | 2 +- src/Editor/CMakeLists.txt | 6 ++--- .../ResourceBrowser/CResourceBrowser.cpp | 2 +- ...github.arukibree.PrimeWorldEditor.desktop} | 0 .../metainfo/PrimeWorldEditor.appdata.xml.in | 21 ---------------- ....arukibree.PrimeWorldEditor.appdata.xml.in | 25 +++++++++++++++++++ .../MP1/Script/{Warwasp.xml => WarWasp.xml} | 0 13 files changed, 38 insertions(+), 34 deletions(-) rename src/Editor/icons/freedesktop/applications/{PrimeWorldEditor.desktop => io.github.arukibree.PrimeWorldEditor.desktop} (100%) delete mode 100644 src/Editor/icons/freedesktop/metainfo/PrimeWorldEditor.appdata.xml.in create mode 100644 src/Editor/icons/freedesktop/metainfo/io.github.arukibree.PrimeWorldEditor.appdata.xml.in rename templates/MP1/Script/{Warwasp.xml => WarWasp.xml} (100%) diff --git a/dewfile.json b/dewfile.json index 0e127de1..13c1c126 100644 --- a/dewfile.json +++ b/dewfile.json @@ -41,7 +41,7 @@ "url": "https://github.com/jackoalan/LibCommon", "type": "git", "head": "dew", - "ref": "86c7e5a455a77bdee72cb8706630a5782a102257" + "ref": "7d35c8ce1ee944a3430325ec733b550de48afa12" }, { "name": "lzo", diff --git a/src/Core/Resource/Collision/CCollisionMesh.h b/src/Core/Resource/Collision/CCollisionMesh.h index 1896c3be..e0f0b317 100644 --- a/src/Core/Resource/Collision/CCollisionMesh.h +++ b/src/Core/Resource/Collision/CCollisionMesh.h @@ -17,6 +17,7 @@ protected: CCollisionRenderData mRenderData; public: + virtual ~CCollisionMesh() = default; virtual void BuildRenderData(); /** Accessors */ diff --git a/src/Core/Resource/Collision/SOBBTreeNode.h b/src/Core/Resource/Collision/SOBBTreeNode.h index 64c3e533..c1c977da 100644 --- a/src/Core/Resource/Collision/SOBBTreeNode.h +++ b/src/Core/Resource/Collision/SOBBTreeNode.h @@ -14,6 +14,7 @@ enum class EOBBTreeNodeType : uint8 struct SOBBTreeNode { + virtual ~SOBBTreeNode() = default; CTransform4f Transform; CVector3f Radii; EOBBTreeNodeType NodeType; diff --git a/src/Core/Resource/Script/Property/CArrayProperty.h b/src/Core/Resource/Script/Property/CArrayProperty.h index 1c5cfdc7..5ac7f081 100644 --- a/src/Core/Resource/Script/Property/CArrayProperty.h +++ b/src/Core/Resource/Script/Property/CArrayProperty.h @@ -50,6 +50,8 @@ protected: {} public: + virtual ~CArrayProperty() { delete mpItemArchetype; } + virtual uint32 DataSize() const { return sizeof(SScriptArray); diff --git a/src/Core/Resource/Script/Property/IProperty.h b/src/Core/Resource/Script/Property/IProperty.h index e3d167ce..63a20a44 100644 --- a/src/Core/Resource/Script/Property/IProperty.h +++ b/src/Core/Resource/Script/Property/IProperty.h @@ -352,13 +352,9 @@ public: typedef PropType ValueType; protected: - PropType mDefaultValue; + PropType mDefaultValue = {}; - TTypedProperty(EGame Game) - : IProperty(Game) - { - memset(&mDefaultValue, 0, sizeof(PropType)); - } + TTypedProperty(EGame Game) : IProperty(Game) {} public: virtual EPropertyType Type() const { return PropEnum; } diff --git a/src/Core/Scene/CScriptNode.cpp b/src/Core/Scene/CScriptNode.cpp index 8775d105..c4138e00 100644 --- a/src/Core/Scene/CScriptNode.cpp +++ b/src/Core/Scene/CScriptNode.cpp @@ -66,7 +66,7 @@ CScriptNode::CScriptNode(CScene *pScene, uint32 NodeID, CSceneNode *pParent, CSc } // Fetch LightParameters - mpLightParameters = new CLightParameters(mpInstance->LightParameters(), mpInstance->GameTemplate()->Game()); + mpLightParameters = std::make_unique(mpInstance->LightParameters(), mpInstance->GameTemplate()->Game()); SetLightLayerIndex(mpLightParameters->LightLayerIndex()); } diff --git a/src/Core/Scene/CScriptNode.h b/src/Core/Scene/CScriptNode.h index 012d893f..bf81d691 100644 --- a/src/Core/Scene/CScriptNode.h +++ b/src/Core/Scene/CScriptNode.h @@ -25,7 +25,7 @@ class CScriptNode : public CSceneNode bool mHasVolumePreview; CModelNode *mpVolumePreviewNode; - CLightParameters *mpLightParameters; + std::unique_ptr mpLightParameters; public: enum class EGameModeVisibility diff --git a/src/Editor/CMakeLists.txt b/src/Editor/CMakeLists.txt index 96b25365..aae0a869 100644 --- a/src/Editor/CMakeLists.txt +++ b/src/Editor/CMakeLists.txt @@ -90,9 +90,9 @@ elseif (APPLE) endforeach() set(PLAT_SRCS icons/mac/mainicon.icns ${RES_SOURCES} MacOSExtras.mm) else() - configure_file(icons/freedesktop/metainfo/PrimeWorldEditor.appdata.xml.in - "${CMAKE_CURRENT_BINARY_DIR}/PrimeWorldEditor.appdata.xml" @ONLY) - #install(FILES "${CMAKE_CURRENT_BINARY_DIR}/PrimeWorldEditor.appdata.xml" DESTINATION share/metainfo) + configure_file(icons/freedesktop/metainfo/io.github.arukibree.PrimeWorldEditor.appdata.xml.in + "${CMAKE_CURRENT_BINARY_DIR}/io.github.arukibree.PrimeWorldEditor.appdata.xml" @ONLY) + install(FILES "${CMAKE_CURRENT_BINARY_DIR}/io.github.arukibree.PrimeWorldEditor.appdata.xml" DESTINATION share/metainfo) install(DIRECTORY icons/freedesktop/applications icons/freedesktop/icons DESTINATION share) endif() diff --git a/src/Editor/ResourceBrowser/CResourceBrowser.cpp b/src/Editor/ResourceBrowser/CResourceBrowser.cpp index d23133a0..ca083066 100644 --- a/src/Editor/ResourceBrowser/CResourceBrowser.cpp +++ b/src/Editor/ResourceBrowser/CResourceBrowser.cpp @@ -301,7 +301,7 @@ void CResourceBrowser::CreateAddMenu() mpAddMenu->addAction("New Folder", this, SLOT(CreateDirectory())); mpAddMenu->addSeparator(); - QMenu* pCreateMenu = new QMenu("Create..."); + QMenu* pCreateMenu = new QMenu("Create...", mpAddMenu); mpAddMenu->addMenu(pCreateMenu); AddCreateAssetMenuActions(pCreateMenu); diff --git a/src/Editor/icons/freedesktop/applications/PrimeWorldEditor.desktop b/src/Editor/icons/freedesktop/applications/io.github.arukibree.PrimeWorldEditor.desktop similarity index 100% rename from src/Editor/icons/freedesktop/applications/PrimeWorldEditor.desktop rename to src/Editor/icons/freedesktop/applications/io.github.arukibree.PrimeWorldEditor.desktop diff --git a/src/Editor/icons/freedesktop/metainfo/PrimeWorldEditor.appdata.xml.in b/src/Editor/icons/freedesktop/metainfo/PrimeWorldEditor.appdata.xml.in deleted file mode 100644 index b524d399..00000000 --- a/src/Editor/icons/freedesktop/metainfo/PrimeWorldEditor.appdata.xml.in +++ /dev/null @@ -1,21 +0,0 @@ - -​ -​ -​ com.Aruki.PrimeWorldEditor -​ FSFAP -​ MIT -​ Prime World Editor -​ Edit world assets from games by Retro Studios -​ -​ PrimeWorldEditor.desktop -​ -​ http://github.com/arukibree/PrimeWorldEditor -​ -​ -​ PrimeWorldEditor -​ -​ -​ -​ -​ -​ \ No newline at end of file diff --git a/src/Editor/icons/freedesktop/metainfo/io.github.arukibree.PrimeWorldEditor.appdata.xml.in b/src/Editor/icons/freedesktop/metainfo/io.github.arukibree.PrimeWorldEditor.appdata.xml.in new file mode 100644 index 00000000..e7984508 --- /dev/null +++ b/src/Editor/icons/freedesktop/metainfo/io.github.arukibree.PrimeWorldEditor.appdata.xml.in @@ -0,0 +1,25 @@ + + + + io.github.arukibree.PrimeWorldEditor + FSFAP + MIT + Prime World Editor + Edit world assets from games by Retro Studios + + +

Prime World Editor is a tool used to access and modify assets found in games by Retro Studios.

+
+ + io.github.arukibree.PrimeWorldEditor.desktop + + https://github.com/arukibree/PrimeWorldEditor + + + PrimeWorldEditor + + + + + +
\ No newline at end of file diff --git a/templates/MP1/Script/Warwasp.xml b/templates/MP1/Script/WarWasp.xml similarity index 100% rename from templates/MP1/Script/Warwasp.xml rename to templates/MP1/Script/WarWasp.xml