This commit is contained in:
geondo55
2025-05-26 17:41:54 +09:00
parent 1ed10a5de6
commit 7006c70270
10 changed files with 1383 additions and 50 deletions

View File

@@ -9,6 +9,7 @@ using System.Linq;
using System.Collections;
using Studio.AssetLibraryTree;
using Studio;
using System.Drawing.Printing;
namespace Studio.AssetTool
{
@@ -126,6 +127,7 @@ namespace Studio.AssetTool
selectedAssetData = null;
return;
}
selectedAssetData = item.linkedObject.GetComponent<CustomAssetData>();
if (selectedAssetData == null || selectedAssetData.isLoadComplete == false)
{
@@ -144,6 +146,44 @@ namespace Studio.AssetTool
selectedAssetData.AddTransformToRender(selectedItem.transform);
CoroutineRunner.instance.StartCoroutine(ChangeSelectedAssetTransform());
}
public GameObject OnCreateAsset(string name)
{
AssetLibraryItem item = assetScrollView.FindItem(name, AssetLibraryItemType.file);
if (item == null || item.linkedObject == null)
{
selectedAssetData = null;
return null;
}
selectedAssetData = item.linkedObject.GetComponent<CustomAssetData>();
if (selectedAssetData == null || selectedAssetData.isLoadComplete == false)
{
selectedAssetData = null;
return null;
}
selectedItem = UnityEngine.GameObject.Instantiate(renderObjectPrefab);
selectRenderObject = selectedItem.GetComponent<CustomAssetRenderObject>();
//selectRenderObject.OnOverlabBegin += interferedObjectManager.AddInterferedPair;
//selectRenderObject.OnOverlabEnd += interferedObjectManager.RemoveInterferedPair;
selectRenderObject.OnSelected += panel_ObjectDistance.SelectObjectFromCreate;
selectRenderObject.instantiateObject = selectedAssetData.InstantiateLoadedObject;
selectRenderObject.getBounds = selectedAssetData.GetCombinedBoundary;
selectRenderObject.CreateRenderObject();
selectedAssetData.AddTransformToRender(selectedItem.transform);
ConnectedAsset connectedAsset = new ConnectedAsset
{
assetData = selectedAssetData,
hierarchyItem = componentScrollView.AddItem(selectedAssetData.assetName, selectedItem, HierarchyItemType.obj),
renderObject = selectRenderObject
};
connectedAsset.renderObject.onTransformChanged = connectedAsset.assetData.OnTransformDataChanged;
var command = new CreateConnectedAssetCommand(connectedAsset);
CommandInvoker.instance.Invoke(command);
selectedAssetData = null;
return connectedAsset.hierarchyItem.linkedObject;
}
public void OnAssetDropped(AssetLibraryItem item)
{
if (selectedAssetData == null)
@@ -208,6 +248,7 @@ namespace Studio.AssetTool
{
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
canvas_Popup.panel_objectinfo.gameObject.SetActive(false);
canvas_Popup.panel_agv.gameObject.SetActive(false);
componentScrollView.DeselectAll();
}
@@ -240,6 +281,8 @@ namespace Studio.AssetTool
{
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
canvas_Popup.panel_objectinfo.SetObjectInfo(name, selectedObjects);
canvas_Popup.panel_objectinfo.SetActive(true);
canvas_Popup.panel_agv.SetTarget(selectedObjects[0]);
canvas_Popup.panel_objectdistance.SelectObjectFromClick(name, selectedObjects);
}
}

View File

@@ -24,7 +24,7 @@ namespace Studio.Dynamic.TwinObject
Quaternion startRot;
Quaternion endRot;
private Dictionary<string, string> CurrentEntity;
public Dictionary<string, string> CurrentEntity;
private bool isPlay = false;
@@ -66,7 +66,7 @@ namespace Studio.Dynamic.TwinObject
s += $"{t.Key}: {t.Value},";
}
s += "}";
Debug.Log(s);
//Debug.Log(s);
SetPos();
}

View File

@@ -4,6 +4,8 @@ using System.Linq;
using UnityEngine;
using Studio.Dynamic.TwinObject;
using Studio.Core;
using Studio.Manage;
using Studio.AssetTool;
namespace Studio.Dynamic.M
{
@@ -14,7 +16,14 @@ namespace Studio.Dynamic.M
public float AGVMoveSpeed;
public float AGVRotateSpeed;
public Queue<Dictionary<string, Dictionary<string, string>>> createAgvs = new();
/// <summary>
/// MQTT
/// </summary>
/// <param name="type"></param>
/// <param name="id"></param>
/// <param name="entity"></param>
/// <returns></returns>
public void Init()
{
prf_AGV = Resources.Load<AGV>("TestAGV");
@@ -45,7 +54,8 @@ namespace Studio.Dynamic.M
private AGV CreateAGV(string type, string id ,Dictionary<string,string> entity)
{
var agv = Instantiate<AGV>(prf_AGV,transform);
var agv = ManagerHub.instance.Get<CustomAssetConnector>().OnCreateAsset("AGV").GetComponent<AGV>();
//var agv = Instantiate<AGV>(prf_AGV,transform);
agv.transform.position = Vector3.zero;
agv.name = id;
agv.SetMoveSpeed(AGVMoveSpeed);

View File

@@ -52,6 +52,7 @@ namespace Studio
public Panel_LoggingModal panel_loggingmodal;
public Panel_ExitChecker panel_exitchecker;
public Panel_DataRepository panel_datarepository;
public Panel_AGV panel_agv;
public Panel_DataConnectModal panel_dataconnectmodal;
public Panel_AlarmConnectModal panel_alarmconnectmodal;

View File

@@ -0,0 +1,87 @@
using Studio.Dynamic.TwinObject;
using Studio.Dynamic.M;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using XRLib.UI;
using System.Linq;
namespace Studio.UI
{
public class Panel_AGV : PanelBase
{
public GameObject itemPrefab;
public RectTransform Content;
private Dictionary<string, TMP_Text> keyToValueTextMap = new();
private bool isInitialized = false;
private bool itemInit;
public Dictionary<string, string> CurrentEntity;
private string targetId = string.Empty;
public override void AfterAwake()
{
itemPrefab = Resources.Load<GameObject>("Prefabs/UI/PRF_EntityItem");
}
internal void OnUpdateData(object sender, StudioServiceIdEventArgs e)
{
if (!itemInit)
{
InstantiateUI(e.Entity);
itemInit = true;
}
else
{
UpdateUI(e.Entity);
}
}
internal void SetTarget(GameObject selectedObject)
{
if (selectedObject.TryGetComponent<AGV>(out AGV agv))
{
StudioService.instance.RemoveTypeIdListener("AGV", targetId);
targetId = agv.name;
StudioService.instance.AddTypeIdListener("AGV", targetId, OnUpdateData);
SetActive(true);
}
else
{
SetActive(false);
}
}
void InstantiateUI(Dictionary<string, string> entity)
{
foreach (var kvp in entity)
{
GameObject item = Instantiate(itemPrefab, Content);
var texts = item.GetComponentsInChildren<TMP_Text>();
if (texts.Length < 2) continue;
TMP_Text keyText = texts[0];
TMP_Text valueText = texts[1];
keyText.text = kvp.Key;
valueText.text = kvp.Value;
keyToValueTextMap[kvp.Key] = valueText;
}
}
public void UpdateUI(Dictionary<string, string> entity)
{
foreach (var kvp in entity)
{
if (keyToValueTextMap.TryGetValue(kvp.Key, out var valueText))
{
valueText.text = kvp.Value;
}
}
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 50cc14a8fa6b2cb44ad7d2426e7e46eb