示例#1
0
    private void GetEqpIndirectDetour(IntPtr drawObject)
    {
        // Shortcut because this is also called all the time.
        // Same thing is checked at the beginning of the original function.
        if ((*( byte * )(drawObject + 0xa30) & 1) == 0 || *( ulong * )(drawObject + 0xa28) == 0)
        {
            return;
        }

        using var eqp = MetaChanger.ChangeEqp(this, drawObject);
        GetEqpIndirectHook !.Original(drawObject);
    }
示例#2
0
    private IntPtr CharacterBaseCreateDetour(uint a, IntPtr b, IntPtr c, byte d)
    {
        using var cmp = MetaChanger.ChangeCmp(this, out _lastCreatedCollection);
        var ret = CharacterBaseCreateHook !.Original(a, b, c, d);

        if (LastGameObject != null)
        {
            DrawObjectToObject[ret] = (_lastCreatedCollection !, LastGameObject->ObjectIndex);
        }

        return(ret);
    }
示例#3
0
    private void OnModelLoadCompleteDetour(IntPtr drawObject)
    {
        var collection = GetCollection(drawObject);

        if (collection != null)
        {
            using var eqp  = MetaChanger.ChangeEqp(collection);
            using var eqdp = MetaChanger.ChangeEqdp(collection);
            OnModelLoadCompleteHook !.Original.Invoke(drawObject);
        }
        else
        {
            OnModelLoadCompleteHook !.Original.Invoke(drawObject);
        }
    }
示例#4
0
    private void UpdateModelsDetour(IntPtr drawObject)
    {
        // Shortcut because this is called all the time.
        // Same thing is checked at the beginning of the original function.
        if (*( int * )(drawObject + 0x90c) == 0)
        {
            return;
        }

        var collection = GetCollection(drawObject);

        if (collection != null)
        {
            using var eqp  = MetaChanger.ChangeEqp(collection);
            using var eqdp = MetaChanger.ChangeEqdp(collection);
            UpdateModelsHook !.Original.Invoke(drawObject);
        }
        else
        {
            UpdateModelsHook !.Original.Invoke(drawObject);
        }
    }
示例#5
0
 private void RspSetupCharacterDetour(IntPtr drawObject, IntPtr unk2, float unk3, IntPtr unk4, byte unk5)
 {
     using var rsp = MetaChanger.ChangeCmp(this, drawObject);
     RspSetupCharacterHook !.Original(drawObject, unk2, unk3, unk4, unk5);
 }
示例#6
0
 private byte SetupVisorDetour(IntPtr drawObject, ushort modelId, byte visorState)
 {
     using var gmp = MetaChanger.ChangeGmp(this, drawObject);
     return(SetupVisorHook !.Original(drawObject, modelId, visorState));
 }