/// <summary> /// Change the equipment's mounting status. /// </summary> /// <param name="avatarAddress"></param> /// <param name="itemId"></param> /// <param name="equip"></param> /// <param name="resetState"></param> public static void SetItemEquip( Address avatarAddress, Guid itemId, bool equip, bool resetState = true) { var modifier = new AvatarInventoryItemEquippedModifier(itemId, equip); LocalLayer.Instance.Add(avatarAddress, modifier); if (!TryGetLoadedAvatarState( avatarAddress, out var outAvatarState, out _, out var isCurrentAvatarState) ) { return; } outAvatarState = modifier.Modify(outAvatarState); if (!resetState || !isCurrentAvatarState) { return; } ReactiveAvatarState.Inventory.SetValueAndForceNotify(outAvatarState.inventory); }
private bool TryUnequipModify(ItemBase itemBase) { if (!(itemBase is INonFungibleItem nonFungibleItem) || !(itemBase is IEquippableItem equippableItem)) { return(false); } var modifier = new AvatarInventoryItemEquippedModifier(nonFungibleItem.ItemId, false); modifier.Modify(_avatarState); Assert.False(equippableItem.Equipped); return(true); }