good enough #33
This commit is contained in:
parent
5f99039a69
commit
9f1ebe05a1
89 changed files with 4311 additions and 2425 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
@ -100,3 +100,6 @@ InitTestScene*.unity*
|
|||
|
||||
# Auto-generated scenes by play mode tests
|
||||
/[Aa]ssets/[Ii]nit[Tt]est[Ss]cene*.unity*
|
||||
|
||||
/[Aa]ssets/[Ss]amples/
|
||||
/[Aa]ssets/[Ss]amples.meta
|
||||
|
|
|
@ -113,6 +113,15 @@
|
|||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "Inventory",
|
||||
"type": "Button",
|
||||
"id": "bf48e9be-890c-46e9-80a2-1d7ecc85e20b",
|
||||
"expectedControlType": "",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
}
|
||||
],
|
||||
"bindings": [
|
||||
|
@ -577,6 +586,28 @@
|
|||
"action": "Reload",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "7da2a8fd-741d-4e7c-86dc-64678b958e39",
|
||||
"path": "<Keyboard>/tab",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Inventory",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "87ba6bee-8062-426f-87c4-7fad35da459b",
|
||||
"path": "<Gamepad>/buttonEast",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Inventory",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
}
|
||||
]
|
||||
},
|
||||
|
@ -673,6 +704,15 @@
|
|||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
},
|
||||
{
|
||||
"name": "Inventory",
|
||||
"type": "Button",
|
||||
"id": "8234c274-3165-4e2e-8d1c-74103faafd8a",
|
||||
"expectedControlType": "",
|
||||
"processors": "",
|
||||
"interactions": "",
|
||||
"initialStateCheck": false
|
||||
}
|
||||
],
|
||||
"bindings": [
|
||||
|
@ -1093,6 +1133,28 @@
|
|||
"action": "TrackedDeviceOrientation",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "be1028c2-a4be-44d9-8a8a-31172540440c",
|
||||
"path": "<Gamepad>/buttonEast",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Gamepad",
|
||||
"action": "Inventory",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
},
|
||||
{
|
||||
"name": "",
|
||||
"id": "3b96fa74-9d2b-473b-8125-6467d3e39870",
|
||||
"path": "<Keyboard>/tab",
|
||||
"interactions": "",
|
||||
"processors": "",
|
||||
"groups": ";Keyboard&Mouse",
|
||||
"action": "Inventory",
|
||||
"isComposite": false,
|
||||
"isPartOfComposite": false
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
@ -30,7 +30,7 @@ Transform:
|
|||
m_GameObject: {fileID: 2892703864492016621}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0.38268343, z: 0, w: 0.92387956}
|
||||
m_LocalPosition: {x: -2, y: 0.005, z: 0}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 0.4, y: 0.01, z: 0.2}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
|
@ -123,6 +123,12 @@ MonoBehaviour:
|
|||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
oneTimeUse: 0
|
||||
onSelected:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
onDeselected:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
onInteracted:
|
||||
m_PersistentCalls:
|
||||
m_Calls:
|
||||
|
|
88
Assets/Prefabs/KeyPreview.prefab
Normal file
88
Assets/Prefabs/KeyPreview.prefab
Normal file
|
@ -0,0 +1,88 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1 &2892703864492016621
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2368094401510200604}
|
||||
- component: {fileID: 3721857971285848745}
|
||||
- component: {fileID: 4840302974988827429}
|
||||
m_Layer: 8
|
||||
m_Name: KeyPreview
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &2368094401510200604
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2892703864492016621}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.6830128, y: -0.18301234, z: -0.18301241, w: 0.68301284}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 2, y: 0.02, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 60, y: -90, z: -90}
|
||||
--- !u!33 &3721857971285848745
|
||||
MeshFilter:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2892703864492016621}
|
||||
m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0}
|
||||
--- !u!23 &4840302974988827429
|
||||
MeshRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2892703864492016621}
|
||||
m_Enabled: 1
|
||||
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: be8072c6f51e356f8a8c5affbe22973f, 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}
|
7
Assets/Prefabs/KeyPreview.prefab.meta
Normal file
7
Assets/Prefabs/KeyPreview.prefab.meta
Normal file
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: cbffd5b6d954099a491f8a2a744b6d01
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: ba062aa6c92b140379dbc06b43dd3b9b
|
||||
guid: 9d57b977e58d1b58c90a05d6247ee000
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
|
@ -24,7 +24,7 @@ Transform:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3189041518118701393}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 1, z: 0, w: 0}
|
||||
m_LocalRotation: {x: 0.0017443874, y: -0.9994323, z: 0.033643518, w: 0.000058764297}
|
||||
m_LocalPosition: {x: 0, y: 0.375, z: -1.2}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
|
@ -91,12 +91,65 @@ PrefabInstance:
|
|||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 272
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -5922622823359544968, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -5568371526223589888, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -3898791185525528228, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_RenderingLayerMask
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -2059808378567916338, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -1967758284531576944, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_RenderingLayerMask
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -1919110505097373512, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -1374039232608429058, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_RenderingLayerMask
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 236216658851537685, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_RenderingLayerMask
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 919132149155446097, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Glock17Equipped
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 919132149155446097, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5232627393660835655, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_RenderingLayerMask
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6619225641134156614, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7202271454713460447, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_RenderingLayerMask
|
||||
value: 1
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7556193500268387829, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects: []
|
||||
m_RemovedGameObjects:
|
||||
- {fileID: -2407699025559542186, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
m_AddedGameObjects:
|
||||
- targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
insertIndex: -1
|
112
Assets/Resources/Glock17/Glock17Preview.prefab
Normal file
112
Assets/Resources/Glock17/Glock17Preview.prefab
Normal file
|
@ -0,0 +1,112 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!1001 &3538664591492219717
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
serializedVersion: 2
|
||||
m_Modification:
|
||||
serializedVersion: 3
|
||||
m_TransformParent: {fileID: 0}
|
||||
m_Modifications:
|
||||
- target: {fileID: -8679921383154817045, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_LocalPosition.x
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_LocalPosition.y
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_LocalPosition.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_LocalRotation.w
|
||||
value: 0.65328145
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_LocalRotation.x
|
||||
value: -0.2705982
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_LocalRotation.y
|
||||
value: -0.65328145
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_LocalRotation.z
|
||||
value: -0.2705982
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.x
|
||||
value: 315
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.y
|
||||
value: 270
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -8679921383154817045, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_LocalEulerAnglesHint.z
|
||||
value: 0
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -5922622823359544968, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 8
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -5568371526223589888, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 8
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -3898791185525528228, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_RenderingLayerMask
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -2059808378567916338, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 8
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -1967758284531576944, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_RenderingLayerMask
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -1919110505097373512, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 8
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: -1374039232608429058, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_RenderingLayerMask
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 236216658851537685, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_RenderingLayerMask
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 919132149155446097, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Name
|
||||
value: Glock17Preview
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 919132149155446097, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 8
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 5232627393660835655, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_RenderingLayerMask
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 6619225641134156614, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 8
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7202271454713460447, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_RenderingLayerMask
|
||||
value: 2
|
||||
objectReference: {fileID: 0}
|
||||
- target: {fileID: 7556193500268387829, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
propertyPath: m_Layer
|
||||
value: 8
|
||||
objectReference: {fileID: 0}
|
||||
m_RemovedComponents: []
|
||||
m_RemovedGameObjects:
|
||||
- {fileID: -2407699025559542186, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
m_AddedGameObjects: []
|
||||
m_AddedComponents: []
|
||||
m_SourcePrefab: {fileID: 100100000, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
7
Assets/Resources/Glock17/Glock17Preview.prefab.meta
Normal file
7
Assets/Resources/Glock17/Glock17Preview.prefab.meta
Normal file
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f853e5887a27c240d90ca5c19cc270e1
|
||||
PrefabImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
21
Assets/SOAP/Input/InventoryInput.asset
Normal file
21
Assets/SOAP/Input/InventoryInput.asset
Normal file
|
@ -0,0 +1,21 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 6c481c42e360ed2b89fb1f5fc4558fdb, type: 3}
|
||||
m_Name: InventoryInput
|
||||
m_EditorClassIdentifier:
|
||||
started: {fileID: 0}
|
||||
performed: {fileID: 11400000, guid: 05ac93739cc1d1796b9403f2421c056b, type: 2}
|
||||
canceled: {fileID: 0}
|
||||
waiting: {fileID: 0}
|
||||
disabled: {fileID: 0}
|
||||
reactiveValue: {fileID: 0}
|
||||
valueAsButton: {fileID: 0}
|
8
Assets/SOAP/Input/InventoryInput.asset.meta
Normal file
8
Assets/SOAP/Input/InventoryInput.asset.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: f168a80804247334e9d8ec837f58c9e1
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
14
Assets/SOAP/Input/InventoryInputEvent.asset
Normal file
14
Assets/SOAP/Input/InventoryInputEvent.asset
Normal file
|
@ -0,0 +1,14 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 56805e83aabe387929ad23e06adda5fd, type: 3}
|
||||
m_Name: InventoryInputEvent
|
||||
m_EditorClassIdentifier:
|
8
Assets/SOAP/Input/InventoryInputEvent.asset.meta
Normal file
8
Assets/SOAP/Input/InventoryInputEvent.asset.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 05ac93739cc1d1796b9403f2421c056b
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -15,10 +15,9 @@ MonoBehaviour:
|
|||
id: 1f650f4d-35fc-412f-b3fc-cf262c9d3e5f
|
||||
displayName: Debug Key
|
||||
description:
|
||||
icon: {fileID: -123325096, guid: b5ca4025143f3c2078e7070eea546959, type: 3}
|
||||
tags: []
|
||||
type: 0
|
||||
worldPrefab: {fileID: 2892703864492016621, guid: 51202e3c62c3d3e1c9bb0ff9c09a608f, type: 3}
|
||||
previewPrefab: {fileID: 2892703864492016621, guid: cbffd5b6d954099a491f8a2a744b6d01, type: 3}
|
||||
stackable: 0
|
||||
maxStackCount: 10
|
||||
icon: {fileID: -1304905567622442630, guid: 4e01e0da3979f115d951c3cb798e4313, type: 3}
|
||||
instancePrefab: {fileID: 2892703864492016621, guid: 51202e3c62c3d3e1c9bb0ff9c09a608f, type: 3}
|
||||
previewPrefab: {fileID: 0}
|
||||
|
|
|
@ -14,11 +14,12 @@ MonoBehaviour:
|
|||
m_EditorClassIdentifier:
|
||||
id: 3aaccf06-f737-4e9b-9daf-2d99e69a14e7
|
||||
displayName: Pistol
|
||||
description:
|
||||
description: A semi-automatic pistol. Fires 10mm ammunition from a 10-round magazine.
|
||||
Easy to use, high rate of fire.
|
||||
icon: {fileID: -1451803064, guid: acf7be11a7aec869a96fca7c3cb2e6ff, type: 3}
|
||||
tags: []
|
||||
worldPrefab: {fileID: 919132149155446097, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
previewPrefab: {fileID: 919132149155446097, guid: bf9d862a19647f28795df2e666425003, type: 3}
|
||||
previewPrefab: {fileID: 4457074219773640212, guid: f853e5887a27c240d90ca5c19cc270e1, type: 3}
|
||||
stackable: 0
|
||||
maxStackCount: 1
|
||||
equippedPrefab: {fileID: 492801038359376716, guid: 34383341362bbd7c59b199a69ed897e4, type: 3}
|
||||
|
|
|
@ -9,15 +9,9 @@ MonoBehaviour:
|
|||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1ca5a6e9c022cf971a176095a74df394, type: 3}
|
||||
m_Script: {fileID: 11500000, guid: 267a9c1f4bb280a6a93f4240b8485056, type: 3}
|
||||
m_Name: SelectedItem
|
||||
m_EditorClassIdentifier:
|
||||
id: 7602a606-109c-4a58-8786-f4c95fee7a92
|
||||
displayName:
|
||||
description:
|
||||
icon: {fileID: 0}
|
||||
tags: []
|
||||
worldPrefab: {fileID: 0}
|
||||
previewPrefab: {fileID: 0}
|
||||
stackable: 0
|
||||
maxStackCount: 1
|
||||
Description:
|
||||
value:
|
||||
value: {fileID: 11400000, guid: 83a7512982c0868bbacfd587c15efbea, type: 2}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0f16091ed7577d3268f2725cf823d4da
|
||||
guid: 37d00232a0bee1e8e923705187ff2187
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
|
|
|
@ -12,7 +12,7 @@ MonoBehaviour:
|
|||
m_Script: {fileID: 11500000, guid: 9702da9b93bb25bf089c54dc37cc44e7, type: 3}
|
||||
m_Name: TestInventory
|
||||
m_EditorClassIdentifier:
|
||||
serializableItems:
|
||||
items:
|
||||
- Item: {fileID: 11400000, guid: 3a9b5fc9b523890cf8abd310dbc64940, type: 2}
|
||||
count: 1
|
||||
- Item: {fileID: 11400000, guid: 83a7512982c0868bbacfd587c15efbea, type: 2}
|
||||
|
|
17
Assets/SOAP/UI/ItemPreviewDelta.asset
Normal file
17
Assets/SOAP/UI/ItemPreviewDelta.asset
Normal file
|
@ -0,0 +1,17 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 1a85afc7b5f9bc9f386e4f76d3725daf, type: 3}
|
||||
m_Name: ItemPreviewDelta
|
||||
m_EditorClassIdentifier:
|
||||
Description:
|
||||
value:
|
||||
value: {x: 0, y: 0}
|
8
Assets/SOAP/UI/ItemPreviewDelta.asset.meta
Normal file
8
Assets/SOAP/UI/ItemPreviewDelta.asset.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 61bec5de28967d14d8027ebd7c009e4e
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
19
Assets/SOAP/UI/ItemPreviewZoom.asset
Normal file
19
Assets/SOAP/UI/ItemPreviewZoom.asset
Normal file
|
@ -0,0 +1,19 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &11400000
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 7f5d678d3982081db9d3d4897850cf76, type: 3}
|
||||
m_Name: ItemPreviewZoom
|
||||
m_EditorClassIdentifier:
|
||||
Description:
|
||||
value:
|
||||
value: 0
|
||||
clamp: 1
|
||||
minMax: {x: -50, y: 10}
|
8
Assets/SOAP/UI/ItemPreviewZoom.asset.meta
Normal file
8
Assets/SOAP/UI/ItemPreviewZoom.asset.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: b611ded87bd3825d7bf45e43eaea670d
|
||||
NativeFormatImporter:
|
||||
externalObjects: {}
|
||||
mainObjectFileID: 11400000
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,9 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 8a0c9218a650547d98138cd835033977
|
||||
guid: eccfcb5811706e3efba1ef8e033b5dda
|
||||
folderAsset: yes
|
||||
timeCreated: 1484670163
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 12ee09150bce8c611a562640b944ff62
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Binary file not shown.
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 6dca14e3027067463143efe5eee5b62c
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,9 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 5a9bcd70e6a4b4b05badaa72e827d8e0
|
||||
guid: f0ff03fa9c3fb660eb36c1516f071f88
|
||||
folderAsset: yes
|
||||
timeCreated: 1475835190
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
File diff suppressed because it is too large
Load diff
|
@ -119,7 +119,7 @@ NavMeshSettings:
|
|||
debug:
|
||||
m_Flags: 0
|
||||
m_NavMeshData: {fileID: 0}
|
||||
--- !u!1 &1223357529
|
||||
--- !u!1 &341000910
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
|
@ -127,76 +127,9 @@ GameObject:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1223357531}
|
||||
- component: {fileID: 1223357530}
|
||||
- component: {fileID: 1223357532}
|
||||
m_Layer: 5
|
||||
m_Name: UIDocument
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!114 &1223357530
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1223357529}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 19102, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_PanelSettings: {fileID: 11400000, guid: d8894ba51a816c451b072d957a1cfe45, type: 2}
|
||||
m_ParentUI: {fileID: 0}
|
||||
sourceAsset: {fileID: 9197481963319205126, guid: 8cea95d71232d8469b296ca7eb59e0a1, type: 3}
|
||||
m_SortingOrder: 0
|
||||
m_WorldSpaceSizeMode: 1
|
||||
m_WorldSpaceWidth: 1920
|
||||
m_WorldSpaceHeight: 1080
|
||||
--- !u!4 &1223357531
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1223357529}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1223357532
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1223357529}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: b37256e37c5968be89fa34dd8344744f, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
doc: {fileID: 1223357530}
|
||||
inventory: {fileID: 11400000, guid: cd3f9ac2afa71f8b6acb3fb0cacfe441, type: 2}
|
||||
template: {fileID: 9197481963319205126, guid: 01b74a9c8f3685fb2880379892a17e46, type: 3}
|
||||
--- !u!1 &1411077289
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1411077291}
|
||||
- component: {fileID: 1411077290}
|
||||
- component: {fileID: 1411077292}
|
||||
- component: {fileID: 341000913}
|
||||
- component: {fileID: 341000912}
|
||||
- component: {fileID: 341000911}
|
||||
m_Layer: 0
|
||||
m_Name: Directional Light
|
||||
m_TagString: Untagged
|
||||
|
@ -204,24 +137,47 @@ GameObject:
|
|||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!108 &1411077290
|
||||
--- !u!114 &341000911
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 341000910}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Version: 3
|
||||
m_UsePipelineSettings: 1
|
||||
m_AdditionalLightsShadowResolutionTier: 2
|
||||
m_LightLayerMask: 1
|
||||
m_RenderingLayers: 2
|
||||
m_CustomShadowLayers: 0
|
||||
m_ShadowLayerMask: 1
|
||||
m_ShadowRenderingLayers: 1
|
||||
m_LightCookieSize: {x: 1, y: 1}
|
||||
m_LightCookieOffset: {x: 0, y: 0}
|
||||
m_SoftShadowQuality: 0
|
||||
--- !u!108 &341000912
|
||||
Light:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1411077289}
|
||||
m_GameObject: {fileID: 341000910}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 11
|
||||
m_Type: 1
|
||||
m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1}
|
||||
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||
m_Intensity: 1
|
||||
m_Range: 10
|
||||
m_SpotAngle: 30
|
||||
m_InnerSpotAngle: 21.80208
|
||||
m_CookieSize: 10
|
||||
m_Shadows:
|
||||
m_Type: 2
|
||||
m_Type: 0
|
||||
m_Resolution: -1
|
||||
m_CustomResolution: -1
|
||||
m_Strength: 1
|
||||
|
@ -253,7 +209,7 @@ Light:
|
|||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingLayerMask: 1
|
||||
m_RenderingLayerMask: 2
|
||||
m_Lightmapping: 4
|
||||
m_LightShadowCasterMode: 0
|
||||
m_AreaSize: {x: 1, y: 1}
|
||||
|
@ -269,45 +225,22 @@ Light:
|
|||
m_LightUnit: 1
|
||||
m_LuxAtDistance: 1
|
||||
m_EnableSpotReflector: 1
|
||||
--- !u!4 &1411077291
|
||||
--- !u!4 &341000913
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1411077289}
|
||||
m_GameObject: {fileID: 341000910}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261}
|
||||
m_LocalPosition: {x: 0, y: 3, z: 0}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0}
|
||||
--- !u!114 &1411077292
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1411077289}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Version: 3
|
||||
m_UsePipelineSettings: 1
|
||||
m_AdditionalLightsShadowResolutionTier: 2
|
||||
m_LightLayerMask: 1
|
||||
m_RenderingLayers: 1
|
||||
m_CustomShadowLayers: 0
|
||||
m_ShadowLayerMask: 1
|
||||
m_ShadowRenderingLayers: 1
|
||||
m_LightCookieSize: {x: 1, y: 1}
|
||||
m_LightCookieOffset: {x: 0, y: 0}
|
||||
m_SoftShadowQuality: 0
|
||||
--- !u!1 &1889780342
|
||||
--- !u!1 &590341843
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
|
@ -315,98 +248,23 @@ GameObject:
|
|||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1889780345}
|
||||
- component: {fileID: 1889780344}
|
||||
- component: {fileID: 1889780343}
|
||||
- component: {fileID: 1889780346}
|
||||
- component: {fileID: 590341847}
|
||||
- component: {fileID: 590341846}
|
||||
- component: {fileID: 590341844}
|
||||
m_Layer: 0
|
||||
m_Name: Main Camera
|
||||
m_TagString: MainCamera
|
||||
m_Name: Preview Camera
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!81 &1889780343
|
||||
AudioListener:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1889780342}
|
||||
m_Enabled: 1
|
||||
--- !u!20 &1889780344
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1889780342}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 2
|
||||
m_BackGroundColor: {r: 1, g: 0.8726415, b: 0.986825, a: 0}
|
||||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_Iso: 200
|
||||
m_ShutterSpeed: 0.005
|
||||
m_Aperture: 16
|
||||
m_FocusDistance: 10
|
||||
m_FocalLength: 50
|
||||
m_BladeCount: 5
|
||||
m_Curvature: {x: 2, y: 11}
|
||||
m_BarrelClipping: 0.25
|
||||
m_Anamorphism: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.3
|
||||
far clip plane: 1000
|
||||
field of view: 60
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: -1
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 4294967295
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_TargetDisplay: 0
|
||||
m_TargetEye: 3
|
||||
m_HDR: 1
|
||||
m_AllowMSAA: 1
|
||||
m_AllowDynamicResolution: 0
|
||||
m_ForceIntoRT: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
--- !u!4 &1889780345
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1889780342}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 1, z: -10}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1889780346
|
||||
--- !u!114 &590341844
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1889780342}
|
||||
m_GameObject: {fileID: 590341843}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3}
|
||||
|
@ -444,10 +302,129 @@ MonoBehaviour:
|
|||
m_MipBias: 0
|
||||
m_VarianceClampScale: 0.9
|
||||
m_ContrastAdaptiveSharpening: 0
|
||||
--- !u!20 &590341846
|
||||
Camera:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 590341843}
|
||||
m_Enabled: 1
|
||||
serializedVersion: 2
|
||||
m_ClearFlags: 4
|
||||
m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0}
|
||||
m_projectionMatrixMode: 1
|
||||
m_GateFitMode: 2
|
||||
m_FOVAxisMode: 0
|
||||
m_Iso: 200
|
||||
m_ShutterSpeed: 0.005
|
||||
m_Aperture: 16
|
||||
m_FocusDistance: 10
|
||||
m_FocalLength: 50
|
||||
m_BladeCount: 5
|
||||
m_Curvature: {x: 2, y: 11}
|
||||
m_BarrelClipping: 0.25
|
||||
m_Anamorphism: 0
|
||||
m_SensorSize: {x: 36, y: 24}
|
||||
m_LensShift: {x: 0, y: 0}
|
||||
m_NormalizedViewPortRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1
|
||||
height: 1
|
||||
near clip plane: 0.3
|
||||
far clip plane: 1000
|
||||
field of view: 60
|
||||
orthographic: 0
|
||||
orthographic size: 5
|
||||
m_Depth: 0
|
||||
m_CullingMask:
|
||||
serializedVersion: 2
|
||||
m_Bits: 256
|
||||
m_RenderingPath: -1
|
||||
m_TargetTexture: {fileID: 8400000, guid: fc19a022409ab0d408fa0e78cfeab827, type: 2}
|
||||
m_TargetDisplay: 0
|
||||
m_TargetEye: 3
|
||||
m_HDR: 1
|
||||
m_AllowMSAA: 1
|
||||
m_AllowDynamicResolution: 0
|
||||
m_ForceIntoRT: 0
|
||||
m_OcclusionCulling: 1
|
||||
m_StereoConvergence: 10
|
||||
m_StereoSeparation: 0.022
|
||||
--- !u!4 &590341847
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 590341843}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: -3}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!1 &1153614253
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 1153614255}
|
||||
- component: {fileID: 1153614256}
|
||||
m_Layer: 8
|
||||
m_Name: Item Preview
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!4 &1153614255
|
||||
Transform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1153614253}
|
||||
serializedVersion: 2
|
||||
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||
m_ConstrainProportionsScale: 0
|
||||
m_Children: []
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
--- !u!114 &1153614256
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 1153614253}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: cd025ca0b2f740f7f8356cd3113163a2, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
selectedItem: {fileID: 11400000, guid: 37d00232a0bee1e8e923705187ff2187, type: 2}
|
||||
camera: {fileID: 590341847}
|
||||
rotationDelta: {fileID: 11400000, guid: 61bec5de28967d14d8027ebd7c009e4e, type: 2}
|
||||
sensitivity: 25
|
||||
angleSnap: 10
|
||||
zoom: {fileID: 11400000, guid: b611ded87bd3825d7bf45e43eaea670d, type: 2}
|
||||
zoomSensitivity: 0.025
|
||||
previewLayer:
|
||||
index: 8
|
||||
--- !u!1660057539 &9223372036854775807
|
||||
SceneRoots:
|
||||
m_ObjectHideFlags: 0
|
||||
m_Roots:
|
||||
- {fileID: 1889780345}
|
||||
- {fileID: 1411077291}
|
||||
- {fileID: 1223357531}
|
||||
- {fileID: 590341847}
|
||||
- {fileID: 341000913}
|
||||
- {fileID: 1153614255}
|
|
@ -1,5 +1,5 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 374b635465e0bf8888b5381eb4a6d9b6
|
||||
guid: 4a31ffa7a4feefc509c20ec6e65133f0
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
20
Assets/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs
Normal file
20
Assets/Scripts/Editor/PropertyDrawers/LayerPropertyDrawer.cs
Normal file
|
@ -0,0 +1,20 @@
|
|||
using KitsuneCafe.Sys;
|
||||
using UnityEditor;
|
||||
using UnityEditor.UIElements;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
namespace KitsuneCafe.Editor
|
||||
{
|
||||
[CustomPropertyDrawer(typeof(Layer))]
|
||||
public class LayerPropertyDrawer : PropertyDrawer
|
||||
{
|
||||
public override VisualElement CreatePropertyGUI(SerializedProperty property)
|
||||
{
|
||||
var field = new LayerField(ObjectNames.NicifyVariableName(property.name));
|
||||
|
||||
field.Bind(property.serializedObject);
|
||||
field.bindingPath = "index";
|
||||
return field;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 94cf5c15477490054ac75b400651436d
|
|
@ -0,0 +1,14 @@
|
|||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.Editor
|
||||
{
|
||||
// [CustomPropertyDrawer(typeof(SceneAsset))]
|
||||
public class SceneAssetPropertyDrawer : PropertyDrawer
|
||||
{
|
||||
public override void OnGUI(Rect position, SerializedProperty property, GUIContent label)
|
||||
{
|
||||
EditorGUI.ObjectField(position, property, typeof(SceneAsset), label);
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: a83d0e4d07a8192a597646d11504b235
|
|
@ -6,7 +6,7 @@ using KitsuneCafe.SOAP;
|
|||
using R3;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.Entity
|
||||
namespace KitsuneCafe.Entities
|
||||
{
|
||||
public class AimFeature : MonoBehaviour
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.Entity
|
||||
namespace KitsuneCafe.Entities
|
||||
{
|
||||
public class BoneAttachment : MonoBehaviour
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.Entity
|
||||
namespace KitsuneCafe.Entities
|
||||
{
|
||||
public class DamageSource : MonoBehaviour, IDamaging
|
||||
{
|
||||
|
|
|
@ -2,7 +2,7 @@ using KitsuneCafe.Sys.Attributes;
|
|||
using R3;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.Entity
|
||||
namespace KitsuneCafe.Entities
|
||||
{
|
||||
public class DummyAnimator : MonoBehaviour
|
||||
{
|
||||
|
|
|
@ -5,7 +5,7 @@ using KitsuneCafe.Sys.Attributes;
|
|||
using R3;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.Entity
|
||||
namespace KitsuneCafe.Entities
|
||||
{
|
||||
public class EntityAnimator : MonoBehaviour
|
||||
{
|
||||
|
|
|
@ -2,7 +2,7 @@ using System;
|
|||
using R3;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.Entity
|
||||
namespace KitsuneCafe.Entities
|
||||
{
|
||||
public record HealthChanged(int Previous, int Current)
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
using KitsuneCafe.Sys;
|
||||
|
||||
namespace KitsuneCafe.Entity
|
||||
namespace KitsuneCafe.Entities
|
||||
{
|
||||
public interface IDamageable : IGameObject
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
using KitsuneCafe.Sys;
|
||||
|
||||
namespace KitsuneCafe.Entity
|
||||
namespace KitsuneCafe.Entities
|
||||
{
|
||||
public interface IDamaging : IGameObject
|
||||
{
|
||||
|
|
|
@ -2,15 +2,15 @@ using UnityEngine;
|
|||
using UnityEngine.Events;
|
||||
using static UnityEngine.InputSystem.InputAction;
|
||||
|
||||
namespace KitsuneCafe.Entity
|
||||
namespace KitsuneCafe.Entities
|
||||
{
|
||||
public interface IInputProvider
|
||||
{
|
||||
Vector2 MovementDirection { get; }
|
||||
bool Sprinting { get; }
|
||||
bool Interacting { get; }
|
||||
Vector2 MovementDirection { get; }
|
||||
bool Sprinting { get; }
|
||||
bool Interacting { get; }
|
||||
}
|
||||
|
||||
|
||||
public class Input : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
|
|
|
@ -4,7 +4,7 @@ using KitsuneCafe.SOAP;
|
|||
using R3;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.Entity
|
||||
namespace KitsuneCafe.Entities
|
||||
{
|
||||
public class Motor : MonoBehaviour
|
||||
{
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.Entity
|
||||
namespace KitsuneCafe.Entities
|
||||
{
|
||||
public class Spring : MonoBehaviour
|
||||
{
|
||||
|
|
|
@ -2,7 +2,7 @@ using KitsuneCafe.SOAP;
|
|||
using R3;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.Entity
|
||||
namespace KitsuneCafe.Entities
|
||||
{
|
||||
public class SprintFeature : MonoBehaviour
|
||||
{
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
using System;
|
||||
using KitsuneCafe.Entity;
|
||||
using KitsuneCafe.Entities;
|
||||
using KitsuneCafe.SOAP;
|
||||
using R3;
|
||||
using UnityEngine;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
using System;
|
||||
using KitsuneCafe.Entity;
|
||||
using KitsuneCafe.Entities;
|
||||
using KitsuneCafe.Extension;
|
||||
using KitsuneCafe.SOAP;
|
||||
using R3;
|
||||
|
|
|
@ -84,99 +84,42 @@ namespace KitsuneCafe.ItemSystem
|
|||
}
|
||||
|
||||
[CreateAssetMenu(menuName = KitsuneCafeMenu.Item + "Inventory")]
|
||||
public class Inventory : ScriptableObject, IList, IInventory<InventoryItem>, IEnumerable<InventoryItem>, IObservableCollection<InventoryItem>, ISerializationCallbackReceiver
|
||||
public class Inventory : ScriptableObject, IList, IInventory<InventoryItem>, IEnumerable<InventoryItem>
|
||||
{
|
||||
[SerializeField]
|
||||
private List<InventoryItem> serializableItems = new();
|
||||
|
||||
private ObservableList<InventoryItem> runtimeItems;
|
||||
private List<InventoryItem> items = new();
|
||||
|
||||
[SerializeField]
|
||||
private int capacity = 8;
|
||||
|
||||
public event NotifyCollectionChangedEventHandler<InventoryItem> CollectionChanged = default;
|
||||
|
||||
public int Capacity => capacity;
|
||||
|
||||
public int Count => runtimeItems?.Count ?? 0;
|
||||
public int Count => items.Count;
|
||||
|
||||
public bool IsEmpty => Count == 0;
|
||||
public bool IsFull => Count == Capacity;
|
||||
|
||||
public object SyncRoot => runtimeItems.SyncRoot;
|
||||
public object SyncRoot => ((IList)items).SyncRoot;
|
||||
|
||||
public bool IsFixedSize => ((IList)runtimeItems).IsFixedSize;
|
||||
public bool IsFixedSize => ((IList)items).IsFixedSize;
|
||||
|
||||
public bool IsReadOnly => ((IList)runtimeItems).IsReadOnly;
|
||||
public bool IsReadOnly => ((IList)items).IsReadOnly;
|
||||
|
||||
public bool IsSynchronized => ((ICollection)runtimeItems).IsSynchronized;
|
||||
public bool IsSynchronized => ((ICollection)items).IsSynchronized;
|
||||
|
||||
object IList.this[int index] { get => runtimeItems[index]; set => runtimeItems[index] = (InventoryItem)value; }
|
||||
object IList.this[int index] { get => items[index]; set => items[index] = (InventoryItem)value; }
|
||||
|
||||
public InventoryItem this[int index]
|
||||
{
|
||||
get => runtimeItems[index];
|
||||
set => runtimeItems[index] = value;
|
||||
}
|
||||
|
||||
private void OnEnable()
|
||||
{
|
||||
if (runtimeItems == null)
|
||||
{
|
||||
runtimeItems = new ObservableList<InventoryItem>();
|
||||
}
|
||||
|
||||
runtimeItems.CollectionChanged -= OnCollectionChanged;
|
||||
runtimeItems.CollectionChanged += OnCollectionChanged;
|
||||
}
|
||||
|
||||
private void OnDisable()
|
||||
{
|
||||
if (runtimeItems != null)
|
||||
{
|
||||
runtimeItems.CollectionChanged -= OnCollectionChanged;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnCollectionChanged(in NotifyCollectionChangedEventArgs<InventoryItem> e)
|
||||
{
|
||||
CollectionChanged?.Invoke(e);
|
||||
}
|
||||
|
||||
public void OnBeforeSerialize()
|
||||
{
|
||||
if (runtimeItems != null)
|
||||
{
|
||||
serializableItems.Clear();
|
||||
foreach (var item in runtimeItems)
|
||||
{
|
||||
serializableItems.Add(item);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public void OnAfterDeserialize()
|
||||
{
|
||||
if (runtimeItems == null)
|
||||
{
|
||||
runtimeItems = new ObservableList<InventoryItem>();
|
||||
}
|
||||
else
|
||||
{
|
||||
runtimeItems.Clear();
|
||||
}
|
||||
|
||||
foreach (var item in serializableItems)
|
||||
{
|
||||
runtimeItems.Add(item);
|
||||
}
|
||||
get => items[index];
|
||||
set => items[index] = value;
|
||||
}
|
||||
|
||||
public IEnumerable<InventoryItem> Find(Func<InventoryItem, bool> predicate)
|
||||
{
|
||||
for (int i = 0; i < Count; i++)
|
||||
{
|
||||
var item = runtimeItems[i];
|
||||
var item = items[i];
|
||||
|
||||
if (predicate(item))
|
||||
{
|
||||
|
@ -194,7 +137,7 @@ namespace KitsuneCafe.ItemSystem
|
|||
|
||||
for (int i = 0; i < Count; i++)
|
||||
{
|
||||
var existingItem = runtimeItems[i];
|
||||
var existingItem = items[i];
|
||||
|
||||
if (existingItem.Equals(item))
|
||||
{
|
||||
|
@ -204,7 +147,7 @@ namespace KitsuneCafe.ItemSystem
|
|||
}
|
||||
|
||||
var consumedAmount = existingItem.IncreaseCount(count, out var updatedItem);
|
||||
runtimeItems[i] = updatedItem.Value;
|
||||
items[i] = updatedItem.Value;
|
||||
|
||||
count -= consumedAmount;
|
||||
if (count <= 0)
|
||||
|
@ -227,7 +170,7 @@ namespace KitsuneCafe.ItemSystem
|
|||
}
|
||||
|
||||
count -= InventoryItem.Create(item, count, out var newItem);
|
||||
runtimeItems.Add(newItem.Value);
|
||||
items.Add(newItem.Value);
|
||||
|
||||
}
|
||||
|
||||
|
@ -253,22 +196,22 @@ namespace KitsuneCafe.ItemSystem
|
|||
return Result.Err<Unit, InventoryError>(InventoryError.InvalidQuantity);
|
||||
}
|
||||
|
||||
for (int i = runtimeItems.Count - 1; i >= 0; i--)
|
||||
for (int i = items.Count - 1; i >= 0; i--)
|
||||
{
|
||||
var existingItem = runtimeItems[i];
|
||||
var existingItem = items[i];
|
||||
|
||||
if (existingItem.Item == item)
|
||||
{
|
||||
if (existingItem.Count > count)
|
||||
{
|
||||
existingItem.ReduceCount(count, out var updatedItem);
|
||||
runtimeItems[i] = updatedItem.Value;
|
||||
items[i] = updatedItem.Value;
|
||||
return Result.Ok<Unit, InventoryError>(Unit.Default);
|
||||
}
|
||||
else
|
||||
{
|
||||
count -= existingItem.Count;
|
||||
runtimeItems.RemoveAt(i);
|
||||
items.RemoveAt(i);
|
||||
|
||||
if (count == 0)
|
||||
{
|
||||
|
@ -290,7 +233,7 @@ namespace KitsuneCafe.ItemSystem
|
|||
{
|
||||
for (int i = 0; i < Count; i++)
|
||||
{
|
||||
if (runtimeItems[i].Equals(item))
|
||||
if (items[i].Equals(item))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
@ -301,7 +244,7 @@ namespace KitsuneCafe.ItemSystem
|
|||
|
||||
public IEnumerator<InventoryItem> GetEnumerator()
|
||||
{
|
||||
return runtimeItems.GetEnumerator();
|
||||
return items.GetEnumerator();
|
||||
}
|
||||
|
||||
IEnumerator IEnumerable.GetEnumerator()
|
||||
|
@ -309,49 +252,44 @@ namespace KitsuneCafe.ItemSystem
|
|||
return GetEnumerator();
|
||||
}
|
||||
|
||||
public ISynchronizedView<InventoryItem, TView> CreateView<TView>(Func<InventoryItem, TView> transform)
|
||||
{
|
||||
return runtimeItems.CreateView(transform);
|
||||
}
|
||||
|
||||
public int Add(object value)
|
||||
{
|
||||
return ((IList)runtimeItems).Add(value);
|
||||
return ((IList)items).Add(value);
|
||||
}
|
||||
|
||||
public void Clear()
|
||||
{
|
||||
((IList)runtimeItems).Clear();
|
||||
((IList)items).Clear();
|
||||
}
|
||||
|
||||
public bool Contains(object value)
|
||||
{
|
||||
return ((IList)runtimeItems).Contains(value);
|
||||
return ((IList)items).Contains(value);
|
||||
}
|
||||
|
||||
public int IndexOf(object value)
|
||||
{
|
||||
return ((IList)runtimeItems).IndexOf(value);
|
||||
return ((IList)items).IndexOf(value);
|
||||
}
|
||||
|
||||
public void Insert(int index, object value)
|
||||
{
|
||||
((IList)runtimeItems).Insert(index, value);
|
||||
((IList)items).Insert(index, value);
|
||||
}
|
||||
|
||||
public void Remove(object value)
|
||||
{
|
||||
((IList)runtimeItems).Remove(value);
|
||||
((IList)items).Remove(value);
|
||||
}
|
||||
|
||||
public void RemoveAt(int index)
|
||||
{
|
||||
((IList)runtimeItems).RemoveAt(index);
|
||||
((IList)items).RemoveAt(index);
|
||||
}
|
||||
|
||||
public void CopyTo(Array array, int index)
|
||||
{
|
||||
((ICollection)runtimeItems).CopyTo(array, index);
|
||||
((ICollection)items).CopyTo(array, index);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -12,9 +12,9 @@ namespace KitsuneCafe.SOAP
|
|||
|
||||
[SerializeField]
|
||||
protected SerializableReactiveProperty<T> value;
|
||||
public T Value { get => value.Value; set { this.value.Value = value; } }
|
||||
public virtual T Value { get => value.Value; set { this.value.Value = value; } }
|
||||
|
||||
public ReadOnlyReactiveProperty<T> AsReactiveProperty() => value;
|
||||
public override Observable<T> AsObservable() => value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
using KitsuneCafe.Sys;
|
||||
using KitsuneCafe.Sys.Attributes;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.SOAP
|
||||
|
@ -6,6 +7,27 @@ namespace KitsuneCafe.SOAP
|
|||
[CreateAssetMenu(fileName = "FloatValue", menuName = KitsuneCafeMenu.SoapValue + "Float")]
|
||||
public class FloatValue : ReactiveValue<float>
|
||||
{
|
||||
[SerializeField]
|
||||
private bool clamp = false;
|
||||
public bool Clamped => clamp;
|
||||
|
||||
[SerializeField, ShowIf("clamp")]
|
||||
private Vector2 minMax = Vector2.zero;
|
||||
|
||||
public override float Value
|
||||
{
|
||||
get => base.Value;
|
||||
set
|
||||
{
|
||||
if (clamp)
|
||||
{
|
||||
base.Value = Mathf.Clamp(value, minMax.x, minMax.y);
|
||||
}
|
||||
else
|
||||
{
|
||||
base.Value = value;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
12
Assets/Scripts/SOAP/Value/QuaternionValue.cs
Normal file
12
Assets/Scripts/SOAP/Value/QuaternionValue.cs
Normal file
|
@ -0,0 +1,12 @@
|
|||
using KitsuneCafe.Sys;
|
||||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.SOAP
|
||||
{
|
||||
[CreateAssetMenu(fileName = "QuaternionValue", menuName = KitsuneCafeMenu.SoapValue + "Quaternion")]
|
||||
public class QuaternionValue : ReactiveValue<Quaternion>
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
2
Assets/Scripts/SOAP/Value/QuaternionValue.cs.meta
Normal file
2
Assets/Scripts/SOAP/Value/QuaternionValue.cs.meta
Normal file
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 8d8c46ebf04914f9f96e5938bb166973
|
8
Assets/Scripts/Scene.meta
Normal file
8
Assets/Scripts/Scene.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 16eef83f26bcaed2caf5029fb2957771
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
103
Assets/Scripts/Scene/Subscene.cs
Normal file
103
Assets/Scripts/Scene/Subscene.cs
Normal file
|
@ -0,0 +1,103 @@
|
|||
using System;
|
||||
using Eflatun.SceneReference;
|
||||
using UnityEditor;
|
||||
|
||||
#if UNITY_EDITOR
|
||||
using UnityEditor.SceneManagement;
|
||||
#endif
|
||||
using UnityEngine;
|
||||
using UnityEngine.SceneManagement;
|
||||
|
||||
namespace KitsuneCafe.Scene
|
||||
{
|
||||
[ExecuteInEditMode]
|
||||
public class Subscene : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private SceneReference scene;
|
||||
|
||||
[SerializeField]
|
||||
private bool loadOnStart;
|
||||
|
||||
private AsyncOperation sceneLoadOperation;
|
||||
|
||||
public event Action SceneLoaded = delegate { };
|
||||
private bool isLoading = false;
|
||||
private bool isLoaded = false;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
#if UNITY_EDITOR
|
||||
EditorApplication.playModeStateChanged += OnPlayModeStateChanged;
|
||||
if (!EditorApplication.isPlayingOrWillChangePlaymode)
|
||||
{
|
||||
LoadPreviewScene();
|
||||
}
|
||||
#else
|
||||
|
||||
if (loadOnStart && !isLoading)
|
||||
{
|
||||
Load();
|
||||
isLoading = true;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
private void OnPlayModeStateChanged(PlayModeStateChange change)
|
||||
{
|
||||
switch (change)
|
||||
{
|
||||
case PlayModeStateChange.EnteredEditMode:
|
||||
LoadPreviewScene();
|
||||
break;
|
||||
case PlayModeStateChange.ExitingEditMode:
|
||||
UnloadPreviewScene();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
#if UNITY_EDITOR
|
||||
private void LoadPreviewScene()
|
||||
{
|
||||
if (scene.Path == null || SceneManager.GetSceneByPath(scene.Path).isLoaded)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
EditorSceneManager.OpenScene(scene.Path, OpenSceneMode.Additive);
|
||||
}
|
||||
|
||||
private void UnloadPreviewScene()
|
||||
{
|
||||
if (scene.LoadedScene != null)
|
||||
{
|
||||
// EditorSceneManager.CloseScene(scene.LoadedScene, false);
|
||||
if (loadOnStart)
|
||||
{
|
||||
Load();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
private void Load()
|
||||
{
|
||||
if (sceneLoadOperation == null)
|
||||
{
|
||||
sceneLoadOperation = SceneManager.LoadSceneAsync(
|
||||
scene.BuildIndex,
|
||||
LoadSceneMode.Additive
|
||||
);
|
||||
|
||||
sceneLoadOperation.completed += OnCompleted;
|
||||
}
|
||||
}
|
||||
|
||||
private void OnCompleted(AsyncOperation _operation)
|
||||
{
|
||||
isLoaded = true;
|
||||
SceneLoaded.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
2
Assets/Scripts/Scene/Subscene.cs.meta
Normal file
2
Assets/Scripts/Scene/Subscene.cs.meta
Normal file
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d482f2480cd8a1fac8e1ebd40c5dc94e
|
36
Assets/Scripts/System/Layer.cs
Normal file
36
Assets/Scripts/System/Layer.cs
Normal file
|
@ -0,0 +1,36 @@
|
|||
using UnityEngine;
|
||||
|
||||
namespace KitsuneCafe.Sys
|
||||
{
|
||||
[System.Serializable]
|
||||
public class Layer
|
||||
{
|
||||
[SerializeField]
|
||||
private int index = 0;
|
||||
|
||||
public int Index => index;
|
||||
|
||||
public Layer(int index)
|
||||
{
|
||||
this.index = index;
|
||||
}
|
||||
|
||||
public void Set(int layerIndex)
|
||||
{
|
||||
if (layerIndex > 0 && layerIndex < 32)
|
||||
{
|
||||
index = layerIndex;
|
||||
}
|
||||
}
|
||||
|
||||
public int Mask => 1 << index;
|
||||
|
||||
public override string ToString()
|
||||
{
|
||||
return $"Layer {{ Index = {index} }}";
|
||||
}
|
||||
|
||||
public static implicit operator int(Layer layer) => layer.Index;
|
||||
public static implicit operator Layer(int index) => new(index);
|
||||
}
|
||||
}
|
2
Assets/Scripts/System/Layer.cs.meta
Normal file
2
Assets/Scripts/System/Layer.cs.meta
Normal file
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3d72dddf9bd95c216800328c05dd1f1d
|
138
Assets/Scripts/UI/Elements/Preview.cs
Normal file
138
Assets/Scripts/UI/Elements/Preview.cs
Normal file
|
@ -0,0 +1,138 @@
|
|||
using System;
|
||||
using KitsuneCafe.UI.MVVM;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
namespace KitsuneCafe.UI
|
||||
{
|
||||
public class RotateEvent : EventBase<RotateEvent>
|
||||
{
|
||||
public Vector2 Delta { get; set; }
|
||||
|
||||
protected override void Init()
|
||||
{
|
||||
base.Init();
|
||||
bubbles = true;
|
||||
tricklesDown = true;
|
||||
}
|
||||
}
|
||||
|
||||
public class ZoomEvent : EventBase<ZoomEvent>
|
||||
{
|
||||
public float Amount { get; set; }
|
||||
|
||||
protected override void Init()
|
||||
{
|
||||
base.Init();
|
||||
bubbles = true;
|
||||
tricklesDown = true;
|
||||
}
|
||||
}
|
||||
|
||||
[UxmlElement]
|
||||
public partial class PreviewView : VisualElement
|
||||
{
|
||||
public const string BaseClass = "kitsunecafe__preview";
|
||||
|
||||
private readonly PreviewViewModel viewModel = new();
|
||||
|
||||
private readonly DragManipulator drag;
|
||||
|
||||
public PreviewView()
|
||||
{
|
||||
AddToClassList(BaseClass);
|
||||
|
||||
drag = new DragManipulator(this);
|
||||
drag.Started += () => viewModel.EnableRotationCommand.TryExecute(true);
|
||||
drag.Stopped += () => viewModel.EnableRotationCommand.TryExecute(false);
|
||||
drag.Dragged += delta => viewModel.RotateCommand.TryExecute(delta);
|
||||
this.AddManipulator(drag);
|
||||
|
||||
RegisterCallback<AttachToPanelEvent>(OnAttachToPanel);
|
||||
}
|
||||
|
||||
private void OnAttachToPanel(AttachToPanelEvent evt)
|
||||
{
|
||||
var root = panel.visualTree;
|
||||
root.RegisterCallback<WheelEvent>(OnMouseWheel);
|
||||
|
||||
viewModel.Rotated += OnRotate;
|
||||
viewModel.Zoomed += OnZoom;
|
||||
}
|
||||
|
||||
private void OnRotate(object sender, PreviewViewModel.RotateEvent e)
|
||||
{
|
||||
using RotateEvent ev = RotateEvent.GetPooled();
|
||||
ev.target = this;
|
||||
ev.Delta = e.Rotation;
|
||||
SendEvent(ev);
|
||||
}
|
||||
|
||||
private void OnZoom(object sender, PreviewViewModel.ZoomEvent e)
|
||||
{
|
||||
using ZoomEvent ev = ZoomEvent.GetPooled();
|
||||
ev.target = this;
|
||||
ev.Amount = e.Amount;
|
||||
SendEvent(ev);
|
||||
}
|
||||
|
||||
private void OnMouseWheel(WheelEvent evt)
|
||||
{
|
||||
viewModel.ZoomCommand.TryExecute(evt.delta.y);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public class PreviewViewModel
|
||||
{
|
||||
public record RotateEvent(Vector2 Rotation);
|
||||
public record ZoomEvent(float Amount);
|
||||
|
||||
public readonly ICommand<bool> EnableRotationCommand;
|
||||
public readonly ICommand<Vector2> RotateCommand;
|
||||
public readonly ICommand<float> ZoomCommand;
|
||||
|
||||
private bool isRotating = false;
|
||||
|
||||
public event EventHandler<RotateEvent> Rotated;
|
||||
public event EventHandler<ZoomEvent> Zoomed;
|
||||
|
||||
public PreviewViewModel()
|
||||
{
|
||||
EnableRotationCommand = new RelayCommand<bool>(CanEnableRotation, EnableRotation);
|
||||
RotateCommand = new RelayCommand<Vector2>(CanRotate, Rotate);
|
||||
ZoomCommand = new RelayCommand<float>(CanZoom, Zoom);
|
||||
}
|
||||
|
||||
private void EnableRotation(bool enabled)
|
||||
{
|
||||
isRotating = enabled;
|
||||
}
|
||||
|
||||
private bool CanEnableRotation(bool _enabled)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public bool CanRotate(Vector2 _delta)
|
||||
{
|
||||
return isRotating;
|
||||
}
|
||||
|
||||
private void Rotate(Vector2 delta)
|
||||
{
|
||||
Rotated?.Invoke(this, new RotateEvent(delta));
|
||||
}
|
||||
|
||||
private bool CanZoom(float value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
private void Zoom(float value)
|
||||
{
|
||||
Zoomed?.Invoke(this, new ZoomEvent(value));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
2
Assets/Scripts/UI/Elements/Preview.cs.meta
Normal file
2
Assets/Scripts/UI/Elements/Preview.cs.meta
Normal file
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 5af5a3e8b4d2c26c8bee10329f0bf21b
|
276
Assets/Scripts/UI/Elements/Recycler.cs
Normal file
276
Assets/Scripts/UI/Elements/Recycler.cs
Normal file
|
@ -0,0 +1,276 @@
|
|||
using System;
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using KitsuneCafe.UI.MVVM;
|
||||
using Unity.Properties;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
namespace KitsuneCafe.UI
|
||||
{
|
||||
public class RecyclerViewModel
|
||||
{
|
||||
public record RotateEvent(Direction Direction, int FirstIndex);
|
||||
|
||||
public enum Direction
|
||||
{
|
||||
None = 0,
|
||||
Clockwise = -1,
|
||||
CounterClockwise = 1
|
||||
}
|
||||
|
||||
private int displayCount;
|
||||
public int DisplayCount
|
||||
{
|
||||
get => displayCount;
|
||||
set
|
||||
{
|
||||
if (displayCount != value)
|
||||
{
|
||||
displayCount = value;
|
||||
CreateIndices();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private IList itemSource;
|
||||
public IList ItemSource
|
||||
{
|
||||
get => itemSource;
|
||||
set
|
||||
{
|
||||
if (itemSource != value)
|
||||
{
|
||||
itemSource = value;
|
||||
CreateIndices();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public int Count => Math.Min(DisplayCount, ItemSource.Count);
|
||||
|
||||
private List<int> indices;
|
||||
public IReadOnlyList<int> Indices => indices;
|
||||
|
||||
public readonly ICommand<Direction> RotateCommand;
|
||||
|
||||
public event EventHandler<RotateEvent> Rotated = delegate { };
|
||||
|
||||
public RecyclerViewModel()
|
||||
{
|
||||
indices = new();
|
||||
RotateCommand = new RelayCommand<Direction>(CanRotate, Rotate);
|
||||
}
|
||||
|
||||
private void CreateIndices()
|
||||
{
|
||||
if (itemSource == null || displayCount == 0) { return; }
|
||||
indices = Enumerable.Range(0, Math.Min(DisplayCount, ItemSource.Count)).ToList();
|
||||
}
|
||||
|
||||
private bool CanRotate(Direction direction)
|
||||
{
|
||||
return direction == Direction.Clockwise || direction == Direction.CounterClockwise;
|
||||
}
|
||||
|
||||
public void Rotate(Direction direction)
|
||||
{
|
||||
if (direction == Direction.Clockwise)
|
||||
{
|
||||
indices.RemoveAt(0);
|
||||
var next = indices.Last() + 1;
|
||||
next %= ItemSource.Count;
|
||||
indices.Add(next);
|
||||
Notify(direction);
|
||||
}
|
||||
else if (direction == Direction.CounterClockwise)
|
||||
{
|
||||
indices.RemoveAt(ItemSource.Count - 1);
|
||||
var count = ItemSource.Count;
|
||||
var previous = indices[0] - 1;
|
||||
previous += count % count;
|
||||
indices.Insert(0, previous);
|
||||
Notify(direction);
|
||||
}
|
||||
}
|
||||
|
||||
private void Notify(Direction direction)
|
||||
{
|
||||
Rotated?.Invoke(this, new RotateEvent(direction, indices.First()));
|
||||
}
|
||||
}
|
||||
|
||||
public class SelectEvent : EventBase<SelectEvent>
|
||||
{
|
||||
public int ElementIndex { get; set; }
|
||||
public int DataIndex { get; set; }
|
||||
}
|
||||
|
||||
[UxmlElement]
|
||||
public partial class RecyclerView : VisualElement
|
||||
{
|
||||
public const string BaseClass = "kitsunecafe__recycler-view";
|
||||
|
||||
[UxmlAttribute, CreateProperty]
|
||||
public int DisplayCount
|
||||
{
|
||||
get => viewModel.DisplayCount;
|
||||
set
|
||||
{
|
||||
viewModel.DisplayCount = value;
|
||||
CreateItems();
|
||||
}
|
||||
}
|
||||
|
||||
[CreateProperty]
|
||||
public IList ItemSource
|
||||
{
|
||||
get => viewModel.ItemSource;
|
||||
set
|
||||
{
|
||||
if (ItemSource != value)
|
||||
{
|
||||
viewModel.ItemSource = value;
|
||||
CreateItems();
|
||||
Rebind();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private IBinder binder;
|
||||
|
||||
[CreateProperty]
|
||||
public IBinder Binder
|
||||
{
|
||||
get => binder;
|
||||
set
|
||||
{
|
||||
if (binder != value)
|
||||
{
|
||||
binder = value;
|
||||
CreateItems();
|
||||
Rebind();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private readonly RecyclerViewModel viewModel = new();
|
||||
private readonly DragManipulator drag;
|
||||
|
||||
public RecyclerView()
|
||||
{
|
||||
AddToClassList(BaseClass);
|
||||
|
||||
drag = new DragManipulator(this);
|
||||
drag.Dragged += OnDrag;
|
||||
this.AddManipulator(drag);
|
||||
|
||||
RegisterCallback<NavigationMoveEvent>(OnNavigationMove);
|
||||
viewModel.Rotated += OnRotated;
|
||||
}
|
||||
|
||||
private void CreateItems()
|
||||
{
|
||||
Clear();
|
||||
if (DisplayCount == 0 || binder == null) { return; }
|
||||
for (int i = 0; i < DisplayCount; i++)
|
||||
{
|
||||
Add(binder.CreateItem());
|
||||
}
|
||||
|
||||
FocusFirst();
|
||||
}
|
||||
|
||||
private void Rebind()
|
||||
{
|
||||
if (viewModel == null || ItemSource == null || DisplayCount == 0 || binder == null) { return; }
|
||||
|
||||
for (int i = 0; i < DisplayCount; i++)
|
||||
{
|
||||
TryBindItem(this[i], i);
|
||||
}
|
||||
}
|
||||
|
||||
private bool HasItem(int index)
|
||||
{
|
||||
return 0 <= index && index < ItemSource.Count;
|
||||
}
|
||||
|
||||
private void OnRotated(object sender, RecyclerViewModel.RotateEvent e)
|
||||
{
|
||||
VisualElement recycled;
|
||||
switch (e.Direction)
|
||||
{
|
||||
case RecyclerViewModel.Direction.Clockwise:
|
||||
recycled = this[0];
|
||||
RemoveAt(0);
|
||||
Insert(DisplayCount - 1, recycled);
|
||||
TryBindItem(recycled, DisplayCount - 1);
|
||||
NotifySelection();
|
||||
break;
|
||||
case RecyclerViewModel.Direction.CounterClockwise:
|
||||
recycled = this[DisplayCount - 1];
|
||||
RemoveAt(DisplayCount - 1);
|
||||
Insert(0, recycled);
|
||||
TryBindItem(recycled, 0);
|
||||
NotifySelection();
|
||||
break;
|
||||
}
|
||||
|
||||
FocusFirst();
|
||||
}
|
||||
|
||||
private void NotifySelection()
|
||||
{
|
||||
using SelectEvent evt = SelectEvent.GetPooled();
|
||||
evt.target = this[0];
|
||||
evt.ElementIndex = 0;
|
||||
evt.DataIndex = viewModel.Indices[0];
|
||||
SendEvent(evt);
|
||||
}
|
||||
|
||||
private void FocusFirst()
|
||||
{
|
||||
if (childCount > 0)
|
||||
{
|
||||
this[0].Focus();
|
||||
}
|
||||
}
|
||||
|
||||
private void TryBindItem(VisualElement element, int index)
|
||||
{
|
||||
if (HasItem(index))
|
||||
{
|
||||
var idx = viewModel.Indices[index];
|
||||
if (0 <= idx && idx < ItemSource.Count)
|
||||
{
|
||||
binder.BindItem(element, idx);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
binder.UnbindItem(element);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnDrag(Vector2 vector)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private void OnNavigationMove(NavigationMoveEvent evt)
|
||||
{
|
||||
var direction = evt.direction switch
|
||||
{
|
||||
NavigationMoveEvent.Direction.Left => RecyclerViewModel.Direction.CounterClockwise,
|
||||
NavigationMoveEvent.Direction.Right => RecyclerViewModel.Direction.Clockwise,
|
||||
NavigationMoveEvent.Direction.Next => RecyclerViewModel.Direction.Clockwise,
|
||||
NavigationMoveEvent.Direction.Previous => RecyclerViewModel.Direction.CounterClockwise,
|
||||
_ => RecyclerViewModel.Direction.None
|
||||
};
|
||||
|
||||
viewModel.RotateCommand.TryExecute(direction);
|
||||
}
|
||||
}
|
||||
}
|
2
Assets/Scripts/UI/Elements/Recycler.cs.meta
Normal file
2
Assets/Scripts/UI/Elements/Recycler.cs.meta
Normal file
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 684cef7995e35a12d8793b920c61ac8e
|
133
Assets/Scripts/UI/ItemPreview.cs
Normal file
133
Assets/Scripts/UI/ItemPreview.cs
Normal file
|
@ -0,0 +1,133 @@
|
|||
using System;
|
||||
using KitsuneCafe.ItemSystem;
|
||||
using KitsuneCafe.SOAP;
|
||||
using KitsuneCafe.Sys;
|
||||
using R3;
|
||||
using UnityEngine;
|
||||
using Wacs.Core.Instructions;
|
||||
|
||||
namespace KitsuneCafe.UI
|
||||
{
|
||||
public class ItemPreview : MonoBehaviour
|
||||
{
|
||||
[SerializeField]
|
||||
private ItemValue selectedItem;
|
||||
|
||||
[SerializeField]
|
||||
private new Transform camera;
|
||||
|
||||
[Header("Rotation")]
|
||||
[SerializeField]
|
||||
private Vector2Value rotationDelta;
|
||||
|
||||
[SerializeField]
|
||||
private float sensitivity = 20;
|
||||
|
||||
[SerializeField]
|
||||
private float angleSnap = 10;
|
||||
|
||||
[Header("Zoom")]
|
||||
[SerializeField]
|
||||
private FloatValue zoom;
|
||||
|
||||
[SerializeField]
|
||||
private float zoomSensitivity = 0.5f;
|
||||
|
||||
private Vector3 initialPosition;
|
||||
|
||||
[SerializeField]
|
||||
private Layer previewLayer;
|
||||
|
||||
private GameObject instance;
|
||||
|
||||
private void Start()
|
||||
{
|
||||
if (selectedItem.Value != null)
|
||||
{
|
||||
ChangeItemPreview(selectedItem.Value);
|
||||
}
|
||||
|
||||
var d = Disposable.CreateBuilder();
|
||||
|
||||
selectedItem.AsObservable()
|
||||
.Subscribe(ChangeItemPreview)
|
||||
.AddTo(ref d);
|
||||
|
||||
rotationDelta.AsObservable()
|
||||
.Where(_ => instance != null)
|
||||
.Subscribe(RotatePreview)
|
||||
.AddTo(ref d);
|
||||
|
||||
zoom.AsObservable()
|
||||
.Where(_ => instance != null)
|
||||
.Subscribe(ZoomPreview)
|
||||
.AddTo(ref d);
|
||||
|
||||
d.RegisterTo(destroyCancellationToken);
|
||||
}
|
||||
|
||||
private void ZoomPreview(float amount)
|
||||
{
|
||||
if (instance == null) { return; }
|
||||
|
||||
var position = initialPosition;
|
||||
position.z += amount * zoomSensitivity;
|
||||
instance.transform.position = position;
|
||||
}
|
||||
|
||||
private void ChangeItemPreview(Item item)
|
||||
{
|
||||
if (instance != null)
|
||||
{
|
||||
Destroy(instance);
|
||||
instance = null;
|
||||
}
|
||||
|
||||
if (item != null)
|
||||
{
|
||||
instance = item.CreatePreview();
|
||||
instance.layer = previewLayer;
|
||||
instance.transform.SetParent(transform);
|
||||
initialPosition = instance.transform.position;
|
||||
|
||||
ResetPreviewValues();
|
||||
}
|
||||
}
|
||||
|
||||
private void ResetPreviewValues()
|
||||
{
|
||||
zoom.Value = 0;
|
||||
rotationDelta.Value = Vector2.zero;
|
||||
}
|
||||
|
||||
public void RotatePreview(Vector2 delta)
|
||||
{
|
||||
if (instance == null || camera == null) { return; }
|
||||
|
||||
var yawAngle = -delta.x * sensitivity * Time.deltaTime;
|
||||
var yawRotation = Quaternion.AngleAxis(yawAngle, camera.up);
|
||||
var pitchAngle = -delta.y * sensitivity * Time.deltaTime;
|
||||
|
||||
var pitchRotation = Quaternion.AngleAxis(pitchAngle, camera.right);
|
||||
var combinedRotation = pitchRotation * yawRotation;
|
||||
instance.transform.rotation = combinedRotation * instance.transform.rotation;
|
||||
|
||||
ApplyAngleSnapping();
|
||||
}
|
||||
|
||||
public void ApplyAngleSnapping()
|
||||
{
|
||||
if (instance == null) return;
|
||||
|
||||
Vector3 euler = instance.transform.rotation.eulerAngles;
|
||||
|
||||
Quaternion rotation = Quaternion.Euler(
|
||||
Mathf.Round(euler.x / angleSnap) * angleSnap,
|
||||
Mathf.Round(euler.y / angleSnap) * angleSnap,
|
||||
Mathf.Round(euler.z / angleSnap) * angleSnap
|
||||
);
|
||||
|
||||
instance.transform.rotation = rotation;
|
||||
}
|
||||
}
|
||||
}
|
2
Assets/Scripts/UI/ItemPreview.cs.meta
Normal file
2
Assets/Scripts/UI/ItemPreview.cs.meta
Normal file
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: cd025ca0b2f740f7f8356cd3113163a2
|
8
Assets/Scripts/UI/Manipulator.meta
Normal file
8
Assets/Scripts/UI/Manipulator.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 0b72eac1e69a2d32f85746763e1b1d64
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
66
Assets/Scripts/UI/Manipulator/DragManipulator.cs
Normal file
66
Assets/Scripts/UI/Manipulator/DragManipulator.cs
Normal file
|
@ -0,0 +1,66 @@
|
|||
using System;
|
||||
using UnityEditor;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
namespace KitsuneCafe.UI
|
||||
{
|
||||
public class DragManipulator : PointerManipulator
|
||||
{
|
||||
public event Action Started = delegate { };
|
||||
public event Action Stopped = delegate { };
|
||||
public event Action<Vector2> Dragged = delegate { };
|
||||
|
||||
private bool isDragging = false;
|
||||
private bool globalDrag = true;
|
||||
|
||||
private VisualElement releaseTarget;
|
||||
|
||||
public DragManipulator(VisualElement element, bool globalDrag = true)
|
||||
{
|
||||
target = element;
|
||||
this.globalDrag = globalDrag;
|
||||
}
|
||||
|
||||
protected override void RegisterCallbacksOnTarget()
|
||||
{
|
||||
target.RegisterCallback<AttachToPanelEvent>(OnAttachToPanel);
|
||||
}
|
||||
|
||||
private void OnAttachToPanel(AttachToPanelEvent evt)
|
||||
{
|
||||
releaseTarget = globalDrag ? target.panel.visualTree : target;
|
||||
target.RegisterCallback<PointerDownEvent>(OnPointerDown);
|
||||
releaseTarget.RegisterCallback<PointerMoveEvent>(OnPointerMove);
|
||||
releaseTarget.RegisterCallback<PointerUpEvent>(OnPointerUp);
|
||||
}
|
||||
|
||||
protected override void UnregisterCallbacksFromTarget()
|
||||
{
|
||||
target.UnregisterCallback<AttachToPanelEvent>(OnAttachToPanel);
|
||||
target.UnregisterCallback<PointerDownEvent>(OnPointerDown);
|
||||
releaseTarget?.UnregisterCallback<PointerMoveEvent>(OnPointerMove);
|
||||
releaseTarget?.UnregisterCallback<PointerUpEvent>(OnPointerUp);
|
||||
}
|
||||
|
||||
private void OnPointerDown(PointerDownEvent _)
|
||||
{
|
||||
isDragging = true;
|
||||
Started?.Invoke();
|
||||
}
|
||||
|
||||
private void OnPointerMove(PointerMoveEvent evt)
|
||||
{
|
||||
if (isDragging)
|
||||
{
|
||||
Dragged?.Invoke(evt.deltaPosition);
|
||||
}
|
||||
}
|
||||
|
||||
private void OnPointerUp(PointerUpEvent evt)
|
||||
{
|
||||
isDragging = false;
|
||||
Stopped?.Invoke();
|
||||
}
|
||||
}
|
||||
}
|
2
Assets/Scripts/UI/Manipulator/DragManipulator.cs.meta
Normal file
2
Assets/Scripts/UI/Manipulator/DragManipulator.cs.meta
Normal file
|
@ -0,0 +1,2 @@
|
|||
fileFormatVersion: 2
|
||||
guid: e2d8f2b2cf8c00d9e9c1e89d5e0fb121
|
|
@ -1,6 +1,9 @@
|
|||
using System.Collections;
|
||||
using System;
|
||||
using KitsuneCafe.ItemSystem;
|
||||
using KitsuneCafe.SOAP;
|
||||
using KitsuneCafe.UI.MVVM;
|
||||
using R3;
|
||||
using UnityEditor.UIElements;
|
||||
using UnityEngine;
|
||||
using UnityEngine.UIElements;
|
||||
|
||||
|
@ -8,13 +11,14 @@ namespace KitsuneCafe.UI
|
|||
{
|
||||
public class InventoryScreen : MonoBehaviour
|
||||
{
|
||||
public const string ItemListIndicators = "item-list-indicator";
|
||||
public const string ItemList = "item-list";
|
||||
public const string ItemListIndicatorsName = "item-list-indicator";
|
||||
public const string ItemListName = "item-list";
|
||||
|
||||
public const string ItemPreviewName = "item-preview";
|
||||
|
||||
|
||||
|
||||
public const string ItemDetailsTitle = "item-details-title-label";
|
||||
public const string ItemDetailsContent = "item-details-content-label";
|
||||
public const string ItemDetailsTitleName = "item-details-title-label";
|
||||
public const string ItemDetailsContentName = "item-details-content-label";
|
||||
|
||||
[SerializeField]
|
||||
private UIDocument doc;
|
||||
|
@ -25,12 +29,28 @@ namespace KitsuneCafe.UI
|
|||
[SerializeField]
|
||||
private VisualTreeAsset template;
|
||||
|
||||
[SerializeField]
|
||||
private int displayCount = 5;
|
||||
|
||||
[SerializeField]
|
||||
private ItemValue selectedItem;
|
||||
|
||||
[SerializeField]
|
||||
private FloatEvent inventoryInput;
|
||||
|
||||
[SerializeField]
|
||||
private Vector2Value itemPreviewDelta;
|
||||
|
||||
[SerializeField]
|
||||
private FloatValue itemZoom;
|
||||
|
||||
[SerializeField]
|
||||
private ActionMapValue actionMap;
|
||||
|
||||
private VisualElement root => doc.rootVisualElement;
|
||||
|
||||
private VisualElement indicators;
|
||||
private VisualElement itemList;
|
||||
private VisualElement detailsTitle;
|
||||
private VisualElement detailsContent;
|
||||
private VisualElement itemPreview;
|
||||
|
||||
private void OnValidate()
|
||||
{
|
||||
|
@ -47,7 +67,54 @@ namespace KitsuneCafe.UI
|
|||
|
||||
private void Start()
|
||||
{
|
||||
root.visible = false;
|
||||
|
||||
inventoryInput.AsObservable()
|
||||
.Subscribe(_ =>
|
||||
{
|
||||
root.visible = !root.visible;
|
||||
actionMap.Value = root.visible ? Input.ActionMap.UI : Input.ActionMap.Player;
|
||||
});
|
||||
|
||||
CreateItemList();
|
||||
var preview = root.Q<PreviewView>();
|
||||
|
||||
preview.RegisterCallback<RotateEvent>(evt =>
|
||||
{
|
||||
itemPreviewDelta.Value = evt.Delta;
|
||||
});
|
||||
|
||||
preview.RegisterCallback<ZoomEvent>(evt =>
|
||||
{
|
||||
itemZoom.Value += evt.Amount;
|
||||
});
|
||||
}
|
||||
|
||||
private void CreateItemList()
|
||||
{
|
||||
var itemList = root.Q<RecyclerView>();
|
||||
itemList.ItemSource = inventory;
|
||||
itemList.Binder = new AdHocBinder(
|
||||
() =>
|
||||
{
|
||||
var instance = template.CloneTree();
|
||||
instance.focusable = true;
|
||||
return instance;
|
||||
},
|
||||
(el, i) =>
|
||||
{
|
||||
el.dataSource = inventory[i];
|
||||
},
|
||||
el =>
|
||||
{
|
||||
el.dataSource = null;
|
||||
}
|
||||
);
|
||||
|
||||
itemList.RegisterCallback<SelectEvent>(evt =>
|
||||
{
|
||||
Debug.Log($"Selected {evt.DataIndex}");
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 24 KiB |
|
@ -1,134 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 727a75301c3d24613a3ebcec4a24c2c8
|
||||
TextureImporter:
|
||||
internalIDToNameTable: []
|
||||
externalObjects: {}
|
||||
serializedVersion: 11
|
||||
mipmaps:
|
||||
mipMapMode: 0
|
||||
enableMipMap: 0
|
||||
sRGBTexture: 1
|
||||
linearTexture: 0
|
||||
fadeOut: 0
|
||||
borderMipMap: 0
|
||||
mipMapsPreserveCoverage: 0
|
||||
alphaTestReferenceValue: 0.5
|
||||
mipMapFadeDistanceStart: 1
|
||||
mipMapFadeDistanceEnd: 3
|
||||
bumpmap:
|
||||
convertToNormalMap: 0
|
||||
externalNormalMap: 0
|
||||
heightScale: 0.25
|
||||
normalMapFilter: 0
|
||||
isReadable: 0
|
||||
streamingMipmaps: 0
|
||||
streamingMipmapsPriority: 0
|
||||
vTOnly: 0
|
||||
ignoreMasterTextureLimit: 0
|
||||
grayScaleToAlpha: 0
|
||||
generateCubemap: 6
|
||||
cubemapConvolution: 0
|
||||
seamlessCubemap: 0
|
||||
textureFormat: 1
|
||||
maxTextureSize: 2048
|
||||
textureSettings:
|
||||
serializedVersion: 2
|
||||
filterMode: 0
|
||||
aniso: 1
|
||||
mipBias: 0
|
||||
wrapU: 1
|
||||
wrapV: 1
|
||||
wrapW: 0
|
||||
nPOTScale: 0
|
||||
lightmap: 0
|
||||
compressionQuality: 50
|
||||
spriteMode: 0
|
||||
spriteExtrude: 1
|
||||
spriteMeshType: 1
|
||||
alignment: 0
|
||||
spritePivot: {x: 0.5, y: 0.5}
|
||||
spritePixelsToUnits: 100
|
||||
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||
spriteGenerateFallbackPhysicsShape: 1
|
||||
alphaUsage: 1
|
||||
alphaIsTransparency: 1
|
||||
spriteTessellationDetail: -1
|
||||
textureType: 2
|
||||
textureShape: 1
|
||||
singleChannelComponent: 0
|
||||
flipbookRows: 1
|
||||
flipbookColumns: 1
|
||||
maxTextureSizeSet: 0
|
||||
compressionQualitySet: 0
|
||||
textureFormatSet: 0
|
||||
ignorePngGamma: 0
|
||||
applyGammaDecoding: 0
|
||||
platformSettings:
|
||||
- serializedVersion: 3
|
||||
buildTarget: DefaultTexturePlatform
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 0
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Standalone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: Android
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
- serializedVersion: 3
|
||||
buildTarget: iPhone
|
||||
maxTextureSize: 2048
|
||||
resizeAlgorithm: 0
|
||||
textureFormat: -1
|
||||
textureCompression: 1
|
||||
compressionQuality: 50
|
||||
crunchedCompression: 0
|
||||
allowsAlphaSplitting: 0
|
||||
overridden: 0
|
||||
androidETC2FallbackOverride: 0
|
||||
forceMaximumCompressionQuality_BC6H_BC7: 0
|
||||
spriteSheet:
|
||||
serializedVersion: 2
|
||||
sprites: []
|
||||
outline: []
|
||||
physicsShape: []
|
||||
bones: []
|
||||
spriteID:
|
||||
internalID: 0
|
||||
vertices: []
|
||||
indices:
|
||||
edges: []
|
||||
weights: []
|
||||
secondaryTextures: []
|
||||
nameFileIdTable: {}
|
||||
spritePackingTag:
|
||||
pSDRemoveMatte: 0
|
||||
pSDShowRemoveMatteOption: 0
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,654 +0,0 @@
|
|||
%YAML 1.1
|
||||
%TAG !u! tag:unity3d.com,2011:
|
||||
--- !u!114 &1
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_PixelRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 45
|
||||
width: 1666
|
||||
height: 958
|
||||
m_ShowMode: 4
|
||||
m_Title:
|
||||
m_RootView: {fileID: 6}
|
||||
m_MinSize: {x: 950, y: 542}
|
||||
m_MaxSize: {x: 10000, y: 10000}
|
||||
--- !u!114 &2
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children: []
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 466
|
||||
width: 290
|
||||
height: 442
|
||||
m_MinSize: {x: 234, y: 271}
|
||||
m_MaxSize: {x: 10004, y: 10021}
|
||||
m_ActualView: {fileID: 14}
|
||||
m_Panes:
|
||||
- {fileID: 14}
|
||||
m_Selected: 0
|
||||
m_LastSelected: 0
|
||||
--- !u!114 &3
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children:
|
||||
- {fileID: 4}
|
||||
- {fileID: 2}
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 973
|
||||
y: 0
|
||||
width: 290
|
||||
height: 908
|
||||
m_MinSize: {x: 234, y: 492}
|
||||
m_MaxSize: {x: 10004, y: 14042}
|
||||
vertical: 1
|
||||
controlID: 226
|
||||
--- !u!114 &4
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children: []
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 290
|
||||
height: 466
|
||||
m_MinSize: {x: 204, y: 221}
|
||||
m_MaxSize: {x: 4004, y: 4021}
|
||||
m_ActualView: {fileID: 17}
|
||||
m_Panes:
|
||||
- {fileID: 17}
|
||||
m_Selected: 0
|
||||
m_LastSelected: 0
|
||||
--- !u!114 &5
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children: []
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 466
|
||||
width: 973
|
||||
height: 442
|
||||
m_MinSize: {x: 202, y: 221}
|
||||
m_MaxSize: {x: 4002, y: 4021}
|
||||
m_ActualView: {fileID: 15}
|
||||
m_Panes:
|
||||
- {fileID: 15}
|
||||
m_Selected: 0
|
||||
m_LastSelected: 0
|
||||
--- !u!114 &6
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children:
|
||||
- {fileID: 7}
|
||||
- {fileID: 8}
|
||||
- {fileID: 9}
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1666
|
||||
height: 958
|
||||
m_MinSize: {x: 950, y: 542}
|
||||
m_MaxSize: {x: 10000, y: 10000}
|
||||
--- !u!114 &7
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children: []
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 1666
|
||||
height: 30
|
||||
m_MinSize: {x: 0, y: 0}
|
||||
m_MaxSize: {x: 0, y: 0}
|
||||
m_LastLoadedLayoutName: Tutorial
|
||||
--- !u!114 &8
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children:
|
||||
- {fileID: 10}
|
||||
- {fileID: 3}
|
||||
- {fileID: 11}
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 30
|
||||
width: 1666
|
||||
height: 908
|
||||
m_MinSize: {x: 713, y: 492}
|
||||
m_MaxSize: {x: 18008, y: 14042}
|
||||
vertical: 0
|
||||
controlID: 74
|
||||
--- !u!114 &9
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children: []
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 938
|
||||
width: 1666
|
||||
height: 20
|
||||
m_MinSize: {x: 0, y: 0}
|
||||
m_MaxSize: {x: 0, y: 0}
|
||||
--- !u!114 &10
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children:
|
||||
- {fileID: 12}
|
||||
- {fileID: 5}
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 973
|
||||
height: 908
|
||||
m_MinSize: {x: 202, y: 442}
|
||||
m_MaxSize: {x: 4002, y: 8042}
|
||||
vertical: 1
|
||||
controlID: 75
|
||||
--- !u!114 &11
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children: []
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 1263
|
||||
y: 0
|
||||
width: 403
|
||||
height: 908
|
||||
m_MinSize: {x: 277, y: 71}
|
||||
m_MaxSize: {x: 4002, y: 4021}
|
||||
m_ActualView: {fileID: 13}
|
||||
m_Panes:
|
||||
- {fileID: 13}
|
||||
m_Selected: 0
|
||||
m_LastSelected: 0
|
||||
--- !u!114 &12
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Children: []
|
||||
m_Position:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 973
|
||||
height: 466
|
||||
m_MinSize: {x: 202, y: 221}
|
||||
m_MaxSize: {x: 4002, y: 4021}
|
||||
m_ActualView: {fileID: 16}
|
||||
m_Panes:
|
||||
- {fileID: 16}
|
||||
m_Selected: 0
|
||||
m_LastSelected: 0
|
||||
--- !u!114 &13
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_AutoRepaintOnSceneChange: 0
|
||||
m_MinSize: {x: 275, y: 50}
|
||||
m_MaxSize: {x: 4000, y: 4000}
|
||||
m_TitleContent:
|
||||
m_Text: Inspector
|
||||
m_Image: {fileID: -6905738622615590433, guid: 0000000000000000d000000000000000,
|
||||
type: 0}
|
||||
m_Tooltip:
|
||||
m_DepthBufferBits: 0
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 2
|
||||
y: 19
|
||||
width: 401
|
||||
height: 887
|
||||
m_ScrollPosition: {x: 0, y: 0}
|
||||
m_InspectorMode: 0
|
||||
m_PreviewResizer:
|
||||
m_CachedPref: -160
|
||||
m_ControlHash: -371814159
|
||||
m_PrefName: Preview_InspectorPreview
|
||||
m_PreviewWindow: {fileID: 0}
|
||||
--- !u!114 &14
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_AutoRepaintOnSceneChange: 0
|
||||
m_MinSize: {x: 230, y: 250}
|
||||
m_MaxSize: {x: 10000, y: 10000}
|
||||
m_TitleContent:
|
||||
m_Text: Project
|
||||
m_Image: {fileID: -7501376956915960154, guid: 0000000000000000d000000000000000,
|
||||
type: 0}
|
||||
m_Tooltip:
|
||||
m_DepthBufferBits: 0
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 2
|
||||
y: 19
|
||||
width: 286
|
||||
height: 421
|
||||
m_SearchFilter:
|
||||
m_NameFilter:
|
||||
m_ClassNames: []
|
||||
m_AssetLabels: []
|
||||
m_AssetBundleNames: []
|
||||
m_VersionControlStates: []
|
||||
m_ReferencingInstanceIDs:
|
||||
m_ScenePaths: []
|
||||
m_ShowAllHits: 0
|
||||
m_SearchArea: 0
|
||||
m_Folders:
|
||||
- Assets
|
||||
m_ViewMode: 0
|
||||
m_StartGridSize: 64
|
||||
m_LastFolders:
|
||||
- Assets
|
||||
m_LastFoldersGridSize: -1
|
||||
m_LastProjectPath: /Users/danielbrauer/Unity Projects/New Unity Project 47
|
||||
m_IsLocked: 0
|
||||
m_FolderTreeState:
|
||||
scrollPos: {x: 0, y: 0}
|
||||
m_SelectedIDs: ee240000
|
||||
m_LastClickedID: 9454
|
||||
m_ExpandedIDs: ee24000000ca9a3bffffff7f
|
||||
m_RenameOverlay:
|
||||
m_UserAcceptedRename: 0
|
||||
m_Name:
|
||||
m_OriginalName:
|
||||
m_EditFieldRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 0
|
||||
height: 0
|
||||
m_UserData: 0
|
||||
m_IsWaitingForDelay: 0
|
||||
m_IsRenaming: 0
|
||||
m_OriginalEventType: 11
|
||||
m_IsRenamingFilename: 1
|
||||
m_ClientGUIView: {fileID: 0}
|
||||
m_SearchString:
|
||||
m_CreateAssetUtility:
|
||||
m_EndAction: {fileID: 0}
|
||||
m_InstanceID: 0
|
||||
m_Path:
|
||||
m_Icon: {fileID: 0}
|
||||
m_ResourceFile:
|
||||
m_AssetTreeState:
|
||||
scrollPos: {x: 0, y: 0}
|
||||
m_SelectedIDs: 68fbffff
|
||||
m_LastClickedID: 0
|
||||
m_ExpandedIDs: ee240000
|
||||
m_RenameOverlay:
|
||||
m_UserAcceptedRename: 0
|
||||
m_Name:
|
||||
m_OriginalName:
|
||||
m_EditFieldRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 0
|
||||
height: 0
|
||||
m_UserData: 0
|
||||
m_IsWaitingForDelay: 0
|
||||
m_IsRenaming: 0
|
||||
m_OriginalEventType: 11
|
||||
m_IsRenamingFilename: 1
|
||||
m_ClientGUIView: {fileID: 0}
|
||||
m_SearchString:
|
||||
m_CreateAssetUtility:
|
||||
m_EndAction: {fileID: 0}
|
||||
m_InstanceID: 0
|
||||
m_Path:
|
||||
m_Icon: {fileID: 0}
|
||||
m_ResourceFile:
|
||||
m_ListAreaState:
|
||||
m_SelectedInstanceIDs: 68fbffff
|
||||
m_LastClickedInstanceID: -1176
|
||||
m_HadKeyboardFocusLastEvent: 0
|
||||
m_ExpandedInstanceIDs: c6230000
|
||||
m_RenameOverlay:
|
||||
m_UserAcceptedRename: 0
|
||||
m_Name:
|
||||
m_OriginalName:
|
||||
m_EditFieldRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 0
|
||||
height: 0
|
||||
m_UserData: 0
|
||||
m_IsWaitingForDelay: 0
|
||||
m_IsRenaming: 0
|
||||
m_OriginalEventType: 11
|
||||
m_IsRenamingFilename: 1
|
||||
m_ClientGUIView: {fileID: 0}
|
||||
m_CreateAssetUtility:
|
||||
m_EndAction: {fileID: 0}
|
||||
m_InstanceID: 0
|
||||
m_Path:
|
||||
m_Icon: {fileID: 0}
|
||||
m_ResourceFile:
|
||||
m_NewAssetIndexInList: -1
|
||||
m_ScrollPosition: {x: 0, y: 0}
|
||||
m_GridSize: 64
|
||||
m_DirectoriesAreaWidth: 110
|
||||
--- !u!114 &15
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_AutoRepaintOnSceneChange: 1
|
||||
m_MinSize: {x: 200, y: 200}
|
||||
m_MaxSize: {x: 4000, y: 4000}
|
||||
m_TitleContent:
|
||||
m_Text: Game
|
||||
m_Image: {fileID: -2087823869225018852, guid: 0000000000000000d000000000000000,
|
||||
type: 0}
|
||||
m_Tooltip:
|
||||
m_DepthBufferBits: 32
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 19
|
||||
width: 971
|
||||
height: 421
|
||||
m_MaximizeOnPlay: 0
|
||||
m_Gizmos: 0
|
||||
m_Stats: 0
|
||||
m_SelectedSizes: 00000000000000000000000000000000000000000000000000000000000000000000000000000000
|
||||
m_TargetDisplay: 0
|
||||
m_ZoomArea:
|
||||
m_HRangeLocked: 0
|
||||
m_VRangeLocked: 0
|
||||
m_HBaseRangeMin: -242.75
|
||||
m_HBaseRangeMax: 242.75
|
||||
m_VBaseRangeMin: -101
|
||||
m_VBaseRangeMax: 101
|
||||
m_HAllowExceedBaseRangeMin: 1
|
||||
m_HAllowExceedBaseRangeMax: 1
|
||||
m_VAllowExceedBaseRangeMin: 1
|
||||
m_VAllowExceedBaseRangeMax: 1
|
||||
m_ScaleWithWindow: 0
|
||||
m_HSlider: 0
|
||||
m_VSlider: 0
|
||||
m_IgnoreScrollWheelUntilClicked: 0
|
||||
m_EnableMouseInput: 1
|
||||
m_EnableSliderZoom: 0
|
||||
m_UniformScale: 1
|
||||
m_UpDirection: 1
|
||||
m_DrawArea:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 17
|
||||
width: 971
|
||||
height: 404
|
||||
m_Scale: {x: 2, y: 2}
|
||||
m_Translation: {x: 485.5, y: 202}
|
||||
m_MarginLeft: 0
|
||||
m_MarginRight: 0
|
||||
m_MarginTop: 0
|
||||
m_MarginBottom: 0
|
||||
m_LastShownAreaInsideMargins:
|
||||
serializedVersion: 2
|
||||
x: -242.75
|
||||
y: -101
|
||||
width: 485.5
|
||||
height: 202
|
||||
m_MinimalGUI: 1
|
||||
m_defaultScale: 2
|
||||
m_TargetTexture: {fileID: 0}
|
||||
m_CurrentColorSpace: 0
|
||||
m_LastWindowPixelSize: {x: 1942, y: 842}
|
||||
m_ClearInEditMode: 1
|
||||
m_NoCameraWarning: 1
|
||||
m_LowResolutionForAspectRatios: 01000000000100000100
|
||||
--- !u!114 &16
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_AutoRepaintOnSceneChange: 1
|
||||
m_MinSize: {x: 200, y: 200}
|
||||
m_MaxSize: {x: 4000, y: 4000}
|
||||
m_TitleContent:
|
||||
m_Text: Scene
|
||||
m_Image: {fileID: 2318424515335265636, guid: 0000000000000000d000000000000000,
|
||||
type: 0}
|
||||
m_Tooltip:
|
||||
m_DepthBufferBits: 32
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 19
|
||||
width: 971
|
||||
height: 445
|
||||
m_SceneLighting: 1
|
||||
lastFramingTime: 0
|
||||
m_2DMode: 0
|
||||
m_isRotationLocked: 0
|
||||
m_AudioPlay: 0
|
||||
m_Position:
|
||||
m_Target: {x: 0, y: 0, z: 0}
|
||||
speed: 2
|
||||
m_Value: {x: 0, y: 0, z: 0}
|
||||
m_RenderMode: 0
|
||||
m_ValidateTrueMetals: 0
|
||||
m_SceneViewState:
|
||||
showFog: 1
|
||||
showMaterialUpdate: 0
|
||||
showSkybox: 1
|
||||
showFlares: 1
|
||||
showImageEffects: 1
|
||||
grid:
|
||||
xGrid:
|
||||
m_Target: 0
|
||||
speed: 2
|
||||
m_Value: 0
|
||||
yGrid:
|
||||
m_Target: 1
|
||||
speed: 2
|
||||
m_Value: 1
|
||||
zGrid:
|
||||
m_Target: 0
|
||||
speed: 2
|
||||
m_Value: 0
|
||||
m_Rotation:
|
||||
m_Target: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
|
||||
speed: 2
|
||||
m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226}
|
||||
m_Size:
|
||||
m_Target: 10
|
||||
speed: 2
|
||||
m_Value: 10
|
||||
m_Ortho:
|
||||
m_Target: 0
|
||||
speed: 2
|
||||
m_Value: 0
|
||||
m_LastSceneViewRotation: {x: 0, y: 0, z: 0, w: 0}
|
||||
m_LastSceneViewOrtho: 0
|
||||
m_ReplacementShader: {fileID: 0}
|
||||
m_ReplacementString:
|
||||
m_LastLockedObject: {fileID: 0}
|
||||
m_ViewIsLockedToObject: 0
|
||||
--- !u!114 &17
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 52
|
||||
m_PrefabParentObject: {fileID: 0}
|
||||
m_PrefabInternal: {fileID: 0}
|
||||
m_GameObject: {fileID: 0}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 1
|
||||
m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_AutoRepaintOnSceneChange: 0
|
||||
m_MinSize: {x: 200, y: 200}
|
||||
m_MaxSize: {x: 4000, y: 4000}
|
||||
m_TitleContent:
|
||||
m_Text: Hierarchy
|
||||
m_Image: {fileID: -590624980919486359, guid: 0000000000000000d000000000000000,
|
||||
type: 0}
|
||||
m_Tooltip:
|
||||
m_DepthBufferBits: 0
|
||||
m_Pos:
|
||||
serializedVersion: 2
|
||||
x: 2
|
||||
y: 19
|
||||
width: 286
|
||||
height: 445
|
||||
m_TreeViewState:
|
||||
scrollPos: {x: 0, y: 0}
|
||||
m_SelectedIDs: 68fbffff
|
||||
m_LastClickedID: -1176
|
||||
m_ExpandedIDs: 7efbffff00000000
|
||||
m_RenameOverlay:
|
||||
m_UserAcceptedRename: 0
|
||||
m_Name:
|
||||
m_OriginalName:
|
||||
m_EditFieldRect:
|
||||
serializedVersion: 2
|
||||
x: 0
|
||||
y: 0
|
||||
width: 0
|
||||
height: 0
|
||||
m_UserData: 0
|
||||
m_IsWaitingForDelay: 0
|
||||
m_IsRenaming: 0
|
||||
m_OriginalEventType: 11
|
||||
m_IsRenamingFilename: 0
|
||||
m_ClientGUIView: {fileID: 0}
|
||||
m_SearchString:
|
||||
m_ExpandedScenes:
|
||||
-
|
||||
m_CurrenRootInstanceID: 0
|
||||
m_Locked: 0
|
||||
m_CurrentSortingName: TransformSorting
|
|
@ -1,8 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: eabc9546105bf4accac1fd62a63e88e6
|
||||
timeCreated: 1487337779
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,9 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 3ad9b87dffba344c89909c6d1b1c17e1
|
||||
folderAsset: yes
|
||||
timeCreated: 1475593892
|
||||
licenseType: Store
|
||||
DefaultImporter:
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,242 +0,0 @@
|
|||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using UnityEditor;
|
||||
using System;
|
||||
using System.IO;
|
||||
using System.Reflection;
|
||||
|
||||
[CustomEditor(typeof(Readme))]
|
||||
[InitializeOnLoad]
|
||||
public class ReadmeEditor : Editor
|
||||
{
|
||||
static string s_ShowedReadmeSessionStateName = "ReadmeEditor.showedReadme";
|
||||
|
||||
static string s_ReadmeSourceDirectory = "Assets/TutorialInfo";
|
||||
|
||||
const float k_Space = 16f;
|
||||
|
||||
static ReadmeEditor()
|
||||
{
|
||||
EditorApplication.delayCall += SelectReadmeAutomatically;
|
||||
}
|
||||
|
||||
static void RemoveTutorial()
|
||||
{
|
||||
if (EditorUtility.DisplayDialog("Remove Readme Assets",
|
||||
|
||||
$"All contents under {s_ReadmeSourceDirectory} will be removed, are you sure you want to proceed?",
|
||||
"Proceed",
|
||||
"Cancel"))
|
||||
{
|
||||
if (Directory.Exists(s_ReadmeSourceDirectory))
|
||||
{
|
||||
FileUtil.DeleteFileOrDirectory(s_ReadmeSourceDirectory);
|
||||
FileUtil.DeleteFileOrDirectory(s_ReadmeSourceDirectory + ".meta");
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log($"Could not find the Readme folder at {s_ReadmeSourceDirectory}");
|
||||
}
|
||||
|
||||
var readmeAsset = SelectReadme();
|
||||
if (readmeAsset != null)
|
||||
{
|
||||
var path = AssetDatabase.GetAssetPath(readmeAsset);
|
||||
FileUtil.DeleteFileOrDirectory(path + ".meta");
|
||||
FileUtil.DeleteFileOrDirectory(path);
|
||||
}
|
||||
|
||||
AssetDatabase.Refresh();
|
||||
}
|
||||
}
|
||||
|
||||
static void SelectReadmeAutomatically()
|
||||
{
|
||||
if (!SessionState.GetBool(s_ShowedReadmeSessionStateName, false))
|
||||
{
|
||||
var readme = SelectReadme();
|
||||
SessionState.SetBool(s_ShowedReadmeSessionStateName, true);
|
||||
|
||||
if (readme && !readme.loadedLayout)
|
||||
{
|
||||
LoadLayout();
|
||||
readme.loadedLayout = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void LoadLayout()
|
||||
{
|
||||
var assembly = typeof(EditorApplication).Assembly;
|
||||
var windowLayoutType = assembly.GetType("UnityEditor.WindowLayout", true);
|
||||
var method = windowLayoutType.GetMethod("LoadWindowLayout", BindingFlags.Public | BindingFlags.Static);
|
||||
method.Invoke(null, new object[] { Path.Combine(Application.dataPath, "TutorialInfo/Layout.wlt"), false });
|
||||
}
|
||||
|
||||
static Readme SelectReadme()
|
||||
{
|
||||
var ids = AssetDatabase.FindAssets("Readme t:Readme");
|
||||
if (ids.Length == 1)
|
||||
{
|
||||
var readmeObject = AssetDatabase.LoadMainAssetAtPath(AssetDatabase.GUIDToAssetPath(ids[0]));
|
||||
|
||||
Selection.objects = new UnityEngine.Object[] { readmeObject };
|
||||
|
||||
return (Readme)readmeObject;
|
||||
}
|
||||
else
|
||||
{
|
||||
Debug.Log("Couldn't find a readme");
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
protected override void OnHeaderGUI()
|
||||
{
|
||||
var readme = (Readme)target;
|
||||
Init();
|
||||
|
||||
var iconWidth = Mathf.Min(EditorGUIUtility.currentViewWidth / 3f - 20f, 128f);
|
||||
|
||||
GUILayout.BeginHorizontal("In BigTitle");
|
||||
{
|
||||
if (readme.icon != null)
|
||||
{
|
||||
GUILayout.Space(k_Space);
|
||||
GUILayout.Label(readme.icon, GUILayout.Width(iconWidth), GUILayout.Height(iconWidth));
|
||||
}
|
||||
GUILayout.Space(k_Space);
|
||||
GUILayout.BeginVertical();
|
||||
{
|
||||
|
||||
GUILayout.FlexibleSpace();
|
||||
GUILayout.Label(readme.title, TitleStyle);
|
||||
GUILayout.FlexibleSpace();
|
||||
}
|
||||
GUILayout.EndVertical();
|
||||
GUILayout.FlexibleSpace();
|
||||
}
|
||||
GUILayout.EndHorizontal();
|
||||
}
|
||||
|
||||
public override void OnInspectorGUI()
|
||||
{
|
||||
var readme = (Readme)target;
|
||||
Init();
|
||||
|
||||
foreach (var section in readme.sections)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(section.heading))
|
||||
{
|
||||
GUILayout.Label(section.heading, HeadingStyle);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(section.text))
|
||||
{
|
||||
GUILayout.Label(section.text, BodyStyle);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty(section.linkText))
|
||||
{
|
||||
if (LinkLabel(new GUIContent(section.linkText)))
|
||||
{
|
||||
Application.OpenURL(section.url);
|
||||
}
|
||||
}
|
||||
|
||||
GUILayout.Space(k_Space);
|
||||
}
|
||||
|
||||
if (GUILayout.Button("Remove Readme Assets", ButtonStyle))
|
||||
{
|
||||
RemoveTutorial();
|
||||
}
|
||||
}
|
||||
|
||||
bool m_Initialized;
|
||||
|
||||
GUIStyle LinkStyle
|
||||
{
|
||||
get { return m_LinkStyle; }
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
GUIStyle m_LinkStyle;
|
||||
|
||||
GUIStyle TitleStyle
|
||||
{
|
||||
get { return m_TitleStyle; }
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
GUIStyle m_TitleStyle;
|
||||
|
||||
GUIStyle HeadingStyle
|
||||
{
|
||||
get { return m_HeadingStyle; }
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
GUIStyle m_HeadingStyle;
|
||||
|
||||
GUIStyle BodyStyle
|
||||
{
|
||||
get { return m_BodyStyle; }
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
GUIStyle m_BodyStyle;
|
||||
|
||||
GUIStyle ButtonStyle
|
||||
{
|
||||
get { return m_ButtonStyle; }
|
||||
}
|
||||
|
||||
[SerializeField]
|
||||
GUIStyle m_ButtonStyle;
|
||||
|
||||
void Init()
|
||||
{
|
||||
if (m_Initialized)
|
||||
return;
|
||||
m_BodyStyle = new GUIStyle(EditorStyles.label);
|
||||
m_BodyStyle.wordWrap = true;
|
||||
m_BodyStyle.fontSize = 14;
|
||||
m_BodyStyle.richText = true;
|
||||
|
||||
m_TitleStyle = new GUIStyle(m_BodyStyle);
|
||||
m_TitleStyle.fontSize = 26;
|
||||
|
||||
m_HeadingStyle = new GUIStyle(m_BodyStyle);
|
||||
m_HeadingStyle.fontStyle = FontStyle.Bold;
|
||||
m_HeadingStyle.fontSize = 18;
|
||||
|
||||
m_LinkStyle = new GUIStyle(m_BodyStyle);
|
||||
m_LinkStyle.wordWrap = false;
|
||||
|
||||
// Match selection color which works nicely for both light and dark skins
|
||||
m_LinkStyle.normal.textColor = new Color(0x00 / 255f, 0x78 / 255f, 0xDA / 255f, 1f);
|
||||
m_LinkStyle.stretchWidth = false;
|
||||
|
||||
m_ButtonStyle = new GUIStyle(EditorStyles.miniButton);
|
||||
m_ButtonStyle.fontStyle = FontStyle.Bold;
|
||||
|
||||
m_Initialized = true;
|
||||
}
|
||||
|
||||
bool LinkLabel(GUIContent label, params GUILayoutOption[] options)
|
||||
{
|
||||
var position = GUILayoutUtility.GetRect(label, LinkStyle, options);
|
||||
|
||||
Handles.BeginGUI();
|
||||
Handles.color = LinkStyle.normal.textColor;
|
||||
Handles.DrawLine(new Vector3(position.xMin, position.yMax), new Vector3(position.xMax, position.yMax));
|
||||
Handles.color = Color.white;
|
||||
Handles.EndGUI();
|
||||
|
||||
EditorGUIUtility.AddCursorRect(position, MouseCursor.Link);
|
||||
|
||||
return GUI.Button(position, label, LinkStyle);
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 476cc7d7cd9874016adc216baab94a0a
|
||||
timeCreated: 1484146680
|
||||
licenseType: Store
|
||||
MonoImporter:
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -1,16 +0,0 @@
|
|||
using System;
|
||||
using UnityEngine;
|
||||
|
||||
public class Readme : ScriptableObject
|
||||
{
|
||||
public Texture2D icon;
|
||||
public string title;
|
||||
public Section[] sections;
|
||||
public bool loadedLayout;
|
||||
|
||||
[Serializable]
|
||||
public class Section
|
||||
{
|
||||
public string heading, text, linkText, url;
|
||||
}
|
||||
}
|
|
@ -1,12 +0,0 @@
|
|||
fileFormatVersion: 2
|
||||
guid: fcf7219bab7fe46a1ad266029b2fee19
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences:
|
||||
- icon: {instanceID: 0}
|
||||
executionOrder: 0
|
||||
icon: {fileID: 2800000, guid: a186f8a87ca4f4d3aa864638ad5dfb65, type: 3}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -10,7 +10,7 @@
|
|||
<ui:VisualElement name="indicator-five" class="indicator" />
|
||||
<ui:VisualElement name="indicator-six" class="indicator" />
|
||||
</ui:VisualElement>
|
||||
<ui:ScrollView vertical-scroller-visibility="Hidden" name="item-list" style="flex-grow: 1;" />
|
||||
<KitsuneCafe.UI.RecyclerView display-count="5" style="flex-grow: 1; flex-direction: row-reverse;" />
|
||||
</ui:VisualElement>
|
||||
<ui:VisualElement name="detail-container" class="spaced-children" style="flex-grow: 1.5; flex-direction: row;">
|
||||
<ui:VisualElement name="condition-container" class="container" style="flex-grow: 0.65; flex-basis: 0;">
|
||||
|
@ -55,20 +55,20 @@
|
|||
</ui:VisualElement>
|
||||
<ui:VisualElement name="item-preview-container" class="container" style="flex-grow: 1.25; flex-basis: 0;">
|
||||
<ui:VisualElement name="preview-header" class="header" />
|
||||
<ui:VisualElement name="item-preview" style="flex-grow: 1; background-image: url("project://database/Assets/UI/Item%20Preview.renderTexture?fileID=8400000&guid=fc19a022409ab0d408fa0e78cfeab827&type=2#Item Preview"); -unity-background-scale-mode: scale-to-fit;" />
|
||||
<KitsuneCafe.UI.PreviewView style="background-image: url("project://database/Assets/UI/Item%20Preview.renderTexture?fileID=8400000&guid=fc19a022409ab0d408fa0e78cfeab827&type=2#Item Preview"); -unity-background-scale-mode: scale-to-fit; flex-grow: 1;" />
|
||||
</ui:VisualElement>
|
||||
<ui:VisualElement name="item-details-container" data-source="project://database/Assets/SOAP/Items/SelectedItem.asset?fileID=11400000&guid=0f16091ed7577d3268f2725cf823d4da&type=2#SelectedItem" class="container" style="flex-grow: 1; flex-basis: 0;">
|
||||
<ui:VisualElement name="item-details-container" data-source="project://database/Assets/SOAP/Items/SelectedItem.asset?fileID=11400000&guid=37d00232a0bee1e8e923705187ff2187&type=2#SelectedItem" class="container" style="flex-grow: 1; flex-basis: 0;">
|
||||
<ui:VisualElement name="item-details-header" class="header" />
|
||||
<ui:VisualElement name="item-details-content" style="flex-grow: 0;">
|
||||
<ui:VisualElement name="item-details-title-container" style="flex-wrap: nowrap; padding-top: 4px; padding-right: 4px; padding-bottom: 4px; padding-left: 4px;">
|
||||
<ui:Label text="ITEM NAME" name="item-details-title-label">
|
||||
<ui:Label text="ITEM NAME" name="item-details-title-label" class="title">
|
||||
<Bindings>
|
||||
<ui:DataBinding property="text" data-source-path="displayName" binding-mode="ToTarget" />
|
||||
<ui:DataBinding property="text" data-source-path="value.value.displayName" binding-mode="ToTarget" />
|
||||
</Bindings>
|
||||
</ui:Label>
|
||||
<ui:Label text="Item description body." name="item-details-content-label" style="flex-wrap: nowrap; white-space: pre-wrap; text-overflow: ellipsis;">
|
||||
<Bindings>
|
||||
<ui:DataBinding property="text" data-source-path="description" binding-mode="ToTarget" />
|
||||
<ui:DataBinding property="text" data-source-path="value.value.description" binding-mode="ToTarget" />
|
||||
</Bindings>
|
||||
</ui:Label>
|
||||
</ui:VisualElement>
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
<Style src="project://database/Assets/UI/itemslot.uss?fileID=7433441132597879392&guid=ab2fe9f4942517d359babfd8c160725c&type=3#itemslot" />
|
||||
<ui:VisualElement name="container" data-source-type="KitsuneCafe.ItemSystem.InventoryItem, Assembly-CSharp" enabled="true" class="container" style="flex-grow: 1;">
|
||||
<ui:VisualElement name="header" class="header">
|
||||
<ui:Label name="item-name-label" text="Label">
|
||||
<ui:Label name="item-name-label">
|
||||
<Bindings>
|
||||
<ui:DataBinding property="text" data-source-path="serializableItems[0].Item.displayName" binding-mode="ToTarget" data-source-type="KitsuneCafe.ItemSystem.Inventory, Assembly-CSharp" />
|
||||
<ui:DataBinding property="text" data-source-path="Item.displayName" binding-mode="ToTarget" />
|
||||
</Bindings>
|
||||
</ui:Label>
|
||||
</ui:VisualElement>
|
||||
|
|
|
@ -71,3 +71,12 @@
|
|||
color: var(--text);
|
||||
--primary: rgb(238, 66, 10);
|
||||
}
|
||||
|
||||
TemplateContainer {
|
||||
flex-grow: 1;
|
||||
}
|
||||
|
||||
.title {
|
||||
color: var(--primary);
|
||||
text-transform: small-caps;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
{
|
||||
"dependencies": {
|
||||
"com.cysharp.r3": "https://github.com/Cysharp/R3.git?path=src/R3.Unity/Assets/R3.Unity",
|
||||
"com.eflatun.scenereference": "git+https://github.com/starikcetin/Eflatun.SceneReference.git#4.1.1",
|
||||
"com.github-glitchenzo.nugetforunity": "https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity",
|
||||
"com.kelnishi.wacs": "https://github.com/kelnishi/WACS-Unity.git",
|
||||
"com.unity.2d.sprite": "1.0.0",
|
||||
|
@ -8,15 +9,16 @@
|
|||
"com.unity.ai.navigation": "2.0.8",
|
||||
"com.unity.cinemachine": "3.1.4",
|
||||
"com.unity.collab-proxy": "2.8.2",
|
||||
"com.unity.dt.app-ui": "2.1.1",
|
||||
"com.unity.entities": "1.3.14",
|
||||
"com.unity.entities.graphics": "1.4.12",
|
||||
"com.unity.ide.rider": "3.0.36",
|
||||
"com.unity.ide.visualstudio": "2.0.23",
|
||||
"com.unity.inputsystem": "1.14.1",
|
||||
"com.unity.inputsystem": "1.14.2",
|
||||
"com.unity.multiplayer.center": "1.0.0",
|
||||
"com.unity.render-pipelines.universal": "17.1.0",
|
||||
"com.unity.test-framework": "1.5.1",
|
||||
"com.unity.timeline": "1.8.8",
|
||||
"com.unity.timeline": "1.8.9",
|
||||
"com.unity.toolchain.linux-x86_64": "2.0.10",
|
||||
"com.unity.ugui": "2.0.0",
|
||||
"com.unity.modules.accessibility": "1.0.0",
|
||||
|
|
|
@ -9,6 +9,16 @@
|
|||
},
|
||||
"hash": "fbc12b2c0b6a1ee5ce7d534f9db936bc59069219"
|
||||
},
|
||||
"com.eflatun.scenereference": {
|
||||
"version": "git+https://github.com/starikcetin/Eflatun.SceneReference.git#4.1.1",
|
||||
"depth": 0,
|
||||
"source": "git",
|
||||
"dependencies": {
|
||||
"com.unity.settings-manager": "2.0.1",
|
||||
"com.unity.nuget.newtonsoft-json": "3.0.2"
|
||||
},
|
||||
"hash": "b849990020c30ac6ead4e4fb4881428f86dcde0d"
|
||||
},
|
||||
"com.github-glitchenzo.nugetforunity": {
|
||||
"version": "https://github.com/GlitchEnzo/NuGetForUnity.git?path=/src/NuGetForUnity",
|
||||
"depth": 0,
|
||||
|
@ -94,6 +104,18 @@
|
|||
},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.dt.app-ui": {
|
||||
"version": "2.1.1",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
"com.unity.modules.physics": "1.0.0",
|
||||
"com.unity.modules.androidjni": "1.0.0",
|
||||
"com.unity.modules.uielements": "1.0.0",
|
||||
"com.unity.modules.screencapture": "1.0.0"
|
||||
},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.entities": {
|
||||
"version": "1.3.14",
|
||||
"depth": 0,
|
||||
|
@ -152,7 +174,7 @@
|
|||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.inputsystem": {
|
||||
"version": "1.14.1",
|
||||
"version": "1.14.2",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
|
@ -182,6 +204,13 @@
|
|||
"dependencies": {},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.nuget.newtonsoft-json": {
|
||||
"version": "3.2.1",
|
||||
"depth": 1,
|
||||
"source": "registry",
|
||||
"dependencies": {},
|
||||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.profiling.core": {
|
||||
"version": "1.0.2",
|
||||
"depth": 1,
|
||||
|
@ -261,7 +290,7 @@
|
|||
},
|
||||
"com.unity.settings-manager": {
|
||||
"version": "2.1.0",
|
||||
"depth": 2,
|
||||
"depth": 1,
|
||||
"source": "registry",
|
||||
"dependencies": {},
|
||||
"url": "https://packages.unity.com"
|
||||
|
@ -323,7 +352,7 @@
|
|||
"url": "https://packages.unity.com"
|
||||
},
|
||||
"com.unity.timeline": {
|
||||
"version": "1.8.8",
|
||||
"version": "1.8.9",
|
||||
"depth": 0,
|
||||
"source": "registry",
|
||||
"dependencies": {
|
||||
|
|
|
@ -6,9 +6,13 @@ EditorBuildSettings:
|
|||
serializedVersion: 2
|
||||
m_Scenes:
|
||||
- enabled: 1
|
||||
path: Assets/Scenes/SampleScene.unity
|
||||
path: Assets/Scenes/DebugScene.unity
|
||||
guid: 99c9720ab356a0642a771bea13969a05
|
||||
- enabled: 1
|
||||
path: Assets/Scenes/DebugScene/ItemPreview.unity
|
||||
guid: 4a31ffa7a4feefc509c20ec6e65133f0
|
||||
m_configObjects:
|
||||
com.unity.addressableassets: {fileID: 11400000, guid: 6b84437f9ebfc5f99b364cc4093ae72f, type: 2}
|
||||
com.unity.dt.app-ui: {fileID: 11400000, guid: a31f4400692fc454290231da49768b56, type: 2}
|
||||
com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3}
|
||||
m_UseUCBPForAssetBundles: 0
|
||||
|
|
|
@ -0,0 +1,41 @@
|
|||
{
|
||||
"m_Dictionary": {
|
||||
"m_DictionaryValues": [
|
||||
{
|
||||
"type": "Eflatun.SceneReference.Editor.SceneDataMapsGeneratorTriggers, Eflatun.SceneReference.Editor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
|
||||
"key": "SceneDataMaps.GenerationTriggers",
|
||||
"value": "{\"m_Value\":-1}"
|
||||
},
|
||||
{
|
||||
"type": "Eflatun.SceneReference.LogLevel, Eflatun.SceneReference, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
|
||||
"key": "Logging.EditorLogLevel",
|
||||
"value": "{\"m_Value\":20}"
|
||||
},
|
||||
{
|
||||
"type": "Newtonsoft.Json.Formatting, Newtonsoft.Json, Version=13.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed",
|
||||
"key": "SceneDataMaps.JsonFormatting",
|
||||
"value": "{\"m_Value\":0}"
|
||||
},
|
||||
{
|
||||
"type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
|
||||
"key": "UtilityIgnores.ColoringIgnoresPatterns",
|
||||
"value": "{\"m_Value\":\"\"}"
|
||||
},
|
||||
{
|
||||
"type": "System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
|
||||
"key": "UtilityIgnores.ToolboxIgnoresPatterns",
|
||||
"value": "{\"m_Value\":\"\"}"
|
||||
},
|
||||
{
|
||||
"type": "Eflatun.SceneReference.Editor.UtilityIgnoreMode, Eflatun.SceneReference.Editor, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null",
|
||||
"key": "UtilityIgnores.ToolboxIgnoreMode",
|
||||
"value": "{\"m_Value\":0}"
|
||||
},
|
||||
{
|
||||
"type": "System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089",
|
||||
"key": "PropertyDrawer.ShowInlineToolbox",
|
||||
"value": "{\"m_Value\":true}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
Loading…
Add table
Reference in a new issue