|
1 | 1 | #include <StdInc.h> |
| 2 | +#include "../game_sa/CAnimBlendSequenceSA.h" |
| 3 | +//#include "../game_sa//CAnimManagerSA.h" |
2 | 4 |
|
3 | 5 | h_CAnimBlendHierarchy_SetName OLD__CAnimBlendHierarchy_SetName = (h_CAnimBlendHierarchy_SetName)0x4CF2D0; |
4 | 6 | hCAnimBlendHierarchy_RemoveAnimSequences OLD_CAnimBlendHierarchy_RemoveAnimSequences = (hCAnimBlendHierarchy_RemoveAnimSequences)0x4CF8E0; |
@@ -125,6 +127,8 @@ void CClientIFP::ReadIFPVersion2( bool anp3) |
125 | 127 | m_pVecAnimations->resize ( HeaderV2.TotalAnimations ); |
126 | 128 | for (size_t i = 0; i < m_pVecAnimations->size(); i++) |
127 | 129 | { |
| 130 | + CAnimManager * pAnimManager = g_pGame->GetAnimManager ( ); |
| 131 | + |
128 | 132 | IFP_Animation & ifpAnimation = m_pVecAnimations->at ( i ); |
129 | 133 |
|
130 | 134 | _CAnimBlendHierarchy * pAnimHierarchy = &ifpAnimation.Hierarchy; |
@@ -197,32 +201,20 @@ void CClientIFP::ReadIFPVersion2( bool anp3) |
197 | 201 | memset (ObjectNode.Name, 0, sizeof(Object::Name)); |
198 | 202 | strncpy (ObjectNode.Name, CorrectBoneName.c_str(), CorrectBoneName.size() +1); |
199 | 203 |
|
200 | | - _CAnimBlendSequence Sequence; |
201 | | - _CAnimBlendSequence * pUnkownSequence = nullptr; |
| 204 | + |
| 205 | + CAnimBlendSequenceSAInterface AnimationSequence; |
| 206 | + CAnimBlendSequenceSAInterface * pAnimationSequenceInterface = &AnimationSequence; |
202 | 207 | if (bUnknownSequence) |
203 | 208 | { |
204 | | - |
205 | 209 | size_t UnkownSequenceIndex = IFP_TOTAL_SEQUENCES + TotalUnknownSequences; |
206 | | - pUnkownSequence = (_CAnimBlendSequence*)((BYTE*)pAnimHierarchy->m_pSequences + (sizeof(_CAnimBlendSequence) * UnkownSequenceIndex)); |
207 | | - |
208 | | - //ofs << "Initializing unknown sequence: UnkownSequenceIndex: " << UnkownSequenceIndex << std::endl; |
209 | | - |
210 | | - _CAnimBlendSequence_Constructor ( pUnkownSequence ); |
211 | | - |
212 | | - OLD__CAnimBlendSequence_SetName ( pUnkownSequence, ObjectNode.Name); |
213 | | - |
214 | | - OLD__CAnimBlendSequence_SetBoneTag ( pUnkownSequence, ObjectNode.BoneID); |
215 | | - |
| 210 | + pAnimationSequenceInterface = ( CAnimBlendSequenceSAInterface *)((BYTE*)pAnimHierarchy->m_pSequences + (sizeof(_CAnimBlendSequence) * UnkownSequenceIndex)); |
216 | 211 | TotalUnknownSequences ++; |
217 | 212 | } |
218 | | - else |
219 | | - { |
220 | | - _CAnimBlendSequence_Constructor(&Sequence); |
221 | | - |
222 | | - OLD__CAnimBlendSequence_SetName(&Sequence, ObjectNode.Name); |
223 | 213 |
|
224 | | - OLD__CAnimBlendSequence_SetBoneTag(&Sequence, ObjectNode.BoneID); |
225 | | - } |
| 214 | + std::unique_ptr < CAnimBlendSequence > pAnimationSequence = pAnimManager->GetAnimBlendSequence ( pAnimationSequenceInterface ); |
| 215 | + pAnimationSequence->Initialize ( ); |
| 216 | + pAnimationSequence->SetName ( ObjectNode.Name ); |
| 217 | + pAnimationSequence->SetBoneTag ( ObjectNode.BoneID ); |
226 | 218 |
|
227 | 219 | if (bFirstSeq) |
228 | 220 | { |
@@ -264,20 +256,14 @@ void CClientIFP::ReadIFPVersion2( bool anp3) |
264 | 256 | { |
265 | 257 | unsigned char * pKeyFrames = (unsigned char*) OLD_CMemoryMgr_Malloc ( data_size ); |
266 | 258 |
|
267 | | - if ( bUnknownSequence ) |
268 | | - { |
269 | | - OLD__CAnimBlendSequence_SetNumFrames ( pUnkownSequence, ObjectNode.TotalFrames, bIsRoot, bIsCompressed, pKeyFrames ); |
270 | | - } |
271 | | - else |
272 | | - { |
273 | | - OLD__CAnimBlendSequence_SetNumFrames ( &Sequence, ObjectNode.TotalFrames, bIsRoot, bIsCompressed, pKeyFrames ); |
274 | | - } |
| 259 | + pAnimationSequence->SetKeyFrames ( ObjectNode.TotalFrames, bIsRoot, bIsCompressed, pKeyFrames ); |
275 | 260 |
|
276 | 261 | readBytes ( pKeyFrames, data_size ); |
277 | 262 |
|
278 | 263 | if ( !bUnknownSequence ) |
279 | 264 | { |
280 | | - MapOfSequences [ CorrectBoneName ] = Sequence; |
| 265 | + _CAnimBlendSequence * pAnimSequenceInterface = (_CAnimBlendSequence*)pAnimationSequence->GetInterface(); |
| 266 | + MapOfSequences [ CorrectBoneName ] = (_CAnimBlendSequence)*pAnimSequenceInterface; |
281 | 267 | } |
282 | 268 | } |
283 | 269 | } |
@@ -320,7 +306,7 @@ void CClientIFP::ReadIFPVersion2( bool anp3) |
320 | 306 |
|
321 | 307 | void CClientIFP::ReadIFPVersion1 ( ) |
322 | 308 | { |
323 | | - uint32_t OffsetEOF; |
| 309 | + /*uint32_t OffsetEOF; |
324 | 310 |
|
325 | 311 | readBuffer < uint32_t > ( &OffsetEOF ); |
326 | 312 | ROUNDSIZE (OffsetEOF); |
@@ -530,7 +516,7 @@ void CClientIFP::ReadIFPVersion1 ( ) |
530 | 516 |
|
531 | 517 | Call__CAnimBlendHierarchy_CalcTotalTime(pAnimHierarchy); |
532 | 518 | } |
533 | | - } |
| 519 | + }*/ |
534 | 520 | } |
535 | 521 |
|
536 | 522 |
|
|
0 commit comments