mirror of
https://github.com/xivdev/Penumbra.git
synced 2025-12-12 18:27:24 +01:00
Woops2
This commit is contained in:
parent
7b1e28c2cf
commit
6c93cc20df
1 changed files with 13 additions and 13 deletions
|
|
@ -33,7 +33,7 @@ internal partial record ResolveContext
|
|||
return Utf8GamePath.FromString(path, out var gamePath) ? gamePath : Utf8GamePath.Empty;
|
||||
}
|
||||
|
||||
private unsafe GenderRace ResolveModelRaceCode()
|
||||
private GenderRace ResolveModelRaceCode()
|
||||
=> ResolveEqdpRaceCode(Slot, Equipment.Set);
|
||||
|
||||
private unsafe GenderRace ResolveEqdpRaceCode(EquipSlot slot, PrimaryId primaryId)
|
||||
|
|
@ -42,7 +42,7 @@ internal partial record ResolveContext
|
|||
if (slotIndex >= 10 || ModelType != ModelType.Human)
|
||||
return GenderRace.MidlanderMale;
|
||||
|
||||
var characterRaceCode = (GenderRace)((Human*)CharacterBase.Value)->RaceSexId;
|
||||
var characterRaceCode = (GenderRace)((Human*)CharacterBase)->RaceSexId;
|
||||
if (characterRaceCode == GenderRace.MidlanderMale)
|
||||
return GenderRace.MidlanderMale;
|
||||
|
||||
|
|
@ -71,7 +71,7 @@ internal partial record ResolveContext
|
|||
|
||||
private unsafe Utf8GamePath ResolveModelPathNative()
|
||||
{
|
||||
var path = CharacterBase.Value->ResolveMdlPathAsByteString(SlotIndex);
|
||||
var path = CharacterBase->ResolveMdlPathAsByteString(SlotIndex);
|
||||
return Utf8GamePath.FromByteString(path, out var gamePath) ? gamePath : Utf8GamePath.Empty;
|
||||
}
|
||||
|
||||
|
|
@ -139,7 +139,7 @@ internal partial record ResolveContext
|
|||
|
||||
private unsafe Utf8GamePath ResolveMonsterMaterialPath(Utf8GamePath modelPath, ResourceHandle* imc, byte* mtrlFileName)
|
||||
{
|
||||
var variant = ResolveMaterialVariant(imc, (byte)((Monster*)CharacterBase.Value)->Variant);
|
||||
var variant = ResolveMaterialVariant(imc, (byte)((Monster*)CharacterBase)->Variant);
|
||||
var fileName = MemoryMarshal.CreateReadOnlySpanFromNullTerminated(mtrlFileName);
|
||||
|
||||
Span<byte> pathBuffer = stackalloc byte[260];
|
||||
|
|
@ -195,11 +195,11 @@ internal partial record ResolveContext
|
|||
ByteString? path;
|
||||
try
|
||||
{
|
||||
path = CharacterBase.Value->ResolveMtrlPathAsByteString(SlotIndex, mtrlFileName);
|
||||
path = CharacterBase->ResolveMtrlPathAsByteString(SlotIndex, mtrlFileName);
|
||||
}
|
||||
catch (AccessViolationException)
|
||||
{
|
||||
Penumbra.Log.Error($"Access violation during attempt to resolve material path\nDraw object: {(nint)CharacterBase.Value:X} (of type {ModelType})\nSlot index: {SlotIndex}\nMaterial file name: {(nint)mtrlFileName:X} ({new string((sbyte*)mtrlFileName)})");
|
||||
Penumbra.Log.Error($"Access violation during attempt to resolve material path\nDraw object: {(nint)CharacterBase:X} (of type {ModelType})\nSlot index: {SlotIndex}\nMaterial file name: {(nint)mtrlFileName:X} ({new string((sbyte*)mtrlFileName)})");
|
||||
return Utf8GamePath.Empty;
|
||||
}
|
||||
return Utf8GamePath.FromByteString(path, out var gamePath) ? gamePath : Utf8GamePath.Empty;
|
||||
|
|
@ -217,7 +217,7 @@ internal partial record ResolveContext
|
|||
};
|
||||
}
|
||||
|
||||
private unsafe Utf8GamePath ResolveHumanSkeletonPath(uint partialSkeletonIndex)
|
||||
private Utf8GamePath ResolveHumanSkeletonPath(uint partialSkeletonIndex)
|
||||
{
|
||||
var (raceCode, slot, set) = ResolveHumanSkeletonData(partialSkeletonIndex);
|
||||
if (set == 0)
|
||||
|
|
@ -229,7 +229,7 @@ internal partial record ResolveContext
|
|||
|
||||
private unsafe (GenderRace RaceCode, string Slot, PrimaryId Set) ResolveHumanSkeletonData(uint partialSkeletonIndex)
|
||||
{
|
||||
var human = (Human*)CharacterBase.Value;
|
||||
var human = (Human*)CharacterBase;
|
||||
var characterRaceCode = (GenderRace)human->RaceSexId;
|
||||
switch (partialSkeletonIndex)
|
||||
{
|
||||
|
|
@ -262,21 +262,21 @@ internal partial record ResolveContext
|
|||
|
||||
private unsafe (GenderRace RaceCode, string Slot, PrimaryId Set) ResolveHumanEquipmentSkeletonData(EquipSlot slot, EstManipulation.EstType type)
|
||||
{
|
||||
var human = (Human*)CharacterBase.Value;
|
||||
var human = (Human*)CharacterBase;
|
||||
var equipment = ((CharacterArmor*)&human->Head)[slot.ToIndex()];
|
||||
return ResolveHumanExtraSkeletonData(ResolveEqdpRaceCode(slot, equipment.Set), type, equipment.Set);
|
||||
}
|
||||
|
||||
private unsafe (GenderRace RaceCode, string Slot, PrimaryId Set) ResolveHumanExtraSkeletonData(GenderRace raceCode, EstManipulation.EstType type, PrimaryId primary)
|
||||
private (GenderRace RaceCode, string Slot, PrimaryId Set) ResolveHumanExtraSkeletonData(GenderRace raceCode, EstManipulation.EstType type, PrimaryId primary)
|
||||
{
|
||||
var metaCache = Global.Collection.MetaCache;
|
||||
var skeletonSet = metaCache == null ? default : metaCache.GetEstEntry(type, raceCode, primary);
|
||||
var skeletonSet = metaCache?.GetEstEntry(type, raceCode, primary) ?? default;
|
||||
return (raceCode, EstManipulation.ToName(type), skeletonSet);
|
||||
}
|
||||
|
||||
private unsafe Utf8GamePath ResolveSkeletonPathNative(uint partialSkeletonIndex)
|
||||
{
|
||||
var path = CharacterBase.Value->ResolveSklbPathAsByteString(partialSkeletonIndex);
|
||||
var path = CharacterBase->ResolveSklbPathAsByteString(partialSkeletonIndex);
|
||||
return Utf8GamePath.FromByteString(path, out var gamePath) ? gamePath : Utf8GamePath.Empty;
|
||||
}
|
||||
|
||||
|
|
@ -304,7 +304,7 @@ internal partial record ResolveContext
|
|||
|
||||
private unsafe Utf8GamePath ResolveSkeletonParameterPathNative(uint partialSkeletonIndex)
|
||||
{
|
||||
var path = CharacterBase.Value->ResolveSkpPathAsByteString(partialSkeletonIndex);
|
||||
var path = CharacterBase->ResolveSkpPathAsByteString(partialSkeletonIndex);
|
||||
return Utf8GamePath.FromByteString(path, out var gamePath) ? gamePath : Utf8GamePath.Empty;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue