Compare commits
56 Commits
pgd/202504
...
pgd/202504
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cef08df8e0 | ||
|
|
7cb9a08144 | ||
|
|
99c6a0f6f1 | ||
| c27db88402 | |||
|
|
5cfad8eab4 | ||
| a24205d929 | |||
|
|
7c958faa42 | ||
|
|
e4344e538b | ||
|
|
1f525994d0 | ||
|
|
d4ead516d2 | ||
| 6bf31ac71c | |||
|
|
1cd614a45d | ||
|
|
2c3f69b0b8 | ||
| beaf61b399 | |||
|
|
1ce63b9870 | ||
|
|
7c24cb0cc3 | ||
|
|
410a3a5bb4 | ||
| afe8652786 | |||
|
|
516412f585 | ||
| 981a1685f5 | |||
| 92c7655ecb | |||
| 62f019c256 | |||
|
|
b962d25930 | ||
|
|
b87ea36afb | ||
|
|
f28d0a09a2 | ||
|
|
16fe55edc6 | ||
| 67fd6739ec | |||
|
|
807ec619e4 | ||
|
|
a63c42e968 | ||
|
|
92e3b0ce9a | ||
|
|
bc48d7e7e1 | ||
|
|
57fa1f08b6 | ||
|
|
d5ea8b03c5 | ||
|
|
514d9f2937 | ||
| df6077e260 | |||
| b36ea4f93c | |||
| e448686a61 | |||
| abbe0cc807 | |||
|
|
ea774416f8 | ||
|
|
6e1fb78966 | ||
|
|
9ac2fa3807 | ||
| 02f318c548 | |||
|
|
7005d76198 | ||
|
|
7f98e1a06c | ||
|
|
98d2b9cc95 | ||
|
|
f8878387f8 | ||
| 7769886bad | |||
| e7630541dc | |||
| 222bfc347b | |||
| 21277cbc22 | |||
| a1d9ff9da4 | |||
| 0f57e1cb24 | |||
| 70c2b7ae57 | |||
| 64ac9c0755 | |||
| 86157ee5d8 | |||
| 53abd9a361 |
71
.cursorignore
Normal file
71
.cursorignore
Normal file
@@ -0,0 +1,71 @@
|
||||
# Unity 생성 디렉토리
|
||||
/[Ll]ibrary/
|
||||
/[Tt]emp/
|
||||
/[Oo]bj/
|
||||
/[Bb]uild/
|
||||
/[Bb]uilds/
|
||||
/[Ll]ogs/
|
||||
/[Uu]ser[Ss]ettings/
|
||||
|
||||
# Unity 자동 생성 파일
|
||||
*.pidb.meta
|
||||
*.pdb.meta
|
||||
*.mdb.meta
|
||||
|
||||
# Unity3D 충돌 파일
|
||||
sysinfo.txt
|
||||
|
||||
# 빌드 결과물
|
||||
*.apk
|
||||
*.aab
|
||||
*.unitypackage
|
||||
*.app
|
||||
|
||||
# VS/VS Code 설정
|
||||
.vs/
|
||||
.vscode/
|
||||
*.csproj
|
||||
*.sln
|
||||
*.suo
|
||||
*.tmp
|
||||
*.user
|
||||
*.userprefs
|
||||
*.lock
|
||||
*.ide
|
||||
*.ide-shm
|
||||
*.ide-wal
|
||||
|
||||
# OS 생성 파일
|
||||
.DS_Store
|
||||
.DS_Store?
|
||||
._*
|
||||
.Spotlight-V100
|
||||
.Trashes
|
||||
ehthumbs.db
|
||||
Thumbs.db
|
||||
|
||||
# 로그 파일
|
||||
*.log
|
||||
|
||||
# 임시 파일
|
||||
*.tmp
|
||||
*.temp
|
||||
*~
|
||||
|
||||
# Unity 에셋 파일
|
||||
*.fbx
|
||||
*.obj
|
||||
*.max
|
||||
*.blend
|
||||
*.dae
|
||||
*.mb
|
||||
*.ma
|
||||
|
||||
# 프로젝트 특정 설정
|
||||
/Assets/SpecialAssets/
|
||||
/Assets/Plugins/ThirdParty/
|
||||
/Assets/StreamingAssets/Config/
|
||||
|
||||
# 임시 작업 디렉토리
|
||||
_temp/
|
||||
_backup/
|
||||
@@ -1,5 +1,6 @@
|
||||
using NUnit.Framework;
|
||||
using System.Collections.Generic;
|
||||
using XED.Manage;
|
||||
|
||||
namespace XED.VirtualFactory
|
||||
{
|
||||
|
||||
214
Assets/Animations/ObjectDistanceLine.cs
Normal file
214
Assets/Animations/ObjectDistanceLine.cs
Normal file
@@ -0,0 +1,214 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
|
||||
namespace XED
|
||||
{
|
||||
//TODO::areabox가 아니라 TwinObject를 대상으로 동작하도록 수정
|
||||
public class ObjectDistanceLine : MonoBehaviour
|
||||
{
|
||||
private Vector3 centerPoint = new();
|
||||
private Vector3[] edges = new Vector3[4];
|
||||
|
||||
private LineRenderer[] lineRenderers = new LineRenderer[4];
|
||||
private int[] distances = new int[4];
|
||||
private Vector3[] hits = new Vector3[4];
|
||||
[SerializeField]
|
||||
private float thickness;
|
||||
|
||||
private int rot;
|
||||
private Dictionary<Vector3, Vector3> dirTable = new();
|
||||
|
||||
TwinObject target;
|
||||
HashSet<TwinObject> targets = new();
|
||||
public event Action onTargetEvent;
|
||||
public event Action onTargetMissing;
|
||||
public event Action<Vector3, int, int> onLineUpdate;
|
||||
public override void AfterAwake()
|
||||
{
|
||||
//var labelCanvas;
|
||||
var lineMat = Resources.Load<Material>("Materials/Mat_LineRender");
|
||||
for (int i = 0; i < lineRenderers.Length; i++)
|
||||
{
|
||||
lineRenderers[i] = new GameObject("DistanceLine").AddComponent<LineRenderer>();
|
||||
lineRenderers[i].transform.SetParent(transform, true);
|
||||
lineRenderers[i].material = lineMat;
|
||||
lineRenderers[i].positionCount = 2;
|
||||
lineRenderers[i].startWidth = thickness;
|
||||
lineRenderers[i].endWidth = thickness;
|
||||
}
|
||||
//onTargetEvent += ()=>labelCanvas.panel_objectdistancelabellist.SetActive(true);
|
||||
//onTargetMissing += ()=>labelCanvas.panel_objectdistancelabellist.SetActive(false);
|
||||
//onLineUpdate += labelCanvas.panel_objectdistancelabellist.DistanceLabelsSetting;
|
||||
}
|
||||
|
||||
public void SetTarget(TwinObject target)
|
||||
{
|
||||
if (target is Wall || target is WallGroup)
|
||||
return;
|
||||
this.target = target;
|
||||
targets.Add(target);
|
||||
gameObject.SetActive(true);
|
||||
onTargetEvent?.Invoke();
|
||||
}
|
||||
|
||||
private void EdgePoints()
|
||||
{
|
||||
var size = target.physics.areabox.bounds.size;
|
||||
edges[0] = centerPoint + EdgePointCalculate(-size.x, -size.z, centerPoint);
|
||||
edges[1] = centerPoint + EdgePointCalculate(size.x, -size.z, centerPoint);
|
||||
edges[2] = centerPoint + EdgePointCalculate(size.x, size.z, centerPoint);
|
||||
edges[3] = centerPoint + EdgePointCalculate(-size.x, size.z, centerPoint);
|
||||
}
|
||||
|
||||
private void CenterPoints()
|
||||
{
|
||||
var size = target.physics.areabox.bounds.size;
|
||||
edges[0] = centerPoint + EdgePointCalculate(-size.x, 0f, centerPoint);
|
||||
edges[1] = centerPoint + EdgePointCalculate(size.x, 0f, centerPoint);
|
||||
edges[2] = centerPoint + EdgePointCalculate(0f, -size.z, centerPoint);
|
||||
edges[3] = centerPoint + EdgePointCalculate(0f, size.z, centerPoint);
|
||||
}
|
||||
private Vector3 EdgePointCalculate(float xValue, float zValue, Vector3 center)
|
||||
{
|
||||
//대각선의 길이,
|
||||
//중점길이
|
||||
var point = center + (new Vector3(xValue, 0, zValue) * 0.5f);
|
||||
var length = Vector3.Distance(point, center);
|
||||
var dir = (point - center).normalized * length;
|
||||
//var pos = RotateVector3(dir, rot);
|
||||
var pos = Quaternion.AngleAxis(rot, Vector3.up) * dir;
|
||||
return pos;
|
||||
}
|
||||
|
||||
public void Off()
|
||||
{
|
||||
targets.Clear();
|
||||
onTargetMissing?.Invoke();
|
||||
}
|
||||
|
||||
void LineRenderSetActive(bool isActive)
|
||||
{
|
||||
foreach(var line in lineRenderers)
|
||||
{
|
||||
line.enabled = isActive;
|
||||
}
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
if (target == null || targets.Count >1)
|
||||
{
|
||||
Off();
|
||||
LineRenderSetActive(false);
|
||||
return;
|
||||
}
|
||||
|
||||
//if (areabox == null)
|
||||
// return;
|
||||
//Distance가 4개 모두 0이면 return?
|
||||
LineRenderSetActive(true);
|
||||
rot = Mathf.RoundToInt(target.physics.areabox.transform.localEulerAngles.y);
|
||||
centerPoint = new Vector3(target.physics.areabox.bounds.center.x, 0, target.physics.areabox.bounds.center.z);
|
||||
|
||||
var angle = rot % 90f;
|
||||
if (Mathf.Approximately(angle, 0f))
|
||||
CenterPoints();
|
||||
else
|
||||
EdgePoints();
|
||||
|
||||
var xOrder = edges.OrderBy(l => l.x);
|
||||
var zOrder = edges.OrderBy(l => l.z);
|
||||
dirTable.Clear();
|
||||
dirTable.TryAdd(xOrder.ElementAt(0), Vector3.left);
|
||||
dirTable.TryAdd(xOrder.ElementAt(3), Vector3.right);
|
||||
dirTable.TryAdd(zOrder.ElementAt(0), Vector3.back);
|
||||
dirTable.TryAdd(zOrder.ElementAt(3), Vector3.forward);
|
||||
|
||||
for (int i = 0; i < edges.Length; i++)
|
||||
{
|
||||
//var dir = Dir(dirTable[edges[i]]);
|
||||
var dir = dirTable[edges[i]];
|
||||
if (Physics.Raycast(edges[i], dir, out RaycastHit hit, Mathf.Infinity))
|
||||
{
|
||||
hits[i] = hit.point;
|
||||
}
|
||||
else
|
||||
{
|
||||
hits[i] = edges[i];
|
||||
}
|
||||
distances[i] = Mathf.RoundToInt(Vector3.Distance(hits[i], edges[i]) * 1000f);
|
||||
|
||||
lineRenderers[i].SetPosition(0, edges[i]);
|
||||
lineRenderers[i].SetPosition(1, hits[i]);
|
||||
//3방향중 점중 가장 짧은거
|
||||
|
||||
var pos = DistanceTextPos(edges[i], hits[i]);
|
||||
if (Mathf.Abs(pos.y) == Mathf.Infinity || float.IsNaN(pos.y))
|
||||
continue;
|
||||
onLineUpdate?.Invoke(pos, i, distances[i]);
|
||||
}
|
||||
}
|
||||
|
||||
private Vector3 DistanceTextPos(Vector3 edge, Vector3 hit)
|
||||
{
|
||||
var x = Screen.width;
|
||||
var y = Screen.height;
|
||||
|
||||
var hitpoint = Camera.main.WorldToScreenPoint(hit);
|
||||
var edgePoint = Camera.main.WorldToScreenPoint(edge);
|
||||
|
||||
//카메라 끝점 edge와 hit 사이;
|
||||
|
||||
//기울기 가져온다
|
||||
var m = (hitpoint.y - edgePoint.y) / (hitpoint.x - edgePoint.x);
|
||||
if (hitpoint.y > y)
|
||||
{
|
||||
var yPos = y;
|
||||
var xPos = ((yPos - edgePoint.y) / m) + edgePoint.x;
|
||||
hitpoint = new Vector3(xPos, yPos);
|
||||
}
|
||||
else if (hitpoint.y < 0)
|
||||
{
|
||||
var yPos = 0;
|
||||
var xPos = ((yPos - edgePoint.y) / m) + edgePoint.x;
|
||||
hitpoint = new Vector3(xPos, yPos);
|
||||
}
|
||||
|
||||
if (hitpoint.x > x)
|
||||
{
|
||||
var xPos = x;
|
||||
var yPos = (m * (xPos - edgePoint.x)) + edgePoint.y;
|
||||
hitpoint = new Vector3(xPos, yPos);
|
||||
}
|
||||
else if (hitpoint.x < 0)
|
||||
{
|
||||
var xPos = 0;
|
||||
var yPos = (m * (xPos - edgePoint.x)) + edgePoint.y;
|
||||
hitpoint = new Vector3(xPos, yPos);
|
||||
}
|
||||
|
||||
var center = (hitpoint + edgePoint) * 0.5f;
|
||||
return center;
|
||||
}
|
||||
|
||||
void Gizmo()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
// for (int i = 0; i < edges.Length; ++i)
|
||||
// {
|
||||
// Gizmos.DrawSphere(edges[i].pos, 0.1f);
|
||||
// }
|
||||
|
||||
// for (int i = 0; i < hits.Length; ++i)
|
||||
// {
|
||||
// var dir = Dir(dirTable[edges[i]]);
|
||||
// Handles.color = Color.yellow;
|
||||
// Handles.DrawLine(edges[i].pos, hits[i], 1);
|
||||
// Gizmos.DrawRay(edges[i].pos, dir * 10f);
|
||||
// }
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Animations/ObjectDistanceLine.cs.meta
Normal file
2
Assets/Animations/ObjectDistanceLine.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: bfac6b2ea97a0274787f0bf0d086a76d
|
||||
@@ -1,172 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &6403074468239445253
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 13273118576283872}
|
||||
- component: {fileID: 538649878903734265}
|
||||
m_Layer: 0
|
||||
m_Name: CustomAssetConnector
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &13273118576283872
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6403074468239445253}
|
||||
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:
|
||||
- {fileID: 4978247003912376479}
|
||||
- {fileID: 1000793883570924469}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &538649878903734265
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6403074468239445253}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 33f84af3802526548befd3c6e68f67d8, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1001 &3956852705411700500
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 13273118576283872}
|
||||
m_Modifications:
|
||||
- target: {fileID: 2048176525751629727, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: RenderObjectHandler
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4254239384611290273, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4254239384611290273, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4254239384611290273, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4254239384611290273, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4254239384611290273, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4254239384611290273, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4254239384611290273, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4254239384611290273, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4254239384611290273, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4254239384611290273, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
--- !u!4 &1000793883570924469 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 4254239384611290273, guid: 2d670e3279ac3324bba323ab3ed2bef9, type: 3}
|
||||
m_PrefabInstance: {fileID: 3956852705411700500}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1001 &6247234762045722773
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 13273118576283872}
|
||||
m_Modifications:
|
||||
- target: {fileID: 1415515309089783818, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1415515309089783818, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1415515309089783818, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1415515309089783818, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1415515309089783818, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1415515309089783818, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1415515309089783818, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1415515309089783818, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1415515309089783818, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1415515309089783818, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7695058519597474191, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: SaveLoadFBXData
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
--- !u!4 &4978247003912376479 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 1415515309089783818, guid: 20880f5e11bf5724b82b2b3ebd3de3db, type: 3}
|
||||
m_PrefabInstance: {fileID: 6247234762045722773}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
@@ -9,8 +9,6 @@ GameObject:
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1821569750776054505}
|
||||
- component: {fileID: 7245323945551537659}
|
||||
- component: {fileID: 2051839441129491893}
|
||||
- component: {fileID: 4636811485307056759}
|
||||
- component: {fileID: 8127948644408097011}
|
||||
m_Layer: 0
|
||||
@@ -35,43 +33,6 @@ Transform:
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &7245323945551537659
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1409607586026230811}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 2bb472437f31bb444ac3a380ebdd2f3f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
nodePrefab: {fileID: 2579942234611465176, guid: 5b3355ff1ae888e428ebf6ad2853e303, type: 3}
|
||||
markerPrefab: {fileID: 2579942234611465176, guid: f2ef013240a7d2548b78c9434734181a, type: 3}
|
||||
nodeSelectMode: 2
|
||||
currentlySelectedNode: {fileID: 0}
|
||||
agvNodeMap:
|
||||
maxid: 0
|
||||
agvNodeData: []
|
||||
--- !u!114 &2051839441129491893
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1409607586026230811}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: a6552f9ab96d944459a5e5a6f3eb6463, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
moveGizmo:
|
||||
_settings:
|
||||
_canBeDisplayed: 1
|
||||
_isExpanded: 1
|
||||
_transformableLayers: -1
|
||||
target: {fileID: 0}
|
||||
--- !u!114 &4636811485307056759
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -98,6 +59,6 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 43c2fa2860dfa344d856558ec881bb8a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
agvPrefab: {fileID: 1505508720499862715, guid: 03eb7e95fc0cb334d848d40c49b4110e, type: 3}
|
||||
agvs: []
|
||||
fileName: Assets/AGVsLog.csv
|
||||
prf_AGV: {fileID: 0}
|
||||
prf_Spec: {fileID: 0}
|
||||
autoIndexing: 0
|
||||
|
||||
@@ -1,46 +0,0 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &2048176525751629727
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 4254239384611290273}
|
||||
- component: {fileID: 6125667014742207553}
|
||||
m_Layer: 0
|
||||
m_Name: RenderObjectHandler
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &4254239384611290273
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2048176525751629727}
|
||||
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 &6125667014742207553
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2048176525751629727}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 23bf878a8d76f9f4d9514e7c393cf926, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
@@ -59,7 +59,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.39215687}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastTarget: 0
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
|
||||
@@ -211,6 +211,7 @@ GameObject:
|
||||
- component: {fileID: 7194822588214921878}
|
||||
- component: {fileID: 3097470657670304171}
|
||||
- component: {fileID: 5078274965939298063}
|
||||
- component: {fileID: 7525121242705956087}
|
||||
m_Layer: 0
|
||||
m_Name: Distance_right
|
||||
m_TagString: Untagged
|
||||
@@ -276,6 +277,18 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &7525121242705956087
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1824088583583508963}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 39f918e32db5c5042be45d171306ad14, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &2075515304005455769
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -695,6 +708,7 @@ GameObject:
|
||||
- component: {fileID: 1400843724585282578}
|
||||
- component: {fileID: 2061718949882192120}
|
||||
- component: {fileID: 4022013656138835912}
|
||||
- component: {fileID: 4248166134889511194}
|
||||
m_Layer: 0
|
||||
m_Name: Distance_left
|
||||
m_TagString: Untagged
|
||||
@@ -760,6 +774,18 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &4248166134889511194
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5461546370723553429}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 39f918e32db5c5042be45d171306ad14, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &7125163854521808529
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -771,6 +797,7 @@ GameObject:
|
||||
- component: {fileID: 6571488781575170805}
|
||||
- component: {fileID: 2889234264731888109}
|
||||
- component: {fileID: 5311912601517734047}
|
||||
- component: {fileID: 9121733989934958637}
|
||||
m_Layer: 0
|
||||
m_Name: Distance_back
|
||||
m_TagString: Untagged
|
||||
@@ -836,6 +863,18 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &9121733989934958637
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7125163854521808529}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 39f918e32db5c5042be45d171306ad14, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &7135956063028507155
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -847,6 +886,7 @@ GameObject:
|
||||
- component: {fileID: 18596219730868912}
|
||||
- component: {fileID: 7819340452723330143}
|
||||
- component: {fileID: 2211566357908769342}
|
||||
- component: {fileID: 2122022514441583782}
|
||||
m_Layer: 0
|
||||
m_Name: Distance_foward
|
||||
m_TagString: Untagged
|
||||
@@ -912,6 +952,18 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &2122022514441583782
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 7135956063028507155}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 39f918e32db5c5042be45d171306ad14, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &7452555945768904036
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1195,6 +1247,7 @@ GameObject:
|
||||
- component: {fileID: 8107414850933273690}
|
||||
- component: {fileID: 9125045971131934483}
|
||||
- component: {fileID: 4508713210993668394}
|
||||
- component: {fileID: 553392137018333697}
|
||||
m_Layer: 0
|
||||
m_Name: Distance_up
|
||||
m_TagString: Untagged
|
||||
@@ -1260,6 +1313,18 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &553392137018333697
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8057416366647402832}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 39f918e32db5c5042be45d171306ad14, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &8838398484417968805
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -1271,6 +1336,7 @@ GameObject:
|
||||
- component: {fileID: 6902250168712616153}
|
||||
- component: {fileID: 5227252712573134147}
|
||||
- component: {fileID: 1079209328243914300}
|
||||
- component: {fileID: 4065362264821389741}
|
||||
m_Layer: 0
|
||||
m_Name: Distance_down
|
||||
m_TagString: Untagged
|
||||
@@ -1336,3 +1402,15 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!114 &4065362264821389741
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 8838398484417968805}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 39f918e32db5c5042be45d171306ad14, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
|
||||
@@ -255,6 +255,52 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 88186217}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!1 &121134311
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 121134312}
|
||||
- component: {fileID: 121134313}
|
||||
m_Layer: 0
|
||||
m_Name: LinkDataUIManager
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &121134312
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 121134311}
|
||||
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: 1093055756}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &121134313
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 121134311}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: beaea798e37c61142a62ba5cecd426f2, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
prf_LinkDataUI: {fileID: 3588877776299194241, guid: 9f62a52c6a3d48947b57fdd4f941a260, type: 3}
|
||||
body: {fileID: 1617081465}
|
||||
--- !u!1 &157533902
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -965,7 +1011,8 @@ PrefabInstance:
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedComponents:
|
||||
- {fileID: 7997719753715833387, guid: 82511e73cbe6181438fd98254170e476, type: 3}
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
@@ -1264,6 +1311,51 @@ Transform:
|
||||
- {fileID: 741022416}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &391151067
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 391151068}
|
||||
- component: {fileID: 391151069}
|
||||
m_Layer: 0
|
||||
m_Name: Raycaster
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &391151068
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 391151067}
|
||||
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: 1093055756}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &391151069
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 391151067}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 73c8199685949fb4eb02e83a235ec68b, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
uiHoverTime: 0
|
||||
--- !u!1 &394283229
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2265,51 +2357,6 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 502356474}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!1 &503307893
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 503307894}
|
||||
- component: {fileID: 503307895}
|
||||
m_Layer: 0
|
||||
m_Name: Raycaster
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &503307894
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 503307893}
|
||||
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: 1093055756}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &503307895
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 503307893}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 73c8199685949fb4eb02e83a235ec68b, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
uiHoverTime: 0
|
||||
--- !u!1 &535540530
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2481,7 +2528,6 @@ MonoBehaviour:
|
||||
agvnodemodepopup: {fileID: 0}
|
||||
panel_tooltip: {fileID: 0}
|
||||
panel_propertyviewer: {fileID: 0}
|
||||
panel_draghandler: {fileID: 0}
|
||||
panel_assetedit: {fileID: 0}
|
||||
panel_thumbnail: {fileID: 0}
|
||||
panel_objectdistance: {fileID: 0}
|
||||
@@ -2786,6 +2832,50 @@ RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
m_PrefabInstance: {fileID: 1976685923}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &671739450
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 671739451}
|
||||
- component: {fileID: 671739452}
|
||||
m_Layer: 0
|
||||
m_Name: UserInputManager
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &671739451
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 671739450}
|
||||
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: 1093055756}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &671739452
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 671739450}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 6b37771737b0e1c45aa27bf9a659ee88, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!114 &712266949
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2892,6 +2982,50 @@ Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 101037460302490810, guid: e31a50ed45dd7404a9ff21df4f503810, type: 3}
|
||||
m_PrefabInstance: {fileID: 741022415}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &749092879
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 749092880}
|
||||
- component: {fileID: 749092881}
|
||||
m_Layer: 0
|
||||
m_Name: ManagerHub
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &749092880
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 749092879}
|
||||
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: 1093055756}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &749092881
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 749092879}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 729a2ee4bef76d34aa641f7254b67f3b, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &759321982
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -2975,68 +3109,6 @@ RectTransform:
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 4, y: 20}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!1001 &812349387
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 1093055756}
|
||||
m_Modifications:
|
||||
- target: {fileID: 3963811325703941763, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: WallBuilder
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7756644939596186566, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 1.3484559
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7756644939596186566, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 3.002852
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7756644939596186566, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: -2.1850286
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7756644939596186566, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7756644939596186566, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7756644939596186566, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7756644939596186566, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7756644939596186566, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7756644939596186566, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7756644939596186566, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
--- !u!4 &812349388 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 7756644939596186566, guid: a906cd4ab09260143b9d87e622d9e458, type: 3}
|
||||
m_PrefabInstance: {fileID: 812349387}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &827571245
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -3112,32 +3184,6 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 827571245}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &833546890 stripped
|
||||
GameObject:
|
||||
m_CorrespondingSourceObject: {fileID: 4357501051956785434, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
m_PrefabInstance: {fileID: 1319277344}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!114 &833546892
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 833546890}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 8d1f9c7add0ac3345ac4cc9e8c59084a, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
identifier:
|
||||
password:
|
||||
onLoadFbxFile:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
onRemoveFbxFile:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
isLoadTaskComplete: 1
|
||||
--- !u!1 &837752632
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -4121,6 +4167,26 @@ PrefabInstance:
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4062748835041242030, guid: 3335bcff08be47a4baa17f7fde07b24e, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4062748835041242030, guid: 3335bcff08be47a4baa17f7fde07b24e, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4062748835041242030, guid: 3335bcff08be47a4baa17f7fde07b24e, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5808496954263173159, guid: 3335bcff08be47a4baa17f7fde07b24e, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5808496954263173159, guid: 3335bcff08be47a4baa17f7fde07b24e, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7484356029459005624, guid: 3335bcff08be47a4baa17f7fde07b24e, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Panel_AssetLibrary
|
||||
@@ -4224,6 +4290,7 @@ GameObject:
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1093055756}
|
||||
- component: {fileID: 1093055757}
|
||||
m_Layer: 0
|
||||
m_Name: System
|
||||
m_TagString: Untagged
|
||||
@@ -4246,20 +4313,27 @@ Transform:
|
||||
m_Children:
|
||||
- {fileID: 1149817090}
|
||||
- {fileID: 636283413}
|
||||
- {fileID: 1437072834}
|
||||
- {fileID: 1451571416}
|
||||
- {fileID: 1552320077}
|
||||
- {fileID: 2021424132}
|
||||
- {fileID: 1123988285}
|
||||
- {fileID: 812349388}
|
||||
- {fileID: 503307894}
|
||||
- {fileID: 1805249248}
|
||||
- {fileID: 2057021881}
|
||||
- {fileID: 538683123}
|
||||
- {fileID: 617235297}
|
||||
- {fileID: 1801579273}
|
||||
- {fileID: 749092880}
|
||||
- {fileID: 671739451}
|
||||
- {fileID: 391151068}
|
||||
- {fileID: 121134312}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1093055757
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1093055755}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 2778cc56cc78c8a46846112e3aad69d2, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &1096619401
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -4687,50 +4761,6 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1111664869}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &1123988284
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1123988285}
|
||||
- component: {fileID: 1123988286}
|
||||
m_Layer: 0
|
||||
m_Name: CommandManager
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1123988285
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1123988284}
|
||||
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: 1093055756}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1123988286
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1123988284}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 476f4f09271b1e141a85ed6cff471f5e, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &1149817088
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -8628,67 +8658,6 @@ MonoBehaviour:
|
||||
_gradientOffset: 0
|
||||
_isVisible: 0
|
||||
_renderIgnoreCameras: []
|
||||
--- !u!1001 &1319277344
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 1093055756}
|
||||
m_Modifications:
|
||||
- target: {fileID: 13273118576283872, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 13273118576283872, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 13273118576283872, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 13273118576283872, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 13273118576283872, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 13273118576283872, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 13273118576283872, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 13273118576283872, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 13273118576283872, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 13273118576283872, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6403074468239445253, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: CustomAssetConnector
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents:
|
||||
- {fileID: 7645908678807808531, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents:
|
||||
- targetCorrespondingSourceObject: {fileID: 4357501051956785434, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
insertIndex: -1
|
||||
addedObject: {fileID: 833546892}
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
--- !u!1 &1321269470
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -8764,50 +8733,6 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1321269470}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!1 &1437072833
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1437072834}
|
||||
- component: {fileID: 1437072835}
|
||||
m_Layer: 0
|
||||
m_Name: UserInputManager
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1437072834
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1437072833}
|
||||
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: 1093055756}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1437072835
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1437072833}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 6b37771737b0e1c45aa27bf9a659ee88, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1001 &1439596646
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -9030,52 +8955,6 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1441967167}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!1 &1451571415
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1451571416}
|
||||
- component: {fileID: 1451571417}
|
||||
m_Layer: 0
|
||||
m_Name: CameraManager
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1451571416
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1451571415}
|
||||
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: 1093055756}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1451571417
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1451571415}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d2be0153517c66d468b831d2f067af0f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
objectViewDistance: 25
|
||||
objectViewRotation: {x: 45, y: 145, z: 0}
|
||||
--- !u!1 &1464917248
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -9240,51 +9119,6 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 7e770d58ca963cd42a42328ab60b8216, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!1 &1552320075
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1552320077}
|
||||
- component: {fileID: 1552320076}
|
||||
m_Layer: 0
|
||||
m_Name: CursorManager
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &1552320076
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1552320075}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 23783baffd622ff438e68f32651014a5, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
currentUseGUIWindow: {fileID: 0}
|
||||
--- !u!4 &1552320077
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1552320075}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 1244.8824, y: 617.2903, z: -1.7088666}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 1093055756}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1558737740
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -9805,6 +9639,11 @@ RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 2186512387788540450, guid: 985020025db5cc04da0f50eaa5351616, type: 3}
|
||||
m_PrefabInstance: {fileID: 1615364366}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!224 &1617081465 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 940260026812176822, guid: 82511e73cbe6181438fd98254170e476, type: 3}
|
||||
m_PrefabInstance: {fileID: 297039007}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &1647579088
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -10346,68 +10185,6 @@ MonoBehaviour:
|
||||
panel_topbar: {fileID: 0}
|
||||
panel_toolbar: {fileID: 0}
|
||||
panel_modecontrol: {fileID: 0}
|
||||
--- !u!1 &1801579272
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1801579273}
|
||||
- component: {fileID: 1801579275}
|
||||
- component: {fileID: 1801579274}
|
||||
m_Layer: 0
|
||||
m_Name: ProjectManager
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1801579273
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1801579272}
|
||||
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: 1093055756}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1801579274
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1801579272}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: d3b7eb8ddaf6a2c4a94629439aa5654f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!114 &1801579275
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1801579272}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: c5052381a5a4ad84385f60d56ad223fa, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
--- !u!4 &1805249248 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 13273118576283872, guid: 2c4ff86506de88747baaf66d9d637c5b, type: 3}
|
||||
m_PrefabInstance: {fileID: 1319277344}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &1809156807
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -11482,68 +11259,6 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
currentMode: 0
|
||||
--- !u!1001 &2057021880
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 1093055756}
|
||||
m_Modifications:
|
||||
- target: {fileID: 1409607586026230811, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: AGVNodeManager
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1821569750776054505, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1821569750776054505, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1821569750776054505, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1821569750776054505, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1821569750776054505, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1821569750776054505, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1821569750776054505, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1821569750776054505, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1821569750776054505, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1821569750776054505, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
--- !u!4 &2057021881 stripped
|
||||
Transform:
|
||||
m_CorrespondingSourceObject: {fileID: 1821569750776054505, guid: 2e1f6b521b86f624a9e2eba79ecb0de5, type: 3}
|
||||
m_PrefabInstance: {fileID: 2057021880}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!224 &34056510312835704
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
using RTG;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using XED.Command;
|
||||
using XED.Core;
|
||||
using XED.Manage;
|
||||
|
||||
@@ -107,6 +108,8 @@ namespace XED.RuntimeGizmo
|
||||
objectRotationGizmo.SetTargetObjects(selectedObjects);
|
||||
objectScaleGizmo.SetTargetObjects(selectedObjects);
|
||||
objectUniversalGizmo.SetTargetObjects(selectedObjects);
|
||||
|
||||
workGizmo.Gizmo.SetEnabled(selectedObjects.Count != 0);
|
||||
}
|
||||
private void OnGizmoDragBegin(Gizmo gizmo, int t)
|
||||
{
|
||||
@@ -135,7 +138,7 @@ namespace XED.RuntimeGizmo
|
||||
RTUndoRedo.Get.Undo();
|
||||
onTransformChanged?.Invoke(transformObjects);
|
||||
});
|
||||
CommandManager.I.AddCommand(command);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using UnityEngine.UI.Extensions;
|
||||
using XED.Manage;
|
||||
using XRLib.UI;
|
||||
|
||||
namespace XED.UI
|
||||
@@ -27,6 +28,8 @@ namespace XED.UI
|
||||
|
||||
List<(ConnectionHandlePoint, ConnectionHandlePoint)> connections = new();
|
||||
List<ConnectionHandlePoint> connection = new();
|
||||
|
||||
|
||||
internal void Connect(ConnectionHandlePoint connectionHandlePoint)
|
||||
{
|
||||
connection.Add(connectionHandlePoint);
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
using UnityEngine;
|
||||
using XED.Asset;
|
||||
using XED.Command;
|
||||
|
||||
namespace XED.Command
|
||||
{
|
||||
public class CreateInterferedObjectButtonCommand : IReversibleCommand
|
||||
{
|
||||
public CreateInterferedObjectButtonCommand()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
|
||||
|
||||
public bool CanExecute()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 57aaa2e5b1c74a74b955b7cdc045e483
|
||||
@@ -9,71 +9,62 @@ using XED.HierarchyTree;
|
||||
using System.Linq;
|
||||
using UnityEditor;
|
||||
using System;
|
||||
using XED.Core;
|
||||
using System.Collections;
|
||||
|
||||
namespace XED.Asset
|
||||
{
|
||||
public class CustomAssetConnector : MonoBehaviour, ISingle
|
||||
public class CustomAssetConnector : Manager
|
||||
{
|
||||
public PooledScrollView assetScrollView;
|
||||
public CustomScrollRect assetScrollRect;
|
||||
public PooledScrollView componentScrollView;
|
||||
public PooledScrollView InterworkingDataScrollView;
|
||||
public Panel_ObjectDistance panel_ObjectDistance;
|
||||
public GameObject renderObjectPrefab;
|
||||
public float objectShowDistance = 1000.0f;
|
||||
|
||||
public InterferedObjectManager interferedObjectManager;
|
||||
public List<ConnectedAsset> connectedAssets = new List<ConnectedAsset>();
|
||||
public List<CustomAssetData> selectedAssetDatas = new List<CustomAssetData>();
|
||||
public CustomAssetData selectedAssetData;
|
||||
public GameObject selectedItem;
|
||||
public CustomAssetRenderObject selectRenderObject;
|
||||
|
||||
public FBXFileManager saveLoadFBXData;
|
||||
public RenderObjectHandler renderObjectHandler;
|
||||
public System.Action<string, List<GameObject>> onSelectObjects;
|
||||
public System.Action onDeselectObjects;
|
||||
public System.Action onRemoveObjects;
|
||||
public System.Action onAssetDropped;
|
||||
|
||||
public CustomAssetDataHandler assetDataHandler;
|
||||
public CustomAssetEventHandler assetEventHandler;
|
||||
|
||||
ProjectManager projectManager;
|
||||
void Awake()
|
||||
public CustomAssetConnector()
|
||||
{
|
||||
saveLoadFBXData = FindFirstObjectByType<FBXFileManager>();
|
||||
renderObjectHandler = FindFirstObjectByType<RenderObjectHandler>();
|
||||
assetDataHandler = new CustomAssetDataHandler(this);
|
||||
assetEventHandler = new CustomAssetEventHandler(this);
|
||||
projectManager = FindSingle<ProjectManager>();
|
||||
|
||||
assetDataHandler = new CustomAssetDataHandler();
|
||||
assetEventHandler = new CustomAssetEventHandler();
|
||||
}
|
||||
void Start()
|
||||
public override void Init()
|
||||
{
|
||||
assetScrollRect = FindSingle<Canvas_Popup>().panel_assetlibrary.scrollRect;
|
||||
assetScrollView = FindSingle<Canvas_Popup>().panel_assetlibrary.scrollView;
|
||||
componentScrollView = FindSingle<Canvas_Popup>().panel_hierarchy.scrollView;
|
||||
InterworkingDataScrollView = FindSingle<Canvas_Popup>().panel_interworkingdatalist.scrollView;
|
||||
renderObjectPrefab = Resources.Load<GameObject>("Prefabs/PRF_RenderObject");
|
||||
|
||||
interferedObjectManager = ManagerHub.instance.Get<InterferedObjectManager>();
|
||||
assetScrollRect = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_assetlibrary.scrollRect;
|
||||
assetScrollRect.onDragBegin.AddListener(OnAssetSelected);
|
||||
assetScrollRect.onDragAndDrop.AddListener(OnAssetDropped);
|
||||
assetScrollView.onSelect.AddListener(assetEventHandler.OnSelectAssetFromHierarchy);
|
||||
|
||||
InterworkingDataScrollView = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_interworkingdatalist.scrollView;
|
||||
InterworkingDataScrollView.onSelect.AddListener(assetEventHandler.OnSelectDataFromHierarchy);
|
||||
|
||||
assetScrollView = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_assetlibrary.scrollView;
|
||||
assetScrollView.onSelect.AddListener(assetEventHandler.OnSelectAssetFromHierarchy);
|
||||
|
||||
componentScrollView = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_hierarchy.scrollView;
|
||||
componentScrollView.onSelect.AddListener(assetEventHandler.OnSelectObjectFromHierarchy);
|
||||
componentScrollView.onParentChanged.AddListener(OnParentChanged);
|
||||
saveLoadFBXData.onLoadFbxFile.AddListener(assetDataHandler.OnLoadFbxFile);
|
||||
|
||||
saveLoadFBXData.onRemoveFbxFile.AddListener(assetDataHandler.OnRemoveFbxFile);
|
||||
renderObjectHandler.onSelectObject.AddListener(assetEventHandler.OnSelectObjectFromObjectHandler);
|
||||
renderObjectHandler.onCopyObject.AddListener(OnCopyObject);
|
||||
renderObjectHandler.onRemoveObject.AddListener(OnRemoveObject);
|
||||
renderObjectHandler.onOrderByHierachy.AddListener(OrderByHierarchy);
|
||||
renderObjectHandler.onDeselectAll += OnDeselectAll;
|
||||
|
||||
projectManager.onRemoveAsset += OnRemoveObject;
|
||||
panel_ObjectDistance = EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectdistance;
|
||||
|
||||
renderObjectPrefab = Resources.Load<GameObject>("Prefabs/PRF_RenderObject");
|
||||
}
|
||||
|
||||
private void OnRemoveObject(List<CustomAssetRenderObject> objects)
|
||||
public void OnRemoveObject(List<CustomAssetRenderObject> objects)
|
||||
{
|
||||
if (objects.Count == 0)
|
||||
{
|
||||
@@ -88,10 +79,11 @@ namespace XED.Asset
|
||||
siblingIndex.Add(searchAsset.hierarchyItem.GetSiblingIndex());
|
||||
}
|
||||
var command = new RemoveObjectCommand(removeList, siblingIndex, this);
|
||||
CommandManager.I.ExecuteCommand(command);
|
||||
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectinfo.ResetObjectInfo();
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
|
||||
private void OnCopyObject(List<CustomAssetRenderObject> objects)
|
||||
public void OnCopyObject(List<CustomAssetRenderObject> objects)
|
||||
{
|
||||
if (objects.Count == 0)
|
||||
{
|
||||
@@ -108,14 +100,12 @@ namespace XED.Asset
|
||||
connectedAssets.Add(copyAsset);
|
||||
}
|
||||
var command = new CopyObjectCommand(copySources, copyList, this);
|
||||
CommandManager.I.ExecuteCommand(command);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
|
||||
|
||||
// Update is called once per frame
|
||||
void Update()
|
||||
IEnumerator ChangeSelectedAssetTransform()
|
||||
{
|
||||
if (selectedAssetData != null)
|
||||
while (selectedAssetData != null)
|
||||
{
|
||||
Vector3? pos = GetMousePointOnYPlane(objectShowDistance);
|
||||
if (pos.HasValue)
|
||||
@@ -123,10 +113,10 @@ namespace XED.Asset
|
||||
selectedItem.transform.position = pos.Value;
|
||||
selectedAssetData.OnTransformDataChanged();
|
||||
}
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void OnAssetSelected(HierarchyItem item)
|
||||
{
|
||||
if (item == null || item.linkedObject == null)
|
||||
@@ -140,13 +130,17 @@ namespace XED.Asset
|
||||
selectedAssetData = null;
|
||||
return;
|
||||
}
|
||||
selectedItem = Instantiate(renderObjectPrefab);
|
||||
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();
|
||||
selectRenderObject.Select();
|
||||
selectedAssetData.AddTransformToRender(selectedItem.transform);
|
||||
CoroutineRunner.instance.StartCoroutine(ChangeSelectedAssetTransform());
|
||||
}
|
||||
public void OnAssetDropped(HierarchyItem item)
|
||||
{
|
||||
@@ -160,7 +154,7 @@ namespace XED.Asset
|
||||
else
|
||||
{
|
||||
selectedAssetData.RemoveTransform(selectedItem.transform);
|
||||
Destroy(selectedItem);
|
||||
UnityEngine.GameObject.Destroy(selectedItem);
|
||||
}
|
||||
selectRenderObject.Deselect();
|
||||
selectedAssetData = null;
|
||||
@@ -177,7 +171,7 @@ namespace XED.Asset
|
||||
};
|
||||
connectedAsset.renderObject.onTransformChanged = connectedAsset.assetData.OnTransformDataChanged;
|
||||
var command = new CreateConnectedAssetCommand(connectedAsset, this);
|
||||
CommandManager.I.ExecuteCommand(command);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
public void OnParentChanged(HierarchyItem parentItem, HierarchyItem childItem)
|
||||
{
|
||||
@@ -211,7 +205,8 @@ namespace XED.Asset
|
||||
}
|
||||
public void OnDeselectAll()
|
||||
{
|
||||
onDeselectObjects?.Invoke();
|
||||
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||
canvas_Popup.panel_objectinfo.gameObject.SetActive(false);
|
||||
componentScrollView.DeselectAll();
|
||||
}
|
||||
public void OrderByHierarchy(List<CustomAssetRenderObject> objectsToOrder)
|
||||
@@ -238,6 +233,20 @@ namespace XED.Asset
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
internal void ClearObjects()
|
||||
{
|
||||
List<CustomAssetRenderObject> objects = connectedAssets.Select(x => x.renderObject).ToList();
|
||||
OnRemoveObject(objects);
|
||||
}
|
||||
|
||||
internal void OnSelectObjects(string name, List<GameObject> selectedObjects)
|
||||
{
|
||||
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||
canvas_Popup.panel_objectinfo.gameObject.SetActive(true);
|
||||
canvas_Popup.panel_objectinfo.SetObjectInfo(name, selectedObjects);
|
||||
canvas_Popup.panel_objectdistance.SelectObjectFromClick(name, selectedObjects);
|
||||
}
|
||||
}
|
||||
public class ConnectedAsset
|
||||
{
|
||||
|
||||
@@ -1,20 +1,15 @@
|
||||
using XED.Asset;
|
||||
using XED.HierarchyTree;
|
||||
using XED.Manage;
|
||||
using XED.Util;
|
||||
|
||||
namespace XED
|
||||
{
|
||||
public class CustomAssetDataHandler
|
||||
{
|
||||
private CustomAssetConnector connector;
|
||||
|
||||
public CustomAssetDataHandler(CustomAssetConnector connector)
|
||||
{
|
||||
this.connector = connector;
|
||||
}
|
||||
|
||||
public void OnLoadFbxFile(string objectName, string folderName, CustomAssetData assetData)
|
||||
{
|
||||
var connector = ManagerHub.instance.Get<CustomAssetConnector>();
|
||||
HierarchyItem parent = connector.assetScrollView.FindItem(folderName, HierarchyItemType.folder) ?? connector.assetScrollView.AddItem(folderName, null, HierarchyItemType.folder);
|
||||
HierarchyItem item = connector.assetScrollView.AddItem(objectName, assetData.gameObject, HierarchyItemType.file, parent);
|
||||
assetData.onLoadProgress.RemoveAllListeners();
|
||||
@@ -23,17 +18,21 @@ namespace XED
|
||||
|
||||
public void OnRemoveFbxFile(string objectName)
|
||||
{
|
||||
var connector = ManagerHub.instance.Get<CustomAssetConnector>();
|
||||
connector.assetScrollView.RemoveItem(objectName, HierarchyItemType.file);
|
||||
}
|
||||
|
||||
public void SaveSelectedAssetDatasToLocal()
|
||||
{
|
||||
connector.saveLoadFBXData.SaveToLocalData(connector.selectedAssetDatas);
|
||||
var connector = ManagerHub.instance.Get<CustomAssetConnector>();
|
||||
var fbxFileManager = ManagerHub.instance.Get<FBXFileManager>();
|
||||
fbxFileManager.SaveToLocalData(connector.selectedAssetDatas);
|
||||
}
|
||||
|
||||
public void LoadLocalAssetDatas()
|
||||
{
|
||||
connector.saveLoadFBXData.LoadLocalData();
|
||||
var fbxFileManager = ManagerHub.instance.Get<FBXFileManager>();
|
||||
// fbxFileManager.LoadLocalData();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -41,7 +41,7 @@ namespace XED.Repositories
|
||||
return p != null;
|
||||
}
|
||||
|
||||
private CustomAssetData FindFromName(string name)
|
||||
public CustomAssetData FindFromName(string name)
|
||||
{
|
||||
return assetDatas.Find(data => data.assetName == name);
|
||||
}
|
||||
|
||||
@@ -3,19 +3,13 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using XED.HierarchyTree;
|
||||
using XED.Manage;
|
||||
using XED.Util;
|
||||
|
||||
namespace XED.Asset
|
||||
{
|
||||
public class CustomAssetEventHandler
|
||||
{
|
||||
private CustomAssetConnector connector;
|
||||
|
||||
public CustomAssetEventHandler(CustomAssetConnector connector)
|
||||
{
|
||||
this.connector = connector;
|
||||
}
|
||||
|
||||
public void OnSelectObjectFromHierarchy(List<HierarchyItem> selectedItems)
|
||||
{
|
||||
if (selectedItems.Count == 0)
|
||||
@@ -23,25 +17,28 @@ namespace XED.Asset
|
||||
return;
|
||||
}
|
||||
string name = "";
|
||||
var connector = ManagerHub.instance.Get<CustomAssetConnector>();
|
||||
var renderObjectHandler = ManagerHub.instance.Get<RenderObjectHandler>();
|
||||
List<GameObject> selectedObjects = new List<GameObject>();
|
||||
foreach (ConnectedAsset connectedAsset in connector.connectedAssets)
|
||||
{
|
||||
connectedAsset.renderObject.Deselect();
|
||||
}
|
||||
connector.renderObjectHandler.RemoveAllSelections();
|
||||
renderObjectHandler.RemoveAllSelections();
|
||||
for (int i = 0; i < selectedItems.Count; i++)
|
||||
{
|
||||
ConnectedAsset searchAsset = connector.connectedAssets.Find((x) => x.hierarchyItem == selectedItems[i]);
|
||||
name = i == 0 ? searchAsset.hierarchyItem.name : name.Equals(searchAsset.hierarchyItem.name) ? searchAsset.hierarchyItem.name : "-";
|
||||
selectedObjects.Add(searchAsset.renderObject.gameObject);
|
||||
connector.renderObjectHandler.AddSelection(searchAsset.renderObject);
|
||||
renderObjectHandler.AddSelection(searchAsset.renderObject);
|
||||
}
|
||||
connector.renderObjectHandler.ResetGizmoTargetObjects();
|
||||
connector.onSelectObjects?.Invoke(name, selectedObjects);
|
||||
renderObjectHandler.ResetGizmoTargetObjects();
|
||||
connector.OnSelectObjects(name, selectedObjects);
|
||||
}
|
||||
|
||||
public void OnSelectAssetFromHierarchy(List<HierarchyItem> selectedItems)
|
||||
{
|
||||
var connector = ManagerHub.instance.Get<CustomAssetConnector>();
|
||||
connector.selectedAssetDatas.Clear();
|
||||
if (selectedItems.Count == 0)
|
||||
{
|
||||
@@ -76,6 +73,8 @@ namespace XED.Asset
|
||||
string name = "";
|
||||
List<GameObject> selectedObjects = new List<GameObject>();
|
||||
List<HierarchyItem> selectedItems = new List<HierarchyItem>();
|
||||
|
||||
var connector = ManagerHub.instance.Get<CustomAssetConnector>();
|
||||
for (int i = 0; i < objects.Count; i++)
|
||||
{
|
||||
ConnectedAsset searchAsset = connector.connectedAssets.Find((x) => x.renderObject == objects[i]);
|
||||
@@ -84,20 +83,24 @@ namespace XED.Asset
|
||||
selectedObjects.Add(searchAsset.renderObject.gameObject);
|
||||
}
|
||||
connector.componentScrollView.OnSelect(selectedItems);
|
||||
connector.onSelectObjects?.Invoke(name, selectedObjects);
|
||||
|
||||
connector.OnSelectObjects(name, selectedObjects);
|
||||
}
|
||||
|
||||
public void OnDragBoxSelect(Rect selectionBoxRect)
|
||||
{
|
||||
|
||||
var connector = ManagerHub.instance.Get<CustomAssetConnector>();
|
||||
List<ConnectedAsset> activeAssets = connector.connectedAssets.FindAll(x => x.renderObject != null && x.renderObject.gameObject.activeSelf);
|
||||
if (activeAssets.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
string name = "";
|
||||
var renderObjectHandler = ManagerHub.instance.Get<RenderObjectHandler>();
|
||||
List<HierarchyItem> selectedItems = new List<HierarchyItem>();
|
||||
List<CustomAssetRenderObject> selectedRenderObjects = new List<CustomAssetRenderObject>();
|
||||
connector.renderObjectHandler.RemoveAllSelections();
|
||||
renderObjectHandler.RemoveAllSelections();
|
||||
for (int i = 0; i < activeAssets.Count; i++)
|
||||
{
|
||||
ConnectedAsset activeAsset = activeAssets[i];
|
||||
@@ -108,9 +111,9 @@ namespace XED.Asset
|
||||
selectedRenderObjects.Add(activeAsset.renderObject);
|
||||
}
|
||||
}
|
||||
connector.renderObjectHandler.AddSelection(selectedRenderObjects);
|
||||
renderObjectHandler.AddSelection(selectedRenderObjects);
|
||||
connector.componentScrollView.OnSelect(selectedItems);
|
||||
connector.onSelectObjects?.Invoke(name, selectedRenderObjects.Select(x => x.gameObject).ToList());
|
||||
connector.OnSelectObjects(name, selectedRenderObjects.Select(x => x.gameObject).ToList());
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics.Contracts;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
@@ -28,6 +29,10 @@ namespace XED.Util
|
||||
|
||||
LayerMask twinObjectMask;
|
||||
|
||||
public event Action<TwinObject, TwinObject> OnOverlabBegin;
|
||||
public event Action<TwinObject, TwinObject> OnOverlabEnd;
|
||||
public event Action<CustomAssetRenderObject> OnSelected;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
objectRenderer = GetComponentInChildren<MeshRenderer>();
|
||||
@@ -67,6 +72,8 @@ namespace XED.Util
|
||||
}
|
||||
Show();
|
||||
}
|
||||
|
||||
OnOverlabBegin?.Invoke(GetComponent<TwinObject>(), other.gameObject.GetComponent<TwinObject>());
|
||||
}
|
||||
private void OnTriggerExit(Collider other)
|
||||
{
|
||||
@@ -83,6 +90,8 @@ namespace XED.Util
|
||||
Hide();
|
||||
}
|
||||
}
|
||||
|
||||
OnOverlabEnd?.Invoke(GetComponent<TwinObject>(), other.gameObject.GetComponent<TwinObject>());
|
||||
}
|
||||
public void OnPointerEnter(PointerEventData eventData)
|
||||
{
|
||||
@@ -181,7 +190,7 @@ namespace XED.Util
|
||||
public void Select()
|
||||
{
|
||||
//ResizeBoundary();
|
||||
FindSingle<Panel_ObjectDistance>().SelectObjectFromCreate(this);
|
||||
OnSelected?.Invoke(this);
|
||||
isSelected = true;
|
||||
objectRenderer.material = matCubeSelected;
|
||||
Show();
|
||||
|
||||
@@ -9,18 +9,19 @@ using System.Threading.Tasks;
|
||||
using System;
|
||||
using System.Linq;
|
||||
using XED.Repositories;
|
||||
using XED.Asset;
|
||||
using Ookii.Dialogs;
|
||||
using XED.Command;
|
||||
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class FBXFileManager : MonoBehaviour
|
||||
public class FBXFileManager : Manager
|
||||
{
|
||||
CustomAssetDataRepository dataRepo;
|
||||
|
||||
public string identifier;
|
||||
public string password;
|
||||
public UnityEvent<string, string, CustomAssetData> onLoadFbxFile;
|
||||
public UnityEvent<string> onRemoveFbxFile;
|
||||
public event System.Action onBeginLoadAsset;
|
||||
private SaveData saveData;
|
||||
|
||||
private Queue<string> loadFilePath = new Queue<string>();
|
||||
@@ -28,8 +29,9 @@ namespace XED.Manage
|
||||
private MessagePackFileManager<SaveData> messagePacker;
|
||||
private bool isSaveTaskComplete = true;
|
||||
public bool isLoadTaskComplete = true;
|
||||
private Transform fbxAnchor;
|
||||
|
||||
void Start()
|
||||
public FBXFileManager()
|
||||
{
|
||||
dataRepo = new CustomAssetDataRepository();
|
||||
saveData = new SaveData();
|
||||
@@ -37,10 +39,12 @@ namespace XED.Manage
|
||||
messagePacker = new MessagePackFileManager<SaveData>();
|
||||
messagePacker.Initialize();
|
||||
|
||||
identifier = identifier.Length == 0 ? "defaultAssetData" : identifier;
|
||||
StartCoroutine(CoroutineLoadLocalFiles());
|
||||
string baseDataPath = Application.streamingAssetsPath + "/baseAssetData";
|
||||
LoadLocalData(baseDataPath);
|
||||
identifier = string.IsNullOrEmpty(identifier) ? "defaultAssetData" : identifier;
|
||||
fbxAnchor = new GameObject("LocalAssetDataAnchor").transform;
|
||||
}
|
||||
public override void Init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void LoadLocalFBXDirectory()
|
||||
@@ -50,23 +54,23 @@ namespace XED.Manage
|
||||
|
||||
private void OnLoadLocalFBXDirectory(IList<ItemWithStream> list)
|
||||
{
|
||||
for (int i = 0; i < list.Count; i++)
|
||||
{
|
||||
if (!list[i].HasData)
|
||||
continue;
|
||||
//for (int i = 0; i < list.Count; i++)
|
||||
//{
|
||||
// if (!list[i].HasData)
|
||||
// continue;
|
||||
|
||||
var path = list[i].Name;
|
||||
Debug.Log("path " + path);
|
||||
var files = Directory.GetFiles(path, "*.fbx", SearchOption.AllDirectories);
|
||||
// var path = list[i].Name;
|
||||
// Debug.Log("path " + path);
|
||||
// var files = Directory.GetFiles(path, "*.fbx", SearchOption.AllDirectories);
|
||||
|
||||
if (dataRepo.TryGetDataFromPath(path, out var p))
|
||||
return;
|
||||
// if (dataRepo.TryGetDataFromPath(path, out var p))
|
||||
// return;
|
||||
|
||||
foreach (var file in files)
|
||||
{
|
||||
loadFilePath.Enqueue(file);
|
||||
}
|
||||
}
|
||||
// foreach (var file in files)
|
||||
// {
|
||||
// loadFilePath.Enqueue(file);
|
||||
// }
|
||||
//}
|
||||
}
|
||||
|
||||
public void SaveToLocalData(List<CustomAssetData> assetDatas, string path = "")
|
||||
@@ -75,143 +79,36 @@ namespace XED.Manage
|
||||
{
|
||||
return;
|
||||
}
|
||||
StartCoroutine(CoroutineSaveToLocalData(assetDatas, path));
|
||||
//StartCoroutine(CoroutineSaveToLocalData(assetDatas, path));
|
||||
}
|
||||
public void LoadLocalData(string path = "")
|
||||
public void LoadLocalData()
|
||||
{
|
||||
if (isLoadTaskComplete == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
onBeginLoadAsset?.Invoke();
|
||||
StartCoroutine(CoroutineLoadFromLocalData(path));
|
||||
|
||||
string path = Application.streamingAssetsPath + "/baseAssetData";
|
||||
string filePath = GetLocalPath(path);
|
||||
|
||||
if (!CheckFilePathExists(filePath))
|
||||
{
|
||||
isLoadTaskComplete = true;
|
||||
return;
|
||||
}
|
||||
|
||||
// var command = new ActivateMoveGizmoCommand(rtgController);
|
||||
//CommandInvoker.instance.Invoke(command);
|
||||
|
||||
CoroutineRunner.instance.StartCoroutine(CoroutineLoadFromLocalData(filePath));
|
||||
}
|
||||
|
||||
public CustomAssetData GetCustomAssetData(string name)
|
||||
{
|
||||
return dataRepo.FindFromPath(name);
|
||||
return dataRepo.FindFromName(name);
|
||||
//return listAssets.FirstOrDefault(x => x.name == name);
|
||||
}
|
||||
|
||||
IEnumerator CoroutineLoadLocalFiles()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
yield return new WaitUntil(() => loadFilePath.Count > 0);
|
||||
string path = loadFilePath.Dequeue();
|
||||
string name = System.IO.Path.GetFileNameWithoutExtension(path);
|
||||
|
||||
//if (listAssets.Find(x => x.name == name) != null)
|
||||
//{
|
||||
// yield return null;
|
||||
// continue;
|
||||
//}
|
||||
|
||||
if (dataRepo.TryGetDataFromName(name, out var p))
|
||||
{
|
||||
yield return null;
|
||||
continue;
|
||||
}
|
||||
|
||||
string directoryPath = Path.GetDirectoryName(path);
|
||||
string lastFolderName = Path.GetFileName(directoryPath);
|
||||
string createDate = File.GetCreationTime(path).ToShortDateString();
|
||||
string lastRevisionDate = File.GetLastAccessTime(path).ToShortDateString();
|
||||
string uploadDate = DateTime.Now.ToShortDateString();
|
||||
|
||||
GameObject newObject = new GameObject(name);
|
||||
newObject.transform.parent = transform;
|
||||
CustomAssetData assetData = newObject.AddComponent<CustomAssetData>();
|
||||
assetData.assetName = name;
|
||||
assetData.folderName = lastFolderName;
|
||||
assetData.createDate = createDate;
|
||||
assetData.LastRevisionDate = lastRevisionDate;
|
||||
assetData.UploadDate = uploadDate;
|
||||
assetData.Creator = "xr@uvc.co.kr";
|
||||
assetData.Manager = "xr@uvc.co.kr";
|
||||
assetData.LoadLocalFBX(path);
|
||||
dataRepo.Add(assetData);
|
||||
onLoadFbxFile?.Invoke(name, lastFolderName, assetData);
|
||||
yield return new WaitUntil(() => (assetData.isLoadComplete == true && assetData.progress == 1) || assetData.isLoadError == true);
|
||||
if (assetData.isLoadError)
|
||||
{
|
||||
dataRepo.Remove(assetData);
|
||||
onRemoveFbxFile?.Invoke(name);
|
||||
}
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
IEnumerator CoroutineSaveToLocalData(List<CustomAssetData> assetDatas, string path)
|
||||
{
|
||||
//if (assetDatas == null || assetDatas.Count == 0)
|
||||
//{
|
||||
// assetDatas = listAssets;
|
||||
//}
|
||||
//if (assetDatas.Count == 0)
|
||||
//{
|
||||
// Debug.Log("No AssetDatas to Save");
|
||||
// isSaveTaskComplete = true;
|
||||
// yield break;
|
||||
//}
|
||||
|
||||
if (dataRepo.isEmpty)
|
||||
{
|
||||
dataRepo.AddRange(assetDatas);
|
||||
}
|
||||
|
||||
if (dataRepo.isEmpty)
|
||||
{
|
||||
Debug.Log("No AssetDatas to Save");
|
||||
isSaveTaskComplete = true;
|
||||
yield break;
|
||||
}
|
||||
|
||||
isSaveTaskComplete = false;
|
||||
List<SavedModelData> savedModels = new List<SavedModelData>();
|
||||
List<ThumbnailData> thumbnails = new List<ThumbnailData>();
|
||||
RuntimePreviewGenerator.BackgroundColor = Color.clear;
|
||||
RuntimePreviewGenerator.OrthographicMode = true;
|
||||
|
||||
for (int i = 0; i < assetDatas.Count; i++)
|
||||
{
|
||||
var modelData = ConvertToSaveData(assetDatas[i]);
|
||||
Texture2D thumbnail = RuntimePreviewGenerator.GenerateModelPreview(assetDatas[i].loadedObject.transform, 320, 200);
|
||||
thumbnail = thumbnail.MakeReadableTexture();
|
||||
thumbnails.Add(new ThumbnailData(thumbnail.EncodeToPNG()));
|
||||
savedModels.Add(modelData);
|
||||
}
|
||||
saveData.modelDatas = savedModels.ToArray();
|
||||
saveData.textureDatas = sharedMaterial.textureDatas.ToArray();
|
||||
saveData.thumbnailDatas = thumbnails.ToArray();
|
||||
yield return null;
|
||||
|
||||
//Task task = SaveAsync(identifier, saveData);
|
||||
|
||||
string filePath = string.IsNullOrEmpty(path) ? Path.Combine(Application.persistentDataPath, identifier) : path;
|
||||
Task task = Task.Run(() => messagePacker.SaveAsync(filePath, saveData));
|
||||
|
||||
yield return new WaitUntil(() => task.IsCompleted);
|
||||
isSaveTaskComplete = true;
|
||||
yield return null;
|
||||
}
|
||||
|
||||
SavedModelData ConvertToSaveData(CustomAssetData assetData)
|
||||
{
|
||||
SavedModelData modelData = new SavedModelData();
|
||||
modelData.SaveData(assetData.loadedObject, sharedMaterial);
|
||||
//갯수 제한 없음 원하는 만큼 조절 가능. 테스트로 10개만 지정
|
||||
modelData.attributes = new string[7][];
|
||||
modelData.attributes[0] = new string[] { "assetName", assetData.assetName };
|
||||
modelData.attributes[1] = new string[] { "folderName", assetData.folderName };
|
||||
|
||||
modelData.attributes[2] = new string[] { "createDate", assetData.createDate };
|
||||
modelData.attributes[3] = new string[] { "LastRevisionDate", assetData.LastRevisionDate };
|
||||
modelData.attributes[4] = new string[] { "UploadDate", assetData.UploadDate };
|
||||
modelData.attributes[5] = new string[] { "Creator", assetData.createDate };
|
||||
modelData.attributes[6] = new string[] { "Manager", assetData.Manager };
|
||||
return modelData;
|
||||
}
|
||||
|
||||
string GetLocalPath(string path)
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
@@ -233,25 +130,9 @@ namespace XED.Manage
|
||||
return true;
|
||||
}
|
||||
|
||||
IEnumerator CoroutineLoadFromLocalData(string path)
|
||||
IEnumerator CoroutineLoadFromLocalData(string filePath)
|
||||
{
|
||||
isLoadTaskComplete = false;
|
||||
float loadTime = 0;
|
||||
|
||||
//string filePath = string.IsNullOrEmpty(path) ? Path.Combine(Application.persistentDataPath, identifier) : path;
|
||||
string filePath = GetLocalPath(path);
|
||||
|
||||
if (!CheckFilePathExists(filePath))
|
||||
{
|
||||
isLoadTaskComplete = true;
|
||||
yield break;
|
||||
}
|
||||
//if (!System.IO.File.Exists(filePath))
|
||||
//{
|
||||
// Debug.Log("No File Found At : " + filePath);
|
||||
// isLoadTaskComplete = true;
|
||||
// yield break;
|
||||
//}
|
||||
|
||||
Task<SaveData> task = Task<SaveData>.Run(() => messagePacker.LoadAsync(filePath));
|
||||
yield return new WaitUntil(() => task.IsCompleted);
|
||||
@@ -263,70 +144,19 @@ namespace XED.Manage
|
||||
isLoadTaskComplete = true;
|
||||
yield break;
|
||||
}
|
||||
|
||||
saveData = task.Result;
|
||||
for (int i = 0; i < saveData.textureDatas.Length; i++)
|
||||
{
|
||||
TextureData texData = saveData.textureDatas[i];
|
||||
sharedMaterial.AddTextureData(texData);
|
||||
loadTime += Time.deltaTime;
|
||||
if (loadTime > 1.0f / 30.0f)
|
||||
{
|
||||
loadTime = 0;
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < saveData.modelDatas.Length; i++)
|
||||
{
|
||||
if (!LoadSaveData(saveData, i))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
loadTime += Time.deltaTime;
|
||||
if (loadTime > 1.0f / 30.0f)
|
||||
{
|
||||
loadTime = 0;
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
// float loadTime = 0f;
|
||||
|
||||
|
||||
var command = new LoadLocalTextureDataCommand(sharedMaterial, saveData.textureDatas);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
|
||||
|
||||
var command2 = new LoadLocalModelDataCommand(saveData, dataRepo, fbxAnchor, sharedMaterial);
|
||||
CommandInvoker.instance.Invoke(command2);
|
||||
|
||||
isLoadTaskComplete = true;
|
||||
yield return null;
|
||||
}
|
||||
|
||||
bool LoadSaveData(SaveData saveData, int index)
|
||||
{
|
||||
var modelData = saveData.modelDatas[index];
|
||||
string assetName = modelData.attributes.FirstOrDefault(x => x[0].Equals("assetName"))?[1];
|
||||
|
||||
if (dataRepo.TryGetDataFromName(assetName, out var p))
|
||||
return false;
|
||||
|
||||
string folderName = modelData.attributes.FirstOrDefault(x => x[0].Equals("folderName"))?[1];
|
||||
string createDate = modelData.attributes.FirstOrDefault(x => x[0].Equals("createDate"))?[1];
|
||||
string lastRevisionDate = modelData.attributes.FirstOrDefault(x => x[0].Equals("lastRevisionDate"))?[1];
|
||||
string uploadDate = modelData.attributes.FirstOrDefault(x => x[0].Equals("uploadDate"))?[1];
|
||||
string creator = modelData.attributes.FirstOrDefault(x => x[0].Equals("creator"))?[1];
|
||||
string manager = modelData.attributes.FirstOrDefault(x => x[0].Equals("manager"))?[1];
|
||||
|
||||
Texture2D thumbnail = new Texture2D(1, 1);
|
||||
thumbnail.LoadImage(saveData.thumbnailDatas[index].data);
|
||||
GameObject newObject = new GameObject(assetName);
|
||||
newObject.transform.parent = transform;
|
||||
CustomAssetData assetData = newObject.AddComponent<CustomAssetData>();
|
||||
assetData.assetName = assetName;
|
||||
assetData.folderName = folderName;
|
||||
assetData.createDate = createDate;
|
||||
assetData.LastRevisionDate = lastRevisionDate;
|
||||
assetData.UploadDate = uploadDate;
|
||||
assetData.Creator = creator;
|
||||
assetData.Manager = manager;
|
||||
assetData.loadedObject = modelData.LoadModelData(sharedMaterial);
|
||||
assetData.thumbnail = thumbnail;
|
||||
assetData.OnLoadComplete();
|
||||
|
||||
dataRepo.Add(assetData);
|
||||
//listAssets.Add(assetData);
|
||||
onLoadFbxFile?.Invoke(assetData.assetName, assetData.folderName, assetData);
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -3,17 +3,17 @@ using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.EventSystems;
|
||||
using XED.Asset;
|
||||
using XED.Command;
|
||||
using XED.DataStructures;
|
||||
using XED.Interfaces;
|
||||
using XED.Manage;
|
||||
using XED.RuntimeGizmo;
|
||||
using XED.RuntimeGizmo;
|
||||
|
||||
namespace XED.Util
|
||||
{
|
||||
public class RenderObjectHandler : MonoBehaviour, IModeController, IInputHandler
|
||||
public class RenderObjectHandler : Manager, IModeController, IInputHandler
|
||||
{
|
||||
public ModePanel.ProgramMode mode => ModePanel.ProgramMode.ObjectLayout;
|
||||
List<CustomAssetRenderObject> selectedRenderObjects = new List<CustomAssetRenderObject>();
|
||||
@@ -22,33 +22,24 @@ namespace XED.Util
|
||||
CustomAssetRenderObject prevSelectedObject;
|
||||
RTGController rtgController;
|
||||
ConvexHullCalculator convexHullCalculator = new ConvexHullCalculator();
|
||||
UserInputManager userInputManager;
|
||||
Vector3 clickBeginPos;
|
||||
float clickLengthThreshold = 5.0f;
|
||||
int uiLayer;
|
||||
int selectIndex;
|
||||
bool lockHandler = false;
|
||||
public event System.Action<Vector3> onDragBegin;
|
||||
public event System.Action<Vector3> onDragEnd;
|
||||
public event System.Action onDragForceEnd;
|
||||
public UnityEvent<List<CustomAssetRenderObject>> onSelectObject;
|
||||
public UnityEvent<List<CustomAssetRenderObject>> onRemoveObject;
|
||||
public UnityEvent<List<CustomAssetRenderObject>> onCopyObject;
|
||||
public UnityEvent<List<CustomAssetRenderObject>> onOrderByHierachy;
|
||||
public event System.Action onDeselectAll;
|
||||
public event System.Action<List<GameObject>> onTransformChanged;
|
||||
|
||||
void Awake()
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
myHandler = GetInputHandler();
|
||||
}
|
||||
|
||||
private void Start()
|
||||
{
|
||||
rtgController = new RTGController();
|
||||
rtgController.onTransformBegin = OnTransformBegin;
|
||||
rtgController.onTransformChanged = OnTransformChangedFromRTG;
|
||||
uiLayer = LayerMask.NameToLayer("UI");
|
||||
//var inputManager = FindSingle<UserInputManager>();
|
||||
userInputManager = GameObject.FindAnyObjectByType<UserInputManager>();
|
||||
var statusPanel = GameObject.FindFirstObjectByType<ModePanel>();
|
||||
statusPanel.AddController(this);
|
||||
|
||||
selectIndex = 0;
|
||||
}
|
||||
|
||||
@@ -66,7 +57,7 @@ namespace XED.Util
|
||||
{
|
||||
return;
|
||||
}
|
||||
onDragBegin?.Invoke(clickBeginPos);
|
||||
EventConnector.instance.GetCanvas<Canvas_DragArea>().panel_draghandler.OnBeginDrag(clickBeginPos);
|
||||
}
|
||||
private void OnMousePointerUp()
|
||||
{
|
||||
@@ -86,14 +77,14 @@ namespace XED.Util
|
||||
EventSystem.current.RaycastAll(pointerData, raycastResults);
|
||||
if (raycastResults.Any(x => x.gameObject.layer == uiLayer))
|
||||
{
|
||||
onDragForceEnd?.Invoke();
|
||||
EventConnector.instance.GetCanvas<Canvas_DragArea>().panel_draghandler.ForceEndDrag();
|
||||
return;
|
||||
}
|
||||
//포인터 업 위치가 포인터 다운 위치에서 크게 벗어났을 경우는 클릭을 무시한다.
|
||||
if ((clickBeginPos - Input.mousePosition).magnitude > clickLengthThreshold)
|
||||
{
|
||||
DeselectAll();
|
||||
onDragEnd?.Invoke(Input.mousePosition);
|
||||
EventConnector.instance.GetCanvas<Canvas_DragArea>().panel_draghandler.OnEndDrag(Input.mousePosition);
|
||||
return;
|
||||
}
|
||||
List<CustomAssetRenderObject> raycastedTarget = new List<CustomAssetRenderObject>();
|
||||
@@ -149,7 +140,8 @@ namespace XED.Util
|
||||
ResetRTG();
|
||||
DeselectAll();
|
||||
}
|
||||
onDragForceEnd?.Invoke();
|
||||
|
||||
EventConnector.instance.GetCanvas<Canvas_DragArea>().panel_draghandler.ForceEndDrag();
|
||||
}
|
||||
public void DeselectAll()
|
||||
{
|
||||
@@ -158,13 +150,11 @@ namespace XED.Util
|
||||
return;
|
||||
}
|
||||
RemoveAllSelections();
|
||||
onDeselectAll?.Invoke();
|
||||
}
|
||||
|
||||
public void RemoveAll(List<ConnectedAsset> removeList)
|
||||
{
|
||||
CompletelyRemoveAllSelections(removeList);
|
||||
onDeselectAll?.Invoke();
|
||||
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||
canvas_Popup.panel_objectinfo.ResetObjectInfo();
|
||||
|
||||
ManagerHub.instance.Get<CustomAssetConnector>().OnDeselectAll();
|
||||
}
|
||||
|
||||
public void AddSelection(CustomAssetRenderObject item)
|
||||
@@ -207,7 +197,7 @@ namespace XED.Util
|
||||
{
|
||||
for (int i = 0; i < removeList.Count; i++)
|
||||
{
|
||||
Destroy(removeList[i].renderObject.gameObject);
|
||||
UnityEngine.GameObject.Destroy(removeList[i].renderObject.gameObject);
|
||||
}
|
||||
selectedRenderObjects.Clear();
|
||||
selectedGameObjects.Clear();
|
||||
@@ -221,24 +211,28 @@ namespace XED.Util
|
||||
}
|
||||
private void OnSelect()
|
||||
{
|
||||
onSelectObject?.Invoke(selectedRenderObjects);
|
||||
ManagerHub.instance.Get<CustomAssetConnector>().assetEventHandler.OnSelectObjectFromObjectHandler(selectedRenderObjects);
|
||||
rtgController.SetGizmoTargetObjects(selectedGameObjects);
|
||||
}
|
||||
public void ResetRTG()
|
||||
{
|
||||
rtgController.SetWorkGizmoId(RTGController.GizmoId.None);
|
||||
var command = new ResetGizmoCommand(rtgController);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
public void SetRTGMove()
|
||||
{
|
||||
rtgController.SetWorkGizmoId(RTGController.GizmoId.Move);
|
||||
var command = new ActivateMoveGizmoCommand(rtgController);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
public void SetRTGScale()
|
||||
{
|
||||
rtgController.SetWorkGizmoId(RTGController.GizmoId.Scale);
|
||||
var command = new ActivateScaleGizmoCommand(rtgController);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
public void SetRTGRotate()
|
||||
{
|
||||
rtgController.SetWorkGizmoId(RTGController.GizmoId.Rotate);
|
||||
var command = new ActivateRotateGizmoCommand(rtgController);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
public void OnTransformBegin()
|
||||
{
|
||||
@@ -247,8 +241,8 @@ namespace XED.Util
|
||||
public void OnTransformChangedFromRTG(List<GameObject> transformObjects)
|
||||
{
|
||||
OnTransformChanged(transformObjects);
|
||||
onTransformChanged?.Invoke(selectedGameObjects);
|
||||
onDragForceEnd?.Invoke();
|
||||
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectinfo.OnTransformChanged(transformObjects);
|
||||
EventConnector.instance.GetCanvas<Canvas_DragArea>().panel_draghandler.ForceEndDrag();
|
||||
}
|
||||
public void OnTransformChanged(List<GameObject> transformObjects)
|
||||
{
|
||||
@@ -264,14 +258,15 @@ namespace XED.Util
|
||||
public void RemoveItem()
|
||||
{
|
||||
if (selectedRenderObjects.Count == 0) return;
|
||||
onRemoveObject?.Invoke(selectedRenderObjects);
|
||||
|
||||
ManagerHub.instance.Get<CustomAssetConnector>().OnRemoveObject(selectedRenderObjects);
|
||||
}
|
||||
public void CopyItem()
|
||||
{
|
||||
if (selectedRenderObjects.Count == 0)
|
||||
return;
|
||||
|
||||
onCopyObject?.Invoke(selectedRenderObjects);
|
||||
ManagerHub.instance.Get<CustomAssetConnector>().OnCopyObject(selectedRenderObjects);
|
||||
}
|
||||
public void SaveItemsToCopy()
|
||||
{
|
||||
@@ -280,8 +275,9 @@ namespace XED.Util
|
||||
}
|
||||
public void CopySavedItems()
|
||||
{
|
||||
if (copyRenderObjects.Count == 0) return;
|
||||
onCopyObject?.Invoke(copyRenderObjects);
|
||||
if (copyRenderObjects.Count == 0)
|
||||
return;
|
||||
ManagerHub.instance.Get<CustomAssetConnector>().OnCopyObject(copyRenderObjects);
|
||||
}
|
||||
public void ResetGizmoTargetObjects()
|
||||
{
|
||||
@@ -293,7 +289,7 @@ namespace XED.Util
|
||||
{
|
||||
return;
|
||||
}
|
||||
onOrderByHierachy?.Invoke(selectedRenderObjects);
|
||||
ManagerHub.instance.Get<CustomAssetConnector>().OrderByHierarchy(selectedRenderObjects);
|
||||
List<CustomAssetRenderObject> objectsToAlign = new List<CustomAssetRenderObject>(selectedRenderObjects);
|
||||
List<Vector3> originalPos = objectsToAlign.Select(x => x.transform.position).ToList();
|
||||
|
||||
@@ -311,7 +307,7 @@ namespace XED.Util
|
||||
ActionCommand command = new ActionCommand(
|
||||
() => Align(objectsToAlign, primary, primaryDir, secondaryDir),
|
||||
() => UndoAlign(objectsToAlign, originalPos));
|
||||
CommandManager.I.ExecuteCommand(command);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
|
||||
|
||||
@@ -335,7 +331,8 @@ namespace XED.Util
|
||||
renderObject.transform.position = referencePoint + primaryDir * countP + secondaryDir * countS;
|
||||
renderObject.onTransformChanged?.Invoke();
|
||||
}
|
||||
onTransformChanged?.Invoke(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
|
||||
|
||||
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectinfo.OnTransformChanged(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
|
||||
}
|
||||
|
||||
private void UndoAlign(List<CustomAssetRenderObject> objectsToAlign, List<Vector3> originalPos)
|
||||
@@ -346,7 +343,7 @@ namespace XED.Util
|
||||
renderObject.transform.position = originalPos[i];
|
||||
renderObject.onTransformChanged?.Invoke();
|
||||
}
|
||||
onTransformChanged?.Invoke(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
|
||||
EventConnector.instance.GetCanvas<Canvas_Popup>().panel_objectinfo.OnTransformChanged(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
|
||||
}
|
||||
public void VertexSnap()
|
||||
{
|
||||
@@ -419,7 +416,7 @@ namespace XED.Util
|
||||
{
|
||||
fromObject.transform.position -= dir[0];
|
||||
});
|
||||
CommandManager.I.ExecuteCommand(command);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -428,12 +425,12 @@ namespace XED.Util
|
||||
|
||||
public void StatusEnterEvent()
|
||||
{
|
||||
FindSingle<UserInputManager>().SetHandler(myHandler);
|
||||
userInputManager.SetHandler(myHandler);
|
||||
}
|
||||
|
||||
public void StatusExitEvent()
|
||||
{
|
||||
FindSingle<UserInputManager>().RemoveHandler(myHandler);
|
||||
userInputManager .RemoveHandler(myHandler);
|
||||
}
|
||||
|
||||
public InputHandler GetInputHandler()
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2c4ff86506de88747baaf66d9d637c5b
|
||||
PrefabImporter:
|
||||
guid: 553a24c445d45734e93db3694688a065
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
@@ -0,0 +1,35 @@
|
||||
using System.IO;
|
||||
using UnityEngine;
|
||||
using XED.Command;
|
||||
|
||||
namespace XED
|
||||
{
|
||||
public class MoveToTargetCommand : IIrreversibleCommand
|
||||
{
|
||||
private Transform target;
|
||||
private Vector3 viewAngle;
|
||||
private float cameraDistance;
|
||||
|
||||
public MoveToTargetCommand(Transform target, Vector3 viewAngle, float cameraDistance)
|
||||
{
|
||||
this.target = target;
|
||||
this.viewAngle = viewAngle;
|
||||
this.cameraDistance = cameraDistance;
|
||||
}
|
||||
|
||||
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
|
||||
|
||||
public bool CanExecute()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
Camera.main.transform.rotation = Quaternion.Euler(viewAngle);
|
||||
|
||||
Camera.main.transform.position = target.position;
|
||||
Camera.main.transform.position += -Camera.main.transform.forward * cameraDistance;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: af71595b728196a4391585fa1be345c8
|
||||
@@ -2,6 +2,7 @@ using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using XED.Asset;
|
||||
using XED.HierarchyTree;
|
||||
using XED.Manage;
|
||||
using XED.Util;
|
||||
|
||||
namespace XED.Command
|
||||
@@ -45,8 +46,10 @@ namespace XED.Command
|
||||
copyAsset.renderObject.transform.position = copySource.renderObject.transform.position;
|
||||
copyAsset.renderObject.transform.rotation = copySource.renderObject.transform.rotation;
|
||||
copyAsset.renderObject.transform.localScale = copySource.renderObject.transform.localScale;
|
||||
copyAsset.renderObject.OnOverlabBegin += connector.interferedObjectManager.AddInterferedPair;
|
||||
copyAsset.renderObject.OnOverlabEnd += connector.interferedObjectManager.RemoveInterferedPair;
|
||||
|
||||
List<Transform> lastParent = new List<Transform>();
|
||||
List <Transform> lastParent = new List<Transform>();
|
||||
for (int j = 0; j < copyAsset.hierarchyItem.layerNum + 1; j++)
|
||||
{
|
||||
lastParent.Add(copyAsset.renderObject.transform);
|
||||
@@ -64,12 +67,15 @@ namespace XED.Command
|
||||
childAsset.renderObject = copyChildObject.GetComponent<CustomAssetRenderObject>();
|
||||
childAsset.renderObject.getBounds = childAsset.assetData.GetCombinedBoundary;
|
||||
childAsset.renderObject.onTransformChanged = childAsset.assetData.OnTransformDataChanged;
|
||||
childAsset.renderObject.instantiateObject = copySource.assetData.InstantiateLoadedObject;
|
||||
childAsset.renderObject.instantiateObject = childSource.assetData.InstantiateLoadedObject;
|
||||
childAsset.renderObject.CreateRenderObject();
|
||||
childAsset.renderObject.transform.position = childSource.renderObject.transform.position;
|
||||
childAsset.renderObject.transform.rotation = childSource.renderObject.transform.rotation;
|
||||
childAsset.renderObject.transform.localScale = childSource.renderObject.transform.localScale;
|
||||
childAsset.renderObject.transform.parent = lastParent[childAsset.hierarchyItem.layerNum - 1];
|
||||
childAsset.renderObject.OnOverlabBegin += connector.interferedObjectManager.AddInterferedPair;
|
||||
childAsset.renderObject.OnOverlabEnd += connector.interferedObjectManager.RemoveInterferedPair;
|
||||
|
||||
if (lastParent.Count <= childAsset.hierarchyItem.layerNum)
|
||||
{
|
||||
lastParent.Add(childAsset.renderObject.transform);
|
||||
@@ -116,7 +122,10 @@ namespace XED.Command
|
||||
searchAsset.renderObject.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
connector.onRemoveObjects?.Invoke();
|
||||
ManagerHub.instance.Get<RenderObjectHandler>().DeselectAll();
|
||||
var canvas = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||
canvas.panel_objectinfo.ResetObjectInfo();
|
||||
//connector.onRemoveObjects?.Invoke();
|
||||
connector.componentScrollView.DeselectAll();
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2d670e3279ac3324bba323ab3ed2bef9
|
||||
PrefabImporter:
|
||||
guid: 0344068c97e98f2499c3ef328e804d1c
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
@@ -0,0 +1,94 @@
|
||||
using System.Collections;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
using XED.Asset;
|
||||
using XED.Manage;
|
||||
using XED.Repositories;
|
||||
using XED.Util;
|
||||
|
||||
namespace XED.Command
|
||||
{
|
||||
public class LoadLocalModelDataCommand : IIrreversibleCommand
|
||||
{
|
||||
private SaveData saveData;
|
||||
private CustomAssetDataRepository dataRepo;
|
||||
private Transform fbxAnchor;
|
||||
private SharedMaterial sharedMaterial;
|
||||
|
||||
float loadTime = 0f;
|
||||
|
||||
public LoadLocalModelDataCommand(SaveData saveData, CustomAssetDataRepository dataRepo, Transform fbxAnchor, SharedMaterial sharedMaterial)
|
||||
{
|
||||
this.saveData = saveData;
|
||||
this.dataRepo = dataRepo;
|
||||
this.fbxAnchor = fbxAnchor;
|
||||
this.sharedMaterial = sharedMaterial;
|
||||
}
|
||||
|
||||
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
|
||||
|
||||
public bool CanExecute()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
for (int i = 0; i < saveData.modelDatas.Length; i++)
|
||||
{
|
||||
CoroutineRunner.instance.StartCoroutine(LoadModelData(i));
|
||||
}
|
||||
}
|
||||
|
||||
IEnumerator LoadModelData(int index)
|
||||
{
|
||||
if (!LoadSaveData(saveData, index))
|
||||
yield break;
|
||||
|
||||
loadTime += Time.deltaTime;
|
||||
if (loadTime > 1f / 30f)
|
||||
{
|
||||
loadTime = 0f;
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
|
||||
bool LoadSaveData(SaveData saveData, int index)
|
||||
{
|
||||
var modelData = saveData.modelDatas[index];
|
||||
string assetName = modelData.attributes.FirstOrDefault(x => x[0].Equals("assetName"))?[1];
|
||||
|
||||
if (dataRepo.TryGetDataFromName(assetName, out var p))
|
||||
return false;
|
||||
|
||||
string folderName = modelData.attributes.FirstOrDefault(x => x[0].Equals("folderName"))?[1];
|
||||
string createDate = modelData.attributes.FirstOrDefault(x => x[0].Equals("createDate"))?[1];
|
||||
string lastRevisionDate = modelData.attributes.FirstOrDefault(x => x[0].Equals("lastRevisionDate"))?[1];
|
||||
string uploadDate = modelData.attributes.FirstOrDefault(x => x[0].Equals("uploadDate"))?[1];
|
||||
string creator = modelData.attributes.FirstOrDefault(x => x[0].Equals("creator"))?[1];
|
||||
string manager = modelData.attributes.FirstOrDefault(x => x[0].Equals("manager"))?[1];
|
||||
|
||||
Texture2D thumbnail = new Texture2D(1, 1);
|
||||
thumbnail.LoadImage(saveData.thumbnailDatas[index].data);
|
||||
GameObject newObject = new GameObject(assetName);
|
||||
newObject.transform.parent = fbxAnchor;
|
||||
CustomAssetData assetData = newObject.AddComponent<CustomAssetData>();
|
||||
assetData.assetName = assetName;
|
||||
assetData.folderName = folderName;
|
||||
assetData.createDate = createDate;
|
||||
assetData.LastRevisionDate = lastRevisionDate;
|
||||
assetData.UploadDate = uploadDate;
|
||||
assetData.Creator = creator;
|
||||
assetData.Manager = manager;
|
||||
assetData.loadedObject = modelData.LoadModelData(sharedMaterial);
|
||||
assetData.thumbnail = thumbnail;
|
||||
assetData.OnLoadComplete();
|
||||
|
||||
dataRepo.Add(assetData);
|
||||
//listAssets.Add(assetData);
|
||||
ManagerHub.instance.Get<CustomAssetConnector>().assetDataHandler.OnLoadFbxFile(assetData.assetName, assetData.folderName, assetData);
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 34c7091e151c4654f80f16448c43f36d
|
||||
@@ -0,0 +1,50 @@
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using XED.Manage;
|
||||
|
||||
namespace XED.Command
|
||||
{
|
||||
public class LoadLocalTextureDataCommand : IIrreversibleCommand
|
||||
{
|
||||
private SharedMaterial sharedMaterial;
|
||||
private TextureData[] textureData;
|
||||
|
||||
float loadTime = 0f;
|
||||
|
||||
public LoadLocalTextureDataCommand(SharedMaterial sharedMaterial, TextureData[] textureData)
|
||||
{
|
||||
this.sharedMaterial = sharedMaterial;
|
||||
this.textureData = textureData;
|
||||
}
|
||||
|
||||
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
|
||||
|
||||
public bool CanExecute()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
foreach (var tex in textureData)
|
||||
{
|
||||
CoroutineRunner.instance.StartCoroutine(LoadTextureData(tex));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
IEnumerator LoadTextureData(TextureData texData)
|
||||
{
|
||||
sharedMaterial.AddTextureData(texData);
|
||||
|
||||
loadTime += Time.deltaTime;
|
||||
if (loadTime > 1f / 30f)
|
||||
{
|
||||
loadTime = 0f;
|
||||
yield return null;
|
||||
}
|
||||
|
||||
// yield return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 243104ea078b0364e811f6803ef3b3b2
|
||||
8
Assets/Scripts/Studio/Command/GizmoCommand.meta
Normal file
8
Assets/Scripts/Studio/Command/GizmoCommand.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 58c7bd081b97acf42a09b5b4ef1d3fad
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,26 @@
|
||||
using XED.RuntimeGizmo;
|
||||
|
||||
namespace XED.Command
|
||||
{
|
||||
public class ActivateMoveGizmoCommand : IIrreversibleCommand
|
||||
{
|
||||
private RTGController rtgController;
|
||||
|
||||
public ActivateMoveGizmoCommand(RTGController rtgController)
|
||||
{
|
||||
this.rtgController = rtgController;
|
||||
}
|
||||
|
||||
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
|
||||
|
||||
public bool CanExecute()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
rtgController.SetWorkGizmoId(RTGController.GizmoId.Move);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 96806282dbad1954fb33e13354823e92
|
||||
@@ -0,0 +1,26 @@
|
||||
using XED.RuntimeGizmo;
|
||||
|
||||
namespace XED.Command
|
||||
{
|
||||
public class ActivateRotateGizmoCommand : IIrreversibleCommand
|
||||
{
|
||||
private RTGController rtgController;
|
||||
|
||||
public ActivateRotateGizmoCommand(RTGController rtgController)
|
||||
{
|
||||
this.rtgController = rtgController;
|
||||
}
|
||||
|
||||
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
|
||||
|
||||
public bool CanExecute()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
rtgController.SetWorkGizmoId(RTGController.GizmoId.Rotate);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: b70e099d374f64847834ff12c191bd91
|
||||
@@ -0,0 +1,26 @@
|
||||
using XED.RuntimeGizmo;
|
||||
|
||||
namespace XED.Command
|
||||
{
|
||||
public class ActivateScaleGizmoCommand : IIrreversibleCommand
|
||||
{
|
||||
private RTGController rtgController;
|
||||
|
||||
public ActivateScaleGizmoCommand(RTGController rtgController)
|
||||
{
|
||||
this.rtgController = rtgController;
|
||||
}
|
||||
|
||||
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
|
||||
|
||||
public bool CanExecute()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
rtgController.SetWorkGizmoId(RTGController.GizmoId.Scale);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 8959657a6330abd448297620191164d5
|
||||
@@ -0,0 +1,26 @@
|
||||
using XED.RuntimeGizmo;
|
||||
|
||||
namespace XED.Command
|
||||
{
|
||||
public class ResetGizmoCommand : IIrreversibleCommand
|
||||
{
|
||||
private RTGController rtgController;
|
||||
|
||||
public ResetGizmoCommand(RTGController rtgController)
|
||||
{
|
||||
this.rtgController = rtgController;
|
||||
}
|
||||
|
||||
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
|
||||
|
||||
public bool CanExecute()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
rtgController.SetWorkGizmoId(RTGController.GizmoId.None);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 6d2c3f6f335592d4e888a96dbd9903d3
|
||||
8
Assets/Scripts/Studio/Command/ProjectCommand.meta
Normal file
8
Assets/Scripts/Studio/Command/ProjectCommand.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cee17c4be8819da47a5eb95110ec3455
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -0,0 +1,62 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using XED.Asset;
|
||||
using XED.HierarchyTree;
|
||||
using XED.Util;
|
||||
|
||||
namespace XED.Command
|
||||
{
|
||||
public class LoadProjectCommand : IIrreversibleCommand
|
||||
{
|
||||
private List<AssetData> assets;
|
||||
private CustomAssetConnector connector;
|
||||
|
||||
Dictionary<int, HierarchyItem> itemDict = new Dictionary<int, HierarchyItem>();
|
||||
|
||||
public LoadProjectCommand(List<AssetData> assets, CustomAssetConnector connector)
|
||||
{
|
||||
this.assets = assets;
|
||||
this.connector = connector;
|
||||
}
|
||||
|
||||
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
|
||||
|
||||
public bool CanExecute()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
foreach (AssetData asset in assets)
|
||||
{
|
||||
LoadAsset(asset);
|
||||
}
|
||||
|
||||
foreach (AssetData asset in assets)
|
||||
{
|
||||
RestoreHierarchy(asset);
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadAsset(AssetData asset)
|
||||
{
|
||||
connector.OnLoadAsset(asset);
|
||||
itemDict.Add(asset.id, connector.connectedAssets.Last().hierarchyItem);
|
||||
}
|
||||
|
||||
private void RestoreHierarchy(AssetData asset)
|
||||
{
|
||||
foreach (int id in asset.children)
|
||||
{
|
||||
HierarchyItem parent = itemDict[asset.id];
|
||||
HierarchyItem child = itemDict[id];
|
||||
|
||||
if (parent == null || child == null)
|
||||
continue;
|
||||
|
||||
connector.OnRestoreHierarchy(parent, child);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 58dff3fed88a2eb4fab1bc8116f0c170
|
||||
@@ -0,0 +1,27 @@
|
||||
using XED.Asset;
|
||||
|
||||
namespace XED.Command
|
||||
{
|
||||
public class NewProjectCommand : IIrreversibleCommand
|
||||
{
|
||||
CustomAssetConnector connector;
|
||||
|
||||
public NewProjectCommand(CustomAssetConnector connector)
|
||||
{
|
||||
this.connector = connector;
|
||||
}
|
||||
|
||||
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
|
||||
|
||||
public bool CanExecute()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
connector.ClearObjects();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 16f7564790f59584283a83911585ada8
|
||||
@@ -0,0 +1,36 @@
|
||||
using Newtonsoft.Json;
|
||||
using System.IO;
|
||||
using XED.Command;
|
||||
using XED.Util;
|
||||
|
||||
namespace XED
|
||||
{
|
||||
public class SaveProjectCommand : IIrreversibleCommand
|
||||
{
|
||||
private string projectPath;
|
||||
private ProjectData projectData;
|
||||
|
||||
|
||||
public SaveProjectCommand(string projectPath, ProjectData projectData)
|
||||
{
|
||||
this.projectPath = projectPath;
|
||||
this.projectData = projectData;
|
||||
}
|
||||
|
||||
public string id { get => throw new System.NotImplementedException(); set => throw new System.NotImplementedException(); }
|
||||
|
||||
public bool CanExecute()
|
||||
{
|
||||
throw new System.NotImplementedException();
|
||||
}
|
||||
|
||||
public void Execute()
|
||||
{
|
||||
string json = JsonConvert.SerializeObject(projectData);
|
||||
FileStream fs = new FileStream(projectPath, FileMode.Create, FileAccess.Write);
|
||||
StreamWriter writer = new StreamWriter(fs, System.Text.Encoding.Unicode);
|
||||
writer.Write(json);
|
||||
writer.Close();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 91703b89f5f43354d9d896c2f4b8dcde
|
||||
@@ -1,6 +1,8 @@
|
||||
using System.Collections.Generic;
|
||||
using XED.Asset;
|
||||
using XED.HierarchyTree;
|
||||
using XED.Manage;
|
||||
using XED.Util;
|
||||
|
||||
namespace XED.Command
|
||||
{
|
||||
@@ -10,7 +12,11 @@ namespace XED.Command
|
||||
private List<int> siblingIndex;
|
||||
private CustomAssetConnector connector;
|
||||
|
||||
public RemoveObjectCommand(List<ConnectedAsset> removeList, List<int> siblingIndex, CustomAssetConnector connector)
|
||||
public RemoveObjectCommand(
|
||||
List<ConnectedAsset> removeList,
|
||||
List<int> siblingIndex,
|
||||
CustomAssetConnector connector
|
||||
)
|
||||
{
|
||||
this.removeList = removeList;
|
||||
this.siblingIndex = siblingIndex;
|
||||
@@ -40,7 +46,11 @@ namespace XED.Command
|
||||
searchAsset.renderObject.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
connector.onRemoveObjects?.Invoke();
|
||||
//connector.onRemoveObjects?.Invoke();
|
||||
ManagerHub.instance.Get<RenderObjectHandler>().DeselectAll();
|
||||
var canvas = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||
canvas.panel_objectinfo.ResetObjectInfo();
|
||||
|
||||
connector.componentScrollView.DeselectAll();
|
||||
}
|
||||
|
||||
8
Assets/Scripts/Studio/Core.meta
Normal file
8
Assets/Scripts/Studio/Core.meta
Normal file
@@ -0,0 +1,8 @@
|
||||
fileFormatVersion: 2
|
||||
guid: eefa95bccca3b324db3ce4c6b1d4ee44
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
53
Assets/Scripts/Studio/Core/CommandInvoker.cs
Normal file
53
Assets/Scripts/Studio/Core/CommandInvoker.cs
Normal file
@@ -0,0 +1,53 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using XED.Core;
|
||||
using XED.Interfaces;
|
||||
using XED.Manage;
|
||||
|
||||
namespace XED.Command
|
||||
{
|
||||
public class CommandInvoker: IInputHandler
|
||||
{
|
||||
public static CommandInvoker instance => SystemMain.instance.commandInvoker;
|
||||
|
||||
Stack<ICommand> commandStack = new();
|
||||
Stack<IReversibleCommand> undoableStack = new ();
|
||||
public void Invoke(IReversibleCommand command)
|
||||
{
|
||||
command.Execute();
|
||||
commandStack.Push(command);
|
||||
undoableStack.Push(command);
|
||||
}
|
||||
|
||||
public void Invoke(IIrreversibleCommand command)
|
||||
{
|
||||
command.Execute();
|
||||
commandStack.Push(command);
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
if (undoableStack.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
var command = undoableStack.Pop();
|
||||
command.Undo();
|
||||
}
|
||||
|
||||
public void Redo()
|
||||
{
|
||||
|
||||
}
|
||||
public InputHandler GetInputHandler()
|
||||
{
|
||||
var shortcutTable = new Dictionary<KeyCode, Dictionary<KeyCode, Action>>();
|
||||
shortcutTable.Add(KeyCode.LeftControl, new Dictionary<KeyCode, Action>());
|
||||
shortcutTable[KeyCode.LeftControl].Add(KeyCode.Z, Undo);
|
||||
shortcutTable[KeyCode.LeftControl].Add(KeyCode.X, Redo);
|
||||
var handler = new InputHandler(null, null, null, shortcutTable);
|
||||
return handler;
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/Studio/Core/CommandInvoker.cs.meta
Normal file
2
Assets/Scripts/Studio/Core/CommandInvoker.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 460b7535dba2a4347a78cc24adcdee96
|
||||
21
Assets/Scripts/Studio/Core/SystemMain.cs
Normal file
21
Assets/Scripts/Studio/Core/SystemMain.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using XED.Asset;
|
||||
using XED.Command;
|
||||
using XED.Manage;
|
||||
|
||||
namespace XED.Core
|
||||
{
|
||||
public class SystemMain : UnitySingleton<SystemMain>
|
||||
{
|
||||
public CommandInvoker commandInvoker
|
||||
{
|
||||
get;
|
||||
private set;
|
||||
} = new CommandInvoker();
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
ManagerHub.instance.Init();
|
||||
EventConnector.instance.Init();
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/Studio/Core/SystemMain.cs.meta
Normal file
2
Assets/Scripts/Studio/Core/SystemMain.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 2778cc56cc78c8a46846112e3aad69d2
|
||||
@@ -5,7 +5,7 @@ namespace XED.Core
|
||||
{
|
||||
public abstract class UnitySingleton<T> : UnityEngine.MonoBehaviour where T : UnitySingleton<T>
|
||||
{
|
||||
private static T instance;
|
||||
private static T _instance;
|
||||
private static object _lock = new object();
|
||||
protected static bool applicationIsQuitting = false;
|
||||
public static bool IsApplicationQuitting
|
||||
@@ -16,7 +16,7 @@ namespace XED.Core
|
||||
}
|
||||
}
|
||||
|
||||
public static T I
|
||||
public static T instance
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -30,19 +30,19 @@ namespace XED.Core
|
||||
|
||||
lock (_lock)
|
||||
{
|
||||
if (instance == null)
|
||||
if (_instance == null)
|
||||
{
|
||||
instance = FindFirstObjectByType(typeof(T)) as T;
|
||||
if (instance == null)
|
||||
_instance = FindFirstObjectByType(typeof(T)) as T;
|
||||
if (_instance == null)
|
||||
{
|
||||
GameObject singleton = new GameObject(typeof(T).Name);
|
||||
instance = singleton.AddComponent<T>();
|
||||
instance.Init();
|
||||
instance.name = typeof(T).ToString();
|
||||
DontDestroyOnLoad(instance.gameObject);
|
||||
_instance = singleton.AddComponent<T>();
|
||||
//_instance.Init();
|
||||
_instance.name = typeof(T).ToString();
|
||||
DontDestroyOnLoad(_instance.gameObject);
|
||||
}
|
||||
}
|
||||
return instance;
|
||||
return _instance;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -51,12 +51,12 @@ namespace XED.Core
|
||||
{
|
||||
lock (_lock)
|
||||
{
|
||||
if (instance == null)
|
||||
if (_instance == null)
|
||||
{
|
||||
instance = this as T;
|
||||
_instance = this as T;
|
||||
|
||||
}
|
||||
else if (instance != this)
|
||||
else if (_instance != this)
|
||||
{
|
||||
Debug.LogError(this.name + " Destroy !!!");
|
||||
Destroy(this.gameObject);
|
||||
@@ -65,10 +65,6 @@ namespace XED.Core
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void Init()
|
||||
{
|
||||
}
|
||||
|
||||
protected virtual void OnApplicationQuit()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
@@ -77,29 +73,4 @@ namespace XED.Core
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
public abstract class ISingleton<T> where T : class, new()
|
||||
{
|
||||
static volatile T instance = default(T);
|
||||
static readonly object padlock = new object();
|
||||
protected ISingleton()
|
||||
{
|
||||
}
|
||||
public static T I
|
||||
{
|
||||
get
|
||||
{
|
||||
lock (padlock)
|
||||
{
|
||||
if (instance == null)
|
||||
{
|
||||
instance = new T();
|
||||
(instance as ISingleton<T>).Init();
|
||||
}
|
||||
return instance;
|
||||
}
|
||||
}
|
||||
}
|
||||
public virtual void Init() { }
|
||||
}
|
||||
}
|
||||
34
Assets/Scripts/Studio/DataStructures/Enums.cs
Normal file
34
Assets/Scripts/Studio/DataStructures/Enums.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using UnityEngine;
|
||||
|
||||
namespace XED
|
||||
{
|
||||
public static class Enums
|
||||
{
|
||||
public enum NodeSelectMode
|
||||
{
|
||||
Idle,
|
||||
Draw,
|
||||
SelectRunNode,
|
||||
Select,
|
||||
Setting
|
||||
}
|
||||
|
||||
public enum VirtualPoint
|
||||
{
|
||||
LeftTop,
|
||||
LeftBottom,
|
||||
RightTop,
|
||||
RightBottom,
|
||||
LeftCenter,
|
||||
RightCenter,
|
||||
}
|
||||
|
||||
public enum BuilderState
|
||||
{
|
||||
None,
|
||||
PointModfiy,
|
||||
PointRemove,
|
||||
Drawing
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/Studio/DataStructures/Enums.cs.meta
Normal file
2
Assets/Scripts/Studio/DataStructures/Enums.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ca60beab57bc28c4ba8d59f3593937b2
|
||||
@@ -5,9 +5,9 @@ using TriLibCore.Dae.Schema;
|
||||
using UnityEngine;
|
||||
using XRLib;
|
||||
|
||||
namespace XED
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class MeshCreator : MonoBehaviour,ISingle
|
||||
public class MeshCreator : Manager
|
||||
{
|
||||
Vector3[] vertices;
|
||||
int[] triangles;
|
||||
@@ -15,6 +15,11 @@ namespace XED
|
||||
private MeshFilter meshfilter;
|
||||
//private Vector3 offset = Vector3.zero;
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void MeshDeformer<T>(HashSet<T> type)
|
||||
{
|
||||
if(type is HashSet<Floor>)
|
||||
|
||||
@@ -5,7 +5,7 @@ using System.Linq;
|
||||
using System.Security.Cryptography;
|
||||
using UnityEngine;
|
||||
using XRLib;
|
||||
using static XED.WallBuilder;
|
||||
using static XED.Enums;
|
||||
using Color = UnityEngine.Color;
|
||||
|
||||
namespace XED
|
||||
|
||||
@@ -9,28 +9,13 @@ using XRLib;
|
||||
using XED.Interfaces;
|
||||
using XED.Manage;
|
||||
using XED.RuntimeGizmo;
|
||||
using Object = UnityEngine.Object;
|
||||
using static XED.Enums;
|
||||
|
||||
namespace XED
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class WallBuilder : MonoBehaviour, ISingle, IInputHandler, IModeController
|
||||
public class WallBuilder : Manager, IInputHandler, IModeController
|
||||
{
|
||||
public enum VirtualPoint
|
||||
{
|
||||
LeftTop,
|
||||
LeftBottom,
|
||||
RightTop,
|
||||
RightBottom,
|
||||
LeftCenter,
|
||||
RightCenter,
|
||||
}
|
||||
public enum BuilderState
|
||||
{
|
||||
None,
|
||||
PointModfiy,
|
||||
PointRemove,
|
||||
Drawing
|
||||
}
|
||||
|
||||
public float thickness;
|
||||
private GameObject renderParent;
|
||||
private Material lineMat;
|
||||
@@ -69,6 +54,9 @@ namespace XED
|
||||
|
||||
internal event Action onDrawStart;
|
||||
private MeshCreator meshCreator;
|
||||
private UserInputManager userInputManager;
|
||||
private Raycaster raycaster;
|
||||
|
||||
public class Group
|
||||
{
|
||||
public List<LinePoint> points = new();
|
||||
@@ -81,7 +69,8 @@ namespace XED
|
||||
wallLines.Add(wallLine);
|
||||
}
|
||||
}
|
||||
public override void AfterAwake()
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
renderParent = new GameObject("LineRenderParent");
|
||||
lineMat = Resources.Load<Material>("Materials/Mat_LineRender");
|
||||
@@ -90,7 +79,9 @@ namespace XED
|
||||
prf_Wall = Resources.Load<Wall>("Prefabs/PRF_Wall");
|
||||
prf_WallGroup = Resources.Load<WallGroup>("Prefabs/PRF_WallGroup");
|
||||
|
||||
meshCreator = FindSingle<MeshCreator>();
|
||||
meshCreator = ManagerHub.instance.Get<MeshCreator>();
|
||||
userInputManager = GameObject.FindAnyObjectByType<UserInputManager>();
|
||||
raycaster = GameObject.FindAnyObjectByType<Raycaster>();
|
||||
handler = GetInputHandler();
|
||||
}
|
||||
|
||||
@@ -146,14 +137,14 @@ namespace XED
|
||||
{
|
||||
//ToDo..연결된 포인트가 없는 Point찾아서 제거
|
||||
DisconnectLine(removeWalls[i]);
|
||||
Destroy(removeWalls[i].gameObject);
|
||||
Object.Destroy(removeWalls[i].gameObject);
|
||||
}
|
||||
Remove(lp);
|
||||
}
|
||||
|
||||
public LinePoint CreateLinePoint(Vector3 pos)
|
||||
{
|
||||
var result = Instantiate(prf_LinePoint);
|
||||
var result = Object.Instantiate(prf_LinePoint);
|
||||
result.transform.SetParent(renderParent.transform);
|
||||
result.name = cc++.ToString();
|
||||
result.transform.position = pos;
|
||||
@@ -175,7 +166,7 @@ namespace XED
|
||||
|
||||
private Wall CreateWall(LinePoint lcp, LinePoint rcp)
|
||||
{
|
||||
var result = Instantiate(prf_Wall);
|
||||
var result = Object.Instantiate(prf_Wall);
|
||||
result.Generate(lcp, rcp, lineMat, thickness);
|
||||
result.name = "WallLine" + index++;
|
||||
walls.Add(result);
|
||||
@@ -339,7 +330,7 @@ namespace XED
|
||||
{
|
||||
linePoints.Remove(lp);
|
||||
pointToWall.Remove(lp);
|
||||
Destroy(lp.gameObject);
|
||||
Object.Destroy(lp.gameObject);
|
||||
}
|
||||
|
||||
void BuildWall(Vector3 endPos)
|
||||
@@ -426,7 +417,7 @@ namespace XED
|
||||
pointToWall.Remove(rcp);
|
||||
}
|
||||
wall.Deselect();
|
||||
Destroy(wall.gameObject);
|
||||
Object.Destroy(wall.gameObject);
|
||||
}
|
||||
|
||||
Wall BuildContinuesWall(Vector3 p)
|
||||
@@ -684,7 +675,7 @@ namespace XED
|
||||
|
||||
private WallGroup CreateWallGroup()
|
||||
{
|
||||
var group = Instantiate(prf_WallGroup);
|
||||
var group = Object.Instantiate(prf_WallGroup);
|
||||
|
||||
groupTable.Add(group, new());
|
||||
wallgroups.Add(group);
|
||||
@@ -996,21 +987,19 @@ namespace XED
|
||||
|
||||
public void StatusEnterEvent()
|
||||
{
|
||||
var raycaster = FindSingle<Raycaster>();
|
||||
raycaster.AddEvent(Raycaster.EventType.FirstStay, typeof (Map), OnStayMap);
|
||||
raycaster.AddEvent(Raycaster.EventType.FirstClick, typeof(Map), OnClickMap);
|
||||
raycaster.AddEvent(Raycaster.EventType.FirstClick, typeof(LinePoint), OnClickLinePoint);
|
||||
raycaster.AddEvent(Raycaster.EventType.FirstClick, typeof(LinePoint), OnClickLinePoint);
|
||||
|
||||
FindSingle<UserInputManager>().SetHandler(handler);
|
||||
userInputManager.SetHandler(handler);
|
||||
}
|
||||
|
||||
public void StatusExitEvent()
|
||||
{
|
||||
var raycaster = FindSingle<Raycaster>();
|
||||
raycaster.RemoveEvent(Raycaster.EventType.FirstStay, typeof(Map), OnStayMap);
|
||||
raycaster.RemoveEvent(Raycaster.EventType.FirstClick, typeof(Map), OnClickMap);
|
||||
raycaster.RemoveEvent(Raycaster.EventType.FirstClick, typeof(LinePoint), OnClickLinePoint);
|
||||
FindSingle<UserInputManager>().RemoveHandler(handler);
|
||||
userInputManager.RemoveHandler(handler);
|
||||
}
|
||||
|
||||
void Pointing()
|
||||
@@ -1026,7 +1015,7 @@ namespace XED
|
||||
linePoints.Remove(handlePoint);
|
||||
pointToWall.Remove(handlePoint);
|
||||
handlePoint.Release();
|
||||
Destroy(handlePoint.gameObject);
|
||||
Object.Destroy(handlePoint.gameObject);
|
||||
}
|
||||
|
||||
if (pilePoint != null)
|
||||
@@ -1044,7 +1033,7 @@ namespace XED
|
||||
{
|
||||
walls.Remove(tempWall);
|
||||
tempWall.Release();
|
||||
Destroy(tempWall.gameObject);
|
||||
Object.Destroy(tempWall.gameObject);
|
||||
}
|
||||
|
||||
tempWall = null;
|
||||
|
||||
@@ -1,16 +1,23 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using XED.VirtualFactory;
|
||||
using XRLib;
|
||||
|
||||
namespace XED.VirtualFactory
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class AGVManager : MonoBehaviour, ISingle
|
||||
public class AGVManager : Manager
|
||||
{
|
||||
public AGV prf_AGV;
|
||||
public AGVSpec prf_Spec;
|
||||
public HashSet<AGV> agvs = new();
|
||||
public bool autoIndexing;
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public bool TryGetIdleAGV(out AGV result)
|
||||
{
|
||||
//Debug.Log($"Try Get Idle AGV");
|
||||
@@ -30,7 +37,7 @@ namespace XED.VirtualFactory
|
||||
|
||||
public AGV CreateEmptyAGV()
|
||||
{
|
||||
var agv = Instantiate(prf_AGV);
|
||||
var agv = UnityEngine.Object.Instantiate(prf_AGV);
|
||||
agvs.Add(agv);
|
||||
|
||||
if (autoIndexing)
|
||||
|
||||
@@ -1,10 +1,10 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using XRLib;
|
||||
using XED.VirtualFactory;
|
||||
|
||||
namespace XED.VirtualFactory
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class AGVNodeLinkManager : MonoBehaviour,ISingle
|
||||
public class AGVNodeLinkManager : Manager
|
||||
{
|
||||
public HashSet<Pair<AGVNode>> linkedNode = new HashSet<Pair<AGVNode>>();
|
||||
private Dictionary<Pair<AGVNode>, GameObject> lineObjects = new Dictionary<Pair<AGVNode>, GameObject>();
|
||||
@@ -14,6 +14,11 @@ namespace XED.VirtualFactory
|
||||
[SerializeField]
|
||||
Material lineMat;
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public void AddLines(List<AGVNode> nodeList)
|
||||
{
|
||||
for (int i = 0; i < nodeList.Count; i++)
|
||||
@@ -100,7 +105,7 @@ namespace XED.VirtualFactory
|
||||
{
|
||||
if (lineObjects.ContainsKey(pair))
|
||||
{
|
||||
Destroy(lineObjects[pair]);
|
||||
Object.Destroy(lineObjects[pair]);
|
||||
lineObjects.Remove(pair);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -1,27 +1,20 @@
|
||||
using Newtonsoft.Json;
|
||||
using Ookii.Dialogs;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Runtime.CompilerServices;
|
||||
using TriLibCore.SFB;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using XRLib;
|
||||
using XED.Interfaces;
|
||||
using XED.Manage;
|
||||
using XED.VirtualFactory;
|
||||
using XED.Asset;
|
||||
using Object = UnityEngine.Object;
|
||||
using static XED.Enums;
|
||||
|
||||
namespace XED.VirtualFactory
|
||||
namespace XED.Manage
|
||||
{
|
||||
public enum NodeSelectMode
|
||||
{
|
||||
Idle,
|
||||
Draw,
|
||||
SelectRunNode,
|
||||
Select,
|
||||
Setting
|
||||
}
|
||||
public class AGVNodeManager : MonoBehaviour, ISingle, IModeController, IInputHandler
|
||||
|
||||
public class AGVNodeManager : Manager, IModeController, IInputHandler
|
||||
{
|
||||
[SerializeField]
|
||||
GameObject nodePrefab;
|
||||
@@ -50,14 +43,18 @@ namespace XED.VirtualFactory
|
||||
List<AGVNode> selectedNodeSequence = new List<AGVNode>();
|
||||
InputHandler myHandler;
|
||||
NodeGizmoController nodeGizmoController;
|
||||
UserInputManager userInputManager;
|
||||
Raycaster raycaster;
|
||||
|
||||
public ModePanel.ProgramMode mode => ModePanel.ProgramMode.AGVPathDrawing;
|
||||
|
||||
public override void AfterStart()
|
||||
public override void Init()
|
||||
{
|
||||
agvNodeMap = new AGVNodeMap();
|
||||
myHandler = GetInputHandler();
|
||||
nodeGizmoController = FindSingle<NodeGizmoController>();
|
||||
nodeGizmoController = ManagerHub.instance.Get<NodeGizmoController>();
|
||||
userInputManager = GameObject.FindAnyObjectByType<UserInputManager>();
|
||||
raycaster = GameObject.FindAnyObjectByType<Raycaster>();
|
||||
}
|
||||
|
||||
private void Update()
|
||||
@@ -200,13 +197,13 @@ namespace XED.VirtualFactory
|
||||
{
|
||||
if (flag)
|
||||
{
|
||||
nodeTarget = Instantiate(markerPrefab);
|
||||
nodeTarget = Object.Instantiate(markerPrefab);
|
||||
}
|
||||
else
|
||||
{
|
||||
if (nodeTarget)
|
||||
{
|
||||
Destroy(nodeTarget);
|
||||
Object.Destroy(nodeTarget);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -226,7 +223,7 @@ namespace XED.VirtualFactory
|
||||
return;
|
||||
}
|
||||
|
||||
GameObject go = Instantiate(nodePrefab);
|
||||
GameObject go = Object.Instantiate(nodePrefab);
|
||||
var objNode = go.GetComponent<AGVNode>();
|
||||
nodeTable.Add(nodedata.id, objNode);
|
||||
objNode.Initialize(nodedata);
|
||||
@@ -257,7 +254,7 @@ namespace XED.VirtualFactory
|
||||
DeselectNode();
|
||||
if (nodeSelectMode == NodeSelectMode.Draw)
|
||||
{
|
||||
GameObject go = Instantiate(nodePrefab);
|
||||
GameObject go = Object.Instantiate(nodePrefab);
|
||||
go.transform.position = hit.point;
|
||||
var objNode = go.GetComponent<AGVNode>();
|
||||
int maxid = int.Parse(agvNodeMap.maxid);
|
||||
@@ -281,7 +278,7 @@ namespace XED.VirtualFactory
|
||||
{
|
||||
return;
|
||||
}
|
||||
GameObject NewNode = Instantiate(nodePrefab, currentlySelectedNode.transform.position + Vector3.right, Quaternion.identity);
|
||||
GameObject NewNode = Object.Instantiate(nodePrefab, currentlySelectedNode.transform.position + Vector3.right, Quaternion.identity);
|
||||
AGVNode node = NewNode.GetComponent<AGVNode>();
|
||||
int maxid = int.Parse(agvNodeMap.maxid);
|
||||
maxid++;
|
||||
@@ -322,7 +319,7 @@ namespace XED.VirtualFactory
|
||||
n.linkedNodID.Remove(currentlySelectedNode.nodeClass.id);
|
||||
}
|
||||
|
||||
Destroy(currentlySelectedNode.gameObject);
|
||||
Object.Destroy(currentlySelectedNode.gameObject);
|
||||
DeselectNode();
|
||||
}
|
||||
|
||||
@@ -356,7 +353,7 @@ namespace XED.VirtualFactory
|
||||
n.linkedNodID.Remove(node.nodeClass.id);
|
||||
}
|
||||
|
||||
Destroy(node.gameObject);
|
||||
Object.Destroy(node.gameObject);
|
||||
DeselectNode();
|
||||
}
|
||||
|
||||
@@ -404,8 +401,7 @@ namespace XED.VirtualFactory
|
||||
|
||||
public void StatusEnterEvent()
|
||||
{
|
||||
var raycaster = FindSingle<Raycaster>();
|
||||
FindSingle<UserInputManager>().SetHandler(myHandler);
|
||||
userInputManager.SetHandler(myHandler);
|
||||
raycaster.AddEvent(Raycaster.EventType.FirstLeftClickOnly, typeof(AGVNode), OnClickAGVNode);
|
||||
raycaster.AddEvent(Raycaster.EventType.Stay, typeof(Map), MoveDrawTarget);
|
||||
raycaster.AddEvent(Raycaster.EventType.FirstLeftClickOnly, typeof(Map), ONClickGround);
|
||||
@@ -413,8 +409,7 @@ namespace XED.VirtualFactory
|
||||
|
||||
public void StatusExitEvent()
|
||||
{
|
||||
var raycaster = FindSingle<Raycaster>();
|
||||
FindSingle<UserInputManager>().RemoveHandler(myHandler);
|
||||
userInputManager.RemoveHandler(myHandler);
|
||||
raycaster.RemoveEvent(Raycaster.EventType.FirstLeftClickOnly, typeof(AGVNode), OnClickAGVNode);
|
||||
raycaster.RemoveEvent(Raycaster.EventType.Stay, typeof(Map), MoveDrawTarget);
|
||||
raycaster.RemoveEvent(Raycaster.EventType.FirstLeftClickOnly, typeof(Map), ONClickGround);
|
||||
@@ -438,10 +433,10 @@ namespace XED.VirtualFactory
|
||||
return handler;
|
||||
}
|
||||
|
||||
protected override void OnDestroy()
|
||||
{
|
||||
//vistaOpenFileDialog.Dispose();
|
||||
//saveFileDialog.Dispose();
|
||||
}
|
||||
//protected override void OnDestroy()
|
||||
//{
|
||||
// //vistaOpenFileDialog.Dispose();
|
||||
// //saveFileDialog.Dispose();
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using XRLib.UI;
|
||||
using static XED.Enums;
|
||||
|
||||
namespace XED.VirtualFactory
|
||||
{
|
||||
|
||||
@@ -1,19 +1,17 @@
|
||||
using RTG;
|
||||
using UnityEngine;
|
||||
using XRLib;
|
||||
|
||||
namespace XED.VirtualFactory
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class NodeGizmoController : MonoBehaviour,ISingle
|
||||
public class NodeGizmoController : Manager
|
||||
{
|
||||
public ObjectTransformGizmo moveGizmo;
|
||||
public GameObject target;
|
||||
|
||||
// Start is called before the first frame update
|
||||
void Awake()
|
||||
public override void Init()
|
||||
{
|
||||
moveGizmo = RTGizmosEngine.Get.CreateObjectMoveGizmo();
|
||||
moveGizmo.Gizmo.SetEnabled(false);
|
||||
//moveGizmo = RTGizmosEngine.Get.CreateObjectMoveGizmo();
|
||||
//moveGizmo.Gizmo.SetEnabled(false);
|
||||
}
|
||||
|
||||
public void Attach(GameObject target)
|
||||
|
||||
@@ -1,21 +1,23 @@
|
||||
using UnityEngine;
|
||||
using XRLib;
|
||||
using XED.Command;
|
||||
|
||||
namespace XED
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class CameraManager : MonoBehaviour, ISingle
|
||||
public class CameraManager : Manager
|
||||
{
|
||||
[SerializeField]
|
||||
float objectViewDistance = 25f;
|
||||
[SerializeField]
|
||||
Vector3 objectViewRotation = new Vector3(45, 145, 0);
|
||||
private float cameraDistance;
|
||||
private Vector3 viewAngle;
|
||||
|
||||
public void MoveToTwinObjectPos(TwinObject twinObject)
|
||||
public override void Init()
|
||||
{
|
||||
Camera.main.transform.rotation = Quaternion.Euler(objectViewRotation);
|
||||
cameraDistance = 25f;
|
||||
viewAngle = new Vector3(45, 145, 0);
|
||||
}
|
||||
|
||||
Camera.main.transform.position = twinObject.transform.position;
|
||||
Camera.main.transform.position += -Camera.main.transform.forward * objectViewDistance;
|
||||
public void MoveToTwinObjectPos(TwinObject target)
|
||||
{
|
||||
var command = new MoveToTargetCommand(target.transform, viewAngle, cameraDistance);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
8
Assets/Scripts/Studio/Managers/CanvasEventHandler.cs
Normal file
8
Assets/Scripts/Studio/Managers/CanvasEventHandler.cs
Normal file
@@ -0,0 +1,8 @@
|
||||
using XRLib.UI;
|
||||
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class CanvasEventHandler
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 30f7d996e8a681f4bba90651ceba8259
|
||||
@@ -1,69 +0,0 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using XED.Core;
|
||||
using XED.Interfaces;
|
||||
using XED.Command;
|
||||
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class CommandManager : UnitySingleton<CommandManager>, IInputHandler
|
||||
{
|
||||
private Stack<IReversibleCommand> _undoStack = new ();
|
||||
private Stack<IReversibleCommand> _redoStack = new ();
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
_undoStack.Clear();
|
||||
_redoStack.Clear();
|
||||
}
|
||||
|
||||
public void AddCommand(ICommand command)
|
||||
{
|
||||
if (command is IReversibleCommand rc)
|
||||
{
|
||||
_undoStack.Push(rc);
|
||||
_redoStack.Clear(); // Clear redo stack when a new action is made
|
||||
}
|
||||
}
|
||||
public void ExecuteCommand(ICommand command)
|
||||
{
|
||||
if (command is IReversibleCommand rc)
|
||||
{
|
||||
AddCommand(rc);
|
||||
}
|
||||
command.Execute();
|
||||
}
|
||||
|
||||
public void Undo()
|
||||
{
|
||||
if (_undoStack.Count > 0)
|
||||
{
|
||||
IReversibleCommand command = _undoStack.Pop();
|
||||
command.Undo();
|
||||
_redoStack.Push(command);
|
||||
}
|
||||
}
|
||||
|
||||
public void Redo()
|
||||
{
|
||||
if (_redoStack.Count > 0)
|
||||
{
|
||||
IReversibleCommand command = _redoStack.Pop();
|
||||
command.Execute();
|
||||
_undoStack.Push(command);
|
||||
}
|
||||
}
|
||||
|
||||
public InputHandler GetInputHandler()
|
||||
{
|
||||
var shortcutTable = new Dictionary<KeyCode, Dictionary<KeyCode, Action>>();
|
||||
shortcutTable.Add(KeyCode.LeftControl, new Dictionary<KeyCode, Action>());
|
||||
shortcutTable[KeyCode.LeftControl].Add(KeyCode.Z, Undo);
|
||||
shortcutTable[KeyCode.LeftControl].Add(KeyCode.X, Redo);
|
||||
var handler = new InputHandler(null, null, null, shortcutTable);
|
||||
return handler;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 476f4f09271b1e141a85ed6cff471f5e
|
||||
19
Assets/Scripts/Studio/Managers/CoroutineRunner.cs
Normal file
19
Assets/Scripts/Studio/Managers/CoroutineRunner.cs
Normal file
@@ -0,0 +1,19 @@
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using XED.Core;
|
||||
|
||||
namespace XED
|
||||
{
|
||||
public class CoroutineRunner : UnitySingleton<SystemMain>
|
||||
{
|
||||
public new Coroutine StartCoroutine(IEnumerator coroutine)
|
||||
{
|
||||
return StartCoroutine(coroutine);
|
||||
}
|
||||
|
||||
public new void StopCoroutine(Coroutine coroutine)
|
||||
{
|
||||
StopCoroutine(coroutine);
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/Studio/Managers/CoroutineRunner.cs.meta
Normal file
2
Assets/Scripts/Studio/Managers/CoroutineRunner.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 55535e3d1a759a84e8d5bf93efe35f63
|
||||
@@ -1,12 +1,10 @@
|
||||
using System;
|
||||
using System.Drawing.Printing;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using XED.UI;
|
||||
using XRLib;
|
||||
|
||||
namespace XED
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class CursorManager : MonoBehaviour, ISingle
|
||||
public class CursorManager : Manager
|
||||
{
|
||||
Texture2D cursor_Up;
|
||||
Texture2D cursor_Down;
|
||||
@@ -19,7 +17,7 @@ namespace XED
|
||||
|
||||
public UI_GUIWindow currentUseGUIWindow;
|
||||
|
||||
public override void AfterAwake()
|
||||
public override void Init()
|
||||
{
|
||||
cursor_Up = Resources.Load<Texture2D>("Images/cursor_vertical");
|
||||
cursor_Down = Resources.Load<Texture2D>("Images/cursor_vertical");
|
||||
@@ -31,22 +29,7 @@ namespace XED
|
||||
cursor_DownRight = Resources.Load<Texture2D>("Images/cursor_diag_a");
|
||||
}
|
||||
|
||||
private void Update()
|
||||
{
|
||||
if (currentUseGUIWindow == null)
|
||||
return;
|
||||
|
||||
if (currentUseGUIWindow.state == GUIState.Resize)
|
||||
{
|
||||
ChangeMouseCursor(currentUseGUIWindow.resizeDirection);
|
||||
}
|
||||
else
|
||||
{
|
||||
ChangeMouseCursor(currentUseGUIWindow.GetHandleDirection());
|
||||
}
|
||||
}
|
||||
|
||||
void ChangeMouseCursor(ResizeDirection dir)
|
||||
public void ChangeMouseCursor(ResizeDirection dir)
|
||||
{
|
||||
switch (dir)
|
||||
{
|
||||
|
||||
@@ -1,148 +1,48 @@
|
||||
using UnityEngine;
|
||||
using XRLib;
|
||||
using XED.UI;
|
||||
using XRLib.UI;
|
||||
using XED.Util;
|
||||
using XED.Manage;
|
||||
using XED.Asset;
|
||||
using XED.VirtualFactory;
|
||||
using System.Collections.Generic;
|
||||
using System;
|
||||
using XED.Core;
|
||||
using XED.Command;
|
||||
using XRLib.UI;
|
||||
|
||||
namespace XED.Manage
|
||||
{
|
||||
[DefaultExecutionOrder(int.MaxValue)]
|
||||
public class EventConnector : MonoBehaviour, ISingle
|
||||
public class EventConnector : UnitySingleton<EventConnector>
|
||||
{
|
||||
public override void AfterAwake()
|
||||
HashSet<CanvasBase> canvases = new();
|
||||
|
||||
public T GetCanvas<T>() where T : CanvasBase
|
||||
{
|
||||
var rayCaster = FindSingle<Raycaster>();
|
||||
var statusPanel = FindSingle<ModePanel>();
|
||||
|
||||
var canvas_static = FindSingle<Canvas_Static>();
|
||||
var canvas_Popup = FindSingle<Canvas_Popup>();
|
||||
var canvas_DragArea = FindSingle<Canvas_DragArea>();
|
||||
|
||||
var agvManager = FindSingle<AGVManager>();
|
||||
var wallBuilder = FindSingle<WallBuilder>();
|
||||
var agvNodeManager = FindSingle<AGVNodeManager>();
|
||||
var userInputManager = FindSingle<UserInputManager>();
|
||||
var agvNodeLinkManager = FindSingle<AGVNodeLinkManager>();
|
||||
var nodeGizmoController = FindSingle<NodeGizmoController>();
|
||||
var customAssetConnector = FindSingle<CustomAssetConnector>();
|
||||
var renderObjectHandler = FindFirstObjectByType<RenderObjectHandler>();
|
||||
var projectManager = FindSingle<ProjectManager>();
|
||||
|
||||
GameObject assetWindow = canvas_Popup.panel_assetlibrary.gameObject;
|
||||
FBXFileManager saveLoadFBXData = customAssetConnector.saveLoadFBXData;
|
||||
GameObject componentWindow = canvas_Popup.panel_hierarchy.gameObject;
|
||||
GameObject interferedobjectlistWindow = canvas_Popup.panel_interferedobjectlist.gameObject;
|
||||
|
||||
UIConnection();
|
||||
StatusConnection();
|
||||
ManagerConnection();
|
||||
DefaultActionSetting();
|
||||
|
||||
void ManagerConnection()
|
||||
foreach (var canvas in canvases)
|
||||
{
|
||||
customAssetConnector.onRemoveObjects += renderObjectHandler.DeselectAll;
|
||||
customAssetConnector.onSelectObjects += ((name, objects) => { canvas_Popup.panel_objectinfo.gameObject.SetActive(true); });
|
||||
customAssetConnector.onSelectObjects += canvas_Popup.panel_objectinfo.SetObjectInfo;
|
||||
customAssetConnector.onSelectObjects += canvas_Popup.panel_objectdistance.SelectObjectFromClick;
|
||||
customAssetConnector.onRemoveObjects += canvas_Popup.panel_objectinfo.ResetObjectInfo;
|
||||
customAssetConnector.onDeselectObjects += (() => { canvas_Popup.panel_objectinfo.gameObject.SetActive(false); });
|
||||
|
||||
renderObjectHandler.onDeselectAll += canvas_Popup.panel_objectinfo.ResetObjectInfo;
|
||||
renderObjectHandler.onTransformChanged += canvas_Popup.panel_objectinfo.OnTransformChanged;
|
||||
renderObjectHandler.onDragBegin += canvas_DragArea.panel_draghandler.OnBeginDrag;
|
||||
renderObjectHandler.onDragEnd += canvas_DragArea.panel_draghandler.OnEndDrag;
|
||||
renderObjectHandler.onDragForceEnd += canvas_DragArea.panel_draghandler.ForceEndDrag;
|
||||
|
||||
saveLoadFBXData.onBeginLoadAsset += (() => assetWindow.SetActive(true));
|
||||
canvas_Popup.panel_objectinfo.onTransformChanged += renderObjectHandler.OnTransformChanged;
|
||||
|
||||
agvNodeManager.onNodeConnectionAdded += agvNodeLinkManager.AddLine;
|
||||
agvNodeManager.onNodeConnectionUpdated += agvNodeLinkManager.UpdateLine;
|
||||
agvNodeManager.onNodeConnectionRemoved += agvNodeLinkManager.RemoveLine;
|
||||
|
||||
agvNodeManager.onNodeGizmoSelected += nodeGizmoController.Attach;
|
||||
agvNodeManager.onNodeDeselected += nodeGizmoController.Detach;
|
||||
agvNodeManager.onNodeSettingSelected += canvas_Popup.agvnodepopup.Popup;
|
||||
agvNodeManager.onNodeDeselected += canvas_Popup.agvnodepopup.Popdown;
|
||||
agvNodeManager.onNodeSequenceUpdated += canvas_Popup.agvnodemodepopup.UpdateTextSelectedAGVNode;
|
||||
|
||||
projectManager.onLoadAsset += customAssetConnector.OnLoadAsset;
|
||||
projectManager.onRestoreHierarchy += customAssetConnector.OnRestoreHierarchy;
|
||||
if (canvas is T)
|
||||
{
|
||||
return (T)canvas;
|
||||
}
|
||||
}
|
||||
|
||||
void UIConnection()
|
||||
var a = FindAnyObjectByType<T>();
|
||||
if (a == null)
|
||||
return default;
|
||||
else
|
||||
{
|
||||
//Panel_ShortCut
|
||||
canvas_static.panel_shortcuts.onClickOpenAssetWindow += (() => assetWindow.SetActive(!assetWindow.activeSelf));
|
||||
canvas_static.panel_shortcuts.onClickOpenComponentWindow += (() => componentWindow.SetActive(!componentWindow.activeSelf));
|
||||
canvas_static.panel_shortcuts.onClickUndo += CommandManager.I.Undo;
|
||||
canvas_static.panel_shortcuts.onClickRedo += CommandManager.I.Redo;
|
||||
canvas_static.panel_shortcuts.onclickSave += projectManager.SaveProject;
|
||||
|
||||
//Panel Header
|
||||
canvas_static.panel_topbar.onClickSaveProject += projectManager.SaveProject;
|
||||
canvas_static.panel_topbar.onClickLoadProject += projectManager.LoadProject;
|
||||
canvas_static.panel_topbar.onClickNewProject += projectManager.NewProject;
|
||||
canvas_static.panel_topbar.onClickLoadAssets += saveLoadFBXData.LoadLocalFBXDirectory;
|
||||
canvas_static.panel_topbar.onClickAssetWindow += (() => assetWindow.SetActive(!assetWindow.activeSelf));
|
||||
canvas_static.panel_topbar.onClickComponentWindow += (() => componentWindow.SetActive(!componentWindow.activeSelf));
|
||||
canvas_static.panel_topbar.onClickInterferedListWindow += (() => interferedobjectlistWindow.SetActive(!interferedobjectlistWindow.activeSelf));
|
||||
|
||||
//Panel Toolbar
|
||||
canvas_static.panel_toolbar.onClickMove += renderObjectHandler.SetRTGMove;
|
||||
canvas_static.panel_toolbar.onClickExpand += renderObjectHandler.SetRTGScale;
|
||||
canvas_static.panel_toolbar.onClickRotate += renderObjectHandler.SetRTGRotate;
|
||||
canvas_static.panel_toolbar.onClickRemove += renderObjectHandler.RemoveItem;
|
||||
canvas_static.panel_toolbar.onClickCopy += renderObjectHandler.CopyItem;
|
||||
|
||||
canvas_Popup.agvnodepopup.Button_Plus.onClick.AddListener(agvNodeManager.AddNode);
|
||||
canvas_Popup.agvnodepopup.Button_Minus.onClick.AddListener(agvNodeManager.RemoveNode);
|
||||
canvas_Popup.agvnodepopup.DropDown_AGVNodeType.onValueChanged.AddListener(agvNodeManager.NodeTypeChange);
|
||||
|
||||
canvas_Popup.agvnodemodepopup.Button_AGVPlay.onClick.AddListener(agvNodeManager.ordertoAGV);
|
||||
canvas_Popup.agvnodemodepopup.Button_AGVNodeLoad.onClick.AddListener(agvNodeManager.Load);
|
||||
canvas_Popup.agvnodemodepopup.Button_AGVNodeSave.onClick.AddListener(agvNodeManager.Save);
|
||||
canvas_Popup.agvnodemodepopup.onAGVNodeModeChanged += agvNodeManager.ChangeSelectMode;
|
||||
|
||||
canvas_Popup.panel_assetlibrary.scrollView.onSelect.AddListener(canvas_Popup.panel_assetproperties.Open);
|
||||
canvas_Popup.panel_assetlibrary.scrollView.onHover.AddListener(canvas_Popup.panel_thumbnail.HandleOpenClose);
|
||||
canvas_Popup.panel_assetlibrary.scrollRect.onExit.AddListener(canvas_Popup.panel_thumbnail.HandleOpenClose);
|
||||
|
||||
canvas_Popup.panel_assetproperties.onClickPreview += canvas_Popup.panel_predefinedtype.Open;
|
||||
canvas_Popup.panel_assetproperties.onOpen += saveLoadFBXData.GetCustomAssetData;
|
||||
|
||||
canvas_Popup.panel_thumbnail.onOpen += saveLoadFBXData.GetCustomAssetData;
|
||||
canvas_Popup.panel_thumbnail.onGetPosition += canvas_Popup.panel_assetlibrary.GetPositionX;
|
||||
|
||||
canvas_DragArea.panel_draghandler.onDragBoxSelect += customAssetConnector.assetEventHandler.OnDragBoxSelect;
|
||||
canvases.Add(a);
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
||||
void StatusConnection()
|
||||
{
|
||||
statusPanel.AddController(renderObjectHandler);
|
||||
statusPanel.AddController(wallBuilder);
|
||||
statusPanel.AddController(agvNodeManager);
|
||||
statusPanel.AddModeEnterEvent(ModePanel.ProgramMode.AGVPathDrawing, canvas_Popup.agvnodemodepopup.Open);
|
||||
statusPanel.SetMode(ModePanel.ProgramMode.ObjectLayout);
|
||||
}
|
||||
public void Init()
|
||||
{
|
||||
var userInputManager = GameObject.FindAnyObjectByType<UserInputManager>();
|
||||
|
||||
void DefaultActionSetting()
|
||||
{
|
||||
var commandHandler = CommandManager.I.GetInputHandler();
|
||||
userInputManager.SetHandler(GetDefaultInputHandler());
|
||||
userInputManager.SetHandler(commandHandler);
|
||||
canvas_static.panel_modecontrol.onClickObjectMode += () => statusPanel.SetMode(ModePanel.ProgramMode.ObjectLayout);
|
||||
//canvas_static.panel_modecontrol.onClickPropertyMode += () => statusPanel.SetMode(ModePanel.ProgramMode.None);
|
||||
|
||||
rayCaster.onUIHoverEvent += canvas_Popup.panel_tooltip.ActivateTooltip;
|
||||
rayCaster.onUIHoverExitEvent += canvas_Popup.panel_tooltip.DeactivateTooltip;
|
||||
//rayCaster.AddEvent(Raycaster.EventType.FirstRightClickOnly, typeof(TwinObject), canvas_Popup.panel_propertyviewer.Activate);
|
||||
}
|
||||
var commandHandler = CommandInvoker.instance.GetInputHandler();
|
||||
userInputManager.SetHandler(GetDefaultInputHandler());
|
||||
userInputManager.SetHandler(commandHandler);
|
||||
}
|
||||
|
||||
InputHandler defaultInputHandler;
|
||||
|
||||
@@ -1,61 +0,0 @@
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.IO;
|
||||
using TriLibCore.SFB;
|
||||
using UnityEngine;
|
||||
using XRLib;
|
||||
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class FileBrowserHandler : MonoBehaviour, ISingle
|
||||
{
|
||||
private string lastOpenFilePath;
|
||||
|
||||
public void SaveFileBrowser<T>(T saveData, string title, string defaultfileName = "", string directory = "", string extension = "json")
|
||||
{
|
||||
var data = StandaloneFileBrowser.SaveFilePanel(title, directory, defaultfileName, extension);
|
||||
SaveFile(saveData, data.Name);
|
||||
}
|
||||
|
||||
public void SaveFile<T>(T saveData, string path)
|
||||
{
|
||||
if (string.IsNullOrEmpty(path))
|
||||
return;
|
||||
|
||||
string json = JsonConvert.SerializeObject(saveData);
|
||||
FileStream fs = new FileStream(path, FileMode.Create, FileAccess.Write);
|
||||
StreamWriter writer = new StreamWriter(fs, System.Text.Encoding.Unicode);
|
||||
lastOpenFilePath = path;
|
||||
writer.Write(json);
|
||||
writer.Close();
|
||||
}
|
||||
|
||||
public T OpenFileBrowser<T>(string title, string directory = "", string extension = "json")
|
||||
{
|
||||
var data = StandaloneFileBrowser.OpenFilePanel(title, directory, extension, false);
|
||||
if (data.Count >= 1 && !string.IsNullOrEmpty(data[0].Name))
|
||||
{
|
||||
string json = File.ReadAllText(data[0].Name);
|
||||
try
|
||||
{
|
||||
lastOpenFilePath = data[0].Name;
|
||||
return JsonConvert.DeserializeObject<T>(json);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.Log(ex.Message);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("File not found!");
|
||||
}
|
||||
return default(T);
|
||||
}
|
||||
|
||||
public string GetLastOpenFilePath()
|
||||
{
|
||||
return lastOpenFilePath;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: d3b7eb8ddaf6a2c4a94629439aa5654f
|
||||
48
Assets/Scripts/Studio/Managers/InterferedObjectManager.cs
Normal file
48
Assets/Scripts/Studio/Managers/InterferedObjectManager.cs
Normal file
@@ -0,0 +1,48 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using TriLibCore.Interfaces;
|
||||
using UnityEngine;
|
||||
using XED.Util;
|
||||
using XRLib;
|
||||
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class InterferedObjectManager : Manager
|
||||
{
|
||||
HashSet<(TwinObject, TwinObject)> interferedPairs = new();
|
||||
|
||||
public event Action<(TwinObject, TwinObject)> OnAddInterferedPair;
|
||||
public event Action<(TwinObject, TwinObject)> OnRemoveInterferedPair;
|
||||
|
||||
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||
OnAddInterferedPair += canvas_Popup.panel_interferedobjectlist.CreateContentButton;
|
||||
OnRemoveInterferedPair += canvas_Popup.panel_interferedobjectlist.RemoveContentButton;
|
||||
}
|
||||
|
||||
public void AddInterferedPair(TwinObject obj1, TwinObject obj2)
|
||||
{
|
||||
var pair = obj1.GetInstanceID() < obj2.GetInstanceID() ? (obj1, obj2) : (obj2, obj1);
|
||||
|
||||
if (interferedPairs.Contains(pair))
|
||||
return;
|
||||
|
||||
interferedPairs.Add(pair);
|
||||
OnAddInterferedPair?.Invoke(pair);
|
||||
}
|
||||
|
||||
public void RemoveInterferedPair(TwinObject obj1, TwinObject obj2)
|
||||
{
|
||||
var pair = obj1.GetInstanceID() < obj2.GetInstanceID() ? (obj1, obj2) : (obj2, obj1);
|
||||
|
||||
if (!interferedPairs.Contains(pair))
|
||||
return;
|
||||
|
||||
interferedPairs.Remove(pair);
|
||||
OnRemoveInterferedPair?.Invoke(pair);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0c728344b2bbf5746b1a41daa8ff51b0
|
||||
7
Assets/Scripts/Studio/Managers/Manager.cs
Normal file
7
Assets/Scripts/Studio/Managers/Manager.cs
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace XED.Manage
|
||||
{
|
||||
public abstract class Manager
|
||||
{
|
||||
public abstract void Init();
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/Studio/Managers/Manager.cs.meta
Normal file
2
Assets/Scripts/Studio/Managers/Manager.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 4add833e71d3a9e4b9ac21468cd4ed86
|
||||
56
Assets/Scripts/Studio/Managers/ManagerHub.cs
Normal file
56
Assets/Scripts/Studio/Managers/ManagerHub.cs
Normal file
@@ -0,0 +1,56 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using XED.Asset;
|
||||
using XED.Core;
|
||||
using XED.Util;
|
||||
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class ManagerHub : UnitySingleton<ManagerHub>
|
||||
{
|
||||
HashSet<Manager> managers = new HashSet<Manager>();
|
||||
|
||||
public void Init()
|
||||
{
|
||||
Join(new ProjectManager());
|
||||
Join(new FBXFileManager());
|
||||
Join(new CustomAssetConnector());
|
||||
Join(new RenderObjectHandler());
|
||||
Join(new InterferedObjectManager());
|
||||
Join(new CursorManager());
|
||||
Join(new CameraManager());
|
||||
Join(new AGVNodeManager());
|
||||
Join(new NodeGizmoController());
|
||||
Join(new AGVNodeLinkManager());
|
||||
Join(new AGVManager());
|
||||
Join(new WallBuilder());
|
||||
Join(new MeshCreator());
|
||||
|
||||
foreach(var m in managers)
|
||||
{
|
||||
m.Init();
|
||||
}
|
||||
}
|
||||
void Join(Manager newManager)
|
||||
{
|
||||
if (!managers.Add(newManager))
|
||||
{
|
||||
Debug.LogError($"Manager {newManager} already exists in the hub.");
|
||||
}
|
||||
}
|
||||
|
||||
public T Get<T>() where T : Manager
|
||||
{
|
||||
var manager = default(T);
|
||||
foreach (var m in managers)
|
||||
{
|
||||
if (m is T)
|
||||
{
|
||||
manager = m as T;
|
||||
break;
|
||||
}
|
||||
}
|
||||
return manager;
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/Studio/Managers/ManagerHub.cs.meta
Normal file
2
Assets/Scripts/Studio/Managers/ManagerHub.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 729a2ee4bef76d34aa641f7254b67f3b
|
||||
14
Assets/Scripts/Studio/Managers/PopupCanvasHandler.cs
Normal file
14
Assets/Scripts/Studio/Managers/PopupCanvasHandler.cs
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class PopupCanvasHandler : CanvasEventHandler
|
||||
{
|
||||
public PopupCanvasHandler(Canvas_Popup canvas_Popup)
|
||||
{
|
||||
canvas_Popup.panel_assetlibrary.scrollView.onSelect.AddListener(canvas_Popup.panel_assetproperties.Open);
|
||||
canvas_Popup.panel_assetlibrary.scrollView.onHover.AddListener(canvas_Popup.panel_thumbnail.HandleOpenClose);
|
||||
canvas_Popup.panel_assetlibrary.scrollRect.onExit.AddListener(canvas_Popup.panel_thumbnail.HandleOpenClose);
|
||||
canvas_Popup.panel_assetproperties.onClickPreview += canvas_Popup.panel_predefinedtype.Open;
|
||||
canvas_Popup.panel_thumbnail.onGetPosition += canvas_Popup.panel_assetlibrary.GetPositionX;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: aaa286d5a9a27024ca13ea7830339928
|
||||
@@ -3,9 +3,11 @@ using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using TriLibCore.Dae.Schema;
|
||||
using TriLibCore.SFB;
|
||||
using UnityEditor;
|
||||
using XED.Asset;
|
||||
using XED.Command;
|
||||
using XED.HierarchyTree;
|
||||
using XED.Service;
|
||||
using XED.Util;
|
||||
@@ -13,23 +15,24 @@ using XRLib;
|
||||
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class ProjectManager : MonoBehaviour, ISingle
|
||||
public class ProjectManager : Manager
|
||||
{
|
||||
private AssetDataService assetDataService;
|
||||
private CustomAssetConnector connector;
|
||||
|
||||
private string curProjectPath;
|
||||
private ProjectData curProjectData;
|
||||
Dictionary<int, HierarchyItem> itemDict = new Dictionary<int, HierarchyItem>();
|
||||
|
||||
public event Action<AssetData> onLoadAsset;
|
||||
public event Action<HierarchyItem, HierarchyItem> onRestoreHierarchy;
|
||||
public event Action<List<CustomAssetRenderObject>> onRemoveAsset;
|
||||
|
||||
public override void AfterAwake()
|
||||
public ProjectManager()
|
||||
{
|
||||
assetDataService = new AssetDataService();
|
||||
connector = FindSingle<CustomAssetConnector>();
|
||||
assetDataService = new AssetDataService();
|
||||
connector = ManagerHub.instance.Get<CustomAssetConnector>();
|
||||
}
|
||||
|
||||
public override void Init()
|
||||
{
|
||||
curProjectPath = string.Empty;
|
||||
curProjectData = null;
|
||||
}
|
||||
|
||||
public void SaveProject()
|
||||
@@ -47,13 +50,14 @@ namespace XED.Manage
|
||||
curProjectPath = path;
|
||||
curProjectData = projectData;
|
||||
|
||||
SaveFile();
|
||||
var command = new SaveProjectCommand(curProjectPath, curProjectData);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
|
||||
public void LoadProject()
|
||||
{
|
||||
if (!FindAnyObjectByType<FBXFileManager>().isLoadTaskComplete)
|
||||
return;
|
||||
//if (!FindAnyObjectByType<FBXFileManager>().isLoadTaskComplete)
|
||||
// return;
|
||||
|
||||
string path = GetOpenFilePath();
|
||||
|
||||
@@ -65,21 +69,23 @@ namespace XED.Manage
|
||||
if (projectData == null)
|
||||
return;
|
||||
|
||||
RemoveObject();
|
||||
connector.ClearObjects();
|
||||
|
||||
Init();
|
||||
|
||||
LoadAssets(projectData.assetDatas);
|
||||
RestoreHierarchys(projectData.assetDatas);
|
||||
|
||||
CommandManager.I.Clear();
|
||||
curProjectPath = path;
|
||||
curProjectData = projectData;
|
||||
|
||||
var command = new LoadProjectCommand(curProjectData.assetDatas, connector);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
|
||||
public void NewProject()
|
||||
{
|
||||
RemoveObject();
|
||||
Init();
|
||||
|
||||
var command = new NewProjectCommand(connector);
|
||||
CommandInvoker.instance.Invoke(command);
|
||||
}
|
||||
|
||||
private ProjectData CreateProjectData(string path, List<AssetData> assetDatas)
|
||||
@@ -92,57 +98,6 @@ namespace XED.Manage
|
||||
};
|
||||
}
|
||||
|
||||
private void LoadAssets(List<AssetData> assets)
|
||||
{
|
||||
foreach (AssetData asset in assets)
|
||||
{
|
||||
LoadAsset(asset);
|
||||
}
|
||||
}
|
||||
|
||||
private void LoadAsset(AssetData asset)
|
||||
{
|
||||
onLoadAsset?.Invoke(asset);
|
||||
itemDict.Add(asset.id, connector.connectedAssets.Last().hierarchyItem);
|
||||
}
|
||||
|
||||
private void RestoreHierarchys(List<AssetData> assets)
|
||||
{
|
||||
foreach (AssetData asset in assets)
|
||||
{
|
||||
RestoreHierarchy(asset);
|
||||
}
|
||||
}
|
||||
|
||||
private void RestoreHierarchy(AssetData asset)
|
||||
{
|
||||
foreach (int id in asset.children)
|
||||
{
|
||||
HierarchyItem parent = itemDict[asset.id];
|
||||
HierarchyItem child = itemDict[id];
|
||||
|
||||
if (parent == null || child == null)
|
||||
continue;
|
||||
|
||||
onRestoreHierarchy?.Invoke(parent, child);
|
||||
}
|
||||
}
|
||||
|
||||
private void RemoveObject()
|
||||
{
|
||||
List<CustomAssetRenderObject> objects = connector.connectedAssets.Select(x => x.renderObject).ToList();
|
||||
onRemoveAsset?.Invoke(objects);
|
||||
}
|
||||
|
||||
private void Init()
|
||||
{
|
||||
curProjectPath = string.Empty;
|
||||
curProjectData = null;
|
||||
connector.connectedAssets.Clear();
|
||||
CommandManager.I.Clear();
|
||||
itemDict.Clear();
|
||||
}
|
||||
|
||||
private string GetSaveFilePath()
|
||||
{
|
||||
var data = StandaloneFileBrowser.SaveFilePanel("SaveProject", "", "", "json");
|
||||
@@ -155,19 +110,12 @@ namespace XED.Manage
|
||||
return data.Count >= 1 ? data[0].Name : "";
|
||||
}
|
||||
|
||||
private void SaveFile()
|
||||
{
|
||||
string json = JsonConvert.SerializeObject(curProjectData);
|
||||
FileStream fs = new FileStream(curProjectPath, FileMode.Create, FileAccess.Write);
|
||||
StreamWriter writer = new StreamWriter(fs, System.Text.Encoding.Unicode);
|
||||
writer.Write(json);
|
||||
writer.Close();
|
||||
}
|
||||
|
||||
private ProjectData GetFileData(string path)
|
||||
{
|
||||
string json = File.ReadAllText(path);
|
||||
return JsonConvert.DeserializeObject<ProjectData>(json);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,142 +0,0 @@
|
||||
using MessagePack;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
|
||||
namespace XED
|
||||
{
|
||||
[MessagePackObject]
|
||||
public class Position
|
||||
{
|
||||
[Key("PostionX")]
|
||||
public float x;
|
||||
[Key("PostionY")]
|
||||
public float y;
|
||||
[Key("PostionZ")]
|
||||
public float z;
|
||||
}
|
||||
[MessagePackObject]
|
||||
public class Rotation
|
||||
{
|
||||
[Key("RotationX")]
|
||||
public float x;
|
||||
[Key("RotationY")]
|
||||
public float y;
|
||||
[Key("RotationZ")]
|
||||
public float z;
|
||||
}
|
||||
[MessagePackObject]
|
||||
public class TwinObjectData
|
||||
{
|
||||
[Key("ObjectInfors")]
|
||||
public List<ObjectInfor> objectInfors;
|
||||
[Key("WallInfors")]
|
||||
public List<WallInfor> wallInfors;
|
||||
}
|
||||
[MessagePackObject]
|
||||
public class ObjectInfor
|
||||
{
|
||||
[Key("Position")]
|
||||
public Position position { get; set; }
|
||||
|
||||
[Key("Rotaion")]
|
||||
public Rotation rotation { get; set; }
|
||||
|
||||
[Key("AssetType")]
|
||||
public AssetLabel assetLabel { get; set; }
|
||||
[Key("ObjectName")]
|
||||
public string address;
|
||||
}
|
||||
|
||||
[MessagePackObject]
|
||||
public class WallInfor
|
||||
{
|
||||
[Key("LinePoints")]
|
||||
public Position[] points;
|
||||
}
|
||||
|
||||
public class SaveLoadManager
|
||||
{
|
||||
public void SaveData(HashSet<TwinObject> twinObjects, string filePath)
|
||||
{
|
||||
var twinData = new TwinObjectData();
|
||||
var facilitys = new List<ObjectInfor>();
|
||||
var walls = new List<WallInfor>();
|
||||
|
||||
foreach (TwinObject twinObject in twinObjects)
|
||||
{
|
||||
if (twinObject.GetType() == typeof(WallGroup))
|
||||
{
|
||||
var wallgroup = twinObject as WallGroup;
|
||||
foreach (var wallLine in wallgroup.groupWalls)
|
||||
{
|
||||
var leftPoint = wallLine.leftCenterPoint;
|
||||
var rightPoint = wallLine.rightCenterPoint;
|
||||
|
||||
Position[] points = new Position[2];
|
||||
var leftPos = new Position { x = leftPoint.position.x, y = leftPoint.position.y, z = leftPoint.position.z };
|
||||
var rightPos = new Position { x = rightPoint.position.x, y = rightPoint.position.y, z = rightPoint.position.z };
|
||||
|
||||
points[0] = leftPos;
|
||||
points[1] = rightPos;
|
||||
|
||||
WallInfor wallinfor = new WallInfor { points = points };
|
||||
walls.Add(wallinfor);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var position = ObjectPos(twinObject);
|
||||
var rotation = ObjectRot(twinObject);
|
||||
var objname = twinObject.name.Replace("(Clone)", "");
|
||||
ObjectInfor facilityInfor = new ObjectInfor
|
||||
{
|
||||
position = position,
|
||||
rotation = rotation,
|
||||
assetLabel = twinObject.assetLabel,
|
||||
address = twinObject.metaData.address
|
||||
};
|
||||
facilitys.Add(facilityInfor);
|
||||
}
|
||||
}
|
||||
twinData.objectInfors = facilitys;
|
||||
twinData.wallInfors = walls;
|
||||
//Serialize<List<ObjectInfor>>(facilitys, twinFilePath);
|
||||
//Serialize<List<WallInfor>>(walls, wallFilePath);
|
||||
Serialize<TwinObjectData>(twinData, filePath);
|
||||
}
|
||||
|
||||
private Position ObjectPos(TwinObject twin)
|
||||
{
|
||||
Position pos = new Position();
|
||||
pos.x = twin.transform.position.x;
|
||||
pos.y = twin.transform.position.y;
|
||||
pos.z = twin.transform.position.z;
|
||||
|
||||
return pos;
|
||||
}
|
||||
private Rotation ObjectRot(TwinObject twin)
|
||||
{
|
||||
Rotation rot = new Rotation();
|
||||
rot.x = twin.transform.eulerAngles.x;
|
||||
rot.y = twin.transform.eulerAngles.y;
|
||||
rot.z = twin.transform.eulerAngles.z;
|
||||
|
||||
return rot;
|
||||
}
|
||||
|
||||
public void Serialize<T>(T type, string filepath)
|
||||
{
|
||||
var lz4Option = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4Block);
|
||||
var bytes = MessagePackSerializer.Serialize<T>(type, lz4Option);
|
||||
File.WriteAllBytes(filepath, bytes);
|
||||
}
|
||||
public T Deserialize<T>(string filepath)
|
||||
{
|
||||
var lz4Option = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4Block);
|
||||
var readByte = File.ReadAllBytes(filepath);
|
||||
var deserailze = MessagePackSerializer.Deserialize<T>(readByte, lz4Option);
|
||||
|
||||
return deserailze;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,2 +0,0 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c891f0436f0449743b7ed983f101b6ae
|
||||
26
Assets/Scripts/Studio/Managers/StaticCanvasHandler.cs
Normal file
26
Assets/Scripts/Studio/Managers/StaticCanvasHandler.cs
Normal file
@@ -0,0 +1,26 @@
|
||||
using UnityEngine;
|
||||
using XED.Command;
|
||||
using XED.UI;
|
||||
using XED.Util;
|
||||
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class StaticCanvasHandler : CanvasEventHandler
|
||||
{
|
||||
public StaticCanvasHandler(Canvas_Static canvas_static)
|
||||
{
|
||||
var canvas_Popup = EventConnector.instance.GetCanvas<Canvas_Popup>();
|
||||
GameObject componentWindow = canvas_Popup.panel_hierarchy.gameObject;
|
||||
GameObject interferedobjectlistWindow = canvas_Popup.panel_interferedobjectlist.gameObject;
|
||||
GameObject assetWindow = canvas_Popup.panel_assetlibrary.gameObject;
|
||||
|
||||
canvas_static.panel_shortcuts.onClickOpenAssetWindow += (() => assetWindow.SetActive(!assetWindow.activeSelf));
|
||||
canvas_static.panel_shortcuts.onClickOpenComponentWindow += (() => componentWindow.SetActive(!componentWindow.activeSelf));
|
||||
canvas_static.panel_topbar.onClickAssetWindow += (() => assetWindow.SetActive(!assetWindow.activeSelf));
|
||||
canvas_static.panel_topbar.onClickComponentWindow += (() => componentWindow.SetActive(!componentWindow.activeSelf));
|
||||
canvas_static.panel_topbar.onClickInterferedListWindow += (() => interferedobjectlistWindow.SetActive(!interferedobjectlistWindow.activeSelf));
|
||||
|
||||
//canvas_static.panel_modecontrol.onClickObjectMode += () => statusPanel.SetMode(ModePanel.ProgramMode.ObjectLayout);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: df5f8c274ab79df44b8434bd12d83b34
|
||||
13
Assets/Scripts/Studio/Managers/UIManager.cs
Normal file
13
Assets/Scripts/Studio/Managers/UIManager.cs
Normal file
@@ -0,0 +1,13 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using XED.Core;
|
||||
using XRLib.UI;
|
||||
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class UIManager : UnitySingleton<UIManager>
|
||||
{
|
||||
HashSet<CanvasBase> canvases = new();
|
||||
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/Studio/Managers/UIManager.cs.meta
Normal file
2
Assets/Scripts/Studio/Managers/UIManager.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 02d3bbdaee00e134285162a93672e0fd
|
||||
@@ -1,11 +1,12 @@
|
||||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using XRLib;
|
||||
|
||||
namespace XED.Manage
|
||||
{
|
||||
public class UserInputManager : MonoBehaviour, ISingle
|
||||
public class UserInputManager : MonoBehaviour
|
||||
{
|
||||
Dictionary<KeyCode, Action> getKeyActionTable = new Dictionary<KeyCode, Action>();
|
||||
Dictionary<KeyCode, Action> upKeyActionTable = new Dictionary<KeyCode, Action>();
|
||||
@@ -105,7 +106,6 @@ namespace XED.Manage
|
||||
}
|
||||
void Update()
|
||||
{
|
||||
|
||||
foreach (var key in downKeyActionTable.Keys)
|
||||
{
|
||||
if (Input.GetKeyDown(key))
|
||||
|
||||
@@ -20,16 +20,12 @@ namespace XED
|
||||
[PropertyVisible, Tooltip("µÎ ¹øÂ° info")]
|
||||
public bool IsInteractible;
|
||||
|
||||
Panel_InterferedObjectList panel_InterferedObjectList;
|
||||
|
||||
public override void AfterAwake()
|
||||
{
|
||||
IsDisplayable = true;
|
||||
IsInteractible = true;
|
||||
physics.Init(this);
|
||||
metaData.Init(this);
|
||||
|
||||
panel_InterferedObjectList = FindSingle<Panel_InterferedObjectList>();
|
||||
}
|
||||
|
||||
public void Binding(IEntity entity)
|
||||
@@ -64,21 +60,5 @@ namespace XED
|
||||
{
|
||||
return JsonConvert.SerializeObject(entity);
|
||||
}
|
||||
|
||||
private void OnTriggerEnter(Collider other)
|
||||
{
|
||||
if (!other.TryGetComponent<TwinObject>(out TwinObject contracter))
|
||||
return;
|
||||
|
||||
panel_InterferedObjectList.CreateContentButton(this, contracter);
|
||||
}
|
||||
|
||||
private void OnTriggerExit(Collider other)
|
||||
{
|
||||
if (!other.TryGetComponent<TwinObject>(out TwinObject contracter))
|
||||
return;
|
||||
|
||||
panel_InterferedObjectList.RemoveContentButton(this, contracter);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,6 @@
|
||||
using UnityEngine;
|
||||
using XED.Asset;
|
||||
using XED.Manage;
|
||||
using XED.UI;
|
||||
using XRLib.UI;
|
||||
|
||||
@@ -10,6 +12,7 @@ namespace XED
|
||||
public override void AfterAwake()
|
||||
{
|
||||
GetComponent<Canvas>().sortingOrder = 1;
|
||||
panel_draghandler.onDragBoxSelect += ManagerHub.instance.Get<CustomAssetConnector>().assetEventHandler.OnDragBoxSelect;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,13 +1,14 @@
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using XED.Manage;
|
||||
using XED.UI;
|
||||
using XED.Util;
|
||||
using XED.VirtualFactory;
|
||||
using XRLib;
|
||||
using XRLib.UI;
|
||||
using XED.UI;
|
||||
using XED.VirtualFactory;
|
||||
|
||||
namespace XED
|
||||
{
|
||||
public class Canvas_Popup : CanvasBase
|
||||
public class Canvas_Popup : CanvasBase, ISingle
|
||||
{
|
||||
public Panel_AccessibilitySettings panel_accessibilitysettings;
|
||||
public Panel_ColorPicker panel_colorpicker;
|
||||
@@ -23,19 +24,37 @@ namespace XED
|
||||
public AGVNodeModePopup agvnodemodepopup;
|
||||
public Panel_Tooltip panel_tooltip;
|
||||
public Panel_PropertyViewer panel_propertyviewer;
|
||||
public Panel_DragHandler panel_draghandler;
|
||||
//public Panel_DragHandler panel_draghandler;
|
||||
public Panel_AssetEdit panel_assetedit;
|
||||
public Panel_Thumbnail panel_thumbnail;
|
||||
public Panel_ObjectDistance panel_objectdistance;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
canvasHandler = new PopupCanvasHandler(this);
|
||||
}
|
||||
|
||||
public override void AfterAwake()
|
||||
{
|
||||
GetComponent<Canvas>().sortingOrder = 1;
|
||||
var renderObjectHandler = ManagerHub.instance.Get<RenderObjectHandler>();
|
||||
panel_objectinfo.onTransformChanged += renderObjectHandler.OnTransformChanged;
|
||||
|
||||
var raycaster = GameObject.FindAnyObjectByType<Raycaster>();
|
||||
raycaster.onUIHoverEvent += panel_tooltip.ActivateTooltip;
|
||||
raycaster.onUIHoverExitEvent += panel_tooltip.DeactivateTooltip;
|
||||
|
||||
foreach (var panel in GetComponentsInChildren<PanelBase>(true))
|
||||
{
|
||||
panel.onEnableEvent += SetPanelAsLastSibling;
|
||||
}
|
||||
|
||||
var fbxFileManager = ManagerHub.instance.Get<FBXFileManager>();
|
||||
panel_assetproperties.onOpen += fbxFileManager.GetCustomAssetData;
|
||||
panel_thumbnail.onOpen += fbxFileManager.GetCustomAssetData;
|
||||
|
||||
var linkDataUIManager = GameObject.FindAnyObjectByType<LinkDataUIManager>();
|
||||
linkDataUIManager.onUISelected += panel_assetedit.SetAssetData;
|
||||
}
|
||||
|
||||
void SetPanelAsLastSibling(UIBase panel)
|
||||
|
||||
@@ -2,6 +2,8 @@ using XRLib;
|
||||
using XRLib.UI;
|
||||
using UnityEngine;
|
||||
using XED.Manage;
|
||||
using XED.Util;
|
||||
using XED.Command;
|
||||
|
||||
namespace XED.UI
|
||||
{
|
||||
@@ -11,5 +13,37 @@ namespace XED.UI
|
||||
public Panel_TopBar panel_topbar;
|
||||
public Panel_Toolbar panel_toolbar;
|
||||
public Panel_ModeControl panel_modecontrol;
|
||||
|
||||
private void Awake()
|
||||
{
|
||||
canvasHandler = new StaticCanvasHandler(this);
|
||||
}
|
||||
|
||||
public override void AfterAwake()
|
||||
{
|
||||
var statusPanel = FindSingle<ModePanel>();
|
||||
var renderObjectHandler = ManagerHub.instance.Get<RenderObjectHandler>();
|
||||
var fbxFileManager = ManagerHub.instance.Get<FBXFileManager>();
|
||||
var projectManager = ManagerHub.instance.Get<ProjectManager>();
|
||||
|
||||
panel_modecontrol.onClickObjectMode += () => statusPanel.SetMode(ModePanel.ProgramMode.ObjectLayout);
|
||||
statusPanel.SetMode(ModePanel.ProgramMode.ObjectLayout);
|
||||
|
||||
panel_shortcuts.onClickUndo += CommandInvoker.instance.Undo;
|
||||
panel_shortcuts.onClickRedo += CommandInvoker.instance.Redo;
|
||||
panel_shortcuts.onclickSave += projectManager.SaveProject;
|
||||
|
||||
panel_topbar.onClickSaveProject += projectManager.SaveProject;
|
||||
panel_topbar.onClickLoadProject += projectManager.LoadProject;
|
||||
panel_topbar.onClickNewProject += projectManager.NewProject;
|
||||
//panel_topbar.onClickLoadAssets += fbxFileManager.LoadLocalFBXDirectory;
|
||||
panel_topbar.onClickAssetWindow += fbxFileManager.LoadLocalData;
|
||||
|
||||
panel_toolbar.onClickMove += renderObjectHandler.SetRTGMove;
|
||||
panel_toolbar.onClickExpand += renderObjectHandler.SetRTGScale;
|
||||
panel_toolbar.onClickRotate += renderObjectHandler.SetRTGRotate;
|
||||
panel_toolbar.onClickRemove += renderObjectHandler.RemoveItem;
|
||||
panel_toolbar.onClickCopy += renderObjectHandler.CopyItem;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,7 @@ using System;
|
||||
using TMPro;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using XED.Util;
|
||||
using XRLib.UI;
|
||||
|
||||
namespace XED.UI
|
||||
@@ -22,8 +23,6 @@ namespace XED.UI
|
||||
{
|
||||
Button_Object1.onClick.AddListener(() => OnButtonClick(interferedTwinObject1));
|
||||
Button_Object2.onClick.AddListener(() => OnButtonClick(interferedTwinObject2));
|
||||
|
||||
OnClickButton += FindSingle<CameraManager>().MoveToTwinObjectPos;
|
||||
}
|
||||
|
||||
public void Initialize(TwinObject obj1, TwinObject obj2)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user