CBasePlayerAnimState::UpdateAimSequenceLayers
0x0041ee90 · 2049 bytes · __thiscall
_ZN20CBasePlayerAnimState23UpdateAimSequenceLayersEfibP21CSequenceTransitionerf
Decompiled
undefined (6 params)
/* CBasePlayerAnimState::UpdateAimSequenceLayers(float, int, bool, CSequenceTransitioner*, float) */
void __thiscall
CBasePlayerAnimState::UpdateAimSequenceLayers
(CBasePlayerAnimState *this,float param_1,int param_2,bool param_3,
CSequenceTransitioner *param_4,float param_5)
{
undefined4 uVar1;
CBaseEntity *pCVar2;
uint uVar3;
CBaseEdict *pCVar4;
float fVar5;
CSequenceTransitioner *this_00;
int iVar6;
uint *puVar7;
uint uVar8;
uint *puVar9;
int iVar10;
CStudioHdr *pCVar11;
CStudioHdr *pCVar12;
uint *puVar13;
uint *puVar14;
uint *puVar15;
byte bVar16;
float fVar17;
float fVar18;
float fVar19;
float local_20 [4];
this_00 = param_4;
bVar16 = 0;
local_20[0] = 1.0;
iVar6 = (**(code **)(*(int *)this + 0x30))(this,¶m_1,local_20,param_3);
pCVar2 = *(CBaseEntity **)(this + 0x14);
if (iVar6 == -1) {
iVar6 = 0;
}
pCVar11 = *(CStudioHdr **)(pCVar2 + 0x13e0);
if (pCVar11 == (CStudioHdr *)0x0) {
iVar10 = CBaseEntity::GetModel(pCVar2);
if (iVar10 == 0) {
pCVar11 = *(CStudioHdr **)(pCVar2 + 0x13e0);
}
else {
CBaseAnimating::LockStudioHdr((CBaseAnimating *)pCVar2);
pCVar11 = *(CStudioHdr **)(pCVar2 + 0x13e0);
}
pCVar12 = (CStudioHdr *)0x0;
if (pCVar11 != (CStudioHdr *)0x0) goto LAB_0041eee2;
}
else {
LAB_0041eee2:
pCVar12 = (CStudioHdr *)0x0;
if (*(int *)pCVar11 != 0) {
pCVar12 = pCVar11;
}
}
CSequenceTransitioner::CheckForSequenceChange(this_00,pCVar12,iVar6,false,true);
fVar5 = param_1;
pCVar2 = *(CBaseEntity **)(this + 0x14);
fVar18 = *(float *)(pCVar2 + 0x528);
fVar17 = *(float *)(gpGlobals + 0xc);
fVar19 = *(float *)(pCVar2 + 0x468);
if (0.0 <= fVar18) {
if (fVar18 <= 1.0) {
fVar19 = fVar19 * (1.0 - fVar18);
}
else {
fVar19 = 0.0;
}
}
pCVar11 = *(CStudioHdr **)(pCVar2 + 0x13e0);
if (pCVar11 == (CStudioHdr *)0x0) {
iVar10 = CBaseEntity::GetModel(pCVar2);
if (iVar10 == 0) {
pCVar11 = *(CStudioHdr **)(pCVar2 + 0x13e0);
}
else {
CBaseAnimating::LockStudioHdr((CBaseAnimating *)pCVar2);
pCVar11 = *(CStudioHdr **)(pCVar2 + 0x13e0);
}
pCVar12 = (CStudioHdr *)0x0;
if (pCVar11 != (CStudioHdr *)0x0) goto LAB_0041ef57;
}
else {
LAB_0041ef57:
pCVar12 = (CStudioHdr *)0x0;
if (*(int *)pCVar11 != 0) {
pCVar12 = pCVar11;
}
}
CSequenceTransitioner::UpdateCurrent(this_00,pCVar12,iVar6,fVar5,fVar19,fVar17);
puVar7 = (uint *)CBaseAnimatingOverlay::GetAnimOverlay
(*(CBaseAnimatingOverlay **)(this + 0x14),param_2);
uVar8 = param_2 + 1;
puVar9 = (uint *)CBaseAnimatingOverlay::GetAnimOverlay
(*(CBaseAnimatingOverlay **)(this + 0x14),uVar8);
if (*(int *)(this_00 + 0xc) == 1) {
puVar14 = *(uint **)this_00;
puVar13 = puVar7;
for (iVar6 = 0x13; iVar6 != 0; iVar6 = iVar6 + -1) {
*puVar13 = *puVar14;
puVar14 = puVar14 + (uint)bVar16 * -2 + 1;
puVar13 = puVar13 + (uint)bVar16 * -2 + 1;
}
if ((float)puVar7[5] != 1.0) {
uVar8 = puVar7[0x12];
if (uVar8 != 0) {
if (*(char *)(uVar8 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(uVar8 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar6 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar6 + 2) = 0;
}
}
else {
*(byte *)(uVar8 + 0x70) = *(byte *)(uVar8 + 0x70) | 1;
}
uVar1 = *(undefined4 *)(gpGlobals + 0xc);
*(undefined4 *)(uVar8 + 0x78) = 0;
*(undefined4 *)(uVar8 + 0x74) = uVar1;
}
puVar7[5] = 0x3f800000;
}
if ((float)puVar9[5] != 0.0) {
uVar8 = puVar9[0x12];
if (uVar8 != 0) {
if (*(char *)(uVar8 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(uVar8 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar6 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar6 + 2) = 0;
}
}
else {
*(byte *)(uVar8 + 0x70) = *(byte *)(uVar8 + 0x70) | 1;
}
uVar1 = *(undefined4 *)(gpGlobals + 0xc);
*(undefined4 *)(uVar8 + 0x78) = 0;
*(undefined4 *)(uVar8 + 0x74) = uVar1;
}
puVar9[5] = 0;
}
if (param_2 != puVar7[0xf]) {
uVar8 = puVar7[0x12];
if (uVar8 != 0) {
if (*(char *)(uVar8 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(uVar8 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar6 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar6 + 2) = 0;
}
}
else {
*(byte *)(uVar8 + 0x70) = *(byte *)(uVar8 + 0x70) | 1;
}
uVar1 = *(undefined4 *)(gpGlobals + 0xc);
*(undefined4 *)(uVar8 + 0x78) = 0;
*(undefined4 *)(uVar8 + 0x74) = uVar1;
}
puVar7[0xf] = param_2;
}
*puVar7 = *puVar7 | 1;
goto LAB_0041f0b8;
}
if (*(int *)(this_00 + 0xc) < 2) goto LAB_0041f0b8;
puVar14 = *(uint **)this_00;
puVar13 = puVar14;
puVar15 = puVar7;
for (iVar6 = 0x13; iVar6 != 0; iVar6 = iVar6 + -1) {
*puVar15 = *puVar13;
puVar13 = puVar13 + (uint)bVar16 * -2 + 1;
puVar15 = puVar15 + (uint)bVar16 * -2 + 1;
}
puVar14 = puVar14 + 0x13;
puVar13 = puVar9;
for (iVar6 = 0x13; iVar6 != 0; iVar6 = iVar6 + -1) {
*puVar13 = *puVar14;
puVar14 = puVar14 + (uint)bVar16 * -2 + 1;
puVar13 = puVar13 + (uint)bVar16 * -2 + 1;
}
fVar18 = (float)puVar7[5];
if (1.0 - fVar18 == (float)puVar9[5]) {
if (param_2 != puVar7[0xf]) {
LAB_0041effa:
uVar3 = puVar7[0x12];
if (uVar3 != 0) {
if (*(char *)(uVar3 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(uVar3 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar6 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar6 + 2) = 0;
}
}
else {
*(byte *)(uVar3 + 0x70) = *(byte *)(uVar3 + 0x70) | 1;
}
uVar1 = *(undefined4 *)(gpGlobals + 0xc);
*(undefined4 *)(uVar3 + 0x78) = 0;
*(undefined4 *)(uVar3 + 0x74) = uVar1;
}
puVar7[0xf] = param_2;
}
}
else {
uVar3 = puVar9[0x12];
if (uVar3 != 0) {
if (*(char *)(uVar3 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(uVar3 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar6 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar6 + 2) = 0;
}
}
else {
*(byte *)(uVar3 + 0x70) = *(byte *)(uVar3 + 0x70) | 1;
}
uVar1 = *(undefined4 *)(gpGlobals + 0xc);
*(undefined4 *)(uVar3 + 0x78) = 0;
*(undefined4 *)(uVar3 + 0x74) = uVar1;
}
puVar9[5] = (uint)(1.0 - fVar18);
if (param_2 != puVar7[0xf]) goto LAB_0041effa;
}
if (uVar8 != puVar9[0xf]) {
uVar3 = puVar9[0x12];
if (uVar3 != 0) {
if (*(char *)(uVar3 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(uVar3 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar6 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar6 + 2) = 0;
}
}
else {
*(byte *)(uVar3 + 0x70) = *(byte *)(uVar3 + 0x70) | 1;
}
uVar1 = *(undefined4 *)(gpGlobals + 0xc);
*(undefined4 *)(uVar3 + 0x78) = 0;
*(undefined4 *)(uVar3 + 0x74) = uVar1;
}
puVar9[0xf] = uVar8;
}
*puVar7 = *puVar7 | 1;
*puVar9 = *puVar9 | 1;
LAB_0041f0b8:
fVar18 = (float)puVar7[5];
fVar17 = param_5 * local_20[0] * fVar18;
if (fVar17 != fVar18) {
uVar8 = puVar7[0x12];
if (uVar8 != 0) {
if (*(char *)(uVar8 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(uVar8 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar6 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar6 + 2) = 0;
}
}
else {
*(byte *)(uVar8 + 0x70) = *(byte *)(uVar8 + 0x70) | 1;
}
uVar1 = *(undefined4 *)(gpGlobals + 0xc);
*(undefined4 *)(uVar8 + 0x78) = 0;
*(undefined4 *)(uVar8 + 0x74) = uVar1;
}
puVar7[5] = (uint)fVar17;
fVar18 = fVar17;
}
fVar17 = 0.0;
if (0.0 <= fVar18) {
fVar17 = fVar18;
}
if (1.0 <= fVar17) {
fVar17 = 1.0;
}
if (fVar18 != fVar17) {
uVar8 = puVar7[0x12];
if (uVar8 != 0) {
if (*(char *)(uVar8 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(uVar8 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar6 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar6 + 2) = 0;
}
}
else {
*(byte *)(uVar8 + 0x70) = *(byte *)(uVar8 + 0x70) | 1;
}
uVar1 = *(undefined4 *)(gpGlobals + 0xc);
*(undefined4 *)(uVar8 + 0x78) = 0;
*(undefined4 *)(uVar8 + 0x74) = uVar1;
}
puVar7[5] = (uint)fVar17;
}
fVar18 = (float)puVar9[5];
fVar17 = param_5 * local_20[0] * fVar18;
if (fVar17 != fVar18) {
uVar8 = puVar9[0x12];
if (uVar8 != 0) {
if (*(char *)(uVar8 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(uVar8 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar6 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar6 + 2) = 0;
}
}
else {
*(byte *)(uVar8 + 0x70) = *(byte *)(uVar8 + 0x70) | 1;
}
uVar1 = *(undefined4 *)(gpGlobals + 0xc);
*(undefined4 *)(uVar8 + 0x78) = 0;
*(undefined4 *)(uVar8 + 0x74) = uVar1;
}
puVar9[5] = (uint)fVar17;
fVar18 = fVar17;
}
fVar17 = 0.0;
if (0.0 <= fVar18) {
fVar17 = fVar18;
}
if (1.0 <= fVar17) {
fVar17 = 1.0;
}
if (fVar18 != fVar17) {
uVar8 = puVar9[0x12];
if (uVar8 != 0) {
if (*(char *)(uVar8 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(uVar8 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar6 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar6 + 2) = 0;
}
}
else {
*(byte *)(uVar8 + 0x70) = *(byte *)(uVar8 + 0x70) | 1;
}
uVar1 = *(undefined4 *)(gpGlobals + 0xc);
*(undefined4 *)(uVar8 + 0x78) = 0;
*(undefined4 *)(uVar8 + 0x74) = uVar1;
}
puVar9[5] = (uint)fVar17;
}
fVar18 = param_1;
if (param_1 != (float)puVar7[3]) {
uVar8 = puVar7[0x12];
if (uVar8 != 0) {
if (*(char *)(uVar8 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(uVar8 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar6 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar6 + 2) = 0;
}
}
else {
*(byte *)(uVar8 + 0x70) = *(byte *)(uVar8 + 0x70) | 1;
}
uVar1 = *(undefined4 *)(gpGlobals + 0xc);
*(undefined4 *)(uVar8 + 0x78) = 0;
*(undefined4 *)(uVar8 + 0x74) = uVar1;
}
puVar7[3] = (uint)fVar18;
}
fVar18 = param_1;
if (param_1 != (float)puVar9[3]) {
uVar8 = puVar9[0x12];
if (uVar8 != 0) {
if (*(char *)(uVar8 + 0x6c) == '\0') {
pCVar4 = *(CBaseEdict **)(uVar8 + 0x30);
if (pCVar4 != (CBaseEdict *)0x0) {
*(uint *)pCVar4 = *(uint *)pCVar4 | 0x101;
iVar6 = CBaseEdict::GetChangeAccessor(pCVar4);
*(undefined2 *)(iVar6 + 2) = 0;
}
}
else {
*(byte *)(uVar8 + 0x70) = *(byte *)(uVar8 + 0x70) | 1;
}
uVar1 = *(undefined4 *)(gpGlobals + 0xc);
*(undefined4 *)(uVar8 + 0x78) = 0;
*(undefined4 *)(uVar8 + 0x74) = uVar1;
}
puVar9[3] = (uint)fVar18;
return;
}
return;
}
SourceMod gamedata
paste intoaddons/sourcemod/gamedata/<your_plugin>.txt
Just a Signatures{} block, ready to drop into a gamedata
file. Wire it up in your plugin however you like - SDKCall, DHooks,
raw memory ops, or anything else.
Signatures + Functions block. The plugin uses
DHookCreateFromConf - DHooks reads return type, this-type,
calling convention, and argument types straight from the gamedata. Less
boilerplate in the plugin, types travel with the gamedata.
Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.