Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mumble-voip/mumble.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTuck Therebelos <snares@users.sourceforge.net>2009-04-25 01:36:03 +0400
committerTuck Therebelos <snares@users.sourceforge.net>2009-04-25 01:36:03 +0400
commitf594ce8ee4a4af180bcb6c90cc8a1eb46727eaee (patch)
treec4e6f0b0bb2b16e9ea75b892244c882364c5ad7a /plugins/cod5
parent35ebe8f1c73f942ef8482fda847f3df23d15197d (diff)
Plugins update for 1.2 PA; Cod5 and L4D patch update
Diffstat (limited to 'plugins/cod5')
-rw-r--r--plugins/cod5/cod5.cpp62
1 files changed, 38 insertions, 24 deletions
diff --git a/plugins/cod5/cod5.cpp b/plugins/cod5/cod5.cpp
index ad9262db5..86e0f64a6 100644
--- a/plugins/cod5/cod5.cpp
+++ b/plugins/cod5/cod5.cpp
@@ -38,16 +38,16 @@ static bool peekProc(VOID *base, VOID *dest, SIZE_T len) {
}
static void about(HWND h) {
- ::MessageBox(h, L"Reads audio position information from COD5 (v 1.3.1080)", L"Mumble COD5 Plugin", MB_OK);
+ ::MessageBox(h, L"Reads audio position information from COD5 (v 1.4.1144)", L"Mumble COD5 Plugin", MB_OK);
}
-static int fetch(float *pos, float *front, float *top) {
+static int fetch(float *avatar_pos, float *avatar_front, float *avatar_top, float *camera_pos, float *camera_front, float *camera_top, std::string &context, std::wstring &identity) {
float viewHor, viewVer;
char state;
for (int i=0;i<3;i++)
- pos[i]=front[i]=top[i]=0.0f;
+ avatar_pos[i]=avatar_front[i]=avatar_top[i]=0.0f;
bool ok;
@@ -56,15 +56,15 @@ static int fetch(float *pos, float *front, float *top) {
Address Type Description
===================================
- 0x008D2034 float Z-Coordinate
- 0x008D2038 float X-Coordinate
- 0x008D203C float Y-Coordinate
- 0x008D2044 float Horizontal view (degrees)
- 0x008D2040 float Vertical view (degrees)
+ 0x008D5D34 float Z-Coordinate
+ 0x008D5D38 float X-Coordinate
+ 0x008D5D3C float Y-Coordinate
+ 0x008D5D44 float Horizontal view (degrees)
+ 0x008D5D40 float Vertical view (degrees)
- 0x00983AE4 byte Magical state value
+ 0x009877FC byte Magical state value
*/
- ok = peekProc((BYTE *) 0x00983AE4, &state, 1); // Magical state value
+ ok = peekProc((BYTE *) 0x009877FC, &state, 1); // Magical state value
if (! ok)
return false;
/*
@@ -79,11 +79,11 @@ static int fetch(float *pos, float *front, float *top) {
if (state != 4)
return true; // This results in all vectors beeing zero which tells mumble to ignore them.
- ok = peekProc((BYTE *) 0x008D2034, pos+2, 4) && //Z
- peekProc((BYTE *) 0x008D2038, pos, 4) && //X
- peekProc((BYTE *) 0x008D203C, pos+1, 4) && //Y
- peekProc((BYTE *) 0x008D2044, &viewHor, 4) && //Hor
- peekProc((BYTE *) 0x008D2040, &viewVer, 4); //Ver
+ ok = peekProc((BYTE *) 0x008D5D34, avatar_pos+2, 4) && //Z
+ peekProc((BYTE *) 0x008D5D38, avatar_pos, 4) && //X
+ peekProc((BYTE *) 0x008D5D3C, avatar_pos+1, 4) && //Y
+ peekProc((BYTE *) 0x008D5D44, &viewHor, 4) && //Hor
+ peekProc((BYTE *) 0x008D5D40, &viewVer, 4); //Ver
if (! ok)
return false;
@@ -99,8 +99,8 @@ static int fetch(float *pos, float *front, float *top) {
40 units = 1 meter (not confirmed)
*/
for (int i=0;i<3;i++)
- pos[i]/=40.0f; // Scale to meters
- pos[0]*=(-1.0f); // Convert right to left handed
+ avatar_pos[i]/=40.0f; // Scale to meters
+ avatar_pos[0]*=(-1.0f); // Convert right to left handed
// Calculate view unit vector
/*
@@ -118,9 +118,15 @@ static int fetch(float *pos, float *front, float *top) {
viewVer *= static_cast<float>(M_PI / 180.0f);
viewHor *= static_cast<float>(M_PI / 180.0f);
- front[0] = -sin(viewHor) * cos(viewVer);
- front[1] = -sin(viewVer);
- front[2] = cos(viewHor) * cos(viewVer);
+ avatar_front[0] = -sin(viewHor) * cos(viewVer);
+ avatar_front[1] = -sin(viewVer);
+ avatar_front[2] = cos(viewHor) * cos(viewVer);
+
+ for (int i=0;i<3;i++) {
+ camera_pos[i] = avatar_pos[i];
+ camera_front[i] = avatar_front[i];
+ camera_top[i] = avatar_top[i];
+ }
return ok;
}
@@ -135,8 +141,11 @@ static int trylock() {
if (!h)
return false;
- float pos[3], front[3], top[3];
- if (fetch(pos, front, top))
+ float apos[3], afront[3], atop[3], cpos[3], cfront[3], ctop[3];
+ std::string context;
+ std::wstring identity;
+
+ if (fetch(apos, afront, atop, cpos, cfront, ctop, context, identity))
return true;
CloseHandle(h);
@@ -151,14 +160,19 @@ static void unlock() {
}
}
+static const std::wstring longdesc() {
+ return std::wstring(L"Supports Call of Duty 5 v1.4.1144 only. No context or identity support yet.");
+}
+
static MumblePlugin cod5plug = {
MUMBLE_PLUGIN_MAGIC,
- L"Call of Duty 5 v1.3.1080",
- L"Call of Duty 5",
+ std::wstring(L"Call of Duty 5 v1.4.1144"),
+ std::wstring(L"Call of Duty 5"),
about,
NULL,
trylock,
unlock,
+ longdesc,
fetch
};