L L4D2node

Studio_SeqAnims

0x00b95330 · 636 bytes · __cdecl

_Z15Studio_SeqAnimsPK10CStudioHdrR16mstudioseqdesc_tiPKfPP17mstudioanimdesc_tPf

Decompiled

undefined (6 params)

/* Studio_SeqAnims(CStudioHdr const*, mstudioseqdesc_t&, int, float const*, mstudioanimdesc_t**,
   float*) */

void Studio_SeqAnims(CStudioHdr *param_1,mstudioseqdesc_t *param_2,int param_3,float *param_4,
                    mstudioanimdesc_t **param_5,float *param_6)

{
  int iVar1;
  mstudioanimdesc_t *pmVar2;
  int iVar3;
  int local_2c;
  int local_28;
  float local_24;
  float local_20 [4];
  
  if (param_1 != (CStudioHdr *)0x0) {
    iVar1 = CStudioHdr::GetNumSeq(param_1);
    if (param_3 < iVar1) {
      local_2c = 0;
      local_28 = 0;
      local_24 = 0.0;
      local_20[0] = 0.0;
      Studio_LocalPoseParameter(param_1,param_4,param_2,param_3,0,&local_24,&local_2c);
      Studio_LocalPoseParameter(param_1,param_4,param_2,param_3,1,local_20,&local_28);
      iVar1 = local_2c;
      if (*(int *)(param_2 + 0x44) <= local_2c) {
        iVar1 = *(int *)(param_2 + 0x44) + -1;
      }
      iVar3 = local_28;
      if (*(int *)(param_2 + 0x48) <= local_28) {
        iVar3 = *(int *)(param_2 + 0x48) + -1;
      }
      iVar1 = CStudioHdr::iRelativeAnim
                        (param_1,param_3,
                         (int)*(short *)(param_2 +
                                        *(int *)(param_2 + 0x3c) +
                                        (iVar1 + iVar3 * *(int *)(param_2 + 0x44)) * 2));
      pmVar2 = (mstudioanimdesc_t *)CStudioHdr::pAnimdesc(param_1,iVar1);
      *param_5 = pmVar2;
      *param_6 = (1.0 - local_20[0]) * (1.0 - local_24);
      iVar1 = local_2c + 1;
      if (*(int *)(param_2 + 0x44) <= local_2c + 1) {
        iVar1 = *(int *)(param_2 + 0x44) + -1;
      }
      iVar3 = local_28;
      if (*(int *)(param_2 + 0x48) <= local_28) {
        iVar3 = *(int *)(param_2 + 0x48) + -1;
      }
      iVar1 = CStudioHdr::iRelativeAnim
                        (param_1,param_3,
                         (int)*(short *)(param_2 +
                                        *(int *)(param_2 + 0x3c) +
                                        (iVar1 + iVar3 * *(int *)(param_2 + 0x44)) * 2));
      pmVar2 = (mstudioanimdesc_t *)CStudioHdr::pAnimdesc(param_1,iVar1);
      param_5[1] = pmVar2;
      param_6[1] = (1.0 - local_20[0]) * local_24;
      iVar1 = local_2c;
      if (*(int *)(param_2 + 0x44) <= local_2c) {
        iVar1 = *(int *)(param_2 + 0x44) + -1;
      }
      iVar3 = local_28 + 1;
      if (*(int *)(param_2 + 0x48) <= local_28 + 1) {
        iVar3 = *(int *)(param_2 + 0x48) + -1;
      }
      iVar1 = CStudioHdr::iRelativeAnim
                        (param_1,param_3,
                         (int)*(short *)(param_2 +
                                        *(int *)(param_2 + 0x3c) +
                                        (iVar1 + iVar3 * *(int *)(param_2 + 0x44)) * 2));
      pmVar2 = (mstudioanimdesc_t *)CStudioHdr::pAnimdesc(param_1,iVar1);
      param_5[2] = pmVar2;
      param_6[2] = (1.0 - local_24) * local_20[0];
      iVar1 = local_2c + 1;
      if (*(int *)(param_2 + 0x44) <= local_2c + 1) {
        iVar1 = *(int *)(param_2 + 0x44) + -1;
      }
      iVar3 = local_28 + 1;
      if (*(int *)(param_2 + 0x48) <= local_28 + 1) {
        iVar3 = *(int *)(param_2 + 0x48) + -1;
      }
      iVar1 = CStudioHdr::iRelativeAnim
                        (param_1,param_3,
                         (int)*(short *)(param_2 +
                                        *(int *)(param_2 + 0x3c) +
                                        (iVar1 + iVar3 * *(int *)(param_2 + 0x44)) * 2));
      pmVar2 = (mstudioanimdesc_t *)CStudioHdr::pAnimdesc(param_1,iVar1);
      param_5[3] = pmVar2;
      param_6[3] = local_20[0] * local_24;
      return;
    }
  }
  param_6[3] = 0.0;
  param_6[2] = 0.0;
  param_6[1] = 0.0;
  *param_6 = 0.0;
  return;
}

SourceMod gamedata

paste into addons/sourcemod/gamedata/<your_plugin>.txt
used as the SourceMod key — change to fit your plugin's convention
SourceMod library name (server / engine / matchmaking)

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.



        

        

          

Type inference is best-effort from the C signature - sanity-check the DHooks types before shipping.

Return-type handling cheatsheet (DHookReturn)