@@ -18,12 +18,98 @@ void AnimationManager_Z::ReserveMsgArray() {
1818 m_DfltSkelMsg.m_VsAgentPtr = NULL ;
1919 m_DfltSkelMsg.m_CanVsSphereCollide = false ;
2020 m_DfltSkelMsg.m_CanSphereCollide = false ;
21- m_AnimMsg = NewL_Z (17 ) RegMessage_Z[512 ];
22- m_BufAnimMsg = NewL_Z (18 ) RegMessage_Z[512 ];
21+ m_AnimMsg = NewL_Z (17 ) RegMessage_Z[MAX_REGMSG_ARRAY_SIZE ];
22+ m_BufAnimMsg = NewL_Z (18 ) RegMessage_Z[MAX_REGMSG_ARRAY_SIZE ];
2323 m_BufAnimMsgNb = 0 ;
2424 m_AnimMsgNb = 0 ;
25- m_SkelMsg = NewL_Z (22 ) SkelMessage_Z[256 ];
26- m_BufSkelMsg = NewL_Z (23 ) SkelMessage_Z[256 ];
25+ m_SkelMsg = NewL_Z (22 ) SkelMessage_Z[MAX_SKELMSG_ARRAY_SIZE ];
26+ m_BufSkelMsg = NewL_Z (23 ) SkelMessage_Z[MAX_SKELMSG_ARRAY_SIZE ];
2727 m_BufSkelMsgNb = 0 ;
2828 m_SkelMsgNb = 0 ;
2929}
30+
31+ void AnimationManager_Z::ReleaseMsgArray () {
32+ if (m_SkelMsg) {
33+ Delete_Z[] m_SkelMsg;
34+ }
35+ if (m_BufSkelMsg) {
36+ Delete_Z[] m_BufSkelMsg;
37+ }
38+ if (m_AnimMsg) {
39+ Delete_Z[] m_AnimMsg;
40+ }
41+ if (m_BufAnimMsg) {
42+ Delete_Z[] m_BufAnimMsg;
43+ }
44+ m_BufSkelMsg = NULL ;
45+ m_SkelMsg = NULL ;
46+ m_BufAnimMsg = NULL ;
47+ m_AnimMsg = NULL ;
48+ }
49+
50+ void AnimationManager_Z::SwapMsgArray () {
51+ SkelMessage_Z* l_TempSkelMsg = m_SkelMsg;
52+ m_SkelMsg = m_BufSkelMsg;
53+ m_BufSkelMsg = l_TempSkelMsg;
54+ m_SkelMsgNb = m_BufSkelMsgNb;
55+ RegMessage_Z* l_TempRegMsg = m_AnimMsg;
56+ m_AnimMsg = m_BufAnimMsg;
57+ m_BufAnimMsg = l_TempRegMsg;
58+ m_AnimMsgNb = m_BufAnimMsgNb;
59+ m_BufSkelMsgNb = 0 ;
60+ m_BufAnimMsgNb = 0 ;
61+ }
62+
63+ RegMessage_Z& AnimationManager_Z::GetRegMessage (S32 i_Idx) {
64+ if (i_Idx < 0 || i_Idx >= MAX_REGMSG_ARRAY_SIZE || i_Idx >= m_AnimMsgNb) {
65+ return m_DfltRegMsg;
66+ }
67+ return m_AnimMsg[i_Idx];
68+ }
69+
70+ S32 AnimationManager_Z::GetMaxRegMessage () {
71+ return MAX_REGMSG_ARRAY_SIZE;
72+ }
73+
74+ RegMessage_Z* AnimationManager_Z::GetRegMessage () {
75+ return m_BufAnimMsg;
76+ }
77+
78+ S32& AnimationManager_Z::GetRegMessageNb () {
79+ if (m_BufAnimMsgNb >= MAX_REGMSG_ARRAY_SIZE) {
80+ PrintfMsgAndCount ();
81+ ASSERTLE_Z (m_BufAnimMsgNb < MAX_REGMSG_ARRAY_SIZE, " Increase MAX_REGMSG_ARRAY_SIZE" , 94 , " BufAnimMsgNb<MAX_REGMSG_ARRAY_SIZE" );
82+ }
83+ return m_BufAnimMsgNb;
84+ }
85+
86+ void AnimationManager_Z::PrintfMsgAndCount () {
87+ S32DA l_MsgCountById;
88+ RegMessage_Z* l_Msg = m_BufAnimMsg;
89+ S32 i;
90+ S32 l_MsgNb = m_BufAnimMsgNb;
91+ for (i = 0 ; i < l_MsgNb; i++, l_Msg++) {
92+ S32 l_OldSize = l_MsgCountById.GetSize ();
93+ if (l_Msg->m_Id >= l_OldSize) {
94+ l_MsgCountById.SetSize (l_Msg->m_Id + 1 );
95+ while (l_OldSize < l_MsgCountById.GetSize ()) {
96+ l_MsgCountById[l_OldSize] = 0 ;
97+ l_OldSize++;
98+ }
99+ }
100+ l_MsgCountById[l_Msg->m_Id ]++;
101+ }
102+ S32* l_Ptr = l_MsgCountById.GetArrayPtr ();
103+ for (i = l_MsgCountById.GetSize (); i > 0 ; i--) {
104+ // $SABE: In a non master build here they would presumably print the message counts per ID
105+ l_Ptr++;
106+ }
107+ }
108+
109+ S32& AnimationManager_Z::GetSkelMessageNb () {
110+ return m_BufSkelMsgNb;
111+ }
112+
113+ SkelMessage_Z* AnimationManager_Z::GetSkelMessage () {
114+ return m_BufSkelMsg;
115+ }
0 commit comments