119 lines
5.5 KiB
C#
119 lines
5.5 KiB
C#
namespace UVC.Factory.Component
|
|
{
|
|
/// <summary>
|
|
/// 팩토리 내의 각 객체(FactoryObject)에 대한 고정적인 식별 정보를 저장하는 데이터 클래스입니다.
|
|
/// 이 클래스는 객체의 이름, ID, 위치, 구역, 층과 같이 한 번 설정된 후에는 거의 변경되지 않는 정적 데이터를 담는 데 사용됩니다.
|
|
/// </summary>
|
|
/// <remarks>
|
|
/// 이 정보는 FactoryObject가 생성될 때 할당되며, FactoryObjectManager를 통해 시스템 전체에서 객체를 식별하고 관리하는 데 사용됩니다.
|
|
/// 예를 들어, 특정 ID를 가진 기계를 찾거나 특정 구역에 있는 모든 센서를 필터링하는 등의 작업에 활용될 수 있습니다.
|
|
/// </remarks>
|
|
/// <example>
|
|
/// 다음은 `FactoryObjectInfo`를 생성하고 `FactoryObject`에 할당하는 간단한 예제입니다.
|
|
/// <code>
|
|
/// using UnityEngine;
|
|
/// using UVC.Factory.Component;
|
|
///
|
|
/// public class FactorySetup : MonoBehaviour
|
|
/// {
|
|
/// void Start()
|
|
/// {
|
|
/// // 1. 씬에 새로운 게임 오브젝트를 생성하고, 사용자 정의 팩토리 객체 컴포넌트(예: MachineObject)를 추가합니다.
|
|
/// GameObject machineGo = new GameObject("CNC Machine");
|
|
/// MachineObject machine = machineGo.AddComponent<MachineObject>(); // MachineObject는 FactoryObject를 상속받는 클래스라고 가정합니다.
|
|
///
|
|
/// // 2. 이 기계에 대한 식별 정보를 담는 FactoryObjectInfo 인스턴스를 생성합니다.
|
|
/// var machineInfo = new FactoryObjectInfo(
|
|
/// name: "CNC-Machine-05",
|
|
/// Id: "MC-005",
|
|
/// position: "Row 3, Column 2",
|
|
/// area: "Machining Area 1",
|
|
/// floor: "1F"
|
|
/// );
|
|
///
|
|
/// // 3. 생성된 정보 객체를 MachineObject의 Info 속성에 할당합니다.
|
|
/// // 이 과정을 통해 3D 모델(GameObject)과 메타데이터(FactoryObjectInfo)가 연결됩니다.
|
|
/// machine.Info = machineInfo;
|
|
///
|
|
/// // 이제 이 객체는 FactoryObjectManager에 등록되고, ID나 이름으로 검색할 수 있게 됩니다.
|
|
/// Debug.Log($"새로운 기계 등록: {machine.Info.ToString()}");
|
|
/// }
|
|
/// }
|
|
///
|
|
/// // MachineObject는 다음과 같이 FactoryObject를 상속하여 구현할 수 있습니다.
|
|
/// public class MachineObject : FactoryObject { /* ... */ }
|
|
/// </code>
|
|
/// </example>
|
|
public class FactoryObjectInfo
|
|
{
|
|
/// <summary>
|
|
/// 객체의 이름입니다. UI에 표시되거나 사람이 식별할 수 있는 이름으로 사용됩니다. (예: "Main Conveyor Belt")
|
|
/// </summary>
|
|
public string Name { get; set; }
|
|
|
|
/// <summary>
|
|
/// 객체의 고유 식별자(ID)입니다. 시스템에서 객체를 유일하게 구분하는 데 사용됩니다. (예: "CVB-001")
|
|
/// </summary>
|
|
public string Id { get; set; }
|
|
|
|
/// <summary>
|
|
/// 팩토리 내에서 객체의 물리적인 위치나 좌표를 설명합니다. (예: "A-12")
|
|
/// </summary>
|
|
public string Position { get; set; }
|
|
|
|
/// <summary>
|
|
/// 객체가 속한 구역이나 공정을 나타냅니다. (예: "조립 라인 1")
|
|
/// </summary>
|
|
public string Area { get; set; }
|
|
|
|
/// <summary>
|
|
/// 객체가 위치한 건물의 층을 나타냅니다. (예: "1F", "B2")
|
|
/// </summary>
|
|
public string Floor { get; set; }
|
|
|
|
/// <summary>
|
|
/// 객체의 카테고리나 유형을 나타냅니다. (예: "AGV", "PORT", "컨베이어")
|
|
/// </summary>
|
|
public string Category { get; set; } = ""; // 기본값은 "기타"로 설정
|
|
|
|
/// <summary>
|
|
/// 모든 속성을 초기화하는 생성자입니다.
|
|
/// </summary>
|
|
/// <param name="name">객체 이름</param>
|
|
/// <param name="id">고유 ID</param>
|
|
/// <param name="position">위치 정보</param>
|
|
/// <param name="area">구역 정보</param>
|
|
/// <param name="floor">층 정보</param>
|
|
public FactoryObjectInfo(string name, string id, string position, string area, string floor, string category)
|
|
{
|
|
Name = name;
|
|
Id = id;
|
|
Position = position;
|
|
Area = area;
|
|
Floor = floor;
|
|
Category = category;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 다른 FactoryObjectInfo 객체와 모든 속성 값이 동일한지 비교합니다.
|
|
/// </summary>
|
|
/// <param name="other">비교할 다른 FactoryObjectInfo 객체입니다.</param>
|
|
/// <returns>모든 속성이 같으면 true, 그렇지 않으면 false를 반환합니다.</returns>
|
|
public bool Equals(FactoryObjectInfo other)
|
|
{
|
|
if (other == null) return false;
|
|
return Name == other.Name && Id == other.Id && Position == other.Position && Area == other.Area && Floor == other.Floor;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 객체의 정보를 요약된 문자열 형태로 반환합니다. 디버깅이나 로깅에 유용합니다.
|
|
/// </summary>
|
|
/// <returns>객체의 모든 속성 정보를 포함하는 문자열입니다.</returns>
|
|
public override string ToString()
|
|
{
|
|
return $"Name:{Name},Id:{Id},Position:{Position},Area:{Area},Floor:{Floor}";
|
|
}
|
|
|
|
}
|
|
}
|