Pool 적용 버그 잡는 중
This commit is contained in:
@@ -110,8 +110,11 @@ namespace UVC.Factory.Component
|
||||
/// }
|
||||
/// </code>
|
||||
/// </example>
|
||||
public abstract class FactoryObject : InteractiveObject
|
||||
public abstract class FactoryObject : MonoBehaviour, IPointerClickHandler, IPointerEnterHandler, IPointerExitHandler
|
||||
{
|
||||
[Tooltip("3D 모델 객체")]
|
||||
public InteractiveObject? modelObject;
|
||||
|
||||
protected FactoryObjectInfo? info;
|
||||
|
||||
/// <summary>
|
||||
@@ -149,9 +152,30 @@ namespace UVC.Factory.Component
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private void OnDestroy()
|
||||
protected virtual void Awake()
|
||||
{
|
||||
// 초기화 작업을 수행합니다.
|
||||
if (modelObject == null)
|
||||
{
|
||||
Debug.LogError("FactoryObject requires an InteractiveObject component.");
|
||||
}
|
||||
else
|
||||
{
|
||||
modelObject.OnPointerClickHandler += OnPointerClick;
|
||||
modelObject.OnPointerEnterHandler += OnPointerEnter;
|
||||
modelObject.OnPointerExitHandler += OnPointerExit;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected virtual void OnDestroy()
|
||||
{
|
||||
if (modelObject != null)
|
||||
{
|
||||
modelObject.OnPointerClickHandler -= OnPointerClick;
|
||||
modelObject.OnPointerEnterHandler -= OnPointerEnter;
|
||||
modelObject.OnPointerExitHandler -= OnPointerExit;
|
||||
}
|
||||
FactoryObjectManager.Instance.UnregisterFactoryObject(Info!);
|
||||
}
|
||||
|
||||
@@ -165,7 +189,7 @@ namespace UVC.Factory.Component
|
||||
/// `DataOrderedMask`가 설정되어 있으면 해당 순서대로, 그렇지 않으면 모든 데이터를 표시합니다.
|
||||
/// </remarks>
|
||||
/// <param name="eventData">포인터 클릭과 관련된 이벤트 데이터입니다.</param>
|
||||
public override void OnPointerClick(PointerEventData eventData)
|
||||
public void OnPointerClick(PointerEventData eventData)
|
||||
{
|
||||
if (data != null && data.Count > 0)
|
||||
{
|
||||
@@ -190,18 +214,28 @@ namespace UVC.Factory.Component
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 포인터가 이 객체 위로 들어왔을 때 호출됩니다. 하이라이트 효과 등에 사용할 수 있습니다.
|
||||
/// </summary>
|
||||
/// <param name="eventData">포인터 이벤트와 관련된 데이터입니다.</param>
|
||||
public void OnPointerEnter(PointerEventData eventData) { }
|
||||
|
||||
/// <summary>
|
||||
/// 포인터가 이 객체에서 벗어났을 때 호출됩니다.
|
||||
/// </summary>
|
||||
/// <param name="eventData">포인터 이벤트와 관련된 데이터입니다.</param>
|
||||
public void OnPointerExit(PointerEventData eventData) { }
|
||||
|
||||
/// <summary>
|
||||
/// 외부로부터 받은 새로운 데이터로 객체의 상태를 업데이트합니다.
|
||||
/// 이 메서드는 내부적으로 `ProcessData`를 호출하여 실제 데이터 처리 로직을 수행합니다.
|
||||
/// MQTTPipeLineInfo.updatedDataOnly가 true인 경우, 데이터가 변경된 경우에만 호출됩니다.
|
||||
/// </summary>
|
||||
/// <param name="newData">업데이트할 새로운 데이터가 포함된 IDataObject 객체입니다.</param>
|
||||
public void UpdateData(IDataObject? newData)
|
||||
public void UpdateData(DataObject newData)
|
||||
{
|
||||
if(newData == null) return;
|
||||
DataObject? dataObject = newData as DataObject;
|
||||
if (dataObject == null || dataObject.Count == 0) return;
|
||||
ProcessData(dataObject);
|
||||
ProcessData(newData);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
|
||||
Reference in New Issue
Block a user