mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-15 05:04:15 +01:00
Add path resolving / est handling for kdb and bnmb files.
This commit is contained in:
parent
d50fbf5a1c
commit
7dfc564a4c
1 changed files with 34 additions and 3 deletions
|
|
@ -36,7 +36,9 @@ public sealed unsafe class ResolvePathHooksBase : IDisposable
|
||||||
private readonly Hook<PerSlotResolveDelegate> _resolveMdlPathHook;
|
private readonly Hook<PerSlotResolveDelegate> _resolveMdlPathHook;
|
||||||
private readonly Hook<NamedResolveDelegate> _resolveMtrlPathHook;
|
private readonly Hook<NamedResolveDelegate> _resolveMtrlPathHook;
|
||||||
private readonly Hook<NamedResolveDelegate> _resolvePapPathHook;
|
private readonly Hook<NamedResolveDelegate> _resolvePapPathHook;
|
||||||
|
private readonly Hook<PerSlotResolveDelegate> _resolveKdbPathHook;
|
||||||
private readonly Hook<PerSlotResolveDelegate> _resolvePhybPathHook;
|
private readonly Hook<PerSlotResolveDelegate> _resolvePhybPathHook;
|
||||||
|
private readonly Hook<PerSlotResolveDelegate> _resolveBnmbPathHook;
|
||||||
private readonly Hook<PerSlotResolveDelegate> _resolveSklbPathHook;
|
private readonly Hook<PerSlotResolveDelegate> _resolveSklbPathHook;
|
||||||
private readonly Hook<PerSlotResolveDelegate> _resolveSkpPathHook;
|
private readonly Hook<PerSlotResolveDelegate> _resolveSkpPathHook;
|
||||||
private readonly Hook<TmbResolveDelegate> _resolveTmbPathHook;
|
private readonly Hook<TmbResolveDelegate> _resolveTmbPathHook;
|
||||||
|
|
@ -54,11 +56,10 @@ public sealed unsafe class ResolvePathHooksBase : IDisposable
|
||||||
_resolveMdlPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolveMdl)}", hooks, vTable[77], type, ResolveMdl, ResolveMdlHuman);
|
_resolveMdlPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolveMdl)}", hooks, vTable[77], type, ResolveMdl, ResolveMdlHuman);
|
||||||
_resolveSkpPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolveSkp)}", hooks, vTable[78], type, ResolveSkp, ResolveSkpHuman);
|
_resolveSkpPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolveSkp)}", hooks, vTable[78], type, ResolveSkp, ResolveSkpHuman);
|
||||||
_resolvePhybPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolvePhyb)}", hooks, vTable[79], type, ResolvePhyb, ResolvePhybHuman);
|
_resolvePhybPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolvePhyb)}", hooks, vTable[79], type, ResolvePhyb, ResolvePhybHuman);
|
||||||
|
_resolveKdbPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolveKdb)}", hooks, vTable[80], type, ResolveKdb, ResolveKdbHuman);
|
||||||
_vFunc81Hook = Create<SkeletonVFuncDelegate>( $"{name}.{nameof(VFunc81)}", hooks, vTable[81], type, null, VFunc81);
|
_vFunc81Hook = Create<SkeletonVFuncDelegate>( $"{name}.{nameof(VFunc81)}", hooks, vTable[81], type, null, VFunc81);
|
||||||
|
_resolveBnmbPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolveBnmb)}", hooks, vTable[82], type, ResolveBnmb, ResolveBnmbHuman);
|
||||||
_vFunc83Hook = Create<SkeletonVFuncDelegate>( $"{name}.{nameof(VFunc83)}", hooks, vTable[83], type, null, VFunc83);
|
_vFunc83Hook = Create<SkeletonVFuncDelegate>( $"{name}.{nameof(VFunc83)}", hooks, vTable[83], type, null, VFunc83);
|
||||||
|
|
||||||
_resolvePapPathHook = Create<NamedResolveDelegate>( $"{name}.{nameof(ResolvePap)}", hooks, vTable[84], type, ResolvePap, ResolvePapHuman);
|
_resolvePapPathHook = Create<NamedResolveDelegate>( $"{name}.{nameof(ResolvePap)}", hooks, vTable[84], type, ResolvePap, ResolvePapHuman);
|
||||||
_resolveTmbPathHook = Create<TmbResolveDelegate>( $"{name}.{nameof(ResolveTmb)}", hooks, vTable[85], ResolveTmb);
|
_resolveTmbPathHook = Create<TmbResolveDelegate>( $"{name}.{nameof(ResolveTmb)}", hooks, vTable[85], ResolveTmb);
|
||||||
_resolveMPapPathHook = Create<MPapResolveDelegate>( $"{name}.{nameof(ResolveMPap)}", hooks, vTable[87], ResolveMPap);
|
_resolveMPapPathHook = Create<MPapResolveDelegate>( $"{name}.{nameof(ResolveMPap)}", hooks, vTable[87], ResolveMPap);
|
||||||
|
|
@ -83,7 +84,9 @@ public sealed unsafe class ResolvePathHooksBase : IDisposable
|
||||||
_resolveMdlPathHook.Enable();
|
_resolveMdlPathHook.Enable();
|
||||||
_resolveMtrlPathHook.Enable();
|
_resolveMtrlPathHook.Enable();
|
||||||
_resolvePapPathHook.Enable();
|
_resolvePapPathHook.Enable();
|
||||||
|
_resolveKdbPathHook.Enable();
|
||||||
_resolvePhybPathHook.Enable();
|
_resolvePhybPathHook.Enable();
|
||||||
|
_resolveBnmbPathHook.Enable();
|
||||||
_resolveSklbPathHook.Enable();
|
_resolveSklbPathHook.Enable();
|
||||||
_resolveSkpPathHook.Enable();
|
_resolveSkpPathHook.Enable();
|
||||||
_resolveTmbPathHook.Enable();
|
_resolveTmbPathHook.Enable();
|
||||||
|
|
@ -101,7 +104,9 @@ public sealed unsafe class ResolvePathHooksBase : IDisposable
|
||||||
_resolveMdlPathHook.Disable();
|
_resolveMdlPathHook.Disable();
|
||||||
_resolveMtrlPathHook.Disable();
|
_resolveMtrlPathHook.Disable();
|
||||||
_resolvePapPathHook.Disable();
|
_resolvePapPathHook.Disable();
|
||||||
|
_resolveKdbPathHook.Disable();
|
||||||
_resolvePhybPathHook.Disable();
|
_resolvePhybPathHook.Disable();
|
||||||
|
_resolveBnmbPathHook.Disable();
|
||||||
_resolveSklbPathHook.Disable();
|
_resolveSklbPathHook.Disable();
|
||||||
_resolveSkpPathHook.Disable();
|
_resolveSkpPathHook.Disable();
|
||||||
_resolveTmbPathHook.Disable();
|
_resolveTmbPathHook.Disable();
|
||||||
|
|
@ -119,7 +124,9 @@ public sealed unsafe class ResolvePathHooksBase : IDisposable
|
||||||
_resolveMdlPathHook.Dispose();
|
_resolveMdlPathHook.Dispose();
|
||||||
_resolveMtrlPathHook.Dispose();
|
_resolveMtrlPathHook.Dispose();
|
||||||
_resolvePapPathHook.Dispose();
|
_resolvePapPathHook.Dispose();
|
||||||
|
_resolveKdbPathHook.Dispose();
|
||||||
_resolvePhybPathHook.Dispose();
|
_resolvePhybPathHook.Dispose();
|
||||||
|
_resolveBnmbPathHook.Dispose();
|
||||||
_resolveSklbPathHook.Dispose();
|
_resolveSklbPathHook.Dispose();
|
||||||
_resolveSkpPathHook.Dispose();
|
_resolveSkpPathHook.Dispose();
|
||||||
_resolveTmbPathHook.Dispose();
|
_resolveTmbPathHook.Dispose();
|
||||||
|
|
@ -149,9 +156,15 @@ public sealed unsafe class ResolvePathHooksBase : IDisposable
|
||||||
private nint ResolvePap(nint drawObject, nint pathBuffer, nint pathBufferSize, uint unkAnimationIndex, nint animationName)
|
private nint ResolvePap(nint drawObject, nint pathBuffer, nint pathBufferSize, uint unkAnimationIndex, nint animationName)
|
||||||
=> ResolvePath(drawObject, _resolvePapPathHook.Original(drawObject, pathBuffer, pathBufferSize, unkAnimationIndex, animationName));
|
=> ResolvePath(drawObject, _resolvePapPathHook.Original(drawObject, pathBuffer, pathBufferSize, unkAnimationIndex, animationName));
|
||||||
|
|
||||||
|
private nint ResolveKdb(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
|
||||||
|
=> ResolvePath(drawObject, _resolveKdbPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
|
||||||
|
|
||||||
private nint ResolvePhyb(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
|
private nint ResolvePhyb(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
|
||||||
=> ResolvePath(drawObject, _resolvePhybPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
|
=> ResolvePath(drawObject, _resolvePhybPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
|
||||||
|
|
||||||
|
private nint ResolveBnmb(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
|
||||||
|
=> ResolvePath(drawObject, _resolveBnmbPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
|
||||||
|
|
||||||
private nint ResolveSklb(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
|
private nint ResolveSklb(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
|
||||||
=> ResolvePath(drawObject, _resolveSklbPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
|
=> ResolvePath(drawObject, _resolveSklbPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
|
||||||
|
|
||||||
|
|
@ -188,6 +201,15 @@ public sealed unsafe class ResolvePathHooksBase : IDisposable
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private nint ResolveKdbHuman(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
|
||||||
|
{
|
||||||
|
var collection = _parent.CollectionResolver.IdentifyCollection((DrawObject*)drawObject, true);
|
||||||
|
_parent.MetaState.EstCollection.Push(collection);
|
||||||
|
var ret = ResolvePath(collection, _resolveKdbPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
|
||||||
|
_parent.MetaState.EstCollection.Pop();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
private nint ResolvePhybHuman(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
|
private nint ResolvePhybHuman(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
|
||||||
{
|
{
|
||||||
var collection = _parent.CollectionResolver.IdentifyCollection((DrawObject*)drawObject, true);
|
var collection = _parent.CollectionResolver.IdentifyCollection((DrawObject*)drawObject, true);
|
||||||
|
|
@ -197,6 +219,15 @@ public sealed unsafe class ResolvePathHooksBase : IDisposable
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private nint ResolveBnmbHuman(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
|
||||||
|
{
|
||||||
|
var collection = _parent.CollectionResolver.IdentifyCollection((DrawObject*)drawObject, true);
|
||||||
|
_parent.MetaState.EstCollection.Push(collection);
|
||||||
|
var ret = ResolvePath(collection, _resolveBnmbPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
|
||||||
|
_parent.MetaState.EstCollection.Pop();
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
private nint ResolveSklbHuman(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
|
private nint ResolveSklbHuman(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
|
||||||
{
|
{
|
||||||
var collection = _parent.CollectionResolver.IdentifyCollection((DrawObject*)drawObject, true);
|
var collection = _parent.CollectionResolver.IdentifyCollection((DrawObject*)drawObject, true);
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue