using Factory; using System; using UnityEngine; using UVC.Core; using UVC.Data; using UVC.Data.Core; using UVC.Data.Mqtt; namespace UVC.Factory.Component { public class TestObject: MonoBehaviour { void Start() { var agvDataMask = new DataMask(); agvDataMask.ObjectName = "AGV_RECIPE"; // AGV 객체의 이름을 설정합니다. agvDataMask.ObjectIdKey = "VHL_NAME"; // AGV의 고유 식별자로 사용할 키를 설정합니다. //agvDataMask["VHL_NAME"] = ""; //agvDataMask["AGV_IDX"] = ""; //agvDataMask["B_INSTALL"] = ""; //agvDataMask["NODE_ID"] = ""; //agvDataMask["REAL_ID"] = ""; //agvDataMask["VHL_STATE"] = ""; //agvDataMask["BAY_LIST"] = ""; //agvDataMask["X"] = 0; //agvDataMask["Y"] = 0; //agvDataMask["DEGREE"] = 0.0; //agvDataMask["MODE"] = ""; //agvDataMask["BATT"] = ""; //agvDataMask["SUB_GOAL"] = ""; //agvDataMask["FINAL_GOAL"] = ""; //agvDataMask["JOB_ID"] = ""; //agvDataMask["CARRIER_ID"] = ""; //agvDataMask["TIMESTAMP"] = DateTime.Now; DataMapper mapper = new DataMapper(agvDataMask); var mqttConfig = new MqttSubscriptionConfig("AGV_RECIPE"); mqttConfig.SetDataMapper(mapper); // 생성한 파이프라인 정보를 전역 MQTT 파이프라인에 추가합니다. DataRepository.Instance.MqttReceiver.Add(mqttConfig); FactorySceneMain.Instance.Initialized += OnSceneInitialized; } /// /// 씬이 완전히 초기화된 후 호출됩니다. /// AGV 데이터를 수신하기 위한 MQTT 파이프라인을 설정합니다. /// private void OnSceneInitialized() { //playback에서도 데이터를 업데이트 하기에 DataRepository에 핸들러를 추가합니다. DataRepository.Instance.AddDataUpdateHandler("AGV_RECIPE", OnUpdateData); } public void OnUpdateData(IDataObject data) { if (data == null) return; DataArray? arr = data as DataArray; if (arr == null || arr.Count == 0) return; // 데이터 배열에서 추가, 제거, 수정된 항목 리스트를 가져옵니다. var AddedItems = arr.AddedItems; var RemovedItems = arr.RemovedItems; var ModifiedList = arr.ModifiedList; Debug.Log($"TestObject received data: count:{arr.Count}, Added={AddedItems.Count}, Removed={RemovedItems.Count}, Modified={ModifiedList.Count}"); } } }