|
From: <ec...@us...> - 2002-08-26 00:30:05
|
Update of /cvsroot/decaldev/source/Decal
In directory usw-pr-cvs1:/tmp/cvs-serv30078
Modified Files:
ACHooks.h ACHooks.cpp
Log Message:
Upload for Madar, hooks in the new FaceHeading stuff
Index: ACHooks.h
===================================================================
RCS file: /cvsroot/decaldev/source/Decal/ACHooks.h,v
retrieving revision 1.12
retrieving revision 1.13
diff -C2 -d -r1.12 -r1.13
*** ACHooks.h 22 Jul 2002 19:15:40 -0000 1.12
--- ACHooks.h 26 Aug 2002 00:30:02 -0000 1.13
***************
*** 100,103 ****
--- 100,108 ----
long m_lMoveItemEx;
+ bool m_bFaceHeading;
+ long m_lMovementThingyParent;
+ long m_lMovementThingyOffset;
+ long m_lFaceHeading;
+
public:
STDMETHOD(MoveItemEx)(long lObjectID, long lDestinationID);
***************
*** 131,134 ****
--- 136,140 ----
STDMETHOD(DropItem)(long lObjectID);
STDMETHOD(get_HooksAvail)(long *pVal) ;
+ STDMETHOD(FaceHeading)(float fHeading, VARIANT_BOOL bUnknown, VARIANT_BOOL *pRetval);
};
Index: ACHooks.cpp
===================================================================
RCS file: /cvsroot/decaldev/source/Decal/ACHooks.cpp,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -d -r1.11 -r1.12
*** ACHooks.cpp 22 Jul 2002 21:01:39 -0000 1.11
--- ACHooks.cpp 26 Aug 2002 00:30:02 -0000 1.12
***************
*** 30,33 ****
--- 30,34 ----
m_bPointerState = false;
m_bMoveItemEx = false;
+ m_bFaceHeading = false;
m_Hooks = 0 ;
***************
*** 204,207 ****
--- 205,232 ----
pfnMoveItemEx = reinterpret_cast< void (*)(DWORD, DWORD, DWORD) >( Val );
}
+
+ m_lMovementThingyParent = m_lMovementThingyOffset = m_lFaceHeading = 0;
+
+ if( QueryMemLoc( _bstr_t( "MovementThingyParent" ), &Val ) == S_OK)
+ {
+ m_lMovementThingyParent = Val;
+ }
+
+ if( QueryMemLoc( _bstr_t( "MovementThingyOffset" ), &Val ) == S_OK)
+ {
+ m_lMovementThingyOffset = Val;
+ }
+
+ if( QueryMemLoc( _bstr_t( "FaceHeading" ), &Val ) == S_OK)
+ {
+ m_lFaceHeading = Val;
+ }
+
+ if (m_lMovementThingyParent && m_lMovementThingyOffset && m_lFaceHeading)
+ {
+ m_bFaceHeading = true;
+
+ m_Hooks |= eFaceHeading;
+ }
}
***************
*** 941,944 ****
--- 966,1001 ----
add esp, 0x0C
}
+
+ return S_OK;
+ }
+
+ // Turn to a particular heading, discovered by Madar on 8/25/2002
+ STDMETHODIMP cACHooks::FaceHeading (float fHeading, VARIANT_BOOL bUnknown, VARIANT_BOOL *pRetval)
+ {
+ if (!m_bFaceHeading)
+ {
+ *pRetval = VARIANT_FALSE;
+ return S_FALSE;
+ }
+
+ DWORD dwTemp = m_lFaceHeading;
+
+ DWORD ** pTemp = (DWORD **) m_lMovementThingyParent;
+
+ DWORD dwMovementThingy = pTemp[0][m_lMovementThingyOffset];
+ long lResult = 0;
+
+ DWORD dwSecondArg = (bUnknown == VARIANT_TRUE) ? 1 : 0;
+
+ __asm
+ {
+ mov ecx,dwMovementThingy
+ push dwSecondArg
+ push fHeading
+ call dwTemp
+ mov lResult, eax
+ }
+
+ *pRetval = lResult ? VARIANT_TRUE : VARIANT_FALSE;
return S_OK;
|