mirror of
https://github.com/xivdev/Penumbra.git
synced 2026-02-20 14:57:50 +01:00
Working on PathResolver
This commit is contained in:
parent
6f527a1dbc
commit
e7282384f5
29 changed files with 1170 additions and 527 deletions
|
|
@ -1,3 +1,4 @@
|
|||
using System;
|
||||
using Penumbra.GameData.Enums;
|
||||
using Penumbra.GameData.Structs;
|
||||
using Penumbra.GameData.Util;
|
||||
|
|
@ -6,14 +7,16 @@ using System.Collections.Generic;
|
|||
|
||||
namespace Penumbra.Meta.Files;
|
||||
|
||||
// The human.cmp file contains many character-relevant parameters like color sets.
|
||||
// We only support manipulating the racial scaling parameters at the moment.
|
||||
public sealed unsafe class CmpFile : MetaBaseFile
|
||||
{
|
||||
private const int RacialScalingStart = 0x2A800;
|
||||
|
||||
public float this[ SubRace subRace, RspAttribute attribute ]
|
||||
{
|
||||
get => *( float* )( Data + RacialScalingStart + subRace.ToRspIndex() * RspEntry.ByteSize + ( int )attribute * 4 );
|
||||
set => *( float* )( Data + RacialScalingStart + subRace.ToRspIndex() * RspEntry.ByteSize + ( int )attribute * 4 ) = value;
|
||||
get => *( float* )( Data + RacialScalingStart + ToRspIndex( subRace ) * RspEntry.ByteSize + ( int )attribute * 4 );
|
||||
set => *( float* )( Data + RacialScalingStart + ToRspIndex( subRace ) * RspEntry.ByteSize + ( int )attribute * 4 ) = value;
|
||||
}
|
||||
|
||||
public override void Reset()
|
||||
|
|
@ -37,6 +40,29 @@ public sealed unsafe class CmpFile : MetaBaseFile
|
|||
public static float GetDefault( SubRace subRace, RspAttribute attribute )
|
||||
{
|
||||
var data = ( byte* )Penumbra.CharacterUtility.DefaultResources[ CharacterUtility.HumanCmpIdx ].Address;
|
||||
return *( float* )( data + RacialScalingStart + subRace.ToRspIndex() * RspEntry.ByteSize + ( int )attribute * 4 );
|
||||
return *( float* )( data + RacialScalingStart + ToRspIndex( subRace ) * RspEntry.ByteSize + ( int )attribute * 4 );
|
||||
}
|
||||
|
||||
private static int ToRspIndex( SubRace subRace )
|
||||
=> subRace switch
|
||||
{
|
||||
SubRace.Midlander => 0,
|
||||
SubRace.Highlander => 1,
|
||||
SubRace.Wildwood => 10,
|
||||
SubRace.Duskwight => 11,
|
||||
SubRace.Plainsfolk => 20,
|
||||
SubRace.Dunesfolk => 21,
|
||||
SubRace.SeekerOfTheSun => 30,
|
||||
SubRace.KeeperOfTheMoon => 31,
|
||||
SubRace.Seawolf => 40,
|
||||
SubRace.Hellsguard => 41,
|
||||
SubRace.Raen => 50,
|
||||
SubRace.Xaela => 51,
|
||||
SubRace.Helion => 60,
|
||||
SubRace.Lost => 61,
|
||||
SubRace.Rava => 70,
|
||||
SubRace.Veena => 71,
|
||||
SubRace.Unknown => 0,
|
||||
_ => throw new ArgumentOutOfRangeException( nameof( subRace ), subRace, null ),
|
||||
};
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue