Use fallback camera sockets for items if hand sockets don't exist

This commit is contained in:
Mister_Nebula 2022-03-24 13:42:23 +00:00
parent bd34dcc123
commit 9e48f4e316
3 changed files with 32 additions and 11 deletions

Binary file not shown.

View File

@ -1,6 +1,7 @@
using QSB.ItemSync.WorldObjects.Items;
using QSB.Messaging;
using QSB.Player;
using QSB.Utility;
namespace QSB.ItemSync.Messages;
@ -25,6 +26,7 @@ internal class MoveToCarryMessage : QSBWorldObjectMessage<IQSBItem>
ItemType.VisionTorch => player.VisionTorchSocket,
_ => player.ItemSocket
};
WorldObject.PickUpItem(itemSocket);
switch (itemType)
@ -53,10 +55,9 @@ internal class MoveToCarryMessage : QSBWorldObjectMessage<IQSBItem>
player.AnimationSync.VisibleAnimator.SetTrigger("HoldLantern");
break;
case ItemType.SlideReel:
break;
case ItemType.DreamLantern:
break;
case ItemType.VisionTorch:
DebugLog.ToConsole($"Warning - {itemType} has no implemented holding pose.", OWML.Common.MessageType.Warning);
break;
}
}

View File

@ -132,15 +132,35 @@ public class PlayerInfo
return _handPivot;
}
}
public Transform ItemSocket => HandPivot.Find("REMOTE_ItemSocket");
public Transform ScrollSocket => HandPivot.Find("REMOTE_ScrollSocket");
public Transform SharedStoneSocket => HandPivot.Find("REMOTE_SharedStoneSocket");
public Transform WarpCoreSocket => HandPivot.Find("REMOTE_WarpCoreSocket");
public Transform VesselCoreSocket => HandPivot.Find("REMOTE_VesselCoreSocket");
public Transform SimpleLanternSocket => HandPivot.Find("REMOTE_SimpleLanternSocket");
public Transform DreamLanternSocket => HandPivot.Find("REMOTE_DreamLanternSocket");
public Transform SlideReelSocket => HandPivot.Find("REMOTE_SlideReelSocket");
public Transform VisionTorchSocket => HandPivot.Find("REMOTE_VisionTorchSocket");
public Transform ItemSocket => GetSocket("REMOTE_ItemSocket");
public Transform ScrollSocket => GetSocket("REMOTE_ScrollSocket");
public Transform SharedStoneSocket => GetSocket("REMOTE_SharedStoneSocket");
public Transform WarpCoreSocket => GetSocket("REMOTE_WarpCoreSocket");
public Transform VesselCoreSocket => GetSocket("REMOTE_VesselCoreSocket");
public Transform SimpleLanternSocket => GetSocket("REMOTE_SimpleLanternSocket");
public Transform DreamLanternSocket => GetSocket("REMOTE_DreamLanternSocket");
public Transform SlideReelSocket => GetSocket("REMOTE_SlideReelSocket");
public Transform VisionTorchSocket => GetSocket("REMOTE_VisionTorchSocket");
private Transform GetSocket(string name)
{
var handSocket = HandPivot.Find(name);
if (handSocket != null)
{
return handSocket;
}
var cameraSocket = CameraBody.transform.Find("REMOTE_ItemCarryTool").Find(name);
if (cameraSocket != null)
{
DebugLog.ToConsole($"Warning - Could not find hand socket for socket name {name}, defaulting to camera socket.", MessageType.Warning);
return cameraSocket;
}
DebugLog.ToConsole($"Error - Could not find hand socket or camera socket for socket name {name}.", MessageType.Error);
return null;
}
public QSBMarshmallow Marshmallow { get; set; }
public QSBCampfire Campfire { get; set; }
public IQSBItem HeldItem { get; set; }