diff --git a/data/dynos_col_load.cpp b/data/dynos_col_load.cpp index 62b83e2d8..720e5e9a0 100644 --- a/data/dynos_col_load.cpp +++ b/data/dynos_col_load.cpp @@ -26,7 +26,10 @@ DataNode* DynOS_Col_LoadFromBinary(const SysPath &aPackFolder, const SysPath _Filename = fstring("%s/%s.col", aPackFolder.begin(), aCollisionName); FILE *_File = fopen(_Filename.c_str(), "rb"); if (_File) { - collisionNode = LoadCollisionData(_File); + u8 type = ReadBytes(_File); + if (type == DATA_TYPE_COLLISION) { + collisionNode = LoadCollisionData(_File); + } fclose(_File); } diff --git a/data/dynos_col_write.cpp b/data/dynos_col_write.cpp index 660411433..e18b5026c 100644 --- a/data/dynos_col_write.cpp +++ b/data/dynos_col_write.cpp @@ -8,6 +8,7 @@ static void WriteCollisionData(FILE* aFile, GfxData* aGfxData, DataNodemData) return; // Name + WriteBytes(aFile, DATA_TYPE_COLLISION); aNode->mName.Write(aFile); // Data diff --git a/data/dynos_gfx_write.cpp b/data/dynos_gfx_write.cpp index 07ddc2531..6b341a10e 100644 --- a/data/dynos_gfx_write.cpp +++ b/data/dynos_gfx_write.cpp @@ -313,6 +313,10 @@ void DynOS_Gfx_Free(GfxData* aGfxData) { Delete(_Node->mData); Delete(_Node); } + for (auto& _Node : aGfxData->mCollisions) { + Delete(_Node->mData); + Delete(_Node); + } Delete(aGfxData); } } diff --git a/docs/lua/examples/big-paddle/actors/big_paddle_collision.col b/docs/lua/examples/big-paddle/actors/big_paddle_collision.col index 4a76fd329..13462b642 100644 Binary files a/docs/lua/examples/big-paddle/actors/big_paddle_collision.col and b/docs/lua/examples/big-paddle/actors/big_paddle_collision.col differ