diff options
author | aap <aap@papnet.eu> | 2020-12-19 17:27:01 +0100 |
---|---|---|
committer | aap <aap@papnet.eu> | 2020-12-19 17:27:01 +0100 |
commit | 2a51e1da0456e9b7397562102d3241e5c3ddbd6e (patch) | |
tree | 308cfd8f4e23e713fec89e041d92ecc96ba462c5 /src/animation | |
parent | anim compression (diff) | |
parent | Merge pull request #891 from Nick007J/miami (diff) | |
download | re3-2a51e1da0456e9b7397562102d3241e5c3ddbd6e.tar re3-2a51e1da0456e9b7397562102d3241e5c3ddbd6e.tar.gz re3-2a51e1da0456e9b7397562102d3241e5c3ddbd6e.tar.bz2 re3-2a51e1da0456e9b7397562102d3241e5c3ddbd6e.tar.lz re3-2a51e1da0456e9b7397562102d3241e5c3ddbd6e.tar.xz re3-2a51e1da0456e9b7397562102d3241e5c3ddbd6e.tar.zst re3-2a51e1da0456e9b7397562102d3241e5c3ddbd6e.zip |
Diffstat (limited to 'src/animation')
-rw-r--r-- | src/animation/AnimBlendHierarchy.cpp | 11 | ||||
-rw-r--r-- | src/animation/AnimBlendHierarchy.h | 5 | ||||
-rw-r--r-- | src/animation/AnimBlendSequence.cpp | 21 | ||||
-rw-r--r-- | src/animation/AnimBlendSequence.h | 5 |
4 files changed, 42 insertions, 0 deletions
diff --git a/src/animation/AnimBlendHierarchy.cpp b/src/animation/AnimBlendHierarchy.cpp index 3bbc1e04..cc7c7de8 100644 --- a/src/animation/AnimBlendHierarchy.cpp +++ b/src/animation/AnimBlendHierarchy.cpp @@ -118,3 +118,14 @@ CAnimBlendHierarchy::RemoveUncompressedData(void) #endif compressed = 1; } + +#ifdef USE_CUSTOM_ALLOCATOR +void +CAnimBlendHierarchy::MoveMemory(bool onlyone) +{ + int i; + for(i = 0; i < numSequences; i++) + if(sequences[i].MoveMemory() && onlyone) + return; +} +#endif diff --git a/src/animation/AnimBlendHierarchy.h b/src/animation/AnimBlendHierarchy.h index 815251b3..4838c4f8 100644 --- a/src/animation/AnimBlendHierarchy.h +++ b/src/animation/AnimBlendHierarchy.h @@ -2,6 +2,10 @@ #include "templates.h" +#ifdef MoveMemory +#undef MoveMemory // windows shit +#endif + class CAnimBlendSequence; // A collection of sequences @@ -25,6 +29,7 @@ public: void RemoveAnimSequences(void); void Uncompress(void); void RemoveUncompressedData(void); + void MoveMemory(bool onlyone = false); bool IsCompressed() { return !!compressed; }; }; diff --git a/src/animation/AnimBlendSequence.cpp b/src/animation/AnimBlendSequence.cpp index c429ff43..93cce91d 100644 --- a/src/animation/AnimBlendSequence.cpp +++ b/src/animation/AnimBlendSequence.cpp @@ -179,3 +179,24 @@ CAnimBlendSequence::RemoveUncompressedData(void) RwFree(keyFrames); keyFrames = nil; } + +#ifdef USE_CUSTOM_ALLOCATOR +bool +CAnimBlendSequence::MoveMemory(void) +{ + if(keyFrames){ + void *newaddr = gMainHeap.MoveMemory(keyFrames); + if(newaddr != keyFrames){ + keyFrames = newaddr; + return true; + } + }else if(keyFramesCompressed){ + void *newaddr = gMainHeap.MoveMemory(keyFramesCompressed); + if(newaddr != keyFramesCompressed){ + keyFramesCompressed = newaddr; + return true; + } + } + return false; +} +#endif diff --git a/src/animation/AnimBlendSequence.h b/src/animation/AnimBlendSequence.h index b370c5c6..67118b2f 100644 --- a/src/animation/AnimBlendSequence.h +++ b/src/animation/AnimBlendSequence.h @@ -2,6 +2,10 @@ #include "Quaternion.h" +#ifdef MoveMemory +#undef MoveMemory // windows shit +#endif + // TODO: put them somewhere else? struct KeyFrame { CQuaternion rotation; @@ -84,6 +88,7 @@ public: void Uncompress(void); void CompressKeyframes(void); void RemoveUncompressedData(void); + bool MoveMemory(void); void SetBoneTag(int tag) { boneTag = tag; } }; |