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); }
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); }
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); } }
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); } }
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); }
private byte SetupVisorDetour(IntPtr drawObject, ushort modelId, byte visorState) { using var gmp = MetaChanger.ChangeGmp(this, drawObject); return(SetupVisorHook !.Original(drawObject, modelId, visorState)); }