Position and rotation offsets for custom item holding and socketing

This commit is contained in:
Joshua Thome 2024-04-11 10:34:58 -05:00
parent 962a6f778b
commit 0a1e5428e8
3 changed files with 28 additions and 0 deletions

View File

@ -51,6 +51,10 @@ namespace NewHorizons.Builder.Props
item.DisplayName = itemName; item.DisplayName = itemName;
item.ItemType = itemType; item.ItemType = itemType;
item.Droppable = info.droppable; item.Droppable = info.droppable;
item.HoldOffset = info.holdOffset ?? Vector3.zero;
item.HoldRotation = info.holdRotation ?? Vector3.zero;
item.SocketOffset = info.socketOffset ?? Vector3.zero;
item.SocketRotation = info.socketRotation ?? Vector3.zero;
if (!string.IsNullOrEmpty(info.pickupAudio)) if (!string.IsNullOrEmpty(info.pickupAudio))
{ {
item.PickupAudio = AudioTypeHandler.GetAudioType(info.pickupAudio, mod); item.PickupAudio = AudioTypeHandler.GetAudioType(info.pickupAudio, mod);

View File

@ -19,6 +19,10 @@ namespace NewHorizons.Components.Props
public AudioType DropAudio; public AudioType DropAudio;
public AudioType SocketAudio; public AudioType SocketAudio;
public AudioType UnsocketAudio; public AudioType UnsocketAudio;
public Vector3 HoldOffset;
public Vector3 HoldRotation;
public Vector3 SocketOffset;
public Vector3 SocketRotation;
public string PickupCondition; public string PickupCondition;
public bool ClearPickupConditionOnDrop; public bool ClearPickupConditionOnDrop;
public string PickupFact; public string PickupFact;
@ -42,6 +46,8 @@ namespace NewHorizons.Components.Props
public override void PickUpItem(Transform holdTranform) public override void PickUpItem(Transform holdTranform)
{ {
base.PickUpItem(holdTranform); base.PickUpItem(holdTranform);
transform.localPosition = HoldOffset;
transform.localEulerAngles = HoldRotation;
TriggerPickupConditions(); TriggerPickupConditions();
PlayCustomSound(PickupAudio); PlayCustomSound(PickupAudio);
} }
@ -56,6 +62,8 @@ namespace NewHorizons.Components.Props
public override void SocketItem(Transform socketTransform, Sector sector) public override void SocketItem(Transform socketTransform, Sector sector)
{ {
base.SocketItem(socketTransform, sector); base.SocketItem(socketTransform, sector);
transform.localPosition = SocketOffset;
transform.localEulerAngles = SocketRotation;
TriggerDropConditions(); TriggerDropConditions();
PlayCustomSound(SocketAudio); PlayCustomSound(SocketAudio);
} }

View File

@ -44,6 +44,22 @@ namespace NewHorizons.External.Modules.Props.Item
/// </summary> /// </summary>
public MVector3 dropNormal; public MVector3 dropNormal;
/// <summary> /// <summary>
/// A relative offset to apply to the item's position when holding it. The initial position varies for vanilla item types.
/// </summary>
public MVector3 holdOffset;
/// <summary>
/// A relative offset to apply to the item's rotation when holding it.
/// </summary>
public MVector3 holdRotation;
/// <summary>
/// A relative offset to apply to the item's position when placing it into a socket.
/// </summary>
public MVector3 socketOffset;
/// <summary>
/// A relative offset to apply to the item's rotation when placing it into a socket.
/// </summary>
public MVector3 socketRotation;
/// <summary>
/// The audio to play when this item is picked up. Only applies to custom/non-vanilla item types. /// The audio to play when this item is picked up. Only applies to custom/non-vanilla item types.
/// Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list. /// Can be a path to a .wav/.ogg/.mp3 file, or taken from the AudioClip list.
/// </summary> /// </summary>