mirror of
https://github.com/Ottermandias/Glamourer.git
synced 2025-12-12 18:27:24 +01:00
Maybe fix weapon hidden state when leaving gpose or changing zones.
This commit is contained in:
parent
38a489d7f0
commit
a7c5d513d4
4 changed files with 11 additions and 4 deletions
|
|
@ -61,7 +61,9 @@ public unsafe class MetaService : IDisposable
|
||||||
if (!actor.IsCharacter)
|
if (!actor.IsCharacter)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
var old = actor.AsCharacter->DrawData.IsWeaponHidden;
|
||||||
_hideWeaponsHook.Original(&actor.AsCharacter->DrawData, (byte)(value ? 0 : 1));
|
_hideWeaponsHook.Original(&actor.AsCharacter->DrawData, (byte)(value ? 0 : 1));
|
||||||
|
actor.AsCharacter->DrawData.IsWeaponHidden = old;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void HideHatDetour(DrawDataContainer* drawData, uint id, byte value)
|
private void HideHatDetour(DrawDataContainer* drawData, uint id, byte value)
|
||||||
|
|
|
||||||
|
|
@ -59,7 +59,7 @@ public unsafe class ScalingService : IDisposable
|
||||||
|
|
||||||
private void SetupOrnamentDetour(Ornament* ornament, uint* unk1, float* unk2)
|
private void SetupOrnamentDetour(Ornament* ornament, uint* unk1, float* unk2)
|
||||||
{
|
{
|
||||||
var character = ornament->Character.GetParentCharacter();
|
var character = ornament->GetParentCharacter();
|
||||||
if (character == null)
|
if (character == null)
|
||||||
{
|
{
|
||||||
_setupOrnamentHook.Original(ornament, unk1, unk2);
|
_setupOrnamentHook.Original(ornament, unk1, unk2);
|
||||||
|
|
|
||||||
|
|
@ -247,8 +247,13 @@ public class StateApplier(
|
||||||
}
|
}
|
||||||
case MetaIndex.WeaponState:
|
case MetaIndex.WeaponState:
|
||||||
{
|
{
|
||||||
foreach (var actor in data.Objects.Where(a => a.IsCharacter))
|
// Only apply to the GPose character because otherwise we get some weird incompatibility when leaving GPose.
|
||||||
_metaService.SetWeaponState(actor, value);
|
if (_objects.IsInGPose)
|
||||||
|
foreach (var actor in data.Objects.Where(a => a.IsGPoseOrCutscene))
|
||||||
|
_metaService.SetWeaponState(actor, value);
|
||||||
|
else
|
||||||
|
foreach (var actor in data.Objects.Where(a => a.IsCharacter))
|
||||||
|
_metaService.SetWeaponState(actor, value);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
case MetaIndex.VisorState:
|
case MetaIndex.VisorState:
|
||||||
|
|
|
||||||
|
|
@ -251,7 +251,7 @@ public class StateEditor(
|
||||||
|
|
||||||
var actors = Applier.ChangeMetaState(state, index, settings.Source.RequiresChange());
|
var actors = Applier.ChangeMetaState(state, index, settings.Source.RequiresChange());
|
||||||
Glamourer.Log.Verbose(
|
Glamourer.Log.Verbose(
|
||||||
$"Set Head Gear Visibility in state {state.Identifier.Incognito(null)} from {old} to {value}. [Affecting {actors.ToLazyString("nothing")}.]");
|
$"Set {index.ToName()} in state {state.Identifier.Incognito(null)} from {old} to {value}. [Affecting {actors.ToLazyString("nothing")}.]");
|
||||||
StateChanged.Invoke(StateChangeType.Other, settings.Source, state, actors, new MetaTransaction(index, old, value));
|
StateChanged.Invoke(StateChangeType.Other, settings.Source, state, actors, new MetaTransaction(index, old, value));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue