1.1 --- a/core/UserMessages.cpp Sun Mar 11 18:37:55 2007 +0000
1.2 +++ b/core/UserMessages.cpp Sun Mar 11 19:26:47 2007 +0000
1.3 @@ -244,6 +244,7 @@
1.4 m_CurId = msg_type;
1.5 m_CurRecFilter = filter;
1.6 m_InHook = true;
1.7 + m_BlockEndPost = false;
1.8
1.9 if (!is_intercept_empty)
1.10 {
1.11 @@ -268,7 +269,7 @@
1.12
1.13 void CUserMessages::OnMessageEnd_Post()
1.14 {
1.15 - if (!m_InHook || (META_RESULT_STATUS == MRES_SUPERCEDE))
1.16 + if (!m_InHook || m_BlockEndPost)
1.17 {
1.18 RETURN_META(MRES_IGNORED);
1.19 }
1.20 @@ -340,6 +341,8 @@
1.21 pInfo->IsHooked = true;
1.22 res = pInfo->Callback->InterceptUserMessage(m_CurId, &m_InterceptBuffer, m_CurRecFilter);
1.23
1.24 + intercepted = true;
1.25 +
1.26 switch (res)
1.27 {
1.28 case Pl_Stop:
1.29 @@ -375,10 +378,10 @@
1.30 _DecRefCounter();
1.31 continue;
1.32 }
1.33 + break;
1.34 }
1.35 }
1.36 pInfo->IsHooked = false;
1.37 - intercepted = true;
1.38 iter++;
1.39 }
1.40
1.41 @@ -395,8 +398,6 @@
1.42 m_ReadBuffer.StartReading(m_InterceptBuffer.GetBasePointer(), m_InterceptBuffer.GetNumBytesWritten());
1.43 engine_bfw->WriteBitsFromBuffer(&m_ReadBuffer, m_InterceptBuffer.GetNumBitsWritten());
1.44 ENGINE_CALL(MessageEnd)();
1.45 -
1.46 - goto supercede;
1.47 }
1.48
1.49 pList = &m_msgHooks[m_CurId];
1.50 @@ -418,8 +419,9 @@
1.51 iter++;
1.52 }
1.53
1.54 - RETURN_META(MRES_IGNORED);
1.55 + RETURN_META((intercepted) ? MRES_SUPERCEDE : MRES_IGNORED);
1.56 supercede:
1.57 m_InHook = false;
1.58 + m_BlockEndPost = true;
1.59 RETURN_META(MRES_SUPERCEDE);
1.60 }
2.1 --- a/core/UserMessages.h Sun Mar 11 18:37:55 2007 +0000
2.2 +++ b/core/UserMessages.h Sun Mar 11 19:26:47 2007 +0000
2.3 @@ -71,6 +71,7 @@
2.4 bf_read m_ReadBuffer;
2.5 size_t m_HookCount;
2.6 bool m_InHook;
2.7 + bool m_BlockEndPost;
2.8
2.9 Trie *m_Names;
2.10 CellRecipientFilter m_CellRecFilter;
3.1 --- a/core/smn_entities.cpp Sun Mar 11 18:37:55 2007 +0000
3.2 +++ b/core/smn_entities.cpp Sun Mar 11 19:26:47 2007 +0000
3.3 @@ -351,9 +351,9 @@
3.4 cell_t *vec;
3.5 pContext->LocalToPhysAddr(params[3], &vec);
3.6
3.7 - vec[0] = v->x;
3.8 - vec[1] = v->y;
3.9 - vec[2] = v->z;
3.10 + vec[0] = sp_ftoc(v->x);
3.11 + vec[1] = sp_ftoc(v->y);
3.12 + vec[2] = sp_ftoc(v->z);
3.13
3.14 return 1;
3.15 }
3.16 @@ -379,9 +379,9 @@
3.17 cell_t *vec;
3.18 pContext->LocalToPhysAddr(params[3], &vec);
3.19
3.20 - v->x = vec[0];
3.21 - v->y = vec[1];
3.22 - v->z = vec[2];
3.23 + v->x = sp_ctof(vec[0]);
3.24 + v->y = sp_ctof(vec[1]);
3.25 + v->z = sp_ctof(vec[2]);
3.26
3.27 if (params[4])
3.28 {