mirror of
https://github.com/Ragora/T2-CPP.git
synced 2026-07-15 17:44:35 +00:00
Attempt to consider player input when moving with mech code
This commit is contained in:
parent
c64b0739f9
commit
752155db59
1 changed files with 13 additions and 15 deletions
|
|
@ -37,7 +37,7 @@ static float turnStrength = 1.0;
|
||||||
extern "C"
|
extern "C"
|
||||||
{
|
{
|
||||||
static DX::AIMove aimoves[1024];
|
static DX::AIMove aimoves[1024];
|
||||||
|
|
||||||
#define MECH_TURNING_SPEED 0.4
|
#define MECH_TURNING_SPEED 0.4
|
||||||
// Maximum radians per 32ms tick
|
// Maximum radians per 32ms tick
|
||||||
__declspec(naked) void updateMoveHook()
|
__declspec(naked) void updateMoveHook()
|
||||||
|
|
@ -58,11 +58,6 @@ __declspec(naked) void updateMoveHook()
|
||||||
|
|
||||||
if (dAtob((playervar->CallMethod("isMechControlEnabled",0))) && mechchangedmove.freelook && (mechchangedmove.y>0.0))
|
if (dAtob((playervar->CallMethod("isMechControlEnabled",0))) && mechchangedmove.freelook && (mechchangedmove.y>0.0))
|
||||||
{
|
{
|
||||||
mechchangedmove.pitch = 0;
|
|
||||||
mechchangedmove.yaw = 0;
|
|
||||||
mechchangedmove.roll = 0;
|
|
||||||
mechchangedmove.freelook = true;
|
|
||||||
|
|
||||||
// FIXME: The 3 here should reference the datablock's maximum turning angle -- we're essentially normalizing our rotation here.
|
// FIXME: The 3 here should reference the datablock's maximum turning angle -- we're essentially normalizing our rotation here.
|
||||||
float turnStrength = playervar->headRotationZ / 3;
|
float turnStrength = playervar->headRotationZ / 3;
|
||||||
// Use whatever is leftover in our forward movement
|
// Use whatever is leftover in our forward movement
|
||||||
|
|
@ -72,14 +67,18 @@ __declspec(naked) void updateMoveHook()
|
||||||
float newHeadTurn = turnStrength * (MECH_TURNING_SPEED/20);
|
float newHeadTurn = turnStrength * (MECH_TURNING_SPEED/20);
|
||||||
|
|
||||||
mechchangedmove.y = forwardStrength;
|
mechchangedmove.y = forwardStrength;
|
||||||
mechchangedmove.x = turnStrength;
|
mechchangedmove.x += turnStrength;
|
||||||
// FIXME: Is the yaw value definitely in radians?
|
// FIXME: Is the yaw value definitely in radians?
|
||||||
playervar->mRotZ += newTurn;
|
playervar->mRotZ += newTurn + mechchangedmove.yaw;
|
||||||
|
|
||||||
// Now, we must translate the turning strength into an appropriate subtraction for our
|
// Now, we must translate the turning strength into an appropriate subtraction for our
|
||||||
// head rotation.
|
// head rotation.
|
||||||
playervar->headRotationZ += -newTurn;
|
playervar->headRotationZ += -newTurn;
|
||||||
|
|
||||||
|
mechchangedmove.pitch = 0;
|
||||||
|
mechchangedmove.yaw = 0;
|
||||||
|
mechchangedmove.roll = 0;
|
||||||
|
mechchangedmove.freelook = true;
|
||||||
}
|
}
|
||||||
__asm {
|
__asm {
|
||||||
mov eax,offset mechchangedmove
|
mov eax,offset mechchangedmove
|
||||||
|
|
@ -131,10 +130,10 @@ __declspec(naked) void updateMoveHook()
|
||||||
//unsigned int * idptr;
|
//unsigned int * idptr;
|
||||||
//unsigned int offset=0x4;
|
//unsigned int offset=0x4;
|
||||||
//for (offset=0x4; offset<0x100; offset+=0x4) {
|
//for (offset=0x4; offset<0x100; offset+=0x4) {
|
||||||
|
|
||||||
//idptr=(unsigned int *)((* (origobjptr))+offset);
|
//idptr=(unsigned int *)((* (origobjptr))+offset);
|
||||||
//Con::printf ("Offset: %08X Addr: %08X Data: %d",offset, idptr, *idptr);
|
//Con::printf ("Offset: %08X Addr: %08X Data: %d",offset, idptr, *idptr);
|
||||||
|
|
||||||
//}
|
//}
|
||||||
aiconn = &DX::GameConnection((unsigned int)origobjptr+0xA0);
|
aiconn = &DX::GameConnection((unsigned int)origobjptr+0xA0);
|
||||||
aimove = getAIMovePtr(aiconn->identifier);
|
aimove = getAIMovePtr(aiconn->identifier);
|
||||||
|
|
@ -147,9 +146,9 @@ __declspec(naked) void updateMoveHook()
|
||||||
//Con::evaluate ("listPlayers();",true,NULL,NULL);
|
//Con::evaluate ("listPlayers();",true,NULL,NULL);
|
||||||
|
|
||||||
//Con::printf("orig: %08X obj: %08X\n",origobjptr,0xBADABEEB);
|
//Con::printf("orig: %08X obj: %08X\n",origobjptr,0xBADABEEB);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//Con::printf("Move processed for %08X\n",(aicon.identifier));
|
//Con::printf("Move processed for %08X\n",(aicon.identifier));
|
||||||
}
|
}
|
||||||
//memcpy (&tmpmove,&(aimove->move),sizeof(DX::Move));
|
//memcpy (&tmpmove,&(aimove->move),sizeof(DX::Move));
|
||||||
|
|
@ -186,7 +185,7 @@ __declspec(naked) void updateMoveHook()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool conEnableNewAI(Linker::SimObject *obj, S32 argc, const char *argv[])
|
bool conEnableNewAI(Linker::SimObject *obj, S32 argc, const char *argv[])
|
||||||
{
|
{
|
||||||
|
|
||||||
(*((unsigned int *)0x75e360))=(unsigned int)newAIMoveListGenerator;
|
(*((unsigned int *)0x75e360))=(unsigned int)newAIMoveListGenerator;
|
||||||
|
|
@ -284,4 +283,3 @@ __declspec(naked) void updateMoveHook()
|
||||||
DX::memPatch(0x5D2D6E,(unsigned char *)mechcode,7);
|
DX::memPatch(0x5D2D6E,(unsigned char *)mechcode,7);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue