I may have found the culprit of this issue in the demo scene, not sure if it fully applies to your case, but it's to do with when the camera perspective changes (which also happens during camera initialization of the Character).
Item.OnChangePerspectives
calls
PerspectiveItem.SetActive
with
active = true
if the weapon is in the inventory, even if it's not actually active (equipped) at that time, causing ThirdPersonPerspectiveItem to position the visible object in the character's hand rather than holster.
A (very rough) workaround for now, until Justin can hopefully implement a more complete fix - in Item.OnChangePerspectives (line 1063):
C#:
protected virtual void OnChangePerspectives(bool firstPersonPerspective)
{
// The object isn't active if it isn't equipped. OnChangePerspective will be sent to all items regardless of whether or not they are equipped.
var isActive = m_ActivePerspectiveItem != null && m_ActivePerspectiveItem.IsActive();
if (firstPersonPerspective) {
#if FIRST_PERSON_CONTROLLER
m_ActivePerspectiveItem = m_FirstPersonPerspectiveItem;
#endif
} else {
m_ActivePerspectiveItem = m_ThirdPersonPerspectiveItem;
}
if (isActive) {
var hasItem = m_Inventory.GetItemIdentifierAmount(m_ItemIdentifier) > 0;
var active = m_Inventory.GetActiveItem(0).ItemIdentifier == m_ItemIdentifier; // <-- NEW LINE
m_ActivePerspectiveItem.SetActive(active, hasItem); // <-- CHANGED LINE (changed first argument to `active`)
}
}
This fix assumes that the item is in slot 0. I'll pass this on to Justin though to hopefully get a more general fix.