Compare commits

..

1 Commits

Author SHA1 Message Date
23a2394e58 Connection 연결 기능,Component 연결 기능
Inspector 모달
2025-05-26 20:14:19 +09:00
32 changed files with 3530 additions and 1862 deletions

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: c9dceccac23106a4ba09d4cd1ff0646b
guid: a275a74b793a7cb47b6bdd493edfc93b
ModelImporter:
serializedVersion: 22200
internalIDToNameTable: []

View File

@@ -306,9 +306,9 @@ RectTransform:
- {fileID: 7481543923475719227}
m_Father: {fileID: 7343312561069943535}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 120, y: -75}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 240, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &2728385891393727827
@@ -431,9 +431,9 @@ RectTransform:
- {fileID: 2421497137240882956}
m_Father: {fileID: 6745064031299755140}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 220, y: -63}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 440, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &6315243362297814222
@@ -551,7 +551,7 @@ RectTransform:
m_Father: {fileID: 4404729160423077667}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 20, y: 20}
m_Pivot: {x: 0.5, y: 0.5}
@@ -628,9 +628,9 @@ RectTransform:
m_Father: {fileID: 7385234480906153823}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 1, y: 1}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: -17, y: 0}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!222 &6128124770283240513
CanvasRenderer:
@@ -831,14 +831,13 @@ GameObject:
- component: {fileID: 6954167609728662753}
- component: {fileID: 8549676201747870985}
- component: {fileID: 7236664214523229146}
- component: {fileID: 8105564570549308953}
m_Layer: 5
m_Name: Panel_AssetManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 0
m_IsActive: 1
--- !u!224 &7257151592976347537
RectTransform:
m_ObjectHideFlags: 0
@@ -910,23 +909,6 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 25457a0961cc0bb4a949d5fe58c2ada6, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &8105564570549308953
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2762757506943678736}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f9c6f8c6f0c462a4ab09d615c0d0db6c, type: 3}
m_Name:
m_EditorClassIdentifier:
state: 0
resizeDirection: 0
handleThickness: 5
minWidth: 100
minHeight: 100
--- !u!1 &2774336303168765450
GameObject:
m_ObjectHideFlags: 0
@@ -1411,7 +1393,7 @@ RectTransform:
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 1, y: 1}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 0, y: 83}
m_SizeDelta: {x: 0, y: 0}
m_Pivot: {x: 0, y: 1}
--- !u!114 &8717931296778287524
MonoBehaviour:
@@ -1622,9 +1604,9 @@ RectTransform:
- {fileID: 5658098668149870723}
m_Father: {fileID: 6745064031299755140}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 220, y: -23}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 440, y: 40}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &7490994531347389305
@@ -1872,9 +1854,9 @@ RectTransform:
- {fileID: 2241699934510569533}
m_Father: {fileID: 7343312561069943535}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 120, y: -25}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 240, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &4372204296340440569
@@ -2123,9 +2105,9 @@ RectTransform:
- {fileID: 1460487750988931088}
m_Father: {fileID: 7343312561069943535}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 120, y: -125}
m_AnchorMin: {x: 0, y: 0}
m_AnchorMax: {x: 0, y: 0}
m_AnchoredPosition: {x: 0, y: 0}
m_SizeDelta: {x: 240, y: 50}
m_Pivot: {x: 0.5, y: 0.5}
--- !u!222 &3552413529825779625

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2
guid: 1301507e30409fb4ea27ca435f42a209
guid: c701b220856e1d64db502102772b45e8
folderAsset: yes
DefaultImporter:
externalObjects: {}

View File

@@ -0,0 +1,46 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7546223715437955775
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1858239574698213647}
- component: {fileID: 1872264545586947101}
m_Layer: 0
m_Name: AGV
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &1858239574698213647
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7546223715437955775}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1872264545586947101
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7546223715437955775}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 84ad40885a5aaa04e85eb7de0489cc8d, type: 3}
m_Name:
m_EditorClassIdentifier:

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 9f3f188aaedffb849b17cd8f244d701c
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,52 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!1 &7235216986221957541
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 6930180773710152322}
- component: {fileID: 1101601223343831244}
m_Layer: 0
m_Name: StackerCrane
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &6930180773710152322
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7235216986221957541}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1101601223343831244
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7235216986221957541}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 0671ba3dd5120d84fa95f82f0b7004ca, type: 3}
m_Name:
m_EditorClassIdentifier:
BANK:
BAY:
LEVEL:
lift: {fileID: 0}
bodyStart: {x: 0, y: 0, z: 0}
bodyEnd: {x: 0, y: 0, z: 0}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 2e9da99ebd525864aaaaa4ccd7b3fe61
PrefabImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: c4a6655181f2dd848ba5f64243c9be45
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,14 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!114 &11400000
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 654aed6b109dc4b4da05e7feaa681bf0, type: 3}
m_Name: AddComponetData
m_EditorClassIdentifier:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 9d76d7df8b332154782233db18d8b18d
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -6990,67 +6990,67 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 2921248101980759983, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2921248101980759983, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 2921248101980759983, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 120
objectReference: {fileID: 0}
- target: {fileID: 2921248101980759983, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -25
objectReference: {fileID: 0}
- target: {fileID: 4989624515221410691, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMax.x
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4989624515221410691, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 4989624515221410691, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_SizeDelta.x
value: 0
value: -17
objectReference: {fileID: 0}
- target: {fileID: 6361296329743540470, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6361296329743540470, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 6361296329743540470, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 220
objectReference: {fileID: 0}
- target: {fileID: 6361296329743540470, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -23
objectReference: {fileID: 0}
- target: {fileID: 6745064031299755140, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_SizeDelta.y
value: 0
value: 83
objectReference: {fileID: 0}
- target: {fileID: 7211928151506747948, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7211928151506747948, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7211928151506747948, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 120
objectReference: {fileID: 0}
- target: {fileID: 7211928151506747948, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -75
objectReference: {fileID: 0}
- target: {fileID: 7257151592976347537, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_Pivot.x
@@ -7134,43 +7134,43 @@ PrefabInstance:
objectReference: {fileID: 0}
- target: {fileID: 7493294281931036311, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7493294281931036311, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7493294281931036311, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 220
objectReference: {fileID: 0}
- target: {fileID: 7493294281931036311, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -63
objectReference: {fileID: 0}
- target: {fileID: 7816452433921728637, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7816452433921728637, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMin.y
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 7816452433921728637, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchoredPosition.x
value: 0
value: 120
objectReference: {fileID: 0}
- target: {fileID: 7816452433921728637, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchoredPosition.y
value: 0
value: -125
objectReference: {fileID: 0}
- target: {fileID: 8730527854822624186, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMax.x
value: 0
value: 1
objectReference: {fileID: 0}
- target: {fileID: 8730527854822624186, guid: d524adc6297ea50418c16190b3f42f66, type: 3}
propertyPath: m_AnchorMax.y
value: 0
value: 1
objectReference: {fileID: 0}
m_RemovedComponents: []
m_RemovedGameObjects: []

View File

@@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using UnityEngine;
using Studio.UI;
using Studio.Manage;
@@ -37,8 +37,7 @@ namespace Studio.AssetTool
{
//interferedObjectManager = ManagerHub.instance.Get<InterferedObjectManager>();
renderObjectPrefab = Resources.Load<GameObject>("Prefabs/PRF_RenderObject");
sceneDataContainer= GameObject.FindAnyObjectByType<SceneDataContainer>();
sceneDataContainer = GameObject.FindAnyObjectByType<SceneDataContainer>();
assetScrollRect = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_assetlibrary.scrollRect;
assetScrollView = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_assetlibrary.scrollView;
componentScrollView = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_hierarchy.scrollView;
@@ -117,36 +116,8 @@ namespace Studio.AssetTool
}
yield return null;
}
}
private void OnLoadAssetSelected(AssetLibraryItem item, AssetData asset)
{
if (item == null || item.linkedObject == null)
{
selectedAssetData = null;
return;
}
selectedAssetData = item.linkedObject.GetComponent<CustomAssetData>();
if (selectedAssetData == null || selectedAssetData.isLoadComplete == false)
{
selectedAssetData = null;
return;
}
selectedItem = UnityEngine.GameObject.Instantiate(renderObjectPrefab);
selectRenderObject = selectedItem.GetComponent<CustomAssetRenderObject>();
selectRenderObject.OnSelected += panel_ObjectDistance.SelectObjectFromCreate;
selectRenderObject.instantiateObject = selectedAssetData.InstantiateLoadedObject;
selectRenderObject.getBounds = selectedAssetData.GetCombinedBoundary;
selectRenderObject.CreateRenderObject();
selectRenderObject.Select();
selectedAssetData.AddTransformToRender(selectedItem.transform);
CoroutineRunner.instance.StartCoroutine(ChangeSelectedAssetTransform());
selectRenderObject.transform.position = new Vector3(asset.position.x, asset.position.y, asset.position.z);
selectRenderObject.transform.eulerAngles = new Vector3(asset.rotation.x, asset.rotation.y, asset.rotation.z);
selectRenderObject.transform.localScale = new Vector3(asset.scale.x, asset.scale.y, asset.scale.z);
}
public void OnAssetSelected(AssetLibraryItem item)
{
if (item == null || item.linkedObject == null)
@@ -172,6 +143,7 @@ namespace Studio.AssetTool
selectedAssetData.AddTransformToRender(selectedItem.transform);
CoroutineRunner.instance.StartCoroutine(ChangeSelectedAssetTransform());
}
public void OnAssetDropped(AssetLibraryItem item)
{
if (selectedAssetData == null)
@@ -218,7 +190,10 @@ namespace Studio.AssetTool
public void OnLoadAsset(AssetData asset)
{
AssetLibraryItem item = assetScrollView.FindItem(asset.name, AssetLibraryItemType.file);
OnLoadAssetSelected(item, asset);
OnAssetSelected(item);
selectRenderObject.transform.position = new Vector3(asset.position.x, asset.position.y, asset.position.z);
selectRenderObject.transform.eulerAngles = new Vector3(asset.rotation.x, asset.rotation.y, asset.rotation.z);
selectRenderObject.transform.localScale = new Vector3(asset.scale.x, asset.scale.y, asset.scale.z);
OnAssetDropped(item);
}
@@ -232,7 +207,7 @@ namespace Studio.AssetTool
public void OnDeselectAll()
{
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
canvas_Popup.panel_objectinfo.gameObject.SetActive(false);
canvas_Popup.panel_dynamicobjectinfo.gameObject.SetActive(false);
componentScrollView.DeselectAll();
}
@@ -264,7 +239,8 @@ namespace Studio.AssetTool
internal void OnSelectObjects(string name, List<GameObject> selectedObjects)
{
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
canvas_Popup.panel_objectinfo.SetObjectInfo(name, selectedObjects);
canvas_Popup.panel_dynamicobjectinfo.SetObjectInfo(name, selectedObjects);
canvas_Popup.panel_dynamicobjectinfo.SetActive(true);
canvas_Popup.panel_objectdistance.SelectObjectFromClick(name, selectedObjects);
}
}

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Diagnostics.Contracts;
using System.Linq;
@@ -29,10 +29,15 @@ namespace Studio.AssetTool
LayerMask twinObjectMask;
public GameObject RenderObject { get { return renderObject; } }
public event Action<TwinObject, TwinObject> OnOverlabBegin;
public event Action<TwinObject, TwinObject> OnOverlabEnd;
public event Action<CustomAssetRenderObject> OnSelected;
public string componetKey;
public string addTopic;
public bool isAutoId;
public string ID;
private void Awake()
{
objectRenderer = GetComponentInChildren<MeshRenderer>();

View File

@@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using UnityEngine;
using System.IO;
using UnityEngine.Events;
@@ -40,6 +40,7 @@ namespace Studio.AssetTool
sharedMaterial = new SharedMaterial();
messagePacker = new MessagePackFileManager<SaveData>();
messagePacker.Initialize();
identifier = string.IsNullOrEmpty(identifier) ? "defaultAssetData" : identifier;
fbxAnchor = new GameObject("LocalAssetDataAnchor").transform;
}
@@ -55,11 +56,11 @@ namespace Studio.AssetTool
var files = Directory.GetFiles(path, "*.fbx", SearchOption.AllDirectories);
if (dataRepo.TryGetDataFromPath(path, out var p))
return;
foreach (var file in files)
{
if (dataRepo.TryGetDataFromPath(path, out var p))
continue;
filePaths.Add(file);
}
@@ -74,9 +75,6 @@ namespace Studio.AssetTool
var directoryPath = Path.GetDirectoryName(file);
var folderName = Path.GetFileName(directoryPath);
if (dataRepo.TryGetDataFromName(assetName, out var p))
continue;
GameObject newObject = new GameObject(assetName);
newObject.transform.parent = fbxAnchor;
CustomAssetData assetData = newObject.AddComponent<CustomAssetData>();
@@ -92,7 +90,6 @@ namespace Studio.AssetTool
OnLoadComplete(assetData);
}
onLoadComplete?.Invoke();
}
public void SaveToLocalData(List<CustomAssetData> assetDatas, string path = "")
@@ -235,6 +232,7 @@ namespace Studio.AssetTool
connector.assetScrollView.AddItem(folderName, null, AssetLibraryItemType.folder);
AssetLibraryItem item = connector.assetScrollView.AddItem(assetData.assetName, assetData.gameObject, AssetLibraryItemType.file, urlSectionItem);
onLoadComplete?.Invoke();
}
}
}

View File

@@ -1,4 +1,4 @@
using System;
using System;
using System.Collections.Generic;
using System.Linq;
using UnityEditor;
@@ -47,7 +47,7 @@ namespace Studio.AssetTool
private void OnMousePointerDown()
{
clickBeginPos = Input.mousePosition;
//ui를 선택했을 경우에는 오브젝트 선택을 멈춘다.
//ui를 선택했을 경우에는 오브젝트 선택을 멈춘다.
PointerEventData pointerData = new PointerEventData(EventSystem.current)
{
position = Input.mousePosition
@@ -62,14 +62,14 @@ namespace Studio.AssetTool
}
private void OnMousePointerUp()
{
//rtg 컨트롤러가 조작중일때 락을 건다.
//rtg 컨트롤러 조작 후 포커스가 바뀌는 것을 방지하기 위한 용도
//rtg 컨트롤러가 조작중일때 락을 건다.
//rtg 컨트롤러 조작 후 포커스가 바뀌는 것을 방지하기 위한 용도
if (lockHandler == true)
{
lockHandler = false;
return;
}
//ui를 선택했을 경우에는 오브젝트 선택을 멈춘다.
//ui를 선택했을 경우에는 오브젝트 선택을 멈춘다.
PointerEventData pointerData = new PointerEventData(EventSystem.current)
{
position = Input.mousePosition
@@ -81,7 +81,7 @@ namespace Studio.AssetTool
EventConnector.instance.GetCanvas<Canvas_DragArea>().panel_draghandler.ForceEndDrag();
return;
}
//포인터 업 위치가 포인터 다운 위치에서 크게 벗어났을 경우는 클릭을 무시한다.
//포인터 업 위치가 포인터 다운 위치에서 크게 벗어났을 경우는 클릭을 무시한다.
if ((clickBeginPos - Input.mousePosition).magnitude > clickLengthThreshold)
{
DeselectAll();
@@ -100,7 +100,7 @@ namespace Studio.AssetTool
}
if (raycastedTarget.Count > 0)
{
//오브젝트가 여러개 겹쳐 있을 경우 뒤의 오브젝트를 순차적으로 선택해주기 위한 용도
//오브젝트가 여러개 겹쳐 있을 경우 뒤의 오브젝트를 순차적으로 선택해주기 위한 용도
if (selectIndex < raycastedTarget.Count && prevSelectedObject == raycastedTarget[selectIndex])
{
selectIndex++;
@@ -110,7 +110,7 @@ namespace Studio.AssetTool
selectIndex = 0;
}
renderObject = raycastedTarget[selectIndex];
//컨트롤이 눌려 있으면 오브젝트 선택을 토글한다. (유니티 기능과 일치)
//컨트롤이 눌려 있으면 오브젝트 선택을 토글한다. (유니티 기능과 일치)
if (Input.GetKey(KeyCode.LeftControl))
{
if (renderObject.ToggleSelect())
@@ -122,12 +122,12 @@ namespace Studio.AssetTool
RemoveSelection(renderObject);
}
}
//시프트 키가 눌려 있는 경우 다중 선택 기능으로 작용한다.
//시프트 키가 눌려 있는 경우 다중 선택 기능으로 작용한다.
else if (Input.GetKey(KeyCode.LeftShift))
{
AddSelection(renderObject);
}
//그 외는 선택된 아이템을 제외하고 다 비선택해준다.
//그 외는 선택된 아이템을 제외하고 다 비선택해준다.
else
{
RemoveAllSelections();
@@ -153,7 +153,7 @@ namespace Studio.AssetTool
RemoveAllSelections();
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
canvas_Popup.panel_objectinfo.ResetObjectInfo();
canvas_Popup.panel_dynamicobjectinfo.ResetObjectInfo();
ManagerHub.instance.Get<CustomAssetConnector>().OnDeselectAll();
}
@@ -232,7 +232,7 @@ namespace Studio.AssetTool
public void OnTransformChangedFromRTG(List<GameObject> transformObjects)
{
OnTransformChanged(transformObjects);
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectinfo.OnTransformChanged(transformObjects);
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_dynamicobjectinfo.OnTransformChanged(transformObjects);
EventConnector.instance.GetCanvas<Canvas_DragArea>().panel_draghandler.ForceEndDrag();
}
public void OnTransformChanged(List<GameObject> transformObjects)
@@ -304,7 +304,7 @@ namespace Studio.AssetTool
renderObject.onTransformChanged?.Invoke();
}
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectinfo.OnTransformChanged(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_dynamicobjectinfo.OnTransformChanged(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
}
private void UndoAlign(List<CustomAssetRenderObject> objectsToAlign, List<Vector3> originalPos)
@@ -315,7 +315,7 @@ namespace Studio.AssetTool
renderObject.transform.position = originalPos[i];
renderObject.onTransformChanged?.Invoke();
}
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectinfo.OnTransformChanged(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_dynamicobjectinfo.OnTransformChanged(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
}
public void VertexSnap()
{
@@ -323,9 +323,9 @@ namespace Studio.AssetTool
{
return;
}
//가장 가까운 오브젝트에 붙여준다.
//Transform.position이 가깝다고 오브젝트 사이 기리가 꼭 가장 가까운 것은 아니기 때문에
//오버랩 박스에 충돌되는 모든 오브젝트의 버텍스로 KDTree를 구성해 볼까 하다가 관두었다.
//가장 가까운 오브젝트에 붙여준다.
//Transform.position이 가깝다고 오브젝트 사이 기리가 꼭 가장 가까운 것은 아니기 때문에
//오버랩 박스에 충돌되는 모든 오브젝트의 버텍스로 KDTree를 구성해 볼까 하다가 관두었다.
float minDist = float.MaxValue;
CustomAssetRenderObject fromObject = selectedRenderObjects[0];
CustomAssetRenderObject toObject = null;
@@ -347,9 +347,9 @@ namespace Studio.AssetTool
}
if (toObject != null)
{
//선택된 오브젝트의 ConvexHull 버텍스 점을 계산해준다.
//이는 iteration하는 버텍스 수를 줄이기 위해 해주며,
//만약 선택된 오브젝트도 TDTree로 Nearest 포인트 탐지할 경우 toObject의 센터에 가장 가까운 포인트만 탐지되기 때문에 가장 가까운 버텍스 점이 골라지지 않는 경우가 있다.
//선택된 오브젝트의 ConvexHull 버텍스 점을 계산해준다.
//이는 iteration하는 버텍스 수를 줄이기 위해 해주며,
//만약 선택된 오브젝트도 TDTree로 Nearest 포인트 탐지할 경우 toObject의 센터에 가장 가까운 포인트만 탐지되기 때문에 가장 가까운 버텍스 점이 골라지지 않는 경우가 있다.
List<Vector3> verts = new List<Vector3>();
List<int> tris = new List<int>();
List<Vector3> normals = new List<Vector3>();

View File

@@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using UnityEngine;
using Studio.AssetTool;
using Studio.HierarchyTree;
@@ -138,7 +138,7 @@ namespace Studio.Command
}
ManagerHub.instance.Get<RenderObjectHandler>().DeselectAll();
var canvas = EventConnector.instance.GetCanvas<Canvas_Popup>();
canvas.panel_objectinfo.ResetObjectInfo();
canvas.panel_dynamicobjectinfo.ResetObjectInfo();
//connector.onRemoveObjects?.Invoke();
connector.componentScrollView.DeselectAll();
}

View File

@@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Studio.AssetTool;
@@ -60,9 +60,9 @@ namespace Studio
//connector.onRemoveObjects?.Invoke();
ManagerHub.instance.Get<RenderObjectHandler>().DeselectAll();
var canvas = EventConnector.instance.GetCanvas<Canvas_Popup>();
canvas.panel_objectinfo.ResetObjectInfo();
canvas.panel_dynamicobjectinfo.ResetObjectInfo();
connector.componentScrollView.DeselectAll();
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectinfo.ResetObjectInfo();
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_dynamicobjectinfo.ResetObjectInfo();
}
}
}

View File

@@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using Studio.AssetTool;
using Studio.HierarchyTree;
using Studio.Manage;
@@ -60,7 +60,7 @@ namespace Studio.Command
renderObjectHandler.DeselectAll();
connector.componentScrollView.DeselectAll();
var canvas = EventConnector.instance.GetCanvas<Canvas_Popup>();
canvas.panel_objectinfo.ResetObjectInfo();
canvas.panel_dynamicobjectinfo.ResetObjectInfo();
}
public void Undo()

View File

@@ -25,15 +25,5 @@ namespace Studio.Conifg
return result;
}
}
public static Dictionary<string,CustomAssetData> AssetSettings
{
get
{
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
var result = canvas_Popup.panel_3dfactorysetting.GetAssetDatas();
return result;
}
}
}
}

View File

@@ -191,6 +191,8 @@ namespace Studio
}
public void RemoveTypeIdListener(string type,string id)
{
if (!listenerIdMap.ContainsKey(type))
return;
if (!listenerIdMap[type].ContainsKey(id))
return;

View File

@@ -1,4 +1,4 @@
using System.Collections;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using TriLibCore;
@@ -28,6 +28,7 @@ namespace Studio.Util
public Texture2D thumbnail;
public List<Transform> drawTransforms = new List<Transform>();
public UnityEvent<float> onLoadProgress = new UnityEvent<float>();
private AssetLoaderOptions assetLoaderOptions;
private MatrixConverter matrixConverter;

View File

@@ -31,7 +31,6 @@ namespace Studio
fbxFileManager.onLoadComplete += OnLoadCustomAsset;
onAssetManagerDatas += canvas_Popup.panel_assetmanager.SetAssetManager;
onAssetManagerDatas += (data) => projectManager.OpenProjectSettingsDataAfterDataLoad();
}
public void LoadLocalFBXDirectorys(List<string> folderPaths)
{
@@ -81,12 +80,13 @@ namespace Studio
{
var connector = ManagerHub.instance.Get<CustomAssetConnector>();
connector.OnLoadAsset(asset);
itemDict.Add(asset.id, connector.connectedAssets.Last().hierarchyItem);
}
private void RestoreHierarchy(AssetData asset)
{
var connector = ManagerHub.instance.Get<CustomAssetConnector>();
itemDict.TryAdd(asset.id, connector.connectedAssets.Last().hierarchyItem);
foreach (int id in asset.children)
{

View File

@@ -1,13 +1,12 @@
using Studio.VirtualFactory;
using Studio.VirtualFactory.Info;
using System;
using System.Linq;
using System.Collections.Generic;
using System.Linq;
using UnityEngine;
using Studio.VirtualFactory.Info;
namespace Studio.Dynamic.TwinObject
{
public class AGV : MonoBehaviour, IInfo
public class AGV : AbstractFunctionObject
{
float dp;
Vector3 nextPos;
@@ -28,7 +27,8 @@ namespace Studio.Dynamic.TwinObject
private bool isPlay = false;
public Dictionary<string, string> Info {
public override Dictionary<string, string> Info
{
get
{
//ToDo 보고싶은 정보 나열한.. 리스트 목록 가져온다..
@@ -36,7 +36,8 @@ namespace Studio.Dynamic.TwinObject
}
}
public Dictionary<string, string> Label {
public override Dictionary<string, string> Label
{
get
{
//ToDo 보고싶은 정보 나열한.. 리스트 목록 가져온다..
@@ -44,7 +45,20 @@ namespace Studio.Dynamic.TwinObject
}
}
public void Init(string type,Vector3 pos)
public override ObjectType ObjectType
{
get
{
return ObjectType.Dynamic;
}
}
/// <summary>
/// Run했을때 생성되면서 배치...
/// </summary>
/// <param name="type"></param>
/// <param name="pos"></param>
public void Init(string type, Vector3 pos)
{
transform.position = pos;
startX = transform.position.x;
@@ -57,11 +71,11 @@ namespace Studio.Dynamic.TwinObject
StudioService.instance.AddTypeIdListener(type, transform.name, OnUpdateData);
}
internal void OnUpdateData(object sender, StudioServiceIdEventArgs e)
public override void OnUpdateData(object sender, StudioServiceIdEventArgs e)
{
CurrentEntity = e.Entity;
var s = "{";
foreach(var t in e.Entity)
foreach (var t in e.Entity)
{
s += $"{t.Key}: {t.Value},";
}
@@ -91,7 +105,7 @@ namespace Studio.Dynamic.TwinObject
//노드방향으로 회전값알기
var degree =CurrentEntity.FirstOrDefault(x => x.Key.Equals("DEGREE", StringComparison.OrdinalIgnoreCase));
var degree = CurrentEntity.FirstOrDefault(x => x.Key.Equals("DEGREE", StringComparison.OrdinalIgnoreCase));
var deg = float.Parse(degree.Value);
deg = 360f - deg;
@@ -115,7 +129,7 @@ namespace Studio.Dynamic.TwinObject
}
void PerforcedMovement()
{
xp += Time.deltaTime * moveSpeed;
yp += Time.deltaTime * moveSpeed;

View File

@@ -4,28 +4,29 @@ using System.Linq;
using UnityEngine;
using Studio.Dynamic.TwinObject;
using Studio.Core;
using Studio.Conifg;
namespace Studio.Dynamic.M
{
public class AGVManager : UnitySingleton<AGVManager>
{
private GameObject prf_AGV;
private HashSet<AGV> agvs = new();
private AGV prf_AGV;
public HashSet<AGV> agvs = new();
public float AGVMoveSpeed;
public float AGVRotateSpeed;
public void Init(string type)
public Queue<Dictionary<string, Dictionary<string, string>>> createAgvs = new();
public void Awake()
{
var assets = ConfigConnected.AssetSettings;
prf_AGV = assets[type].loadedObject;
if (prf_AGV == null)
{
//todo::팝업메시지 나주엥 설정....
return;
}
StudioService.instance.AddTypeListener(type, OnDataUpdate);
StudioService.instance.AddTypeIdListener(type);
//이벤트 걸어둔다..
//+= OnPlayStart
}
public void OnPlayStart()
{
prf_AGV = Resources.Load<AGV>("TestAGV");
StudioService.instance.AddTypeListener("AGV", OnDataUpdate);
StudioService.instance.AddTypeIdListener("AGV");
}
/// <summary>
/// MQTT
@@ -51,8 +52,7 @@ namespace Studio.Dynamic.M
private AGV CreateAGV(string type, string id ,Dictionary<string,string> entity)
{
var agv = Instantiate<GameObject>(prf_AGV,transform).AddComponent<AGV>();
agv.gameObject.SetActive(true);
var agv = Instantiate<AGV>(prf_AGV,transform);
agv.transform.position = Vector3.zero;
agv.name = id;
agv.SetMoveSpeed(AGVMoveSpeed);

View File

@@ -1,4 +1,5 @@
using Studio.VirtualFactory.Info;
using Studio.AssetTool;
using Studio.VirtualFactory.Info;
using System;
using System.Collections;
using System.Collections.Generic;
@@ -8,10 +9,10 @@ using UnityEngine;
namespace Studio.Staic.STKC
{
public class StackerCrane : MonoBehaviour, IInfo
public class StackerCrane : AbstractFunctionObject
{
private Dictionary<string, string> CurrentEntity;
public Dictionary<string, string> Info
private Dictionary<string, string> CurrentEntity;
public override Dictionary<string, string> Info
{
get
{
@@ -20,7 +21,7 @@ namespace Studio.Staic.STKC
}
public Dictionary<string, string> Label
public override Dictionary<string, string> Label
{
get
{
@@ -28,6 +29,14 @@ namespace Studio.Staic.STKC
}
}
public override ObjectType ObjectType
{
get
{
return ObjectType.Dynamic;
}
}
public string BANK;
public string BAY;
public string LEVEL;
@@ -47,13 +56,20 @@ namespace Studio.Staic.STKC
private int[] values = new int[3];
private string curType;
public void Init(string type)
public override void AfterAwake()
{
curType = type;
bodySpeed = 0.3f;
liftSpeed = 0.3f;
StudioService.instance.AddTypeIdListener(type, transform.name, OnUpdateData);
onMotionStart = StartAnim;
//이벤트 걸어둔다..
//+= OnPlayStart
}
public void OnPlayStart()
{
var type = GetComponent<CustomAssetRenderObject>().addTopic;
curType = type;
StudioService.instance.AddTypeIdListener(type, transform.name, OnUpdateData);
}
public void AddInit(string type)
@@ -107,7 +123,7 @@ namespace Studio.Staic.STKC
lift.position = liftPos;
}
private void OnUpdateData(object sender, StudioServiceIdEventArgs e)
public override void OnUpdateData(object sender, StudioServiceIdEventArgs e)
{
CurrentEntity = e.Entity;
@@ -153,6 +169,8 @@ namespace Studio.Staic.STKC
private void OnDestroy()
{
if (curType == null)
return;
StudioService.instance.RemoveTypeIdListener(curType, transform.name);
onMotionStart -= StartAnim;
}

View File

@@ -1,14 +1,10 @@
using UnityEngine;
using Studio.AssetTool;
using Studio.Command;
using Studio.Manage;
using Studio.UI;
using Studio.Util;
using Studio.Test;
using UnityEngine;
using XRLib;
using XRLib.UI;
using Studio;
using Studio.AssetTool;
using Studio.Command;
using static UnityEngine.Rendering.DebugUI;
namespace Studio
{
@@ -37,7 +33,8 @@ namespace Studio
public Panel_InterferedObjectList panel_interferedobjectlist;
public Panel_AssetProperties panel_assetproperties;
public Panel_PredefinedType panel_predefinedtype;
public Panel_ObjectInfo panel_objectinfo;
public Panel_DynamicObjectInfo panel_dynamicobjectinfo;
// public Panel_ObjectInfo panel_objectinfo;
public Panel_ObjectAlign panel_objectalign;
public Panel_Tooltip panel_tooltip;
public Panel_PropertyViewer panel_propertyviewer;
@@ -55,7 +52,6 @@ namespace Studio
public Panel_DataConnectModal panel_dataconnectmodal;
public Panel_AlarmConnectModal panel_alarmconnectmodal;
public Panel_DynamicObjectInfo panel_dynamicobjectinfo;
internal Panel_MQTTTestResult panel_mqtttestresult;
private void Awake()
@@ -67,7 +63,7 @@ namespace Studio
public override void AfterAwake()
{
var renderObjectHandler = ManagerHub.instance.Get<RenderObjectHandler>();
panel_objectinfo.onTransformChanged += renderObjectHandler.OnTransformChanged;
panel_dynamicobjectinfo.onTransformChanged += renderObjectHandler.OnTransformChanged;
var raycaster = GameObject.FindAnyObjectByType<Raycaster>();
raycaster.onUIHoverEvent += panel_tooltip.ActivateTooltip;

View File

@@ -7,7 +7,6 @@ using System.Collections.Generic;
using System;
using Studio.Util;
using Studio.AssetTool;
using System.Linq;
namespace Studio
{
@@ -28,30 +27,6 @@ namespace Studio
public Action<UI_DynamicObjectItem> onUISetting;
public Action<UI_DynamicObjectItem> onRemoveItem;
public void SetDataList(List<string> dataList)
{
this.dataList = dataList;
var preDataDropdownOption = Dropdown_Data.options[Dropdown_Data.value].text;
SetDataDropdown();
foreach(var option in Dropdown_Data.options)
{
Dropdown_Data.value = option.text == preDataDropdownOption ? Dropdown_Data.options.IndexOf(option) : 0;
}
}
public void SetModelList(List<CustomAssetData> modelList)
{
this.modelList = modelList;
var preDataDropdownOption = Dropdown_Model.options[Dropdown_Model.value].text;
SetModelDropdown();
foreach (var option in Dropdown_Model.options)
{
Dropdown_Model.value = option.text == preDataDropdownOption ? Dropdown_Model.options.IndexOf(option) : 0;
}
}
public void SetData(List<string> dataList, List<CustomAssetData> modelList)
{
this.dataList = dataList;
@@ -131,11 +106,7 @@ namespace Studio
{
var dynamic3DModelConnection = new Dynamic3DModelConnection();
dynamic3DModelConnection.dataName = Dropdown_Data.options[Dropdown_Data.value].text;
if (selectedModel != null)
{
dynamic3DModelConnection.modelName = selectedModel.assetName;
}
dynamic3DModelConnection.modelName = selectedModel.assetName;
dynamic3DModelConnection.modelUISettingData = selectDynamicObjectData;
return dynamic3DModelConnection;

View File

@@ -1,4 +1,4 @@
using UnityEngine;
using UnityEngine;
using XRLib.UI;
using UnityEngine.UI;
using TMPro;
@@ -51,9 +51,7 @@ namespace Studio
if (mqttSetting == null)
return;
dataList.Clear();
foreach (var mqttConnection in mqttSetting.mqttConnections)
foreach(var mqttConnection in mqttSetting.mqttConnections)
{
foreach(var mqttTopic in mqttConnection.topics)
{
@@ -61,22 +59,11 @@ namespace Studio
dataList.Add(dataName);
}
}
foreach(var item in dynamicObjectItems)
{
item.SetDataList(dataList);
}
}
public void SetModelDropdownData(CustomAssetDataRepository customAssetDataRepository)
{
modelList.Clear();
var assetDatas = customAssetDataRepository.assetDatas;
modelList.AddRange(assetDatas);
foreach (var item in dynamicObjectItems)
{
item.SetModelList(modelList);
}
}
private void OnClickAddDynamicObjectButton()
{
@@ -127,18 +114,6 @@ namespace Studio
}
return dynamic3DModelSetting;
}
public Dictionary<string,CustomAssetData> GetAssetDatas()
{
var datas = new Dictionary<string, CustomAssetData>();
foreach (var modelData in dynamicObjectItems)
{
var splitdata = modelData.GetDynamic3DModelConnection().dataName.Split('/');
var topic = splitdata[splitdata.Length - 1];
datas.Add(topic, modelData.selectedModel);
}
return datas;
}
public void SetDynamic3DModelSetting(Dynamic3DModelSetting saveModelDatas)
{
foreach(var item in dynamicObjectItems)

View File

@@ -1,4 +1,4 @@
using System.Collections.Generic;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using XRLib.UI;
@@ -8,11 +8,13 @@ using Studio.Core;
using Studio.Command;
using UnityEngine.UI;
using System;
using Studio.AssetTool;
using UnityEngine.Rendering.Universal;
namespace Studio.UI
{
public class Panel_DynamicObjectInfo : PanelBase
{
{
public enum InputFieldType
{
none,
@@ -30,32 +32,28 @@ namespace Studio.UI
this.value = value;
}
}
private TextMeshProUGUI Text_Name;
public TextMeshProUGUI Text_Name;
private TMP_InputField InputField_PositionX;
private TMP_InputField InputField_PositionY;
private TMP_InputField InputField_PositionZ;
private TMP_InputField InputField_RotationX;
private TMP_InputField InputField_RotationY;
private TMP_InputField InputField_RotationZ;
private TMP_InputField InputField_ScaleX;
private TMP_InputField InputField_ScaleY;
private TMP_InputField InputField_ScaleZ;
private TMP_InputField InputField_Name;
private TMP_InputField InputField_ID;
public TMP_InputField InputField_PositionX;
public TMP_InputField InputField_PositionY;
public TMP_InputField InputField_PositionZ;
public TMP_InputField InputField_RotationX;
public TMP_InputField InputField_RotationY;
public TMP_InputField InputField_RotationZ;
public TMP_InputField InputField_ScaleX;
public TMP_InputField InputField_ScaleY;
public TMP_InputField InputField_ScaleZ;
public TextMeshProUGUI Text_DataName;
public Button Button_ConnectData;
public Button Button_RetouchData;
public Button Button_DeleteData;
private AddComponetModal addComponetModal;
private ConnectionModal connectionModal;
public TextMeshProUGUI Text_AlarmName;
public Button Button_ConnectAlarm;
public Button Button_RetouchAlarm;
public Button Button_DeleteAlarm;
public event System.Action<List<GameObject>> onTransformChanged;
private List<GameObject> selectedObjects = new List<GameObject>();
private SelectedInput lastSelectedInputField = new SelectedInput(InputFieldType.none ,0.0f);
private SelectedInput lastSelectedInputField = new SelectedInput(InputFieldType.none, 0.0f);
public Action onConnectedData;
public Action<string> onRetouchData;
@@ -65,11 +63,15 @@ namespace Studio.UI
public Action<string> onRetouchAlarm;
public Action<string> onDeleteAlarm;
public SaveConnectedData connectedData;
public SaveConnectAlarmData connectedAlarmData;
private SaveConnectedData connectedData;
private SaveConnectAlarmData connectedAlarmData;
private CustomAssetRenderObject singleSelectObject;
private AddComponetDataScriptable componetScriptable;
public override void AfterAwake()
{
{
InputField_PositionX.onValueChanged.AddListener(OnPosXChanged);
InputField_PositionY.onValueChanged.AddListener(OnPosYChanged);
InputField_PositionZ.onValueChanged.AddListener(OnPosZChanged);
@@ -88,21 +90,35 @@ namespace Studio.UI
InputField_ScaleX.onDeselect.AddListener(OnDeselectInputField);
InputField_ScaleY.onDeselect.AddListener(OnDeselectInputField);
InputField_ScaleZ.onDeselect.AddListener(OnDeselectInputField);
InputField_ID.onValueChanged.AddListener(OnChangedID);
addComponetModal = GetComponentInChildren<AddComponetModal>();
connectionModal = GetComponentInChildren<ConnectionModal>();
addComponetModal.Init();
connectionModal.Init();
connectionModal.gameObject.SetActive(false);
addComponetModal.onSelectComponet = ChangeCompoentItem;
connectionModal.onTopicItem = ChangeTopicItem;
connectionModal.onIsAuto = ChangeToggleItem;
componetScriptable = Resources.Load<AddComponetDataScriptable>("Scriptable/AddComponetData");
componetScriptable.SetItem();
ResetObjectInfo();
Text_DataName.SetText("없음");
Button_ConnectData.onClick.AddListener(OnClickConnectDataButton);
Button_RetouchData.onClick.AddListener(OnClickRetouchDataButton);
Button_DeleteData.onClick.AddListener(OnClickDeleteDataButton);
Text_AlarmName.SetText("없음");
Button_ConnectAlarm.onClick.AddListener(OnClickConnectAlarmButton);
Button_RetouchAlarm.onClick.AddListener(OnClickRetouchAlarmButton);
Button_DeleteAlarm.onClick.AddListener(OnClickDeleteAlarmButton);
//Text_DataName.SetText("없음");
//Button_ConnectData.onClick.AddListener(OnClickConnectDataButton);
//Button_RetouchData.onClick.AddListener(OnClickRetouchDataButton);
//Button_DeleteData.onClick.AddListener(OnClickDeleteDataButton);
//Text_AlarmName.SetText("없음");
//Button_ConnectAlarm.onClick.AddListener(OnClickConnectAlarmButton);
//Button_RetouchAlarm.onClick.AddListener(OnClickRetouchAlarmButton);
//Button_DeleteAlarm.onClick.AddListener(OnClickDeleteAlarmButton);
}
void OnPosXChanged(string input)
{
{
OnTransformChanged(InputFieldType.posX, input);
}
void OnPosYChanged(string input)
{
OnTransformChanged(InputFieldType.posY, input);
@@ -153,7 +169,7 @@ namespace Studio.UI
lastSelectedInputField.value = value;
foreach (GameObject gb in selectedObjects)
{
ChangeTransformValue(gb.transform, type, value);
ChangeTransformValue(gb.transform, type, value);
}
onTransformChanged?.Invoke(selectedObjects);
}
@@ -205,11 +221,11 @@ namespace Studio.UI
case InputFieldType.scaZ: origValues = transformsChanged.Select(t => t.transform.localScale.z).ToList(); break;
default: origValues = new List<float>(transformsChanged.Count); break;
}
ActionCommand command = new ActionCommand(
() =>
{
for (int i = 0; i< transformsChanged.Count; i++)
{
for (int i = 0; i < transformsChanged.Count; i++)
{
ChangeTransformValue(transformsChanged[i].transform, type, saveSelectedInput.value);
}
@@ -225,6 +241,7 @@ namespace Studio.UI
});
CommandInvoker.instance.Invoke(command);
}
void ChangeTransformValue(Transform t, InputFieldType type, float v)
{
switch (type)
@@ -240,6 +257,7 @@ namespace Studio.UI
case InputFieldType.scaZ: t.localScale = new Vector3(t.localScale.x, t.localScale.y, v); break;
}
}
void OnDeselectInputField(string lastInput)
{
Debug.Log("Deselect Input Field");
@@ -248,6 +266,12 @@ namespace Studio.UI
lastSelectedInputField = new SelectedInput(InputFieldType.none, 0.0f);
}
}
void OnChangedID(string Id)
{
var searchAsset = GetConnectAsset(singleSelectObject);
searchAsset.renderObject.ID = Id;
}
public void SetObjectInfo(string name, List<GameObject> selectedObjects)
{
ResetObjectInfo();
@@ -256,24 +280,63 @@ namespace Studio.UI
return;
}
if (selectedObjects.Count == 0)
{
{
return;
}
addComponetModal.Open();
connectionModal.gameObject.SetActive(false);
if (selectedObjects.Count == 1)
{
var renderObject = selectedObjects[0].GetComponent<CustomAssetRenderObject>();
if (renderObject != null)
{
singleSelectObject = renderObject;
var searchAsset = GetConnectAsset(renderObject);
var compKey = searchAsset.renderObject.componetKey;
addComponetModal.ChangeItem(searchAsset.renderObject.componetKey);
InputField_ID.SetTextWithoutNotify(searchAsset.renderObject.ID);
if (!string.IsNullOrEmpty(compKey))
{
connectionModal.gameObject.SetActive(true);
var topic = searchAsset.renderObject.addTopic;
var isAuto = searchAsset.renderObject.isAutoId;
if (!string.IsNullOrEmpty(topic))
{
connectionModal.SetAutoId(isAuto);
connectionModal.Open();
connectionModal.ChangeItem(topic,isAuto);
}
}
InputField_Name.text = searchAsset.assetData.assetName;
}
}
string append = "";
if (!name.Equals("-"))
{
append = string.Format(" ({0})", selectedObjects.Count);
}
Text_Name.text = name + append;
//InputField_Name.
//Text_Name.text = name + append;
OnTransformChanged(selectedObjects);
if (lastSelectedInputField.type != InputFieldType.none)
{
lastSelectedInputField = new SelectedInput(InputFieldType.none, 0.0f);
}
}
private ConnectedAsset GetConnectAsset(CustomAssetRenderObject renderObject)
{
var connector = ManagerHub.instance.Get<CustomAssetConnector>();
ConnectedAsset searchAsset = connector.connectedAssets.FirstOrDefault(x => x.renderObject == renderObject);
return searchAsset;
}
public void ResetObjectInfo()
{
Text_Name.text = "-";
InputField_PositionX.SetTextWithoutNotify("-");
InputField_PositionY.SetTextWithoutNotify("-");
InputField_PositionZ.SetTextWithoutNotify("-");
@@ -288,53 +351,83 @@ namespace Studio.UI
lastSelectedInputField = new SelectedInput(InputFieldType.none, 0.0f);
}
}
private void Update()
{
if (Text_DataName.text == "없음")
{
Button_ConnectData.gameObject.SetActive(true);
Button_RetouchData.gameObject.SetActive(false);
Button_DeleteData.gameObject.SetActive(false);
}
else
{
Button_ConnectData.gameObject.SetActive(false);
Button_RetouchData.gameObject.SetActive(true);
Button_DeleteData.gameObject.SetActive(true);
}
if (Text_AlarmName.text == "없음")
/// <summary>
/// 추가
/// </summary>
/// <param name="key"></param>
private void AddCompoent(string key)
{
var component = componetScriptable.compoenets.FirstOrDefault(x => x.key.Equals(key));
var type = component.comp.GetType();
if (!singleSelectObject.TryGetComponent(type, out var com))
{
Button_ConnectAlarm.gameObject.SetActive(true);
Button_RetouchAlarm.gameObject.SetActive(false);
Button_DeleteAlarm.gameObject.SetActive(false);
}
else
{
Button_ConnectAlarm.gameObject.SetActive(false);
Button_RetouchAlarm.gameObject.SetActive(true);
Button_DeleteAlarm.gameObject.SetActive(true);
singleSelectObject.gameObject.AddComponent(component.comp.GetType());
var obj = component.comp as AbstractFunctionObject;
var isAuto = obj.ObjectType.Equals(ObjectType.Dynamic) ? true : false;
connectionModal.SetAutoId(isAuto);
}
}
/// <summary>
/// 제거
/// </summary>
/// <param name="key"></param>
private void RemoveAddCompoent(string key)
{
if (string.IsNullOrEmpty(key))
return;
var component = componetScriptable.compoenets.FirstOrDefault(x => x.key.Equals(key));
var type = component.comp.GetType();
if (singleSelectObject.TryGetComponent(type, out var com))
Destroy(com);
}
private void ChangeCompoentItem(string key)
{
var searchObject = GetConnectAsset(singleSelectObject);
var prevKey = searchObject.renderObject.componetKey;
if (!string.IsNullOrEmpty(prevKey) && !prevKey.Equals(key))
{
RemoveAddCompoent(searchObject.renderObject.componetKey);
}
bool isConnect = string.IsNullOrEmpty(key) ? false : true;
//이전의 키값을 가져와야 함.
//RemoveAddCompoent();
connectionModal.gameObject.SetActive(isConnect);
if (isConnect == false)
{
searchObject.renderObject.addTopic = null;
searchObject.renderObject.isAutoId = false;
searchObject.renderObject.componetKey = key;
return;
}
AddCompoent(key);
connectionModal.Open();
searchObject.renderObject.componetKey = key;
}
private void ChangeTopicItem(string key)
{
var searchObject = GetConnectAsset(singleSelectObject);
searchObject.renderObject.addTopic = key;
}
private void ChangeToggleItem(bool isAuto)
{
var searchObject = GetConnectAsset(singleSelectObject);
searchObject.renderObject.isAutoId = isAuto;
}
private void OnClickConnectDataButton()
{
onConnectedData?.Invoke();
}
private void OnClickRetouchDataButton()
{
onRetouchData?.Invoke(Text_DataName.text);
}
private void OnClickDeleteDataButton()
{
onDeleteData?.Invoke(Text_DataName.text);
Text_DataName.SetText("없음");
}
public void OnConnectData(string saveDataName, SaveConnectedData saveData)
{
Text_DataName.SetText(saveDataName);
connectedData = saveData;
}
private void OnClickConnectAlarmButton()
{
@@ -342,18 +435,72 @@ namespace Studio.UI
}
private void OnClickRetouchAlarmButton()
{
onRetouchAlarm?.Invoke(Text_AlarmName.text);
}
private void OnClickDeleteAlarmButton()
{
onDeleteAlarm?.Invoke(Text_AlarmName.text);
Text_AlarmName.SetText("없음");
//onRetouchAlarm?.Invoke(Text_AlarmName.text);
}
public void OnConnectAlarm(string saveAlarmName, SaveConnectAlarmData saveData)
{
Text_AlarmName.SetText(saveAlarmName);
connectedAlarmData = saveData;
}
}
}
//private TextMeshProUGUI Text_DataName;
//private Button Button_ConnectData;
//private Button Button_RetouchData;
//private Button Button_DeleteData;
//private TextMeshProUGUI Text_AlarmName;
//private Button Button_ConnectAlarm;
//private Button Button_RetouchAlarm;
//private Button Button_DeleteAlarm;
//private void Update()
//{
// if (Text_DataName.text == "없음")
// {
// Button_ConnectData.gameObject.SetActive(true);
// Button_RetouchData.gameObject.SetActive(false);
// Button_DeleteData.gameObject.SetActive(false);
// }
// else
// {
// Button_ConnectData.gameObject.SetActive(false);
// Button_RetouchData.gameObject.SetActive(true);
// Button_DeleteData.gameObject.SetActive(true);
// }
// if (Text_AlarmName.text == "없음")
// {
// Button_ConnectAlarm.gameObject.SetActive(true);
// Button_RetouchAlarm.gameObject.SetActive(false);
// Button_DeleteAlarm.gameObject.SetActive(false);
// }
// else
// {
// Button_ConnectAlarm.gameObject.SetActive(false);
// Button_RetouchAlarm.gameObject.SetActive(true);
// Button_DeleteAlarm.gameObject.SetActive(true);
// }
//}
//private void OnClickRetouchDataButton()
//{
// onRetouchData?.Invoke(Text_DataName.text);
//}
//private void OnClickDeleteDataButton()
//{
// onDeleteData?.Invoke(Text_DataName.text);
// Text_DataName.SetText("없음");
//}
//public void OnConnectData(string saveDataName, SaveConnectedData saveData)
//{
// Text_DataName.SetText(saveDataName);
// connectedData = saveData;
//}
//private void OnClickDeleteAlarmButton()
//{
// onDeleteAlarm?.Invoke(Text_AlarmName.text);
// Text_AlarmName.SetText("없음");
//}
//public void OnConnectAlarm(string saveAlarmName, SaveConnectAlarmData saveData)
//{
// Text_AlarmName.SetText(saveAlarmName);
// connectedAlarmData = saveData;
//}

View File

@@ -2,7 +2,9 @@
using Studio.Auth;
using Studio.Conifg;
using Studio.Dynamic.M;
using Studio.Dynamic.TwinObject;
using Studio.Staic.STKC;
using System.Collections.Generic;
using System.Threading.Tasks;
using UnityEngine;
@@ -13,8 +15,20 @@ namespace Studio
// Start is called once before the first execution of Update after the MonoBehaviour is created
private int aa;
public StackerCrane testcrane;
void Awake()
{
//Dictionary<string, Component> connections = new Dictionary<string, Component>();
//connections.Add("key", new AGV());
//var itme = connections["key"];
//var t = itme.GetType();
//gameObject.AddComponent(t);
var item = Resources.Load<AddComponetDataScriptable>("Scriptable/AddComponetData");
item.SetItem();
foreach (var comp in item.compoenets)
{
gameObject.AddComponent(comp.comp.GetType());
}
//ConfigConnected.MQTTDomain = "220.90.135.190";
//ConfigConnected.APIDomain = "220.90.135.190";
//ConfigConnected.APIPort = 23000;
@@ -29,8 +43,9 @@ namespace Studio
{
StudioService.instance.ConnectMQTT(mqtt.domain,mqtt.port,mqtt.topics);
}
//testcrane.Init("STOCKER_CRANE");
//AGVManager.instance.Init("AGV");
// testcrane.OnPlayStart("STOCKER_CRANE");
//AGVManager.instance.OnPlayStart();
}
private async void Test()
{