Skip to content

Commit 7dfc564

Browse files
committed
Add path resolving / est handling for kdb and bnmb files.
1 parent d50fbf5 commit 7dfc564

File tree

1 file changed

+34
-3
lines changed

1 file changed

+34
-3
lines changed

Penumbra/Interop/Hooks/Resources/ResolvePathHooksBase.cs

Lines changed: 34 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,9 @@ public enum Type
3636
private readonly Hook<PerSlotResolveDelegate> _resolveMdlPathHook;
3737
private readonly Hook<NamedResolveDelegate> _resolveMtrlPathHook;
3838
private readonly Hook<NamedResolveDelegate> _resolvePapPathHook;
39+
private readonly Hook<PerSlotResolveDelegate> _resolveKdbPathHook;
3940
private readonly Hook<PerSlotResolveDelegate> _resolvePhybPathHook;
41+
private readonly Hook<PerSlotResolveDelegate> _resolveBnmbPathHook;
4042
private readonly Hook<PerSlotResolveDelegate> _resolveSklbPathHook;
4143
private readonly Hook<PerSlotResolveDelegate> _resolveSkpPathHook;
4244
private readonly Hook<TmbResolveDelegate> _resolveTmbPathHook;
@@ -54,11 +56,10 @@ public ResolvePathHooksBase(string name, HookManager hooks, PathState parent, ni
5456
_resolveMdlPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolveMdl)}", hooks, vTable[77], type, ResolveMdl, ResolveMdlHuman);
5557
_resolveSkpPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolveSkp)}", hooks, vTable[78], type, ResolveSkp, ResolveSkpHuman);
5658
_resolvePhybPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolvePhyb)}", hooks, vTable[79], type, ResolvePhyb, ResolvePhybHuman);
57-
59+
_resolveKdbPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolveKdb)}", hooks, vTable[80], type, ResolveKdb, ResolveKdbHuman);
5860
_vFunc81Hook = Create<SkeletonVFuncDelegate>( $"{name}.{nameof(VFunc81)}", hooks, vTable[81], type, null, VFunc81);
59-
61+
_resolveBnmbPathHook = Create<PerSlotResolveDelegate>($"{name}.{nameof(ResolveBnmb)}", hooks, vTable[82], type, ResolveBnmb, ResolveBnmbHuman);
6062
_vFunc83Hook = Create<SkeletonVFuncDelegate>( $"{name}.{nameof(VFunc83)}", hooks, vTable[83], type, null, VFunc83);
61-
6263
_resolvePapPathHook = Create<NamedResolveDelegate>( $"{name}.{nameof(ResolvePap)}", hooks, vTable[84], type, ResolvePap, ResolvePapHuman);
6364
_resolveTmbPathHook = Create<TmbResolveDelegate>( $"{name}.{nameof(ResolveTmb)}", hooks, vTable[85], ResolveTmb);
6465
_resolveMPapPathHook = Create<MPapResolveDelegate>( $"{name}.{nameof(ResolveMPap)}", hooks, vTable[87], ResolveMPap);
@@ -83,7 +84,9 @@ public void Enable()
8384
_resolveMdlPathHook.Enable();
8485
_resolveMtrlPathHook.Enable();
8586
_resolvePapPathHook.Enable();
87+
_resolveKdbPathHook.Enable();
8688
_resolvePhybPathHook.Enable();
89+
_resolveBnmbPathHook.Enable();
8790
_resolveSklbPathHook.Enable();
8891
_resolveSkpPathHook.Enable();
8992
_resolveTmbPathHook.Enable();
@@ -101,7 +104,9 @@ public void Disable()
101104
_resolveMdlPathHook.Disable();
102105
_resolveMtrlPathHook.Disable();
103106
_resolvePapPathHook.Disable();
107+
_resolveKdbPathHook.Disable();
104108
_resolvePhybPathHook.Disable();
109+
_resolveBnmbPathHook.Disable();
105110
_resolveSklbPathHook.Disable();
106111
_resolveSkpPathHook.Disable();
107112
_resolveTmbPathHook.Disable();
@@ -119,7 +124,9 @@ public void Dispose()
119124
_resolveMdlPathHook.Dispose();
120125
_resolveMtrlPathHook.Dispose();
121126
_resolvePapPathHook.Dispose();
127+
_resolveKdbPathHook.Dispose();
122128
_resolvePhybPathHook.Dispose();
129+
_resolveBnmbPathHook.Dispose();
123130
_resolveSklbPathHook.Dispose();
124131
_resolveSkpPathHook.Dispose();
125132
_resolveTmbPathHook.Dispose();
@@ -149,9 +156,15 @@ private nint ResolveMtrl(nint drawObject, nint pathBuffer, nint pathBufferSize,
149156
private nint ResolvePap(nint drawObject, nint pathBuffer, nint pathBufferSize, uint unkAnimationIndex, nint animationName)
150157
=> ResolvePath(drawObject, _resolvePapPathHook.Original(drawObject, pathBuffer, pathBufferSize, unkAnimationIndex, animationName));
151158

159+
private nint ResolveKdb(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
160+
=> ResolvePath(drawObject, _resolveKdbPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
161+
152162
private nint ResolvePhyb(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
153163
=> ResolvePath(drawObject, _resolvePhybPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
154164

165+
private nint ResolveBnmb(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
166+
=> ResolvePath(drawObject, _resolveBnmbPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
167+
155168
private nint ResolveSklb(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
156169
=> ResolvePath(drawObject, _resolveSklbPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
157170

@@ -188,6 +201,15 @@ private nint ResolvePapHuman(nint drawObject, nint pathBuffer, nint pathBufferSi
188201
return ret;
189202
}
190203

204+
private nint ResolveKdbHuman(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
205+
{
206+
var collection = _parent.CollectionResolver.IdentifyCollection((DrawObject*)drawObject, true);
207+
_parent.MetaState.EstCollection.Push(collection);
208+
var ret = ResolvePath(collection, _resolveKdbPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
209+
_parent.MetaState.EstCollection.Pop();
210+
return ret;
211+
}
212+
191213
private nint ResolvePhybHuman(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
192214
{
193215
var collection = _parent.CollectionResolver.IdentifyCollection((DrawObject*)drawObject, true);
@@ -197,6 +219,15 @@ private nint ResolvePhybHuman(nint drawObject, nint pathBuffer, nint pathBufferS
197219
return ret;
198220
}
199221

222+
private nint ResolveBnmbHuman(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
223+
{
224+
var collection = _parent.CollectionResolver.IdentifyCollection((DrawObject*)drawObject, true);
225+
_parent.MetaState.EstCollection.Push(collection);
226+
var ret = ResolvePath(collection, _resolveBnmbPathHook.Original(drawObject, pathBuffer, pathBufferSize, partialSkeletonIndex));
227+
_parent.MetaState.EstCollection.Pop();
228+
return ret;
229+
}
230+
200231
private nint ResolveSklbHuman(nint drawObject, nint pathBuffer, nint pathBufferSize, uint partialSkeletonIndex)
201232
{
202233
var collection = _parent.CollectionResolver.IdentifyCollection((DrawObject*)drawObject, true);

0 commit comments

Comments
 (0)