diff --git a/OtterGui b/OtterGui index 30dc6a53..7e3b42b4 160000 --- a/OtterGui +++ b/OtterGui @@ -1 +1 @@ -Subproject commit 30dc6a538ce56213cb59802869b54247c18a7372 +Subproject commit 7e3b42b43b1203d17427d67c85ebd3712506cc71 diff --git a/Penumbra/Import/Dds/DdsFile.cs b/Penumbra/Import/Dds/DdsFile.cs index ec67ea3b..f9eca15f 100644 --- a/Penumbra/Import/Dds/DdsFile.cs +++ b/Penumbra/Import/Dds/DdsFile.cs @@ -142,7 +142,7 @@ public class DdsFile using( var bw = new BinaryWriter( mem ) ) { var (format, mipLength) = WriteTexHeader( bw ); - var bytes = format == TexFile.TextureFormat.R8G8B8X8 ? RgbaData : _data; + var bytes = format == TexFile.TextureFormat.B8G8R8X8 ? RgbaData : _data; if( bytes.Length < mipLength ) { @@ -165,7 +165,7 @@ public class DdsFile } var mipCount = Header.MipMapCount; - if( format == TexFile.TextureFormat.R8G8B8X8 && ParseType != ParseType.R8G8B8A8 ) + if( format == TexFile.TextureFormat.B8G8R8X8 && ParseType != ParseType.R8G8B8A8 ) { mipCount = 1; } @@ -206,21 +206,21 @@ public class DdsFile ParseType.DXT1 => ( TexFile.TextureFormat.DXT1, height * width / 2 ), ParseType.DXT3 => ( TexFile.TextureFormat.DXT3, height * width * 2 ), ParseType.DXT5 => ( TexFile.TextureFormat.DXT5, height * width * 2 ), - ParseType.BC4 => ( TexFile.TextureFormat.R8G8B8X8, height * width * 4 ), - ParseType.BC5 => ( TexFile.TextureFormat.R8G8B8X8, height * width * 4 ), + ParseType.BC4 => ( TexFile.TextureFormat.B8G8R8X8, height * width * 4 ), + ParseType.BC5 => ( TexFile.TextureFormat.B8G8R8X8, height * width * 4 ), ParseType.Greyscale => ( TexFile.TextureFormat.A8, height * width ), - ParseType.R4G4B4A4 => ( TexFile.TextureFormat.R4G4B4A4, height * width * 2 ), - ParseType.B4G4R4A4 => ( TexFile.TextureFormat.R4G4B4A4, height * width * 2 ), - ParseType.R5G5B5 => ( TexFile.TextureFormat.R8G8B8X8, height * width * 4 ), - ParseType.B5G5R5 => ( TexFile.TextureFormat.R8G8B8X8, height * width * 4 ), - ParseType.R5G6B5 => ( TexFile.TextureFormat.R8G8B8X8, height * width * 4 ), - ParseType.B5G6R5 => ( TexFile.TextureFormat.R8G8B8X8, height * width * 4 ), - ParseType.R5G5B5A1 => ( TexFile.TextureFormat.R5G5B5A1, height * width * 2 ), - ParseType.B5G5R5A1 => ( TexFile.TextureFormat.R5G5B5A1, height * width * 2 ), - ParseType.R8G8B8 => ( TexFile.TextureFormat.R8G8B8X8, height * width * 4 ), - ParseType.B8G8R8 => ( TexFile.TextureFormat.R8G8B8X8, height * width * 4 ), - ParseType.R8G8B8A8 => ( TexFile.TextureFormat.R8G8B8X8, height * width * 4 ), - ParseType.B8G8R8A8 => ( TexFile.TextureFormat.R8G8B8X8, height * width * 4 ), + ParseType.R4G4B4A4 => ( TexFile.TextureFormat.B4G4R4A4, height * width * 2 ), + ParseType.B4G4R4A4 => ( TexFile.TextureFormat.B4G4R4A4, height * width * 2 ), + ParseType.R5G5B5 => ( TexFile.TextureFormat.B8G8R8X8, height * width * 4 ), + ParseType.B5G5R5 => ( TexFile.TextureFormat.B8G8R8X8, height * width * 4 ), + ParseType.R5G6B5 => ( TexFile.TextureFormat.B8G8R8X8, height * width * 4 ), + ParseType.B5G6R5 => ( TexFile.TextureFormat.B8G8R8X8, height * width * 4 ), + ParseType.R5G5B5A1 => ( TexFile.TextureFormat.B5G5R5A1, height * width * 2 ), + ParseType.B5G5R5A1 => ( TexFile.TextureFormat.B5G5R5A1, height * width * 2 ), + ParseType.R8G8B8 => ( TexFile.TextureFormat.B8G8R8X8, height * width * 4 ), + ParseType.B8G8R8 => ( TexFile.TextureFormat.B8G8R8X8, height * width * 4 ), + ParseType.R8G8B8A8 => ( TexFile.TextureFormat.B8G8R8X8, height * width * 4 ), + ParseType.B8G8R8A8 => ( TexFile.TextureFormat.B8G8R8X8, height * width * 4 ), _ => throw new ArgumentOutOfRangeException( nameof( type ), type, null ), }; } @@ -237,17 +237,17 @@ public class TmpTexFile var data = br.ReadBytes( ( int )( br.BaseStream.Length - br.BaseStream.Position ) ); RgbaData = Header.Format switch { - TexFile.TextureFormat.L8 => ImageParsing.DecodeUncompressedGreyscale( data, Header.Height, Header.Width ), - TexFile.TextureFormat.A8 => ImageParsing.DecodeUncompressedGreyscale( data, Header.Height, Header.Width ), - TexFile.TextureFormat.DXT1 => ImageParsing.DecodeDxt1( data, Header.Height, Header.Width ), - TexFile.TextureFormat.DXT3 => ImageParsing.DecodeDxt3( data, Header.Height, Header.Width ), - TexFile.TextureFormat.DXT5 => ImageParsing.DecodeDxt5( data, Header.Height, Header.Width ), - TexFile.TextureFormat.A8R8G8B8 => ImageParsing.DecodeUncompressedB8G8R8A8( data, Header.Height, Header.Width ), - TexFile.TextureFormat.R8G8B8X8 => ImageParsing.DecodeUncompressedR8G8B8A8( data, Header.Height, Header.Width ), - TexFile.TextureFormat.A8R8G8B82 => ImageParsing.DecodeUncompressedR8G8B8A8( data, Header.Height, Header.Width ), - TexFile.TextureFormat.R4G4B4A4 => ImageParsing.DecodeUncompressedR4G4B4A4( data, Header.Height, Header.Width ), - TexFile.TextureFormat.R5G5B5A1 => ImageParsing.DecodeUncompressedR5G5B5A1( data, Header.Height, Header.Width ), - _ => throw new ArgumentOutOfRangeException(), + TexFile.TextureFormat.L8 => ImageParsing.DecodeUncompressedGreyscale( data, Header.Height, Header.Width ), + TexFile.TextureFormat.A8 => ImageParsing.DecodeUncompressedGreyscale( data, Header.Height, Header.Width ), + TexFile.TextureFormat.DXT1 => ImageParsing.DecodeDxt1( data, Header.Height, Header.Width ), + TexFile.TextureFormat.DXT3 => ImageParsing.DecodeDxt3( data, Header.Height, Header.Width ), + TexFile.TextureFormat.DXT5 => ImageParsing.DecodeDxt5( data, Header.Height, Header.Width ), + TexFile.TextureFormat.B8G8R8A8 => ImageParsing.DecodeUncompressedB8G8R8A8( data, Header.Height, Header.Width ), + TexFile.TextureFormat.B8G8R8X8 => ImageParsing.DecodeUncompressedR8G8B8A8( data, Header.Height, Header.Width ), + //TexFile.TextureFormat.A8R8G8B82 => ImageParsing.DecodeUncompressedR8G8B8A8( data, Header.Height, Header.Width ), + TexFile.TextureFormat.B4G4R4A4 => ImageParsing.DecodeUncompressedR4G4B4A4( data, Header.Height, Header.Width ), + TexFile.TextureFormat.B5G5R5A1 => ImageParsing.DecodeUncompressedR5G5B5A1( data, Header.Height, Header.Width ), + _ => throw new ArgumentOutOfRangeException(), }; } } \ No newline at end of file diff --git a/Penumbra/Import/Dds/TextureImporter.cs b/Penumbra/Import/Dds/TextureImporter.cs index 7a28ee7a..8a194999 100644 --- a/Penumbra/Import/Dds/TextureImporter.cs +++ b/Penumbra/Import/Dds/TextureImporter.cs @@ -13,7 +13,7 @@ public class TextureImporter using var mem = new MemoryStream( target ); using var bw = new BinaryWriter( mem ); bw.Write( ( uint )TexFile.Attribute.TextureType2D ); - bw.Write( ( uint )TexFile.TextureFormat.A8R8G8B8 ); + bw.Write( ( uint )TexFile.TextureFormat.B8G8R8X8 ); bw.Write( ( ushort )width ); bw.Write( ( ushort )height ); bw.Write( ( ushort )1 ); diff --git a/Penumbra/Interop/Loader/ResourceLoader.cs b/Penumbra/Interop/Loader/ResourceLoader.cs index f36b90c5..059c1b5d 100644 --- a/Penumbra/Interop/Loader/ResourceLoader.cs +++ b/Penumbra/Interop/Loader/ResourceLoader.cs @@ -103,9 +103,10 @@ public unsafe partial class ResourceLoader : IDisposable public ResourceLoader( Penumbra _ ) { SignatureHelper.Initialise( this ); - _decRefHook = new Hook< ResourceHandleDecRef >( ( IntPtr )FFXIVClientStructs.FFXIV.Client.System.Resource.Handle.ResourceHandle.fpDecRef, + _decRefHook = Hook< ResourceHandleDecRef >.FromAddress( + ( IntPtr )FFXIVClientStructs.FFXIV.Client.System.Resource.Handle.ResourceHandle.fpDecRef, ResourceHandleDecRefDetour ); - _incRefHook = new Hook< ResourceHandleDestructor >( + _incRefHook = Hook< ResourceHandleDestructor >.FromAddress( ( IntPtr )FFXIVClientStructs.FFXIV.Client.System.Resource.Handle.ResourceHandle.fpIncRef, ResourceHandleIncRefDetour ); } diff --git a/Penumbra/Interop/MetaFileManager.cs b/Penumbra/Interop/MetaFileManager.cs index 38413124..71b31c72 100644 --- a/Penumbra/Interop/MetaFileManager.cs +++ b/Penumbra/Interop/MetaFileManager.cs @@ -104,7 +104,7 @@ public unsafe class MetaFileManager : IDisposable // Initialize the hook at VFunc 25, which is called when default resources (and IMC resources do not overwrite it) destroy their data. private void InitImc() { - ClearDefaultResourceHook = new Hook< ClearResource >( DefaultResourceHandleVTable[ 25 ], ClearDefaultResourceDetour ); + ClearDefaultResourceHook = Hook< ClearResource >.FromAddress( DefaultResourceHandleVTable[ 25 ], ClearDefaultResourceDetour ); ClearDefaultResourceHook.Enable(); } diff --git a/Penumbra/Interop/Resolver/PathResolver.Demihuman.cs b/Penumbra/Interop/Resolver/PathResolver.Demihuman.cs index c938bb72..dbe57a7b 100644 --- a/Penumbra/Interop/Resolver/PathResolver.Demihuman.cs +++ b/Penumbra/Interop/Resolver/PathResolver.Demihuman.cs @@ -24,18 +24,18 @@ public unsafe partial class PathResolver private void SetupDemiHooks() { - ResolveDemiDecalPathHook = new Hook< GeneralResolveDelegate >( DrawObjectDemiVTable[ ResolveDecalIdx ], ResolveDemiDecalDetour ); - ResolveDemiEidPathHook = new Hook< EidResolveDelegate >( DrawObjectDemiVTable[ ResolveEidIdx ], ResolveDemiEidDetour ); - ResolveDemiImcPathHook = new Hook< GeneralResolveDelegate >( DrawObjectDemiVTable[ ResolveImcIdx ], ResolveDemiImcDetour ); - ResolveDemiMPapPathHook = new Hook< MPapResolveDelegate >( DrawObjectDemiVTable[ ResolveMPapIdx ], ResolveDemiMPapDetour ); - ResolveDemiMdlPathHook = new Hook< GeneralResolveDelegate >( DrawObjectDemiVTable[ ResolveMdlIdx ], ResolveDemiMdlDetour ); - ResolveDemiMtrlPathHook = new Hook< MaterialResolveDetour >( DrawObjectDemiVTable[ ResolveMtrlIdx ], ResolveDemiMtrlDetour ); - ResolveDemiPapPathHook = new Hook< MaterialResolveDetour >( DrawObjectDemiVTable[ ResolvePapIdx ], ResolveDemiPapDetour ); - ResolveDemiPhybPathHook = new Hook< GeneralResolveDelegate >( DrawObjectDemiVTable[ ResolvePhybIdx ], ResolveDemiPhybDetour ); - ResolveDemiSklbPathHook = new Hook< GeneralResolveDelegate >( DrawObjectDemiVTable[ ResolveSklbIdx ], ResolveDemiSklbDetour ); - ResolveDemiSkpPathHook = new Hook< GeneralResolveDelegate >( DrawObjectDemiVTable[ ResolveSkpIdx ], ResolveDemiSkpDetour ); - ResolveDemiTmbPathHook = new Hook< EidResolveDelegate >( DrawObjectDemiVTable[ ResolveTmbIdx ], ResolveDemiTmbDetour ); - ResolveDemiVfxPathHook = new Hook< MaterialResolveDetour >( DrawObjectDemiVTable[ ResolveVfxIdx ], ResolveDemiVfxDetour ); + ResolveDemiDecalPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectDemiVTable[ ResolveDecalIdx ], ResolveDemiDecalDetour ); + ResolveDemiEidPathHook = Hook< EidResolveDelegate >.FromAddress( DrawObjectDemiVTable[ ResolveEidIdx ], ResolveDemiEidDetour ); + ResolveDemiImcPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectDemiVTable[ ResolveImcIdx ], ResolveDemiImcDetour ); + ResolveDemiMPapPathHook = Hook< MPapResolveDelegate >.FromAddress( DrawObjectDemiVTable[ ResolveMPapIdx ], ResolveDemiMPapDetour ); + ResolveDemiMdlPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectDemiVTable[ ResolveMdlIdx ], ResolveDemiMdlDetour ); + ResolveDemiMtrlPathHook = Hook< MaterialResolveDetour >.FromAddress( DrawObjectDemiVTable[ ResolveMtrlIdx ], ResolveDemiMtrlDetour ); + ResolveDemiPapPathHook = Hook< MaterialResolveDetour >.FromAddress( DrawObjectDemiVTable[ ResolvePapIdx ], ResolveDemiPapDetour ); + ResolveDemiPhybPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectDemiVTable[ ResolvePhybIdx ], ResolveDemiPhybDetour ); + ResolveDemiSklbPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectDemiVTable[ ResolveSklbIdx ], ResolveDemiSklbDetour ); + ResolveDemiSkpPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectDemiVTable[ ResolveSkpIdx ], ResolveDemiSkpDetour ); + ResolveDemiTmbPathHook = Hook< EidResolveDelegate >.FromAddress( DrawObjectDemiVTable[ ResolveTmbIdx ], ResolveDemiTmbDetour ); + ResolveDemiVfxPathHook = Hook< MaterialResolveDetour >.FromAddress( DrawObjectDemiVTable[ ResolveVfxIdx ], ResolveDemiVfxDetour ); } private void EnableDemiHooks() diff --git a/Penumbra/Interop/Resolver/PathResolver.Human.cs b/Penumbra/Interop/Resolver/PathResolver.Human.cs index b4bb8fcd..c1278436 100644 --- a/Penumbra/Interop/Resolver/PathResolver.Human.cs +++ b/Penumbra/Interop/Resolver/PathResolver.Human.cs @@ -54,18 +54,18 @@ public unsafe partial class PathResolver private void SetupHumanHooks() { - ResolveDecalPathHook = new Hook< GeneralResolveDelegate >( DrawObjectHumanVTable[ ResolveDecalIdx ], ResolveDecalDetour ); - ResolveEidPathHook = new Hook< EidResolveDelegate >( DrawObjectHumanVTable[ ResolveEidIdx ], ResolveEidDetour ); - ResolveImcPathHook = new Hook< GeneralResolveDelegate >( DrawObjectHumanVTable[ ResolveImcIdx ], ResolveImcDetour ); - ResolveMPapPathHook = new Hook< MPapResolveDelegate >( DrawObjectHumanVTable[ ResolveMPapIdx ], ResolveMPapDetour ); - ResolveMdlPathHook = new Hook< GeneralResolveDelegate >( DrawObjectHumanVTable[ ResolveMdlIdx ], ResolveMdlDetour ); - ResolveMtrlPathHook = new Hook< MaterialResolveDetour >( DrawObjectHumanVTable[ ResolveMtrlIdx ], ResolveMtrlDetour ); - ResolvePapPathHook = new Hook< MaterialResolveDetour >( DrawObjectHumanVTable[ ResolvePapIdx ], ResolvePapDetour ); - ResolvePhybPathHook = new Hook< GeneralResolveDelegate >( DrawObjectHumanVTable[ ResolvePhybIdx ], ResolvePhybDetour ); - ResolveSklbPathHook = new Hook< GeneralResolveDelegate >( DrawObjectHumanVTable[ ResolveSklbIdx ], ResolveSklbDetour ); - ResolveSkpPathHook = new Hook< GeneralResolveDelegate >( DrawObjectHumanVTable[ ResolveSkpIdx ], ResolveSkpDetour ); - ResolveTmbPathHook = new Hook< EidResolveDelegate >( DrawObjectHumanVTable[ ResolveTmbIdx ], ResolveTmbDetour ); - ResolveVfxPathHook = new Hook< MaterialResolveDetour >( DrawObjectHumanVTable[ ResolveVfxIdx ], ResolveVfxDetour ); + ResolveDecalPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectHumanVTable[ ResolveDecalIdx ], ResolveDecalDetour ); + ResolveEidPathHook = Hook< EidResolveDelegate >.FromAddress( DrawObjectHumanVTable[ ResolveEidIdx ], ResolveEidDetour ); + ResolveImcPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectHumanVTable[ ResolveImcIdx ], ResolveImcDetour ); + ResolveMPapPathHook = Hook< MPapResolveDelegate >.FromAddress( DrawObjectHumanVTable[ ResolveMPapIdx ], ResolveMPapDetour ); + ResolveMdlPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectHumanVTable[ ResolveMdlIdx ], ResolveMdlDetour ); + ResolveMtrlPathHook = Hook< MaterialResolveDetour >.FromAddress( DrawObjectHumanVTable[ ResolveMtrlIdx ], ResolveMtrlDetour ); + ResolvePapPathHook = Hook< MaterialResolveDetour >.FromAddress( DrawObjectHumanVTable[ ResolvePapIdx ], ResolvePapDetour ); + ResolvePhybPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectHumanVTable[ ResolvePhybIdx ], ResolvePhybDetour ); + ResolveSklbPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectHumanVTable[ ResolveSklbIdx ], ResolveSklbDetour ); + ResolveSkpPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectHumanVTable[ ResolveSkpIdx ], ResolveSkpDetour ); + ResolveTmbPathHook = Hook< EidResolveDelegate >.FromAddress( DrawObjectHumanVTable[ ResolveTmbIdx ], ResolveTmbDetour ); + ResolveVfxPathHook = Hook< MaterialResolveDetour >.FromAddress( DrawObjectHumanVTable[ ResolveVfxIdx ], ResolveVfxDetour ); } private void EnableHumanHooks() diff --git a/Penumbra/Interop/Resolver/PathResolver.Meta.cs b/Penumbra/Interop/Resolver/PathResolver.Meta.cs index 0ccfb3e1..670c4044 100644 --- a/Penumbra/Interop/Resolver/PathResolver.Meta.cs +++ b/Penumbra/Interop/Resolver/PathResolver.Meta.cs @@ -122,7 +122,7 @@ public unsafe partial class PathResolver private void SetupMetaHooks() { OnModelLoadCompleteHook = - new Hook< OnModelLoadCompleteDelegate >( DrawObjectHumanVTable[ OnModelLoadCompleteIdx ], OnModelLoadCompleteDetour ); + Hook< OnModelLoadCompleteDelegate >.FromAddress( DrawObjectHumanVTable[ OnModelLoadCompleteIdx ], OnModelLoadCompleteDetour ); } private void EnableMetaHooks() diff --git a/Penumbra/Interop/Resolver/PathResolver.Monster.cs b/Penumbra/Interop/Resolver/PathResolver.Monster.cs index f7baa229..5ef487a6 100644 --- a/Penumbra/Interop/Resolver/PathResolver.Monster.cs +++ b/Penumbra/Interop/Resolver/PathResolver.Monster.cs @@ -24,18 +24,18 @@ public unsafe partial class PathResolver private void SetupMonsterHooks() { - ResolveMonsterDecalPathHook = new Hook( DrawObjectMonsterVTable[ResolveDecalIdx], ResolveMonsterDecalDetour ); - ResolveMonsterEidPathHook = new Hook( DrawObjectMonsterVTable[ResolveEidIdx], ResolveMonsterEidDetour ); - ResolveMonsterImcPathHook = new Hook( DrawObjectMonsterVTable[ResolveImcIdx], ResolveMonsterImcDetour ); - ResolveMonsterMPapPathHook = new Hook( DrawObjectMonsterVTable[ResolveMPapIdx], ResolveMonsterMPapDetour ); - ResolveMonsterMdlPathHook = new Hook( DrawObjectMonsterVTable[ResolveMdlIdx], ResolveMonsterMdlDetour ); - ResolveMonsterMtrlPathHook = new Hook( DrawObjectMonsterVTable[ResolveMtrlIdx], ResolveMonsterMtrlDetour ); - ResolveMonsterPapPathHook = new Hook( DrawObjectMonsterVTable[ResolvePapIdx], ResolveMonsterPapDetour ); - ResolveMonsterPhybPathHook = new Hook( DrawObjectMonsterVTable[ResolvePhybIdx], ResolveMonsterPhybDetour ); - ResolveMonsterSklbPathHook = new Hook( DrawObjectMonsterVTable[ResolveSklbIdx], ResolveMonsterSklbDetour ); - ResolveMonsterSkpPathHook = new Hook( DrawObjectMonsterVTable[ResolveSkpIdx], ResolveMonsterSkpDetour ); - ResolveMonsterTmbPathHook = new Hook( DrawObjectMonsterVTable[ResolveTmbIdx], ResolveMonsterTmbDetour ); - ResolveMonsterVfxPathHook = new Hook( DrawObjectMonsterVTable[ResolveVfxIdx], ResolveMonsterVfxDetour ); + ResolveMonsterDecalPathHook = Hook.FromAddress( DrawObjectMonsterVTable[ResolveDecalIdx], ResolveMonsterDecalDetour ); + ResolveMonsterEidPathHook = Hook.FromAddress( DrawObjectMonsterVTable[ResolveEidIdx], ResolveMonsterEidDetour ); + ResolveMonsterImcPathHook = Hook.FromAddress( DrawObjectMonsterVTable[ResolveImcIdx], ResolveMonsterImcDetour ); + ResolveMonsterMPapPathHook = Hook.FromAddress( DrawObjectMonsterVTable[ResolveMPapIdx], ResolveMonsterMPapDetour ); + ResolveMonsterMdlPathHook = Hook.FromAddress( DrawObjectMonsterVTable[ResolveMdlIdx], ResolveMonsterMdlDetour ); + ResolveMonsterMtrlPathHook = Hook.FromAddress( DrawObjectMonsterVTable[ResolveMtrlIdx], ResolveMonsterMtrlDetour ); + ResolveMonsterPapPathHook = Hook.FromAddress( DrawObjectMonsterVTable[ResolvePapIdx], ResolveMonsterPapDetour ); + ResolveMonsterPhybPathHook = Hook.FromAddress( DrawObjectMonsterVTable[ResolvePhybIdx], ResolveMonsterPhybDetour ); + ResolveMonsterSklbPathHook = Hook.FromAddress( DrawObjectMonsterVTable[ResolveSklbIdx], ResolveMonsterSklbDetour ); + ResolveMonsterSkpPathHook = Hook.FromAddress( DrawObjectMonsterVTable[ResolveSkpIdx], ResolveMonsterSkpDetour ); + ResolveMonsterTmbPathHook = Hook.FromAddress( DrawObjectMonsterVTable[ResolveTmbIdx], ResolveMonsterTmbDetour ); + ResolveMonsterVfxPathHook = Hook.FromAddress( DrawObjectMonsterVTable[ResolveVfxIdx], ResolveMonsterVfxDetour ); } private void EnableMonsterHooks() diff --git a/Penumbra/Interop/Resolver/PathResolver.Weapon.cs b/Penumbra/Interop/Resolver/PathResolver.Weapon.cs index 0a9ac900..364bfa9f 100644 --- a/Penumbra/Interop/Resolver/PathResolver.Weapon.cs +++ b/Penumbra/Interop/Resolver/PathResolver.Weapon.cs @@ -25,18 +25,18 @@ public unsafe partial class PathResolver private void SetupWeaponHooks() { - ResolveWeaponDecalPathHook = new Hook< GeneralResolveDelegate >( DrawObjectWeaponVTable[ ResolveDecalIdx ], ResolveWeaponDecalDetour ); - ResolveWeaponEidPathHook = new Hook< EidResolveDelegate >( DrawObjectWeaponVTable[ ResolveEidIdx ], ResolveWeaponEidDetour ); - ResolveWeaponImcPathHook = new Hook< GeneralResolveDelegate >( DrawObjectWeaponVTable[ ResolveImcIdx ], ResolveWeaponImcDetour ); - ResolveWeaponMPapPathHook = new Hook< MPapResolveDelegate >( DrawObjectWeaponVTable[ ResolveMPapIdx ], ResolveWeaponMPapDetour ); - ResolveWeaponMdlPathHook = new Hook< GeneralResolveDelegate >( DrawObjectWeaponVTable[ ResolveMdlIdx ], ResolveWeaponMdlDetour ); - ResolveWeaponMtrlPathHook = new Hook< MaterialResolveDetour >( DrawObjectWeaponVTable[ ResolveMtrlIdx ], ResolveWeaponMtrlDetour ); - ResolveWeaponPapPathHook = new Hook< MaterialResolveDetour >( DrawObjectWeaponVTable[ ResolvePapIdx ], ResolveWeaponPapDetour ); - ResolveWeaponPhybPathHook = new Hook< GeneralResolveDelegate >( DrawObjectWeaponVTable[ ResolvePhybIdx ], ResolveWeaponPhybDetour ); - ResolveWeaponSklbPathHook = new Hook< GeneralResolveDelegate >( DrawObjectWeaponVTable[ ResolveSklbIdx ], ResolveWeaponSklbDetour ); - ResolveWeaponSkpPathHook = new Hook< GeneralResolveDelegate >( DrawObjectWeaponVTable[ ResolveSkpIdx ], ResolveWeaponSkpDetour ); - ResolveWeaponTmbPathHook = new Hook< EidResolveDelegate >( DrawObjectWeaponVTable[ ResolveTmbIdx ], ResolveWeaponTmbDetour ); - ResolveWeaponVfxPathHook = new Hook< MaterialResolveDetour >( DrawObjectWeaponVTable[ ResolveVfxIdx ], ResolveWeaponVfxDetour ); + ResolveWeaponDecalPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectWeaponVTable[ ResolveDecalIdx ], ResolveWeaponDecalDetour ); + ResolveWeaponEidPathHook = Hook< EidResolveDelegate >.FromAddress( DrawObjectWeaponVTable[ ResolveEidIdx ], ResolveWeaponEidDetour ); + ResolveWeaponImcPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectWeaponVTable[ ResolveImcIdx ], ResolveWeaponImcDetour ); + ResolveWeaponMPapPathHook = Hook< MPapResolveDelegate >.FromAddress( DrawObjectWeaponVTable[ ResolveMPapIdx ], ResolveWeaponMPapDetour ); + ResolveWeaponMdlPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectWeaponVTable[ ResolveMdlIdx ], ResolveWeaponMdlDetour ); + ResolveWeaponMtrlPathHook = Hook< MaterialResolveDetour >.FromAddress( DrawObjectWeaponVTable[ ResolveMtrlIdx ], ResolveWeaponMtrlDetour ); + ResolveWeaponPapPathHook = Hook< MaterialResolveDetour >.FromAddress( DrawObjectWeaponVTable[ ResolvePapIdx ], ResolveWeaponPapDetour ); + ResolveWeaponPhybPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectWeaponVTable[ ResolvePhybIdx ], ResolveWeaponPhybDetour ); + ResolveWeaponSklbPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectWeaponVTable[ ResolveSklbIdx ], ResolveWeaponSklbDetour ); + ResolveWeaponSkpPathHook = Hook< GeneralResolveDelegate >.FromAddress( DrawObjectWeaponVTable[ ResolveSkpIdx ], ResolveWeaponSkpDetour ); + ResolveWeaponTmbPathHook = Hook< EidResolveDelegate >.FromAddress( DrawObjectWeaponVTable[ ResolveTmbIdx ], ResolveWeaponTmbDetour ); + ResolveWeaponVfxPathHook = Hook< MaterialResolveDetour >.FromAddress( DrawObjectWeaponVTable[ ResolveVfxIdx ], ResolveWeaponVfxDetour ); } private void EnableWeaponHooks() diff --git a/Penumbra/UI/Classes/ModEditWindow.Textures.cs b/Penumbra/UI/Classes/ModEditWindow.Textures.cs index e18ec33c..4b8f9d7f 100644 --- a/Penumbra/UI/Classes/ModEditWindow.Textures.cs +++ b/Penumbra/UI/Classes/ModEditWindow.Textures.cs @@ -181,7 +181,7 @@ public partial class ModEditWindow return ( null, 0, 0 ); } - var rgba = tex.Header.Format == TexFile.TextureFormat.A8R8G8B8 + var rgba = tex.Header.Format == TexFile.TextureFormat.B8G8R8A8 ? ImageParsing.DecodeUncompressedR8G8B8A8( tex.ImageData, tex.Header.Height, tex.Header.Width ) : tex.GetRgbaImageData(); return ( rgba, tex.Header.Width, tex.Header.Height ); @@ -436,7 +436,7 @@ public partial class ModEditWindow return; } - var leftRightWidth = new Vector2( ( ImGui.GetWindowContentRegionWidth() - ImGui.GetStyle().FramePadding.X * 4 ) / 3, -1 ); + var leftRightWidth = new Vector2( ( ImGui.GetWindowContentRegionMax().X - ImGui.GetWindowContentRegionMin().X - ImGui.GetStyle().FramePadding.X * 4 ) / 3, -1 ); var imageSize = new Vector2( leftRightWidth.X - ImGui.GetStyle().FramePadding.X * 2 ); using( var child = ImRaii.Child( "ImageLeft", leftRightWidth, true ) ) { diff --git a/Penumbra/UI/ConfigWindow.ModPanel.Edit.cs b/Penumbra/UI/ConfigWindow.ModPanel.Edit.cs index c075af5a..56b4a58e 100644 --- a/Penumbra/UI/ConfigWindow.ModPanel.Edit.cs +++ b/Penumbra/UI/ConfigWindow.ModPanel.Edit.cs @@ -336,7 +336,7 @@ public partial class ConfigWindow ImGui.SameLine(); if( ImGui.Button( "Cancel", buttonSize ) - || ImGui.IsKeyPressed( ImGui.GetKeyIndex( ImGuiKey.Escape ) ) ) + || ImGui.IsKeyPressed( ImGuiKey.Escape ) ) { _newDescriptionIdx = Input.None; _newDescription = string.Empty; diff --git a/Penumbra/UI/ConfigWindow.ResourceTab.cs b/Penumbra/UI/ConfigWindow.ResourceTab.cs index 662a98dd..f72a5dc6 100644 --- a/Penumbra/UI/ConfigWindow.ResourceTab.cs +++ b/Penumbra/UI/ConfigWindow.ResourceTab.cs @@ -147,7 +147,7 @@ public partial class ConfigWindow private void SetTableWidths() { _hashColumnWidth = 100 * ImGuiHelpers.GlobalScale; - _pathColumnWidth = ImGui.GetWindowContentRegionWidth() - 300 * ImGuiHelpers.GlobalScale; + _pathColumnWidth = ImGui.GetWindowContentRegionMax().X - ImGui.GetWindowContentRegionMin().X - 300 * ImGuiHelpers.GlobalScale; _refsColumnWidth = 30 * ImGuiHelpers.GlobalScale; } }