Compare commits
3 Commits
PrevEditor
...
ssl/250220
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
dc4a2a3234 | ||
|
|
34f6e9b705 | ||
| 75a28f8765 |
@@ -59,7 +59,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
@@ -253,7 +253,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0.011764706, b: 0.1764706, a: 0.78431374}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
@@ -330,7 +330,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0.011764706, b: 0.1764706, a: 0.2}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
@@ -436,8 +436,8 @@ MonoBehaviour:
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
rgba: 4278190080
|
||||
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
@@ -564,6 +564,8 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: a494c2f167427fd4a99187ffa99cb757, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
scrollRect: {fileID: 0}
|
||||
scrollView: {fileID: 0}
|
||||
--- !u!1001 &3219924497284413818
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -626,19 +628,19 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4494893725557815844, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3}
|
||||
propertyPath: m_Size
|
||||
value: 0.9893966
|
||||
value: 0.9894008
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4494893725557815844, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3}
|
||||
propertyPath: m_Value
|
||||
value: 1.0000051
|
||||
value: 1.0000204
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5672874548983414067, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: -2.9995284
|
||||
value: -2.9996562
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5672874548983414067, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 0.000116338735
|
||||
value: 0.00002207278
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5781062250184041115, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
|
||||
@@ -134,7 +134,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
@@ -261,6 +261,8 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: dcaf5c160a5eafd4888ef1224800d878, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
scrollRect: {fileID: 0}
|
||||
scrollView: {fileID: 0}
|
||||
--- !u!1 &5153900539240009752
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -335,8 +337,8 @@ MonoBehaviour:
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
rgba: 4278190080
|
||||
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
@@ -457,7 +459,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0.011764706, b: 0.1764706, a: 0.2}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
@@ -545,7 +547,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0.011764706, b: 0.1764706, a: 0.78431374}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
@@ -608,7 +610,7 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2671136523485413361, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3}
|
||||
propertyPath: m_Size
|
||||
value: 0.99999094
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3853414527505018043, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
@@ -652,19 +654,19 @@ PrefabInstance:
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4494893725557815844, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3}
|
||||
propertyPath: m_Size
|
||||
value: 0.9889386
|
||||
value: 0.9894008
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4494893725557815844, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3}
|
||||
propertyPath: m_Value
|
||||
value: 1.0001628
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5672874548983414067, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: -3.00006
|
||||
value: -2.999582
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5672874548983414067, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 0.00009338284
|
||||
value: -0.000010907401
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5781062250184041115, guid: c7fa5154df436e54bb0b444dfc25575d, type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
|
||||
126
Assets/Prefabs/UI/Panel_DragHandler.prefab
Normal file
126
Assets/Prefabs/UI/Panel_DragHandler.prefab
Normal file
@@ -0,0 +1,126 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &1185472671663402474
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 6104386061645465781}
|
||||
- component: {fileID: 6156216054905447384}
|
||||
- component: {fileID: 7241376036255963641}
|
||||
m_Layer: 0
|
||||
m_Name: SelectionBox
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 0
|
||||
--- !u!224 &6104386061645465781
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1185472671663402474}
|
||||
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: 1086541728698475203}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 960, y: 540}
|
||||
m_SizeDelta: {x: 100, y: 100}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &6156216054905447384
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1185472671663402474}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &7241376036255963641
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1185472671663402474}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 0.39215687}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 0}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &3736084005689246203
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1086541728698475203}
|
||||
- component: {fileID: 8534877828189409926}
|
||||
m_Layer: 0
|
||||
m_Name: Panel_DragHandler
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &1086541728698475203
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3736084005689246203}
|
||||
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: 6104386061645465781}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &8534877828189409926
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3736084005689246203}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cdd8bb536a64a014785b009185af4d29, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
7
Assets/Prefabs/UI/Panel_DragHandler.prefab.meta
Normal file
7
Assets/Prefabs/UI/Panel_DragHandler.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: ab86017dea8f4f549b71b4a6fa12b3ec
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -2641,7 +2641,7 @@ GameObject:
|
||||
- component: {fileID: 2136756930563110099}
|
||||
- component: {fileID: 7152092958078005519}
|
||||
m_Layer: 5
|
||||
m_Name: InputField_RowX
|
||||
m_Name: InputField_Row
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@@ -3207,7 +3207,7 @@ GameObject:
|
||||
- component: {fileID: 3830935198293741201}
|
||||
- component: {fileID: 2577566099563960335}
|
||||
m_Layer: 5
|
||||
m_Name: Button_AlighZAxis
|
||||
m_Name: Button_AlignZAxis
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@@ -3415,7 +3415,7 @@ GameObject:
|
||||
- component: {fileID: 1643216501148625476}
|
||||
- component: {fileID: 721381776748410442}
|
||||
m_Layer: 5
|
||||
m_Name: InputField_ColZ
|
||||
m_Name: InputField_Col
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@@ -4346,6 +4346,10 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 271fc4cf2e70c7146938aaf9384c212f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
InputField_GapX: {fileID: 0}
|
||||
InputField_GapZ: {fileID: 0}
|
||||
Button_Apply: {fileID: 0}
|
||||
InputField_GapX: {fileID: 774488603182085883}
|
||||
InputField_GapZ: {fileID: 2428612344838025271}
|
||||
InputField_Row: {fileID: 7152092958078005519}
|
||||
InputField_Col: {fileID: 721381776748410442}
|
||||
Button_AlignXAxis: {fileID: 2859805591241900362}
|
||||
Button_AlignZAxis: {fileID: 0}
|
||||
Button_AlignGrid: {fileID: 6149089688842269376}
|
||||
|
||||
@@ -122,9 +122,6 @@ MonoBehaviour:
|
||||
setToNextSiblingItem:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
onSelect:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
onDragBegin:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
@@ -132,6 +129,7 @@ MonoBehaviour:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
itemPopup: {fileID: 0}
|
||||
menuPopup: {fileID: 0}
|
||||
--- !u!114 &3692082455671801088
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -144,6 +142,12 @@ MonoBehaviour:
|
||||
m_Script: {fileID: 11500000, guid: 02c8aba09b6cf79448d6d0699308f932, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
onSelect:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
onParentChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1 &1054829719865186487
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -705,7 +709,7 @@ RectTransform:
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 1}
|
||||
m_AnchoredPosition: {x: 0.0000009536743, y: 0.00008143007}
|
||||
m_AnchoredPosition: {x: 0.0000009536743, y: 0.00060980837}
|
||||
m_SizeDelta: {x: 282.99957, y: 2}
|
||||
m_Pivot: {x: 0, y: 1}
|
||||
--- !u!114 &1134704777518231049
|
||||
@@ -823,6 +827,81 @@ MonoBehaviour:
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &5208196936687214603
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5298001966367028606}
|
||||
- component: {fileID: 1822305268980125542}
|
||||
- component: {fileID: 5681900736418180477}
|
||||
m_Layer: 5
|
||||
m_Name: Image
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &5298001966367028606
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5208196936687214603}
|
||||
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: 7333730248286312492}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0.5, y: 0.5}
|
||||
m_AnchorMax: {x: 0.5, y: 0.5}
|
||||
m_AnchoredPosition: {x: -137, y: 0}
|
||||
m_SizeDelta: {x: 24, y: 24}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &1822305268980125542
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5208196936687214603}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &5681900736418180477
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 5208196936687214603}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_Sprite: {fileID: 21300000, guid: 81b1a05534a2b49109c084189ba3f5e8, type: 3}
|
||||
m_Type: 0
|
||||
m_PreserveAspect: 0
|
||||
m_FillCenter: 1
|
||||
m_FillMethod: 4
|
||||
m_FillAmount: 1
|
||||
m_FillClockwise: 1
|
||||
m_FillOrigin: 0
|
||||
m_UseSpriteMesh: 0
|
||||
m_PixelsPerUnitMultiplier: 1
|
||||
--- !u!1 &5374529121170564152
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -889,7 +968,7 @@ MonoBehaviour:
|
||||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_text: Enter text...
|
||||
m_text: Search
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 69abd87f38225ed46aa612577c25f379, type: 2}
|
||||
m_sharedMaterial: {fileID: -7290017371581542385, guid: 69abd87f38225ed46aa612577c25f379, type: 2}
|
||||
@@ -1011,6 +1090,7 @@ RectTransform:
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 5298001966367028606}
|
||||
- {fileID: 493963855316554531}
|
||||
- {fileID: 5143485001752436147}
|
||||
m_Father: {fileID: 5781062250184041115}
|
||||
@@ -1602,7 +1682,7 @@ RectTransform:
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchoredPosition: {x: 0, y: -0.5}
|
||||
m_SizeDelta: {x: -20, y: -13}
|
||||
m_SizeDelta: {x: -50, y: -13}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!114 &3257810534314104275
|
||||
MonoBehaviour:
|
||||
|
||||
@@ -15,7 +15,7 @@ GameObject:
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
m_IsActive: 0
|
||||
--- !u!4 &4257723628152675382
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
123
Assets/Resources/Prefabs/PRF_SnapPoint.prefab
Normal file
123
Assets/Resources/Prefabs/PRF_SnapPoint.prefab
Normal file
@@ -0,0 +1,123 @@
|
||||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &6849823355470127284
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 5816802771913517320}
|
||||
- component: {fileID: 6122485136425333212}
|
||||
- component: {fileID: 2044656933811447541}
|
||||
- component: {fileID: 629700437578547089}
|
||||
- component: {fileID: 7066316665738235925}
|
||||
m_Layer: 9
|
||||
m_Name: PRF_SnapPoint
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &5816802771913517320
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6849823355470127284}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||
m_LocalPosition: {x: 0.5, y: 0.5, z: 0.5}
|
||||
m_LocalScale: {x: 0.2, y: 0.2, z: 0.2}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!33 &6122485136425333212
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6849823355470127284}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &2044656933811447541
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6849823355470127284}
|
||||
m_Enabled: 0
|
||||
m_CastShadows: 1
|
||||
m_ReceiveShadows: 1
|
||||
m_DynamicOccludee: 1
|
||||
m_StaticShadowCaster: 0
|
||||
m_MotionVectors: 1
|
||||
m_LightProbeUsage: 1
|
||||
m_ReflectionProbeUsage: 1
|
||||
m_RayTracingMode: 2
|
||||
m_RayTraceProcedural: 0
|
||||
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||
m_RayTracingAccelStructBuildFlags: 1
|
||||
m_SmallMeshCulling: 1
|
||||
m_RenderingLayerMask: 1
|
||||
m_RendererPriority: 0
|
||||
m_Materials:
|
||||
- {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2}
|
||||
m_StaticBatchInfo:
|
||||
firstSubMesh: 0
|
||||
subMeshCount: 0
|
||||
m_StaticBatchRoot: {fileID: 0}
|
||||
m_ProbeAnchor: {fileID: 0}
|
||||
m_LightProbeVolumeOverride: {fileID: 0}
|
||||
m_ScaleInLightmap: 1
|
||||
m_ReceiveGI: 1
|
||||
m_PreserveUVs: 0
|
||||
m_IgnoreNormalsForChartDetection: 0
|
||||
m_ImportantGI: 0
|
||||
m_StitchLightmapSeams: 1
|
||||
m_SelectedEditorRenderState: 3
|
||||
m_MinimumChartSize: 4
|
||||
m_AutoUVMaxDistance: 0.5
|
||||
m_AutoUVMaxAngle: 89
|
||||
m_LightmapParameters: {fileID: 0}
|
||||
m_SortingLayerID: 0
|
||||
m_SortingLayer: 0
|
||||
m_SortingOrder: 0
|
||||
m_AdditionalVertexStreams: {fileID: 0}
|
||||
--- !u!65 &629700437578547089
|
||||
BoxCollider:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6849823355470127284}
|
||||
m_Material: {fileID: 0}
|
||||
m_IncludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 0
|
||||
m_ExcludeLayers:
|
||||
serializedVersion: 2
|
||||
m_Bits: 511
|
||||
m_LayerOverridePriority: 0
|
||||
m_IsTrigger: 1
|
||||
m_ProvidesContacts: 0
|
||||
m_Enabled: 1
|
||||
serializedVersion: 3
|
||||
m_Size: {x: 1, y: 1, z: 1}
|
||||
m_Center: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &7066316665738235925
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 6849823355470127284}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 27fe0faeff38d0148b50bf181c8d8f64, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
7
Assets/Resources/Prefabs/PRF_SnapPoint.prefab.meta
Normal file
7
Assets/Resources/Prefabs/PRF_SnapPoint.prefab.meta
Normal file
@@ -0,0 +1,7 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 0c7b5be630a5eab4392b2166ad5f15c9
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
||||
@@ -126,7 +126,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
@@ -405,8 +405,8 @@ MonoBehaviour:
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4294967295
|
||||
m_fontColor: {r: 1, g: 1, b: 1, a: 1}
|
||||
rgba: 4278190080
|
||||
m_fontColor: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_enableVertexGradient: 0
|
||||
m_colorMode: 3
|
||||
m_fontColorGradient:
|
||||
@@ -967,7 +967,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Material: {fileID: 0}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_Color: {r: 0, g: 0, b: 0, a: 1}
|
||||
m_RaycastTarget: 1
|
||||
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_Maskable: 1
|
||||
|
||||
@@ -3792,6 +3792,7 @@ RectTransform:
|
||||
- {fileID: 1439596647}
|
||||
- {fileID: 1085911555}
|
||||
- {fileID: 1712022043}
|
||||
- {fileID: 916751974}
|
||||
m_Father: {fileID: 1981809316}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
@@ -3815,6 +3816,7 @@ MonoBehaviour:
|
||||
agvnodemodepopup: {fileID: 0}
|
||||
panel_tooltip: {fileID: 0}
|
||||
panel_propertyviewer: {fileID: 0}
|
||||
panel_draghandler: {fileID: 0}
|
||||
--- !u!114 &545811783
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -4581,6 +4583,11 @@ RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 6291666171046911034, guid: 1bc9e043f1497cd4fbb8e241c26966c1, type: 3}
|
||||
m_PrefabInstance: {fileID: 669513040}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!224 &670251071 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
m_PrefabInstance: {fileID: 1976685923}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!114 &712266949
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -5935,6 +5942,108 @@ MonoBehaviour:
|
||||
m_OnClick:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
--- !u!1001 &916751973
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 545811781}
|
||||
m_Modifications:
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3736084005689246203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Panel_DragHandler
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
--- !u!224 &916751974 stripped
|
||||
RectTransform:
|
||||
m_CorrespondingSourceObject: {fileID: 1086541728698475203, guid: ab86017dea8f4f549b71b4a6fa12b3ec, type: 3}
|
||||
m_PrefabInstance: {fileID: 916751973}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
--- !u!1 &918697618
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -8295,6 +8404,7 @@ RectTransform:
|
||||
- {fileID: 7047787819321409150}
|
||||
- {fileID: 6779400300325097680}
|
||||
- {fileID: 394283230}
|
||||
- {fileID: 670251071}
|
||||
m_Father: {fileID: 1981809316}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
@@ -8382,6 +8492,7 @@ MonoBehaviour:
|
||||
panel_componentlibrary: {fileID: 0}
|
||||
panel_assetlibrary: {fileID: 0}
|
||||
panel_objectinfo: {fileID: 0}
|
||||
panel_objectalign: {fileID: 0}
|
||||
--- !u!1 &1195629653
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -15933,7 +16044,7 @@ GameObject:
|
||||
- component: {fileID: 1715748517}
|
||||
- component: {fileID: 1715748519}
|
||||
m_Layer: 5
|
||||
m_Name: Panel_Header
|
||||
m_Name: Panel_TopBar
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
@@ -16008,9 +16119,20 @@ MonoBehaviour:
|
||||
m_GameObject: {fileID: 1715748515}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cb774b2f3bebecd448d68beda0137368, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: eeb29fdb1a9fc134aa57e1efd67b4848, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
Button_NewProject: {fileID: 0}
|
||||
Button_SaveProject: {fileID: 0}
|
||||
Button_LoadProject: {fileID: 0}
|
||||
Button_DownloadLayout: {fileID: 0}
|
||||
Button_ExportAGVPath: {fileID: 0}
|
||||
Button_ImportAGVPath: {fileID: 0}
|
||||
Button_LoadAssets: {fileID: 0}
|
||||
Button_AssetWindow: {fileID: 0}
|
||||
Button_ComponentWindow: {fileID: 0}
|
||||
Button_Tools: {fileID: 0}
|
||||
button_Icon: {fileID: 0}
|
||||
--- !u!1 &1728035472
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
@@ -16578,7 +16700,7 @@ MonoBehaviour:
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
panel_shortcuts: {fileID: 0}
|
||||
panel_header: {fileID: 0}
|
||||
panel_topbar: {fileID: 0}
|
||||
panel_toolbar: {fileID: 0}
|
||||
--- !u!4 &1805249248 stripped
|
||||
Transform:
|
||||
@@ -17650,6 +17772,323 @@ CanvasRenderer:
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1960288572}
|
||||
m_CullTransparentMesh: 0
|
||||
--- !u!1001 &1976685923
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 1187423310}
|
||||
m_Modifications:
|
||||
- target: {fileID: 64760076949688941, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 64760076949688941, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 64760076949688941, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 64.125
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 64760076949688941, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -14
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 322483231651427656, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 322483231651427656, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 322483231651427656, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 64.125
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 322483231651427656, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -14
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 495174325582678740, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 25.18
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1389570078669053979, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1389570078669053979, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1389570078669053979, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 141
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1389570078669053979, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -61.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_Pivot.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_Pivot.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMax.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMin.x
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 0.5
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 318
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 260.74
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: -380.2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -281
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1670299614426086028, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1733309631157010962, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1733309631157010962, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1733309631157010962, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 141
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 1733309631157010962, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -121.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 2815481224497491875, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 38.26
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3263565422826670613, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 9.52
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3263565422826670613, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 19.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3759358454249268061, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 13.83
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3759358454249268061, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 19.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3963263371466394407, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3963263371466394407, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3963263371466394407, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 19.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3963263371466394407, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 161.97249
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 3963263371466394407, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -9.55
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4383763207084752213, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4383763207084752213, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4383763207084752213, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 217.875
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4383763207084752213, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -14
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4734915358213925375, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4734915358213925375, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4734915358213925375, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 8.972496
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4734915358213925375, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -9.55
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4815791146998578607, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 9.8
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 4815791146998578607, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 19.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6150045885068456404, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6150045885068456404, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6150045885068456404, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 141
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6150045885068456404, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -181.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6823706270529186750, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6823706270529186750, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6823706270529186750, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 27.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6823706270529186750, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 141
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6823706270529186750, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -13.55
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6929874536063340863, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: -36
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6929874536063340863, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: -53.639984
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7422702907034326837, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMax.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7422702907034326837, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchorMin.y
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7422702907034326837, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.x
|
||||
value: 217.875
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7422702907034326837, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_AnchoredPosition.y
|
||||
value: -14
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8351774369622538081, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.x
|
||||
value: 13.83
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 8351774369622538081, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_SizeDelta.y
|
||||
value: 19.1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9168477493309714298, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Panel_ObjectAlign
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 9168477493309714298, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
propertyPath: m_IsActive
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: db3e2e7e03663874a9b223063e7ea2d9, type: 3}
|
||||
--- !u!1 &1981809315
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using XED.UI;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using XED.UI;
|
||||
using WI;
|
||||
using XED.Manage;
|
||||
using XED.Util;
|
||||
@@ -26,7 +26,9 @@ namespace XED.Asset
|
||||
public SaveLoadFBXData saveLoadFBXData;
|
||||
public RenderObjectHandler renderObjectHandler;
|
||||
public event System.Action<string, List<GameObject>> onSelectObjects;
|
||||
public event System.Action onDeselectObjects;
|
||||
public event System.Action onRemoveObjects;
|
||||
public event System.Action onAssetDropped;
|
||||
void Awake()
|
||||
{
|
||||
saveLoadFBXData = FindFirstObjectByType<SaveLoadFBXData>();
|
||||
@@ -36,7 +38,7 @@ namespace XED.Asset
|
||||
{
|
||||
assetScrollRect = FindSingle<Canvas_Windows>().panel_assetlibrary.scrollRect;
|
||||
assetScrollView = FindSingle<Canvas_Windows>().panel_assetlibrary.scrollView;
|
||||
componentScrollView = FindSingle<Canvas_Windows>().panel_componentlibrary.scrollView;
|
||||
componentScrollView = FindSingle<Canvas_Windows>().panel_componentlibrary.scrollView;
|
||||
renderObjectPrefab = Resources.Load<GameObject>("Prefabs/PRF_RenderObject");
|
||||
|
||||
assetScrollRect.onDragBegin.AddListener(OnAssetSelected);
|
||||
@@ -72,7 +74,7 @@ namespace XED.Asset
|
||||
connectedAsset.assetData = selectedAssetData;
|
||||
connectedAsset.hierarchyItem = componentScrollView.AddItem(selectedAssetData.assetName, selectedItem, HierarchyItemType.obj);
|
||||
connectedAsset.renderObject = selectRenderObject;
|
||||
connectedAsset.renderObject.onTransformChanged = connectedAsset.assetData.OnTransformDataChanged;
|
||||
connectedAsset.renderObject.onTransformChanged = connectedAsset.assetData.OnTransformDataChanged;
|
||||
var command = new ActionCommand(
|
||||
() =>
|
||||
{
|
||||
@@ -80,9 +82,9 @@ namespace XED.Asset
|
||||
{
|
||||
connectedAsset.assetData.AddTransformToRender(connectedAsset.renderObject.transform);
|
||||
connectedAsset.renderObject.gameObject.SetActive(true);
|
||||
componentScrollView.AddItem(connectedAsset.hierarchyItem);
|
||||
componentScrollView.AddItem(connectedAsset.hierarchyItem);
|
||||
}
|
||||
connectedAsset.renderObject.Hide();
|
||||
connectedAsset.renderObject.Hide();
|
||||
connectedAssets.Add(connectedAsset);
|
||||
},
|
||||
() =>
|
||||
@@ -103,14 +105,14 @@ namespace XED.Asset
|
||||
}
|
||||
HierarchyItem item = assetScrollView.AddItem(objectName, assetData.gameObject, HierarchyItemType.file, parent);
|
||||
assetData.onLoadProgress.RemoveAllListeners();
|
||||
assetData.onLoadProgress.AddListener((x) => item.onLoadProgress?.Invoke(x));
|
||||
assetData.onLoadProgress.AddListener((x) => item.onLoadProgress?.Invoke(x));
|
||||
}
|
||||
public void OnRemoveFbxFile(string objectName)
|
||||
{
|
||||
assetScrollView.RemoveItem(objectName, HierarchyItemType.file);
|
||||
}
|
||||
public void OnAssetSelected(HierarchyItem item)
|
||||
{
|
||||
{
|
||||
if (item == null || item.linkedObject == null)
|
||||
{
|
||||
selectedAssetData = null;
|
||||
@@ -121,14 +123,14 @@ namespace XED.Asset
|
||||
{
|
||||
selectedAssetData = null;
|
||||
return;
|
||||
}
|
||||
}
|
||||
selectedItem = Instantiate(renderObjectPrefab);
|
||||
selectRenderObject = selectedItem.GetComponent<CustomAssetRenderObject>();
|
||||
selectRenderObject.instantiateObject = selectedAssetData.InstantiateLoadedObject;
|
||||
selectRenderObject.getBounds = selectedAssetData.GetCombinedBoundary;
|
||||
selectRenderObject.CreateRenderObject();
|
||||
selectRenderObject.Select();
|
||||
selectedAssetData.AddTransformToRender(selectedItem.transform);
|
||||
selectedAssetData.AddTransformToRender(selectedItem.transform);
|
||||
}
|
||||
public void OnAssetDropped(HierarchyItem item)
|
||||
{
|
||||
@@ -137,16 +139,17 @@ namespace XED.Asset
|
||||
bool isPointerOutScrollRect = !assetScrollRect.IsPointerOverScrollRect();
|
||||
if (item != null && isPointerOutScrollRect)
|
||||
{
|
||||
CreateConnectedAsset();
|
||||
CreateConnectedAsset();
|
||||
}
|
||||
else
|
||||
{
|
||||
{
|
||||
selectedAssetData.RemoveTransform(selectedItem.transform);
|
||||
Destroy(selectedItem);
|
||||
}
|
||||
selectRenderObject.Deselect();
|
||||
selectedAssetData = null;
|
||||
}
|
||||
selectRenderObject.Deselect();
|
||||
selectedAssetData = null;
|
||||
onAssetDropped?.Invoke();
|
||||
}
|
||||
public void OnSelectObjectFromHierarchy(List<HierarchyItem> selectedItems)
|
||||
{
|
||||
if (selectedItems.Count == 0)
|
||||
@@ -162,7 +165,7 @@ namespace XED.Asset
|
||||
renderObjectHandler.RemoveAllSelections();
|
||||
for (int i = 0; i < selectedItems.Count; i++)
|
||||
{
|
||||
ConnectedAsset searchAsset = connectedAssets.Find((x) => x.hierarchyItem == selectedItems[i]);
|
||||
ConnectedAsset searchAsset = 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);
|
||||
renderObjectHandler.AddSelection(searchAsset.renderObject);
|
||||
@@ -199,7 +202,7 @@ namespace XED.Asset
|
||||
}
|
||||
string name = "";
|
||||
List<GameObject> selectedObjects = new List<GameObject>();
|
||||
List<HierarchyItem> selectedItems = new List<HierarchyItem>();
|
||||
List<HierarchyItem> selectedItems = new List<HierarchyItem>();
|
||||
for (int i = 0; i < objects.Count; i++)
|
||||
{
|
||||
ConnectedAsset searchAsset = connectedAssets.Find((x) => x.renderObject == objects[i]);
|
||||
@@ -209,13 +212,38 @@ namespace XED.Asset
|
||||
}
|
||||
componentScrollView.OnSelect(selectedItems);
|
||||
onSelectObjects?.Invoke(name, selectedObjects);
|
||||
}
|
||||
}
|
||||
public void OnDragBoxSelect(Rect selectionBoxRect)
|
||||
{
|
||||
List<ConnectedAsset> activeAssets = connectedAssets.FindAll(x => x.renderObject != null && x.renderObject.gameObject.activeSelf);
|
||||
if (activeAssets.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
string name = "";
|
||||
List<HierarchyItem> selectedItems = new List<HierarchyItem>();
|
||||
List<CustomAssetRenderObject> selectedRenderObjects = new List<CustomAssetRenderObject>();
|
||||
renderObjectHandler.RemoveAllSelections();
|
||||
for (int i = 0; i < activeAssets.Count; i++)
|
||||
{
|
||||
ConnectedAsset activeAsset = activeAssets[i];
|
||||
if (selectionBoxRect.Contains(Camera.main.WorldToScreenPoint(activeAsset.renderObject.transform.position)))
|
||||
{
|
||||
name = i == 0 ? activeAsset.hierarchyItem.name : name.Equals(activeAsset.hierarchyItem.name) ? activeAsset.hierarchyItem.name : "-";
|
||||
selectedItems.Add(activeAsset.hierarchyItem);
|
||||
selectedRenderObjects.Add(activeAsset.renderObject);
|
||||
}
|
||||
}
|
||||
renderObjectHandler.AddSelection(selectedRenderObjects);
|
||||
componentScrollView.OnSelect(selectedItems);
|
||||
onSelectObjects?.Invoke(name, selectedRenderObjects.Select(x=>x.gameObject).ToList());
|
||||
}
|
||||
public void OnRemoveObject(List<CustomAssetRenderObject> objects)
|
||||
{
|
||||
if (objects.Count == 0)
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
List<ConnectedAsset> removeList = new List<ConnectedAsset>();
|
||||
List<int> siblingIndex = new List<int>();
|
||||
for (int i = 0; i < objects.Count; i++)
|
||||
@@ -223,13 +251,13 @@ namespace XED.Asset
|
||||
ConnectedAsset searchAsset = connectedAssets.Find((x) => x.renderObject == objects[i]);
|
||||
removeList.Add(searchAsset);
|
||||
siblingIndex.Add(searchAsset.hierarchyItem.GetSiblingIndex());
|
||||
}
|
||||
}
|
||||
var command = new ActionCommand(
|
||||
() =>
|
||||
{
|
||||
for (int i = 0; i < removeList.Count; i++)
|
||||
{
|
||||
ConnectedAsset connectedAsset = removeList[i];
|
||||
ConnectedAsset connectedAsset = removeList[i];
|
||||
componentScrollView.RemoveItem(connectedAsset.hierarchyItem);
|
||||
connectedAsset.assetData.RemoveTransform(connectedAsset.renderObject.transform);
|
||||
connectedAsset.renderObject.gameObject.SetActive(false);
|
||||
@@ -239,7 +267,7 @@ namespace XED.Asset
|
||||
{
|
||||
ConnectedAsset searchAsset = connectedAssets.Find((x) => x.hierarchyItem == childItems[k]);
|
||||
searchAsset.assetData.RemoveTransform(searchAsset.renderObject.transform);
|
||||
searchAsset.renderObject.gameObject.SetActive(false);
|
||||
searchAsset.renderObject.gameObject.SetActive(false);
|
||||
}
|
||||
}
|
||||
onRemoveObjects?.Invoke();
|
||||
@@ -249,7 +277,7 @@ namespace XED.Asset
|
||||
{
|
||||
for (int i = 0; i < removeList.Count; i++)
|
||||
{
|
||||
ConnectedAsset connectedAsset = removeList[i];
|
||||
ConnectedAsset connectedAsset = removeList[i];
|
||||
componentScrollView.AttachItem(connectedAsset.hierarchyItem.parent, connectedAsset.hierarchyItem, siblingIndex[i]);
|
||||
connectedAsset.assetData.AddTransformToRender(connectedAsset.renderObject.transform);
|
||||
connectedAsset.renderObject.gameObject.SetActive(true);
|
||||
@@ -262,7 +290,7 @@ namespace XED.Asset
|
||||
{
|
||||
ConnectedAsset searchAsset = connectedAssets.Find((x) => x.hierarchyItem == childItems[k]);
|
||||
searchAsset.assetData.AddTransformToRender(searchAsset.renderObject.transform);
|
||||
searchAsset.renderObject.gameObject.SetActive(true);
|
||||
searchAsset.renderObject.gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
});
|
||||
@@ -275,7 +303,7 @@ namespace XED.Asset
|
||||
return;
|
||||
}
|
||||
List<ConnectedAsset> copySources = new List<ConnectedAsset>();
|
||||
List<ConnectedAsset> copyList = new List<ConnectedAsset>();
|
||||
List<ConnectedAsset> copyList = new List<ConnectedAsset>();
|
||||
for (int i = 0; i < objects.Count; i++)
|
||||
{
|
||||
ConnectedAsset searchAsset = connectedAssets.Find((x) => x.renderObject == objects[i]);
|
||||
@@ -296,11 +324,11 @@ namespace XED.Asset
|
||||
GameObject copyObject = Instantiate(renderObjectPrefab);
|
||||
copyAsset.assetData = copySource.assetData;
|
||||
copyAsset.hierarchyItem = copySource.hierarchyItem.Copy();
|
||||
copyAsset.renderObject = copyObject.GetComponent<CustomAssetRenderObject>();
|
||||
copyAsset.renderObject = copyObject.GetComponent<CustomAssetRenderObject>();
|
||||
copyAsset.renderObject.getBounds = copySource.assetData.GetCombinedBoundary;
|
||||
copyAsset.renderObject.onTransformChanged = copySource.assetData.OnTransformDataChanged;
|
||||
copyAsset.renderObject.instantiateObject = copySource.assetData.InstantiateLoadedObject;
|
||||
copyAsset.renderObject.CreateRenderObject();
|
||||
copyAsset.renderObject.CreateRenderObject();
|
||||
copyAsset.renderObject.transform.position = copySource.renderObject.transform.position;
|
||||
copyAsset.renderObject.transform.rotation = copySource.renderObject.transform.rotation;
|
||||
copyAsset.renderObject.transform.localScale = copySource.renderObject.transform.localScale;
|
||||
@@ -318,13 +346,13 @@ namespace XED.Asset
|
||||
ConnectedAsset childSource = connectedAssets.Find((x) => x.hierarchyItem == srcChildren[k]);
|
||||
GameObject copyChildObject = Instantiate(renderObjectPrefab);
|
||||
ConnectedAsset childAsset = new ConnectedAsset();
|
||||
childAsset.assetData = childSource.assetData;
|
||||
childAsset.assetData = childSource.assetData;
|
||||
childAsset.hierarchyItem = dstChildren[k];
|
||||
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.CreateRenderObject();
|
||||
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;
|
||||
@@ -344,7 +372,7 @@ namespace XED.Asset
|
||||
copyAsset.renderObject.gameObject.SetActive(true);
|
||||
copyAsset.renderObject.Hide();
|
||||
componentScrollView.AddItem(copyAsset.hierarchyItem);
|
||||
}
|
||||
}
|
||||
for (int i = 0; i < copyList.Count; i++)
|
||||
{
|
||||
ConnectedAsset connectedAsset = copyList[i];
|
||||
@@ -355,13 +383,13 @@ namespace XED.Asset
|
||||
searchAsset.assetData.AddTransformToRender(searchAsset.renderObject.transform);
|
||||
searchAsset.renderObject.gameObject.SetActive(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
() =>
|
||||
{
|
||||
for (int i = 0; i < copyList.Count; i++)
|
||||
{
|
||||
ConnectedAsset connectedAsset = copyList[i];
|
||||
ConnectedAsset connectedAsset = copyList[i];
|
||||
componentScrollView.RemoveItem(connectedAsset.hierarchyItem);
|
||||
connectedAsset.assetData.RemoveTransform(connectedAsset.renderObject.transform);
|
||||
connectedAsset.renderObject.gameObject.SetActive(false);
|
||||
@@ -393,9 +421,10 @@ namespace XED.Asset
|
||||
return;
|
||||
}
|
||||
childAsset.renderObject.transform.parent = parentAsset.renderObject.transform;
|
||||
}
|
||||
}
|
||||
public void OnDeselectAll()
|
||||
{
|
||||
onDeselectObjects?.Invoke();
|
||||
componentScrollView.DeselectAll();
|
||||
}
|
||||
public void SaveSelectedAssetDatasToLocal()
|
||||
@@ -407,7 +436,7 @@ namespace XED.Asset
|
||||
saveLoadFBXData.LoadLocalData();
|
||||
}
|
||||
public void OrderByHierarchy(List<CustomAssetRenderObject> objectsToOrder)
|
||||
{
|
||||
{
|
||||
SortedDictionary<int, CustomAssetRenderObject> itemToObject = new SortedDictionary<int, CustomAssetRenderObject>();
|
||||
for (int i = 0; i < objectsToOrder.Count; i++)
|
||||
{
|
||||
@@ -418,16 +447,16 @@ namespace XED.Asset
|
||||
objectsToOrder = itemToObject.Values.ToList();
|
||||
}
|
||||
Vector3? GetMousePointOnYPlane(float maxDistance)
|
||||
{
|
||||
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
||||
Plane yPlane = new Plane(Vector3.up, Vector3.zero);
|
||||
{
|
||||
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
|
||||
Plane yPlane = new Plane(Vector3.up, Vector3.zero);
|
||||
if (yPlane.Raycast(ray, out float distance))
|
||||
{
|
||||
{
|
||||
if (distance <= maxDistance)
|
||||
{
|
||||
return ray.GetPoint(distance);
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
@@ -437,4 +466,4 @@ namespace XED.Asset
|
||||
public CustomAssetData assetData;
|
||||
public CustomAssetRenderObject renderObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -27,7 +27,7 @@ namespace XED.Util
|
||||
{
|
||||
objectRenderer = GetComponentInChildren<MeshRenderer>();
|
||||
snapPoints = GetComponentsInChildren<ObjectSnap>().Select(x => x.transform).ToList();
|
||||
boxCollider = GetComponent<BoxCollider>();
|
||||
boxCollider = GetComponent<BoxCollider>();
|
||||
matCubeShow = Resources.Load<Material>("Materials/Mat_CubeShow");
|
||||
matCubeSelected = Resources.Load<Material>("Materials/Mat_CubeSelected");
|
||||
matCubeCollided = Resources.Load<Material>("Materials/Mat_CubeCollided");
|
||||
@@ -205,5 +205,29 @@ namespace XED.Util
|
||||
renderObject = null;
|
||||
}
|
||||
}
|
||||
public Bounds GetBounds()
|
||||
{
|
||||
return boxCollider.bounds;
|
||||
}
|
||||
public List<Vector3> GetRenderObjectVertices()
|
||||
{
|
||||
MeshFilter[] meshFilters = renderObject.GetComponentsInChildren<MeshFilter>();
|
||||
List<Vector3> points = new List<Vector3>();
|
||||
for (int i = 0; i < meshFilters.Length; i++)
|
||||
{
|
||||
Vector3[] vertices = meshFilters[i].mesh.vertices;
|
||||
for (int k = 0; k < vertices.Length; k++)
|
||||
{
|
||||
Vector3 pt = renderObject.transform.TransformPoint(vertices[k]);
|
||||
points.Add(pt);
|
||||
}
|
||||
}
|
||||
return points;
|
||||
}
|
||||
public KDTree GetVertexPointKDTree()
|
||||
{
|
||||
if (renderObject == null) return null;
|
||||
return new KDTree(renderObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,27 +1,32 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.Events;
|
||||
using UnityEngine.EventSystems;
|
||||
using XED.Interfaces;
|
||||
using XED.Manage;
|
||||
using XED.RuntimeGizmo;
|
||||
using XED.RuntimeGizmo;
|
||||
|
||||
namespace XED.Util
|
||||
{
|
||||
public class RenderObjectHandler : MonoBehaviour, IStatusController, IInputHandler
|
||||
{
|
||||
public List<CustomAssetRenderObject> selectedRenderObjects = new List<CustomAssetRenderObject>();
|
||||
List<CustomAssetRenderObject> selectedRenderObjects = new List<CustomAssetRenderObject>();
|
||||
List<CustomAssetRenderObject> copyRenderObjects = new List<CustomAssetRenderObject>();
|
||||
List<GameObject> selectedGameObjects = new List<GameObject>();
|
||||
CustomAssetRenderObject prevSelectedObject;
|
||||
RTGController rtgController;
|
||||
RTGController rtgController;
|
||||
ConvexHullCalculator convexHullCalculator = new ConvexHullCalculator();
|
||||
Vector3 clickBeginPos;
|
||||
float clickLengthThreshold = 5.0f;
|
||||
int uiLayer;
|
||||
int selectIndex;
|
||||
bool lockHandler = false;
|
||||
public UnityEvent<Vector3> onClickBegin;
|
||||
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;
|
||||
@@ -34,20 +39,43 @@ namespace XED.Util
|
||||
myHandler = GetInputHandler();
|
||||
}
|
||||
private void Start()
|
||||
{
|
||||
{
|
||||
rtgController = new RTGController();
|
||||
rtgController.onTransformBegin = OnTransformBegin;
|
||||
rtgController.onTransformChanged = OnTransformChangedFromRTG;
|
||||
uiLayer = LayerMask.NameToLayer("UI");
|
||||
//var inputManager = FindSingle<UserInputManager>();
|
||||
|
||||
|
||||
selectIndex = 0;
|
||||
}
|
||||
private void Update()
|
||||
{
|
||||
if (Input.GetKeyDown(KeyCode.Space))
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
private bool ApproximatelyEqual(Vector3 a, Vector3 b, float epsilon = 1e-5f)
|
||||
{
|
||||
return Mathf.Abs(a.x - b.x) < epsilon &&
|
||||
Mathf.Abs(a.y - b.y) < epsilon &&
|
||||
Mathf.Abs(a.z - b.z) < epsilon;
|
||||
}
|
||||
private void OnMousePointerDown()
|
||||
{
|
||||
clickBeginPos = Input.mousePosition;
|
||||
onClickBegin?.Invoke(clickBeginPos);
|
||||
//ui를 선택했을 경우에는 오브젝트 선택을 멈춘다.
|
||||
PointerEventData pointerData = new PointerEventData(EventSystem.current)
|
||||
{
|
||||
position = Input.mousePosition
|
||||
};
|
||||
List<RaycastResult> raycastResults = new List<RaycastResult>();
|
||||
EventSystem.current.RaycastAll(pointerData, raycastResults);
|
||||
if (raycastResults.Any(x => x.gameObject.layer == uiLayer))
|
||||
{
|
||||
return;
|
||||
}
|
||||
onDragBegin?.Invoke(clickBeginPos);
|
||||
}
|
||||
private void OnMousePointerUp()
|
||||
{
|
||||
@@ -67,24 +95,26 @@ namespace XED.Util
|
||||
EventSystem.current.RaycastAll(pointerData, raycastResults);
|
||||
if (raycastResults.Any(x => x.gameObject.layer == uiLayer))
|
||||
{
|
||||
onDragForceEnd?.Invoke();
|
||||
return;
|
||||
}
|
||||
}
|
||||
//포인터 업 위치가 포인터 다운 위치에서 크게 벗어났을 경우는 클릭을 무시한다.
|
||||
if ((clickBeginPos - Input.mousePosition).magnitude > clickLengthThreshold)
|
||||
{
|
||||
DeselectAll();
|
||||
onDragEnd?.Invoke(Input.mousePosition);
|
||||
return;
|
||||
}
|
||||
List<CustomAssetRenderObject> raycastedTarget = new List<CustomAssetRenderObject>();
|
||||
CustomAssetRenderObject renderObject = null;
|
||||
foreach (var result in raycastResults)
|
||||
{
|
||||
{
|
||||
renderObject = result.gameObject.GetComponent<CustomAssetRenderObject>();
|
||||
if (renderObject != null)
|
||||
{
|
||||
raycastedTarget.Add(renderObject);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (raycastedTarget.Count > 0)
|
||||
{
|
||||
//오브젝트가 여러개 겹쳐 있을 경우 뒤의 오브젝트를 순차적으로 선택해주기 위한 용도
|
||||
@@ -119,7 +149,7 @@ namespace XED.Util
|
||||
{
|
||||
RemoveAllSelections();
|
||||
AddSelection(renderObject);
|
||||
}
|
||||
}
|
||||
prevSelectedObject = renderObject;
|
||||
OnSelect();
|
||||
}
|
||||
@@ -127,7 +157,8 @@ namespace XED.Util
|
||||
{
|
||||
ResetRTG();
|
||||
DeselectAll();
|
||||
}
|
||||
}
|
||||
onDragForceEnd?.Invoke();
|
||||
}
|
||||
public void DeselectAll()
|
||||
{
|
||||
@@ -149,6 +180,21 @@ namespace XED.Util
|
||||
selectedGameObjects.Add(item.gameObject);
|
||||
rtgController.SetGizmoTargetObjects(selectedGameObjects);
|
||||
}
|
||||
public void AddSelection(List<CustomAssetRenderObject> items)
|
||||
{
|
||||
for (int i = 0; i < items.Count; i++)
|
||||
{
|
||||
CustomAssetRenderObject item = items[i];
|
||||
if (selectedRenderObjects.Any(x => x == item))
|
||||
{
|
||||
return;
|
||||
}
|
||||
item.Select();
|
||||
selectedRenderObjects.Add(item);
|
||||
selectedGameObjects.Add(item.gameObject);
|
||||
}
|
||||
rtgController.SetGizmoTargetObjects(selectedGameObjects);
|
||||
}
|
||||
public void RemoveAllSelections()
|
||||
{
|
||||
for (int i = 0; i < selectedRenderObjects.Count; i++)
|
||||
@@ -166,7 +212,7 @@ namespace XED.Util
|
||||
rtgController.SetGizmoTargetObjects(selectedGameObjects);
|
||||
}
|
||||
private void OnSelect()
|
||||
{
|
||||
{
|
||||
onSelectObject?.Invoke(selectedRenderObjects);
|
||||
rtgController.SetGizmoTargetObjects(selectedGameObjects);
|
||||
}
|
||||
@@ -194,18 +240,19 @@ namespace XED.Util
|
||||
{
|
||||
OnTransformChanged(transformObjects);
|
||||
onTransformChanged?.Invoke(selectedGameObjects);
|
||||
onDragForceEnd?.Invoke();
|
||||
}
|
||||
public void OnTransformChanged(List<GameObject> transformObjects)
|
||||
{
|
||||
{
|
||||
foreach (GameObject gb in transformObjects)
|
||||
{
|
||||
CustomAssetRenderObject renderObject = gb.GetComponent<CustomAssetRenderObject>();
|
||||
if (renderObject != null)
|
||||
{
|
||||
renderObject.onTransformChanged?.Invoke();
|
||||
renderObject.onTransformChanged?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public void RemoveItem()
|
||||
{
|
||||
if (selectedRenderObjects.Count == 0) return;
|
||||
@@ -216,120 +263,151 @@ namespace XED.Util
|
||||
if (selectedRenderObjects.Count == 0) return;
|
||||
onCopyObject?.Invoke(selectedRenderObjects);
|
||||
}
|
||||
public void SaveItemsToCopy()
|
||||
{
|
||||
copyRenderObjects.Clear();
|
||||
copyRenderObjects.AddRange(selectedRenderObjects);
|
||||
}
|
||||
public void CopySavedItems()
|
||||
{
|
||||
if (copyRenderObjects.Count == 0) return;
|
||||
onCopyObject?.Invoke(copyRenderObjects);
|
||||
}
|
||||
public void ResetGizmoTargetObjects()
|
||||
{
|
||||
rtgController.SetGizmoTargetObjects(selectedGameObjects);
|
||||
}
|
||||
// public void AlignObjects(Vector2 space)
|
||||
// {
|
||||
// if (selectedRenderObjects.Count <= 1)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
// onOrderByHierachy?.Invoke(selectedRenderObjects);
|
||||
// List<CustomAssetRenderObject> objectsToAlign = new List<CustomAssetRenderObject>(selectedRenderObjects);
|
||||
// List<Vector3> originalPos = objectsToAlign.Select(x => x.transform.position).ToList();
|
||||
//
|
||||
// ActionCommand command = new ActionCommand(
|
||||
// () =>
|
||||
// {
|
||||
// for (int i = 1; i < objectsToAlign.Count; i++)
|
||||
// {
|
||||
// CustomAssetRenderObject renderObject = objectsToAlign[i];
|
||||
// renderObject.transform.position = new Vector3(
|
||||
// objectsToAlign[i - 1].transform.position.x + space.x,
|
||||
// renderObject.transform.position.y,
|
||||
// objectsToAlign[i - 1].transform.position.z + space.y);
|
||||
// renderObject.onTransformChanged?.Invoke();
|
||||
// }
|
||||
// onTransformChanged?.Invoke(objectOrderByX.Select(renderObject => renderObject.transform).ToList());
|
||||
// },
|
||||
// () =>
|
||||
// {
|
||||
// for (int i = 1; i < objectsToAlign.Count; i++)
|
||||
// {
|
||||
// CustomAssetRenderObject renderObject = objectOrderByX[i];
|
||||
// float origX = originalPos[i];
|
||||
// renderObject.transform.position = new Vector3(origX, renderObject.transform.position.y, renderObject.transform.position.z);
|
||||
// renderObject.onTransformChanged?.Invoke();
|
||||
// }
|
||||
// onTransformChanged?.Invoke(objectOrderByX.Select(renderObject => renderObject.transform).ToList());
|
||||
// });
|
||||
// CommandManager.I.ExecuteCommand(command);
|
||||
// }
|
||||
//
|
||||
//public void ObjectSpacingX(float space)
|
||||
//{
|
||||
// if (selectedRenderObjects.Count <= 1)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
// List<CustomAssetRenderObject> objectOrderByX = selectedRenderObjects.OrderBy(x => x.transform.position.x).ToList();
|
||||
// List<float> originalPosX = objectOrderByX.Select(x => x.transform.position.x).ToList();
|
||||
//
|
||||
// ActionCommand command = new ActionCommand(
|
||||
// () =>
|
||||
// {
|
||||
// for (int i = 1; i < objectOrderByX.Count; i++)
|
||||
// {
|
||||
// CustomAssetRenderObject renderObject = objectOrderByX[i];
|
||||
// renderObject.transform.position = new Vector3(
|
||||
// objectOrderByX[i - 1].transform.position.x + space,
|
||||
// renderObject.transform.position.y,
|
||||
// renderObject.transform.position.z);
|
||||
// renderObject.onTransformChanged?.Invoke();
|
||||
// }
|
||||
// onTransformChanged?.Invoke(objectOrderByX.Select(renderObject => renderObject.transform).ToList());
|
||||
// },
|
||||
// () =>
|
||||
// {
|
||||
// for (int i = 1; i < objectOrderByX.Count; i++)
|
||||
// {
|
||||
// CustomAssetRenderObject renderObject = objectOrderByX[i];
|
||||
// float origX = originalPosX[i];
|
||||
// renderObject.transform.position = new Vector3(origX, renderObject.transform.position.y, renderObject.transform.position.z);
|
||||
// renderObject.onTransformChanged?.Invoke();
|
||||
// }
|
||||
// onTransformChanged?.Invoke(objectOrderByX.Select(renderObject => renderObject.transform).ToList());
|
||||
// });
|
||||
// CommandManager.I.ExecuteCommand(command);
|
||||
//}
|
||||
//public void ObjectSpacingZ(float space)
|
||||
//{
|
||||
// if (selectedRenderObjects.Count <= 1)
|
||||
// {
|
||||
// return;
|
||||
// }
|
||||
// List<CustomAssetRenderObject> objectOrderByZ = selectedRenderObjects.OrderBy(x => x.transform.position.z).ToList();
|
||||
// List<float> originalPosZ = objectOrderByZ.Select(x => x.transform.position.z).ToList();
|
||||
//
|
||||
// ActionCommand command = new ActionCommand(
|
||||
// () =>
|
||||
// {
|
||||
// for (int i = 1; i < objectOrderByZ.Count; i++)
|
||||
// {
|
||||
// CustomAssetRenderObject renderObject = objectOrderByZ[i];
|
||||
// renderObject.transform.position = new Vector3(
|
||||
// renderObject.transform.position.x,
|
||||
// renderObject.transform.position.y,
|
||||
// objectOrderByZ[i - 1].transform.position.z + space);
|
||||
// renderObject.onTransformChanged?.Invoke();
|
||||
// }
|
||||
// onTransformChanged?.Invoke(objectOrderByZ.Select(renderObject => renderObject.transform).ToList());
|
||||
// },
|
||||
// () =>
|
||||
// {
|
||||
// for (int i = 1; i < objectOrderByZ.Count; i++)
|
||||
// {
|
||||
// CustomAssetRenderObject renderObject = objectOrderByZ[i];
|
||||
// float origZ = originalPosZ[i];
|
||||
// renderObject.transform.position = new Vector3(renderObject.transform.position.x, renderObject.transform.position.y, origZ);
|
||||
// renderObject.onTransformChanged?.Invoke();
|
||||
// }
|
||||
// onTransformChanged?.Invoke(objectOrderByZ.Select(renderObject => renderObject.transform).ToList());
|
||||
// });
|
||||
// CommandManager.I.ExecuteCommand(command);
|
||||
//}
|
||||
public void AlignObjects(int row, int col, float spaceX, float spaceZ, int direction)
|
||||
{
|
||||
if (selectedRenderObjects.Count <= 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
onOrderByHierachy?.Invoke(selectedRenderObjects);
|
||||
List<CustomAssetRenderObject> objectsToAlign = new List<CustomAssetRenderObject>(selectedRenderObjects);
|
||||
List<Vector3> originalPos = objectsToAlign.Select(x => x.transform.position).ToList();
|
||||
|
||||
direction = ((direction % 8) + 8) % 8;
|
||||
int primary = direction % 2 == 0 ? col : row;
|
||||
Vector3 primaryDir = Vector3.zero;
|
||||
Vector3 secondaryDir = Vector3.zero;
|
||||
primaryDir = (direction == 0 || direction == 2) ? Vector3.right * spaceX :
|
||||
(direction == 4 || direction == 6) ? -Vector3.right * spaceX :
|
||||
(direction == 1 || direction == 7) ? Vector3.forward * spaceZ : -Vector3.forward * spaceZ;
|
||||
secondaryDir = (direction == 1 || direction == 3) ? Vector3.right * spaceX :
|
||||
(direction == 5 || direction == 7) ? -Vector3.right * spaceX :
|
||||
(direction == 0 || direction == 6) ? Vector3.forward * spaceZ : -Vector3.forward * spaceZ;
|
||||
|
||||
ActionCommand command = new ActionCommand(
|
||||
() =>
|
||||
{
|
||||
int countP = 0;
|
||||
int countS = 0;
|
||||
Vector3 referencePoint = objectsToAlign[0].transform.position;
|
||||
for (int i = 1; i < objectsToAlign.Count; i++)
|
||||
{
|
||||
CustomAssetRenderObject renderObject = objectsToAlign[i];
|
||||
if (countP < primary - 1 || primary == 0)
|
||||
{
|
||||
countP++;
|
||||
}
|
||||
else
|
||||
{
|
||||
countS++;
|
||||
countP = 0;
|
||||
}
|
||||
renderObject.transform.position = referencePoint + primaryDir * countP + secondaryDir * countS;
|
||||
renderObject.onTransformChanged?.Invoke();
|
||||
}
|
||||
onTransformChanged?.Invoke(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
|
||||
},
|
||||
() =>
|
||||
{
|
||||
for (int i = 1; i < objectsToAlign.Count; i++)
|
||||
{
|
||||
CustomAssetRenderObject renderObject = objectsToAlign[i];
|
||||
renderObject.transform.position = originalPos[i];
|
||||
renderObject.onTransformChanged?.Invoke();
|
||||
}
|
||||
onTransformChanged?.Invoke(objectsToAlign.Select(renderObject => renderObject.gameObject).ToList());
|
||||
});
|
||||
CommandManager.I.ExecuteCommand(command);
|
||||
}
|
||||
public void VertexSnap()
|
||||
{
|
||||
if (selectedRenderObjects.Count != 1)
|
||||
{
|
||||
return;
|
||||
}
|
||||
//가장 가까운 오브젝트에 붙여준다.
|
||||
//Transform.position이 가깝다고 오브젝트 사이 기리가 꼭 가장 가까운 것은 아니기 때문에
|
||||
//오버랩 박스에 충돌되는 모든 오브젝트의 버텍스로 KDTree를 구성해 볼까 하다가 관두었다.
|
||||
float minDist = float.MaxValue;
|
||||
CustomAssetRenderObject fromObject = selectedRenderObjects[0];
|
||||
CustomAssetRenderObject toObject = null;
|
||||
Bounds fromBounds = fromObject.GetBounds();
|
||||
Collider[] colliders = Physics.OverlapBox(fromBounds.center, fromBounds.size * 2.0f);
|
||||
foreach (Collider collider in colliders)
|
||||
{
|
||||
if (collider.gameObject == fromObject.gameObject) continue;
|
||||
CustomAssetRenderObject otherObject = collider.gameObject.GetComponent<CustomAssetRenderObject>();
|
||||
if (otherObject != null)
|
||||
{
|
||||
float dist = Vector3.Magnitude(fromObject.transform.position - otherObject.transform.position);
|
||||
if (dist < minDist)
|
||||
{
|
||||
minDist = dist;
|
||||
toObject = otherObject;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (toObject != null)
|
||||
{
|
||||
//선택된 오브젝트의 ConvexHull 버텍스 점을 계산해준다.
|
||||
//이는 iteration하는 버텍스 수를 줄이기 위해 해주며,
|
||||
//만약 선택된 오브젝트도 TDTree로 Nearest 포인트 탐지할 경우 toObject의 센터에 가장 가까운 포인트만 탐지되기 때문에 가장 가까운 버텍스 점이 골라지지 않는 경우가 있다.
|
||||
List<Vector3> verts = new List<Vector3>();
|
||||
List<int> tris = new List<int>();
|
||||
List<Vector3> normals = new List<Vector3>();
|
||||
convexHullCalculator.GenerateHull(fromObject.GetRenderObjectVertices(), false, ref verts, ref tris, ref normals);
|
||||
KDTree toTree = toObject.GetVertexPointKDTree();
|
||||
Vector3 nearestPoint = Vector3.zero;
|
||||
Vector3 snapPoint = Vector3.zero;
|
||||
float minDistance = float.MaxValue;
|
||||
for (int i = 0; i < verts.Count; i++)
|
||||
{
|
||||
Vector3 ptNearest = verts[i];
|
||||
Vector3 ptSnap = toTree.FindNearest(ptNearest);
|
||||
float tempDist = Vector3.Magnitude(ptSnap - ptNearest);
|
||||
if (tempDist < minDistance)
|
||||
{
|
||||
minDistance = tempDist;
|
||||
nearestPoint = ptNearest;
|
||||
snapPoint = ptSnap;
|
||||
}
|
||||
}
|
||||
//Vector3 direction = snapPoint - nearestPoint;
|
||||
//fromObject.transform.position += direction;
|
||||
List<Vector3> dir = new List<Vector3>() { snapPoint - nearestPoint };
|
||||
if (dir[0].magnitude < 0.5f)
|
||||
{
|
||||
fromObject.transform.position += dir[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
ActionCommand command = new ActionCommand(
|
||||
() =>
|
||||
{
|
||||
fromObject.transform.position += dir[0];
|
||||
},
|
||||
() =>
|
||||
{
|
||||
fromObject.transform.position -= dir[0];
|
||||
});
|
||||
CommandManager.I.ExecuteCommand(command);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
InputHandler myHandler;
|
||||
public void CurrentStatusEvent()
|
||||
@@ -354,7 +432,20 @@ namespace XED.Util
|
||||
getKeyActions.Add(KeyCode.W, SetRTGRotate);
|
||||
getKeyActions.Add(KeyCode.E, SetRTGScale);
|
||||
getKeyActions.Add(KeyCode.R, ResetRTG);
|
||||
var handler = new InputHandler(getKeyActions, downKeyActions, upKeyActions);
|
||||
getKeyActions.Add(KeyCode.V, VertexSnap);
|
||||
|
||||
var shortcutTable = new Dictionary<KeyCode, Dictionary<KeyCode, Action>>();
|
||||
#if UNITY_EDITOR
|
||||
shortcutTable.Add(KeyCode.LeftShift, new Dictionary<KeyCode, Action>());
|
||||
shortcutTable[KeyCode.LeftShift].Add(KeyCode.C, SaveItemsToCopy);
|
||||
shortcutTable[KeyCode.LeftShift].Add(KeyCode.V, CopySavedItems);
|
||||
#else
|
||||
shortcutTable.Add(KeyCode.LeftControl, new Dictionary<KeyCode, Action>());
|
||||
shortcutTable[KeyCode.LeftControl].Add(KeyCode.C, SaveItemsToCopy);
|
||||
shortcutTable[KeyCode.LeftControl].Add(KeyCode.V, CopySavedItems);
|
||||
#endif
|
||||
|
||||
var handler = new InputHandler(getKeyActions, downKeyActions, upKeyActions, shortcutTable);
|
||||
return handler;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,26 +4,28 @@ using System.IO;
|
||||
using UnityEngine.Events;
|
||||
using System.Collections;
|
||||
using TriLibCore.SFB;
|
||||
using XED.Util;
|
||||
using XED.Util;
|
||||
using System.Threading.Tasks;
|
||||
using MessagePack;
|
||||
using MessagePack;
|
||||
using System;
|
||||
using Newtonsoft.Json;
|
||||
using System.Text;
|
||||
using System.Linq;
|
||||
using System.Linq;
|
||||
using UnityEngine.EventSystems;
|
||||
|
||||
namespace XED.Asset
|
||||
{
|
||||
public class SaveLoadFBXData : MonoBehaviour
|
||||
{
|
||||
public string identifier;
|
||||
public string password;
|
||||
public string password;
|
||||
public UnityEvent<string, string, CustomAssetData> onLoadFbxFile;
|
||||
public UnityEvent<string> onRemoveFbxFile;
|
||||
public event System.Action onBeginLoadAsset;
|
||||
private SaveData saveData;
|
||||
private List<CustomAssetData> listAssets = new List<CustomAssetData>();
|
||||
private List<CustomAssetData> listAssets = new List<CustomAssetData>();
|
||||
private Queue<string> loadFilePath = new Queue<string>();
|
||||
private SharedMaterial sharedMaterial;
|
||||
private SharedMaterial sharedMaterial;
|
||||
private MessagePackFileManager<SaveData> fileManager;
|
||||
private bool isSaveTaskComplete = true;
|
||||
private bool isLoadTaskComplete = true;
|
||||
@@ -36,18 +38,19 @@ namespace XED.Asset
|
||||
StartCoroutine(CoroutineLoadLocalFiles());
|
||||
string baseDataPath = Application.streamingAssetsPath + "/baseAssetData";
|
||||
LoadLocalData(baseDataPath);
|
||||
}
|
||||
}
|
||||
bool IsWebURL(string path)
|
||||
{
|
||||
return path.StartsWith("http://") || path.StartsWith("https://");
|
||||
}
|
||||
public void LoadLocalFBXFile()
|
||||
{
|
||||
{
|
||||
TriLibCore.SFB.StandaloneFileBrowser.OpenFilePanelAsync("Load Local (File)", "C:\\Users", "fbx", false, OnLoadLocalFBXFile);
|
||||
}
|
||||
|
||||
private void OnLoadLocalFBXFile(IList<ItemWithStream> list)
|
||||
{
|
||||
onBeginLoadAsset?.Invoke();
|
||||
for (int i = 0; i < list.Count; i++)
|
||||
{
|
||||
if (!list[i].HasData)
|
||||
@@ -72,7 +75,7 @@ namespace XED.Asset
|
||||
continue;
|
||||
|
||||
var path = list[i].Name;
|
||||
var files = Directory.GetFiles(path, "*.fbx", SearchOption .AllDirectories);
|
||||
var files = Directory.GetFiles(path, "*.fbx", SearchOption.AllDirectories);
|
||||
if (listAssets.Find((x) => x.localFBXPath == path) != null)
|
||||
return;
|
||||
foreach (var file in files)
|
||||
@@ -80,7 +83,7 @@ namespace XED.Asset
|
||||
loadFilePath.Enqueue(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
public void SaveToLocalData(string path = "")
|
||||
{
|
||||
if (isSaveTaskComplete == false)
|
||||
@@ -103,8 +106,9 @@ namespace XED.Asset
|
||||
{
|
||||
return;
|
||||
}
|
||||
onBeginLoadAsset?.Invoke();
|
||||
StartCoroutine(CoroutineLoadFromLocalData(path));
|
||||
}
|
||||
}
|
||||
public void OnLoadLocalFBXFile(string[] paths)
|
||||
{
|
||||
if (paths != null && paths.Length > 0 && !string.IsNullOrEmpty(paths[0]))
|
||||
@@ -198,7 +202,7 @@ namespace XED.Asset
|
||||
{
|
||||
listAssets.Remove(assetData);
|
||||
onRemoveFbxFile?.Invoke(name);
|
||||
}
|
||||
}
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
@@ -231,10 +235,10 @@ namespace XED.Asset
|
||||
//Task task = SaveAsync(identifier, saveData);
|
||||
|
||||
string filePath = string.IsNullOrEmpty(path) ? Path.Combine(Application.persistentDataPath, identifier) : path;
|
||||
Task task = Task.Run(() => fileManager.SaveAsync(filePath, saveData));
|
||||
Task task = Task.Run(() => fileManager.SaveAsync(filePath, saveData));
|
||||
|
||||
yield return new WaitUntil(() => task.IsCompleted);
|
||||
isSaveTaskComplete = true;
|
||||
yield return new WaitUntil(() => task.IsCompleted);
|
||||
isSaveTaskComplete = true;
|
||||
yield return null;
|
||||
}
|
||||
IEnumerator CoroutineLoadFromLocalData(string path)
|
||||
@@ -244,7 +248,7 @@ namespace XED.Asset
|
||||
|
||||
//Task<SaveData> task = LoadAsync(identifier);
|
||||
|
||||
string filePath = string.IsNullOrEmpty(path) ? Path.Combine(Application.persistentDataPath, identifier) : path;
|
||||
string filePath = string.IsNullOrEmpty(path) ? Path.Combine(Application.persistentDataPath, identifier) : path;
|
||||
if (!System.IO.File.Exists(filePath))
|
||||
{
|
||||
Debug.Log("No File Found At : " + filePath);
|
||||
@@ -296,7 +300,7 @@ namespace XED.Asset
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
isLoadTaskComplete = true;
|
||||
isLoadTaskComplete = true;
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
@@ -315,7 +319,7 @@ namespace XED.Asset
|
||||
isLoadError = false;
|
||||
drawTransforms = new List<Transform>();
|
||||
}
|
||||
}
|
||||
}
|
||||
public class SharedMaterial
|
||||
{
|
||||
private Material sharedMaterial;
|
||||
@@ -534,7 +538,7 @@ namespace XED.Asset
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (material.HasProperty("_WorkflowMode"))
|
||||
{
|
||||
material.SetFloat("_WorkflowMode", hasSpecular ? 1f : 0f);
|
||||
@@ -584,7 +588,7 @@ namespace XED.Asset
|
||||
dicTextures[texData.uid] = tex;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
[MessagePackObject]
|
||||
public class SaveData
|
||||
{
|
||||
@@ -601,7 +605,7 @@ namespace XED.Asset
|
||||
[Key("FolderName")]
|
||||
public string folderName;
|
||||
[Key("ModelArray")]
|
||||
public ModelData[] models;
|
||||
public ModelData[] models;
|
||||
public void SaveData(GameObject modelObject, SharedMaterial sharedMaterial)
|
||||
{
|
||||
MeshRenderer[] meshRenderers = modelObject.transform.GetComponentsInChildren<MeshRenderer>(true);
|
||||
@@ -667,7 +671,7 @@ namespace XED.Asset
|
||||
[Key("Rotation")]
|
||||
public SerializableQuaternion rotation;
|
||||
[Key("Scale")]
|
||||
public SerializableVector3 scale;
|
||||
public SerializableVector3 scale;
|
||||
public void SetData(Transform transform)
|
||||
{
|
||||
position = new SerializableVector3();
|
||||
@@ -693,21 +697,21 @@ namespace XED.Asset
|
||||
[Key("Normals")]
|
||||
public SerializableVector3[] normals;
|
||||
[Key("UVs")]
|
||||
public SerializableVector2[] uv;
|
||||
public SerializableVector2[] uv;
|
||||
[Key("Submeshes")]
|
||||
public SubmeshData[] submeshes;
|
||||
public void SetData(Mesh mesh)
|
||||
{
|
||||
vertices = SerializableVector3.FromVector3Array(mesh.vertices);
|
||||
normals = SerializableVector3.FromVector3Array(mesh.normals);
|
||||
uv = SerializableVector2.FromVector2Array(mesh.uv);
|
||||
uv = SerializableVector2.FromVector2Array(mesh.uv);
|
||||
List<SubmeshData> submeshList = new List<SubmeshData>();
|
||||
for (int i = 0; i < mesh.subMeshCount; i++)
|
||||
{
|
||||
SubmeshData submesh = new SubmeshData
|
||||
{
|
||||
materialIndex = i,
|
||||
triangles = mesh.GetTriangles(i)
|
||||
materialIndex = i,
|
||||
triangles = mesh.GetTriangles(i)
|
||||
};
|
||||
submeshList.Add(submesh);
|
||||
}
|
||||
@@ -718,7 +722,7 @@ namespace XED.Asset
|
||||
Mesh newMesh = new Mesh();
|
||||
newMesh.vertices = SerializableVector3.ToVector3Array(vertices);
|
||||
newMesh.normals = SerializableVector3.ToVector3Array(normals);
|
||||
newMesh.uv = SerializableVector2.ToVector2Array(uv);
|
||||
newMesh.uv = SerializableVector2.ToVector2Array(uv);
|
||||
newMesh.subMeshCount = submeshes.Length;
|
||||
for (int i = 0; i < submeshes.Length; i++)
|
||||
{
|
||||
@@ -753,12 +757,12 @@ namespace XED.Asset
|
||||
}
|
||||
public void FromVector3(Vector3 v) { x = v.x; y = v.y; z = v.z; }
|
||||
public Vector3 ToVector3() => new Vector3(x, y, z);
|
||||
|
||||
|
||||
public static SerializableVector3[] FromVector3Array(Vector3[] array)
|
||||
{
|
||||
return array?.Select(v => new SerializableVector3(v.x, v.y, v.z)).ToArray();
|
||||
}
|
||||
|
||||
|
||||
public static Vector3[] ToVector3Array(SerializableVector3[] array)
|
||||
{
|
||||
return array?.Select(v => v.ToVector3()).ToArray();
|
||||
@@ -774,13 +778,13 @@ namespace XED.Asset
|
||||
public SerializableVector2(float x, float y)
|
||||
{
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.y = y;
|
||||
}
|
||||
public void FromVector2(Vector2 v) { x = v.x; y = v.y; }
|
||||
public Vector2 ToVector2() => new Vector2(x, y);
|
||||
|
||||
public static SerializableVector2[] FromVector2Array(Vector2[] array)
|
||||
{
|
||||
{
|
||||
return array?.Select(v => new SerializableVector2(v.x, v.y)).ToArray();
|
||||
}
|
||||
|
||||
@@ -832,12 +836,12 @@ namespace XED.Asset
|
||||
|
||||
public void SetData(Material material)
|
||||
{
|
||||
Color bc = material.HasProperty("_BaseColor") ? material.GetColor("_BaseColor") :
|
||||
material.HasProperty("_Color") ? material.GetColor("_Color") :
|
||||
Color bc = material.HasProperty("_BaseColor") ? material.GetColor("_BaseColor") :
|
||||
material.HasProperty("_Color") ? material.GetColor("_Color") :
|
||||
Color.white;
|
||||
baseColor = new float[4] { bc.r, bc.g, bc.b, bc.a };
|
||||
metallic = material.HasProperty("_Metallic") ? material.GetFloat("_Metallic") : 0;
|
||||
smoothness = material.HasProperty("_Smoothness") ? material.GetFloat("_Smoothness") :
|
||||
smoothness = material.HasProperty("_Smoothness") ? material.GetFloat("_Smoothness") :
|
||||
material.HasProperty("_Glossiness") ? material.GetFloat("_Glossiness") : 0;
|
||||
Color ec = material.HasProperty("_EmissionColor") ? material.GetColor("_EmissionColor") : Color.white;
|
||||
emissionColor = new float[4] { ec.r, ec.g, ec.b, ec.a };
|
||||
@@ -845,8 +849,8 @@ namespace XED.Asset
|
||||
surfaceType = material.HasProperty("_Surface") ? (int)material.GetFloat("_Surface") : -1;
|
||||
blendMode = material.HasProperty("_Blend") ? (int)material.GetFloat("_Blend") : -1;
|
||||
occlusionStrength = material.HasProperty("_OcclusionStrength") ? material.GetFloat("_OcclusionStrength") : 0;
|
||||
normalScale = material.HasProperty("_NormalScale") ? material.GetFloat("_NormalScale") :
|
||||
material.HasProperty("_BumpScale") ? material.GetFloat("_BumpScale") : 0;
|
||||
normalScale = material.HasProperty("_NormalScale") ? material.GetFloat("_NormalScale") :
|
||||
material.HasProperty("_BumpScale") ? material.GetFloat("_BumpScale") : 0;
|
||||
}
|
||||
|
||||
public void ApplyToMaterial(Material material)
|
||||
@@ -896,18 +900,18 @@ namespace XED.Asset
|
||||
{
|
||||
material.SetFloat("_Surface", 1);
|
||||
}
|
||||
if (surfaceType == 1 || renderMode == 3)
|
||||
if (surfaceType == 1 || renderMode == 3)
|
||||
{
|
||||
material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Transparent;
|
||||
material.SetFloat("_ZWrite", 0);
|
||||
material.SetFloat("_SrcBlend", (int)UnityEngine.Rendering.BlendMode.SrcAlpha);
|
||||
material.SetFloat("_DstBlend", (int)UnityEngine.Rendering.BlendMode.OneMinusSrcAlpha);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//Transparent
|
||||
if (renderMode == 3 || surfaceType == 1)
|
||||
if (renderMode == 3 || surfaceType == 1)
|
||||
{
|
||||
material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.Transparent;
|
||||
material.SetFloat("_ZWrite", 0);
|
||||
@@ -918,7 +922,7 @@ namespace XED.Asset
|
||||
material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
|
||||
}
|
||||
//CutOut
|
||||
else if (renderMode == 1)
|
||||
else if (renderMode == 1)
|
||||
{
|
||||
material.renderQueue = (int)UnityEngine.Rendering.RenderQueue.AlphaTest;
|
||||
material.EnableKeyword("_ALPHATEST_ON");
|
||||
@@ -936,8 +940,8 @@ namespace XED.Asset
|
||||
material.DisableKeyword("_ALPHABLEND_ON");
|
||||
material.DisableKeyword("_ALPHAPREMULTIPLY_ON");
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
[MessagePackObject]
|
||||
public class TextureData
|
||||
@@ -971,19 +975,19 @@ public class MessagePackFileManager<T>
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError($"Task Error: {ex.Message}\n{ex.StackTrace}");
|
||||
}
|
||||
return deserailze;
|
||||
}
|
||||
return deserailze;
|
||||
}
|
||||
|
||||
public async Task SaveAsync(string filePath, T data)
|
||||
{
|
||||
var lz4Option = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4Block);
|
||||
var lz4Option = MessagePackSerializerOptions.Standard.WithCompression(MessagePackCompression.Lz4Block);
|
||||
try
|
||||
{
|
||||
byte[] bytes = MessagePackSerializer.Serialize<T>(data, lz4Option);
|
||||
await File.WriteAllBytesAsync(filePath, bytes);
|
||||
}
|
||||
catch(Exception ex)
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.LogError($"Task Error: {ex.Message}\n{ex.StackTrace}");
|
||||
}
|
||||
|
||||
1221
Assets/Scripts/XED/Common/ConvexHullCalculator.cs
Normal file
1221
Assets/Scripts/XED/Common/ConvexHullCalculator.cs
Normal file
File diff suppressed because it is too large
Load Diff
2
Assets/Scripts/XED/Common/ConvexHullCalculator.cs.meta
Normal file
2
Assets/Scripts/XED/Common/ConvexHullCalculator.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 7f641992acc8b864bbd2a56cf7d61e13
|
||||
111
Assets/Scripts/XED/Common/KDTree.cs
Normal file
111
Assets/Scripts/XED/Common/KDTree.cs
Normal file
@@ -0,0 +1,111 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine;
|
||||
|
||||
namespace XED.Util
|
||||
{
|
||||
public class KDTree
|
||||
{
|
||||
private class KDNode
|
||||
{
|
||||
public Vector3 point;
|
||||
public KDNode left, right;
|
||||
public int axis;
|
||||
}
|
||||
|
||||
private KDNode root;
|
||||
|
||||
public KDTree(Vector3[] points)
|
||||
{
|
||||
root = Build(points, 0);
|
||||
}
|
||||
public KDTree(GameObject gb)
|
||||
{
|
||||
MeshFilter[] meshFilters = gb.GetComponentsInChildren<MeshFilter>();
|
||||
HashSet<Vector3> listPoints = new HashSet<Vector3>();
|
||||
for (int i = 0; i < meshFilters.Length; i++)
|
||||
{
|
||||
Vector3[] vertices = meshFilters[i].mesh.vertices;
|
||||
for (int k = 0; k < vertices.Length; k++)
|
||||
{
|
||||
Vector3 pt = gb.transform.TransformPoint(vertices[k]);
|
||||
listPoints.Add(pt);
|
||||
}
|
||||
}
|
||||
root = Build(listPoints.ToArray(), 0);
|
||||
}
|
||||
|
||||
private KDNode Build(Vector3[] points, int depth)
|
||||
{
|
||||
if (points.Length == 0) return null;
|
||||
|
||||
int axis = depth % 3;
|
||||
System.Array.Sort(points, (a, b) => (a[axis] < b[axis]) ? -1 : (a[axis] > b[axis]) ? 1 : 0);
|
||||
//System.Array.Sort(points, (a, b) => a[axis].CompareTo(b[axis]));
|
||||
int median = points.Length / 2;
|
||||
|
||||
return new KDNode
|
||||
{
|
||||
point = points[median],
|
||||
axis = axis,
|
||||
left = Build(points[..median], depth + 1),
|
||||
right = Build(points[(median + 1)..], depth + 1)
|
||||
};
|
||||
}
|
||||
private Vector3[] RemoveDuplicates(Vector3[] points, float epsilon = 1e-5f)
|
||||
{
|
||||
if (points.Length == 0) return points;
|
||||
|
||||
List<Vector3> uniquePoints = new List<Vector3> { points[0] };
|
||||
|
||||
for (int i = 1; i < points.Length; i++)
|
||||
{
|
||||
if (!ApproximatelyEqual(points[i], points[i - 1], epsilon))
|
||||
{
|
||||
uniquePoints.Add(points[i]);
|
||||
}
|
||||
}
|
||||
|
||||
return uniquePoints.ToArray();
|
||||
}
|
||||
|
||||
private bool ApproximatelyEqual(Vector3 a, Vector3 b, float epsilon = 1e-5f)
|
||||
{
|
||||
return Mathf.Abs(a.x - b.x) < epsilon &&
|
||||
Mathf.Abs(a.y - b.y) < epsilon &&
|
||||
Mathf.Abs(a.z - b.z) < epsilon;
|
||||
}
|
||||
public Vector3 FindNearest(Vector3 target)
|
||||
{
|
||||
return FindNearest(root, target, root.point, float.MaxValue);
|
||||
}
|
||||
|
||||
private Vector3 FindNearest(KDNode node, Vector3 target, Vector3 best, float bestDist)
|
||||
{
|
||||
if (node == null) return best;
|
||||
|
||||
float dist = Vector3.Distance(target, node.point);
|
||||
if (dist < bestDist)
|
||||
{
|
||||
bestDist = dist;
|
||||
best = node.point;
|
||||
}
|
||||
|
||||
bool searchLeft = target[node.axis] < node.point[node.axis];
|
||||
|
||||
KDNode first = searchLeft ? node.left : node.right;
|
||||
KDNode second = searchLeft ? node.right : node.left;
|
||||
|
||||
best = FindNearest(first, target, best, bestDist);
|
||||
bestDist = Vector3.Distance(target, best);
|
||||
|
||||
if (Mathf.Abs(target[node.axis] - node.point[node.axis]) < bestDist)
|
||||
{
|
||||
best = FindNearest(second, target, best, bestDist);
|
||||
}
|
||||
|
||||
return best;
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/XED/Common/KDTree.cs.meta
Normal file
2
Assets/Scripts/XED/Common/KDTree.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: 716a33e2eb3f24c4893f51d634f5f1f1
|
||||
@@ -1,5 +1,5 @@
|
||||
using UnityEngine;
|
||||
using WI;
|
||||
using WI;
|
||||
using XED.UI;
|
||||
using WI.UI;
|
||||
using XED.Util;
|
||||
@@ -12,7 +12,7 @@ using System;
|
||||
namespace XED.Manage
|
||||
{
|
||||
[DefaultExecutionOrder(int.MaxValue)]
|
||||
public class EventConnector : MonoBehaviour, ISingle
|
||||
public class EventConnector : MonoBehaviour, ISingle
|
||||
{
|
||||
public override void AfterAwake()
|
||||
{
|
||||
@@ -44,10 +44,19 @@ namespace XED.Manage
|
||||
void ManagerConnection()
|
||||
{
|
||||
customAssetConnector.onRemoveObjects += renderObjectHandler.DeselectAll;
|
||||
customAssetConnector.onSelectObjects += ((name, objects) => { canvas_Windows.panel_objectinfo.gameObject.SetActive(true); });
|
||||
customAssetConnector.onSelectObjects += ((name, objects) => { canvas_Windows.panel_objectalign.gameObject.SetActive(true); });
|
||||
customAssetConnector.onSelectObjects += canvas_Windows.panel_objectinfo.SetObjectInfo;
|
||||
customAssetConnector.onRemoveObjects += canvas_Windows.panel_objectinfo.ResetObjectInfo;
|
||||
customAssetConnector.onDeselectObjects += (() => { canvas_Windows.panel_objectinfo.gameObject.SetActive(false); });
|
||||
customAssetConnector.onDeselectObjects += (() => { canvas_Windows.panel_objectalign.gameObject.SetActive(false); });
|
||||
customAssetConnector.onAssetDropped += (() => componentWindow.SetActive(true));
|
||||
renderObjectHandler.onDeselectAll += canvas_Windows.panel_objectinfo.ResetObjectInfo;
|
||||
renderObjectHandler.onTransformChanged += canvas_Windows.panel_objectinfo.OnTransformChanged;
|
||||
renderObjectHandler.onDragBegin += canvas_Popup.panel_draghandler.OnBeginDrag;
|
||||
renderObjectHandler.onDragEnd += canvas_Popup.panel_draghandler.OnEndDrag;
|
||||
renderObjectHandler.onDragForceEnd += canvas_Popup.panel_draghandler.ForceEndDrag;
|
||||
saveLoadFBXData.onBeginLoadAsset += (() => assetWindow.SetActive(true));
|
||||
canvas_Windows.panel_objectinfo.onTransformChanged += renderObjectHandler.OnTransformChanged;
|
||||
|
||||
agvNodeManager.onNodeConnectionAdded += agvNodeLinkManager.AddLine;
|
||||
@@ -99,6 +108,7 @@ namespace XED.Manage
|
||||
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_draghandler.onDragBoxSelect += customAssetConnector.OnDragBoxSelect;
|
||||
}
|
||||
|
||||
void StatusConnection()
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace XED
|
||||
public AGVNodeModePopup agvnodemodepopup;
|
||||
public Panel_Tooltip panel_tooltip;
|
||||
public Panel_PropertyViewer panel_propertyviewer;
|
||||
public Panel_DragHandler panel_draghandler;
|
||||
|
||||
public override void AfterAwake()
|
||||
{
|
||||
|
||||
@@ -11,5 +11,6 @@ namespace XED.UI
|
||||
public Panel_ComponentLibrary panel_componentlibrary;
|
||||
public Panel_AssetLibrary panel_assetlibrary;
|
||||
public Panel_ObjectInfo panel_objectinfo;
|
||||
public Panel_ObjectAlign panel_objectalign;
|
||||
}
|
||||
}
|
||||
|
||||
98
Assets/Scripts/XED/UI/Panel/Panel_DragHandler.cs
Normal file
98
Assets/Scripts/XED/UI/Panel/Panel_DragHandler.cs
Normal file
@@ -0,0 +1,98 @@
|
||||
using System.Collections;
|
||||
using UnityEngine;
|
||||
using UnityEngine.EventSystems;
|
||||
using UnityEngine.UI;
|
||||
using WI.UI;
|
||||
|
||||
namespace XED.UI
|
||||
{
|
||||
public class Panel_DragHandler : PanelBase
|
||||
{
|
||||
Image selectionBoxImage;
|
||||
Vector2 startPosition;
|
||||
Rect selectionRect;
|
||||
public event System.Action<Rect> onDragBoxSelect;
|
||||
private void Awake()
|
||||
{
|
||||
foreach (Image img in GetComponentsInChildren<Image>(true))
|
||||
{
|
||||
if (img.transform != transform)
|
||||
{
|
||||
selectionBoxImage = img;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
public void OnBeginDrag(PointerEventData eventData)
|
||||
{
|
||||
selectionBoxImage.gameObject.SetActive(true);
|
||||
startPosition = eventData.position;
|
||||
selectionRect = new Rect();
|
||||
}
|
||||
public void OnBeginDrag(Vector3 position)
|
||||
{
|
||||
selectionBoxImage.gameObject.SetActive(true);
|
||||
startPosition = position;
|
||||
selectionRect = new Rect();
|
||||
StopAllCoroutines();
|
||||
StartCoroutine(CoroutineOnDrag());
|
||||
}
|
||||
|
||||
public void OnDrag(PointerEventData eventData)
|
||||
{
|
||||
SetSelectionBoxSize(eventData.position);
|
||||
}
|
||||
|
||||
public void OnEndDrag(PointerEventData eventData)
|
||||
{
|
||||
selectionBoxImage.gameObject.SetActive(false);
|
||||
onDragBoxSelect?.Invoke(selectionRect);
|
||||
}
|
||||
public void OnEndDrag(Vector3 position)
|
||||
{
|
||||
if (!selectionBoxImage.gameObject.activeSelf) return;
|
||||
selectionBoxImage.gameObject.SetActive(false);
|
||||
StopAllCoroutines();
|
||||
SetSelectionBoxSize(position);
|
||||
onDragBoxSelect?.Invoke(selectionRect);
|
||||
}
|
||||
public void ForceEndDrag()
|
||||
{
|
||||
selectionBoxImage.gameObject.SetActive(false);
|
||||
StopAllCoroutines();
|
||||
}
|
||||
public void SetSelectionBoxSize(Vector3 position)
|
||||
{
|
||||
if (position.x < startPosition.x)
|
||||
{
|
||||
selectionRect.xMin = position.x;
|
||||
selectionRect.xMax = startPosition.x;
|
||||
}
|
||||
else
|
||||
{
|
||||
selectionRect.xMin = startPosition.x;
|
||||
selectionRect.xMax = position.x;
|
||||
}
|
||||
if (position.y < startPosition.y)
|
||||
{
|
||||
selectionRect.yMin = position.y;
|
||||
selectionRect.yMax = startPosition.y;
|
||||
}
|
||||
else
|
||||
{
|
||||
selectionRect.yMin = startPosition.y;
|
||||
selectionRect.yMax = position.y;
|
||||
}
|
||||
selectionBoxImage.rectTransform.offsetMin = selectionRect.min;
|
||||
selectionBoxImage.rectTransform.offsetMax = selectionRect.max;
|
||||
}
|
||||
IEnumerator CoroutineOnDrag()
|
||||
{
|
||||
while (true)
|
||||
{
|
||||
SetSelectionBoxSize(Input.mousePosition);
|
||||
yield return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
2
Assets/Scripts/XED/UI/Panel/Panel_DragHandler.cs.meta
Normal file
2
Assets/Scripts/XED/UI/Panel/Panel_DragHandler.cs.meta
Normal file
@@ -0,0 +1,2 @@
|
||||
fileFormatVersion: 2
|
||||
guid: cdd8bb536a64a014785b009185af4d29
|
||||
@@ -3,12 +3,12 @@ using UnityEngine;
|
||||
using UnityEngine.UI;
|
||||
using XED.Asset;
|
||||
using XED.Util;
|
||||
using WI.UI;
|
||||
using WI.UI;
|
||||
|
||||
namespace XED.UI
|
||||
{
|
||||
public class Panel_ObjectAlign : PanelBase
|
||||
{
|
||||
{
|
||||
public TMP_InputField InputField_GapX;
|
||||
public TMP_InputField InputField_GapZ;
|
||||
public TMP_InputField InputField_Row;
|
||||
@@ -20,8 +20,9 @@ namespace XED.UI
|
||||
private RenderObjectHandler renderObjectHandler;
|
||||
private float gapX = 0.0f;
|
||||
private float gapZ = 0.0f;
|
||||
private int rowX = 0;
|
||||
private int rowZ = 0;
|
||||
private int row = 0;
|
||||
private int col = 0;
|
||||
private int direction = 0;
|
||||
public override void AfterAwake()
|
||||
{
|
||||
CustomAssetConnector assetConnector = FindSingle<CustomAssetConnector>();
|
||||
@@ -50,29 +51,48 @@ namespace XED.UI
|
||||
}
|
||||
void OnRowChanged(string input)
|
||||
{
|
||||
if (!int.TryParse(input, out rowX))
|
||||
if (!int.TryParse(input, out row))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
void OnColChanged(string input)
|
||||
{
|
||||
if (!int.TryParse(input, out rowZ))
|
||||
if (!int.TryParse(input, out col))
|
||||
{
|
||||
return;
|
||||
}
|
||||
}
|
||||
void OnAlignXAxis()
|
||||
{
|
||||
|
||||
if (direction < 4)
|
||||
{
|
||||
direction = 4;
|
||||
}
|
||||
else if (direction > 4)
|
||||
{
|
||||
direction = 0;
|
||||
}
|
||||
renderObjectHandler.AlignObjects(0, 0, gapX, gapZ, direction);
|
||||
direction++;
|
||||
}
|
||||
void OnAlignZAxis()
|
||||
{
|
||||
|
||||
if (direction < 5)
|
||||
{
|
||||
direction = 5;
|
||||
}
|
||||
else if (direction > 5)
|
||||
{
|
||||
direction = 1;
|
||||
}
|
||||
renderObjectHandler.AlignObjects(0, 0, gapX, gapZ, direction);
|
||||
direction++;
|
||||
}
|
||||
void OnAlignGrid()
|
||||
{
|
||||
|
||||
renderObjectHandler.AlignObjects(row, col, gapX, gapZ, direction);
|
||||
direction++;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -215,7 +215,7 @@ namespace XED.UI
|
||||
}
|
||||
}
|
||||
public void SetObjectInfo(string name, List<GameObject> selectedObjects)
|
||||
{
|
||||
{
|
||||
ResetObjectInfo();
|
||||
if (name == null || selectedObjects == null)
|
||||
{
|
||||
@@ -225,12 +225,17 @@ namespace XED.UI
|
||||
{
|
||||
return;
|
||||
}
|
||||
Text_Name.text = name;
|
||||
string append = "";
|
||||
if (!name.Equals("-"))
|
||||
{
|
||||
append = string.Format(" ({0})" ,selectedObjects.Count);
|
||||
}
|
||||
Text_Name.text = name + append;
|
||||
OnTransformChanged(selectedObjects);
|
||||
if (lastSelectedInputField.type != InputFieldType.none)
|
||||
{
|
||||
lastSelectedInputField = new SelectedInput(InputFieldType.none, 0.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
public void ResetObjectInfo()
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user