Files
Cielonos/Assets/Scripts/MainGame/Characters/Base/Subcontrollers/BodyPartsSubcontroller.cs
SoulliesOfficial f26f9fd374 爆更
2026-03-20 12:07:44 -04:00

65 lines
2.2 KiB
C#

using System.Collections.Generic;
using Cielonos.MainGame.Characters.Inventory;
using Sirenix.OdinInspector;
using UnityEngine;
using UnityEngine.Serialization;
namespace Cielonos.MainGame.Characters
{
public partial class BodyPartsSubcontroller : SubcontrollerBase<CharacterBase>
{
[Title("Main Parts")]
public Transform flexibleCenterPoint;
public Transform staticCenterPoint;
public Transform cameraLockingPoint;
public Transform footPoint;
public Transform infoUIPoint;
public Transform head;
public Transform leftHand;
public Transform rightHand;
public Transform back;
public Transform hips;
public Transform leftFoot;
public Transform rightFoot;
[Title("Custom Parts")]
public Dictionary<string, Transform> customBodyParts;
[Title("Attachments")]
public Dictionary<string, GameObject> attachments;
}
public partial class BodyPartsSubcontroller
{
public Transform GetPart(ViewObjectData.AttachBodyPartType partType)
{
return partType switch
{
ViewObjectData.AttachBodyPartType.RightHand => rightHand,
ViewObjectData.AttachBodyPartType.LeftHand => leftHand,
ViewObjectData.AttachBodyPartType.Head => head,
ViewObjectData.AttachBodyPartType.FlexibleCenterPoint => flexibleCenterPoint,
ViewObjectData.AttachBodyPartType.Back => back,
ViewObjectData.AttachBodyPartType.Hips => hips,
ViewObjectData.AttachBodyPartType.RightFoot => rightFoot,
ViewObjectData.AttachBodyPartType.LeftFoot => leftFoot,
_ => null
};
}
public Transform GetPart(string partName)
{
return customBodyParts.GetValueOrDefault(partName);
}
}
public partial class BodyPartsSubcontroller
{
public AuxiliaryDrone AuxiliaryDrone => GetAttachment("AuxiliaryDrone")?.GetComponent<AuxiliaryDrone>();
public GameObject GetAttachment(string attachmentName)
{
return attachments.GetValueOrDefault(attachmentName);
}
}
}