user messages tested and working

fixed some floating point casts

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40603
This commit is contained in:
Borja Ferrer 2007-03-11 19:26:47 +00:00
parent d8c02c294f
commit 95dcffc972
3 changed files with 14 additions and 11 deletions

View File

@ -244,6 +244,7 @@ bf_write *CUserMessages::OnStartMessage_Pre(IRecipientFilter *filter, int msg_ty
m_CurId = msg_type;
m_CurRecFilter = filter;
m_InHook = true;
m_BlockEndPost = false;
if (!is_intercept_empty)
{
@ -268,7 +269,7 @@ bf_write *CUserMessages::OnStartMessage_Post(IRecipientFilter *filter, int msg_t
void CUserMessages::OnMessageEnd_Post()
{
if (!m_InHook || (META_RESULT_STATUS == MRES_SUPERCEDE))
if (!m_InHook || m_BlockEndPost)
{
RETURN_META(MRES_IGNORED);
}
@ -340,6 +341,8 @@ void CUserMessages::OnMessageEnd_Pre()
pInfo->IsHooked = true;
res = pInfo->Callback->InterceptUserMessage(m_CurId, &m_InterceptBuffer, m_CurRecFilter);
intercepted = true;
switch (res)
{
case Pl_Stop:
@ -375,10 +378,10 @@ void CUserMessages::OnMessageEnd_Pre()
_DecRefCounter();
continue;
}
break;
}
}
pInfo->IsHooked = false;
intercepted = true;
iter++;
}
@ -395,8 +398,6 @@ void CUserMessages::OnMessageEnd_Pre()
m_ReadBuffer.StartReading(m_InterceptBuffer.GetBasePointer(), m_InterceptBuffer.GetNumBytesWritten());
engine_bfw->WriteBitsFromBuffer(&m_ReadBuffer, m_InterceptBuffer.GetNumBitsWritten());
ENGINE_CALL(MessageEnd)();
goto supercede;
}
pList = &m_msgHooks[m_CurId];
@ -418,8 +419,9 @@ void CUserMessages::OnMessageEnd_Pre()
iter++;
}
RETURN_META(MRES_IGNORED);
RETURN_META((intercepted) ? MRES_SUPERCEDE : MRES_IGNORED);
supercede:
m_InHook = false;
m_BlockEndPost = true;
RETURN_META(MRES_SUPERCEDE);
}

View File

@ -71,6 +71,7 @@ private:
bf_read m_ReadBuffer;
size_t m_HookCount;
bool m_InHook;
bool m_BlockEndPost;
Trie *m_Names;
CellRecipientFilter m_CellRecFilter;

View File

@ -351,9 +351,9 @@ static cell_t GetEntDataVector(IPluginContext *pContext, const cell_t *params)
cell_t *vec;
pContext->LocalToPhysAddr(params[3], &vec);
vec[0] = v->x;
vec[1] = v->y;
vec[2] = v->z;
vec[0] = sp_ftoc(v->x);
vec[1] = sp_ftoc(v->y);
vec[2] = sp_ftoc(v->z);
return 1;
}
@ -379,9 +379,9 @@ static cell_t SetEntDataVector(IPluginContext *pContext, const cell_t *params)
cell_t *vec;
pContext->LocalToPhysAddr(params[3], &vec);
v->x = vec[0];
v->y = vec[1];
v->z = vec[2];
v->x = sp_ctof(vec[0]);
v->y = sp_ctof(vec[1]);
v->z = sp_ctof(vec[2]);
if (params[4])
{