Merge branch 'feature/interaction_subsystem' of http://gitea.capers.co.kr:3000/iwnc2020/ProjectDDD into develop
# Conflicts: # Assets/_DDD/Restaurant/Environments/Props/Prop_CustomerTable.prefab
This commit is contained in:
commit
79ba4c2b36
@ -0,0 +1,8 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 8b8b2fde5b3b345e292e0b6b951a4abd
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,156 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1 &3857692527302447930
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 1664322405549350652}
|
||||||
|
- component: {fileID: 8522104897182006738}
|
||||||
|
m_Layer: 0
|
||||||
|
m_Name: InteractionPoint
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &1664322405549350652
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3857692527302447930}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
|
||||||
|
m_LocalPosition: {x: -0.4, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children: []
|
||||||
|
m_Father: {fileID: 3697702677815423220}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!212 &8522104897182006738
|
||||||
|
SpriteRenderer:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 3857692527302447930}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_CastShadows: 0
|
||||||
|
m_ReceiveShadows: 0
|
||||||
|
m_DynamicOccludee: 1
|
||||||
|
m_StaticShadowCaster: 0
|
||||||
|
m_MotionVectors: 1
|
||||||
|
m_LightProbeUsage: 1
|
||||||
|
m_ReflectionProbeUsage: 1
|
||||||
|
m_RayTracingMode: 0
|
||||||
|
m_RayTraceProcedural: 0
|
||||||
|
m_RayTracingAccelStructBuildFlagsOverride: 0
|
||||||
|
m_RayTracingAccelStructBuildFlags: 1
|
||||||
|
m_SmallMeshCulling: 1
|
||||||
|
m_RenderingLayerMask: 1
|
||||||
|
m_RendererPriority: 0
|
||||||
|
m_Materials:
|
||||||
|
- {fileID: 2100000, guid: 9dfc825aed78fcd4ba02077103263b40, 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: 0
|
||||||
|
m_MinimumChartSize: 4
|
||||||
|
m_AutoUVMaxDistance: 0.5
|
||||||
|
m_AutoUVMaxAngle: 89
|
||||||
|
m_LightmapParameters: {fileID: 0}
|
||||||
|
m_SortingLayerID: 0
|
||||||
|
m_SortingLayer: 0
|
||||||
|
m_SortingOrder: 0
|
||||||
|
m_Sprite: {fileID: 21300000, guid: c607300554a0c44469620484fccbf239, type: 3}
|
||||||
|
m_Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
m_FlipX: 0
|
||||||
|
m_FlipY: 0
|
||||||
|
m_DrawMode: 0
|
||||||
|
m_Size: {x: 5.12, y: 5.12}
|
||||||
|
m_AdaptiveModeThreshold: 0.5
|
||||||
|
m_SpriteTileMode: 0
|
||||||
|
m_WasSpriteAssigned: 1
|
||||||
|
m_MaskInteraction: 0
|
||||||
|
m_SpriteSortPoint: 0
|
||||||
|
--- !u!1 &4103096974375017811
|
||||||
|
GameObject:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
serializedVersion: 6
|
||||||
|
m_Component:
|
||||||
|
- component: {fileID: 3697702677815423220}
|
||||||
|
- component: {fileID: 3591347921553422000}
|
||||||
|
- component: {fileID: 4456475204957017828}
|
||||||
|
m_Layer: 7
|
||||||
|
m_Name: RestaurantOrder
|
||||||
|
m_TagString: Untagged
|
||||||
|
m_Icon: {fileID: 0}
|
||||||
|
m_NavMeshLayer: 0
|
||||||
|
m_StaticEditorFlags: 0
|
||||||
|
m_IsActive: 1
|
||||||
|
--- !u!4 &3697702677815423220
|
||||||
|
Transform:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4103096974375017811}
|
||||||
|
serializedVersion: 2
|
||||||
|
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
|
||||||
|
m_LocalPosition: {x: 0, y: 0, z: 0}
|
||||||
|
m_LocalScale: {x: 1, y: 1, z: 1}
|
||||||
|
m_ConstrainProportionsScale: 0
|
||||||
|
m_Children:
|
||||||
|
- {fileID: 1664322405549350652}
|
||||||
|
m_Father: {fileID: 0}
|
||||||
|
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||||
|
--- !u!114 &3591347921553422000
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4103096974375017811}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 201f9e6d7ca7404baa9945950292a392, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_interactionType: 4
|
||||||
|
_executionParameters:
|
||||||
|
_holdTime: 0
|
||||||
|
_displayParameters:
|
||||||
|
_messageKey:
|
||||||
|
_interactionAvailableFlows: 2
|
||||||
|
_aiInteractionPoints:
|
||||||
|
- {fileID: 1664322405549350652}
|
||||||
|
--- !u!114 &4456475204957017828
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 4103096974375017811}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: c0b1e0992510498b8d33d5b6094b8f4b, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
orderType: 0
|
@ -0,0 +1,7 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2bbe3f26765344e6097aa9fd0f020fbf
|
||||||
|
PrefabImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
@ -0,0 +1,238 @@
|
|||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!1001 &2565741073186224478
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 8881739536043914635}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0.2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0.25
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0.2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 180
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4103096974375017811, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: RestaurantOrder_001
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
--- !u!4 &1210262234305268138 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 2565741073186224478}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &4510296826299878002
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 8881739536043914635}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: -0.2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0.25
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0.2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4103096974375017811, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: RestaurantOrder
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects: []
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
--- !u!4 &992810551159552646 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 3697702677815423220, guid: 2bbe3f26765344e6097aa9fd0f020fbf, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 4510296826299878002}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
--- !u!1001 &4777358697124966162
|
||||||
|
PrefabInstance:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
serializedVersion: 2
|
||||||
|
m_Modification:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TransformParent: {fileID: 0}
|
||||||
|
m_Modifications:
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalScale.x
|
||||||
|
value: 2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalScale.y
|
||||||
|
value: 2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalScale.z
|
||||||
|
value: 2
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalPosition.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.w
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalRotation.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.x
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.y
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_LocalEulerAnglesHint.z
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_ConstrainProportionsScale
|
||||||
|
value: 1
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_Name
|
||||||
|
value: Prop_CustomerTable
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_StaticEditorFlags
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 7856941568993672895, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_StaticEditorFlags
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8282162905857597943, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_StaticEditorFlags
|
||||||
|
value: 0
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8467019391491472137, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: 'm_Materials.Array.data[0]'
|
||||||
|
value:
|
||||||
|
objectReference: {fileID: 2100000, guid: 56d0a02ae31152e45ba2da46f7694378, type: 2}
|
||||||
|
- target: {fileID: 8516969404588314361, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_Size.x
|
||||||
|
value: 0.93
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8516969404588314361, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_Size.z
|
||||||
|
value: 0.31
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
- target: {fileID: 8516969404588314361, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
propertyPath: m_Center.z
|
||||||
|
value: 0.14
|
||||||
|
objectReference: {fileID: 0}
|
||||||
|
m_RemovedComponents: []
|
||||||
|
m_RemovedGameObjects: []
|
||||||
|
m_AddedGameObjects:
|
||||||
|
- targetCorrespondingSourceObject: {fileID: 4111453722694982297, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
insertIndex: -1
|
||||||
|
addedObject: {fileID: 992810551159552646}
|
||||||
|
- targetCorrespondingSourceObject: {fileID: 4111453722694982297, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
insertIndex: -1
|
||||||
|
addedObject: {fileID: 1210262234305268138}
|
||||||
|
m_AddedComponents: []
|
||||||
|
m_SourcePrefab: {fileID: 100100000, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
--- !u!4 &8881739536043914635 stripped
|
||||||
|
Transform:
|
||||||
|
m_CorrespondingSourceObject: {fileID: 4111453722694982297, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
m_PrefabInstance: {fileID: 4777358697124966162}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
@ -1,107 +0,0 @@
|
|||||||
%YAML 1.1
|
|
||||||
%TAG !u! tag:unity3d.com,2011:
|
|
||||||
--- !u!1001 &4777358697124966162
|
|
||||||
PrefabInstance:
|
|
||||||
m_ObjectHideFlags: 0
|
|
||||||
serializedVersion: 2
|
|
||||||
m_Modification:
|
|
||||||
serializedVersion: 3
|
|
||||||
m_TransformParent: {fileID: 0}
|
|
||||||
m_Modifications:
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalScale.x
|
|
||||||
value: 2
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalScale.y
|
|
||||||
value: 2
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalScale.z
|
|
||||||
value: 2
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalPosition.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.w
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalRotation.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.x
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.y
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_LocalEulerAnglesHint.z
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 2204914584875671904, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_ConstrainProportionsScale
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_Name
|
|
||||||
value: Prop_CustomerTable
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_StaticEditorFlags
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 7856941568993672895, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_StaticEditorFlags
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 8282162905857597943, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_StaticEditorFlags
|
|
||||||
value: 0
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 8467019391491472137, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: 'm_Materials.Array.data[0]'
|
|
||||||
value:
|
|
||||||
objectReference: {fileID: 2100000, guid: 56d0a02ae31152e45ba2da46f7694378, type: 2}
|
|
||||||
- target: {fileID: 8516969404588314361, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_Size.x
|
|
||||||
value: 0.93
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 8516969404588314361, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_Size.z
|
|
||||||
value: 0.31
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 8516969404588314361, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_Center.z
|
|
||||||
value: 0.14
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
- target: {fileID: 8516969404588314361, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
||||||
propertyPath: m_IsTrigger
|
|
||||||
value: 1
|
|
||||||
objectReference: {fileID: 0}
|
|
||||||
m_RemovedComponents: []
|
|
||||||
m_RemovedGameObjects: []
|
|
||||||
m_AddedGameObjects: []
|
|
||||||
m_AddedComponents: []
|
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
|
@ -113,6 +113,9 @@ PrefabInstance:
|
|||||||
- targetCorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
- targetCorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
insertIndex: -1
|
insertIndex: -1
|
||||||
addedObject: {fileID: 6899480242032072806}
|
addedObject: {fileID: 6899480242032072806}
|
||||||
|
- targetCorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
insertIndex: -1
|
||||||
|
addedObject: {fileID: -4132148316966952702}
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
m_SourcePrefab: {fileID: 100100000, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
--- !u!1 &9211739394093953175 stripped
|
--- !u!1 &9211739394093953175 stripped
|
||||||
GameObject:
|
GameObject:
|
||||||
@ -131,10 +134,14 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 201f9e6d7ca7404baa9945950292a392, type: 3}
|
m_Script: {fileID: 11500000, guid: 201f9e6d7ca7404baa9945950292a392, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_interactionType: 2
|
_interactionType: 1
|
||||||
_holdTime: 0
|
_executionParameters:
|
||||||
_interactionMessageKey: Test
|
_holdTime: 1
|
||||||
|
_displayParameters:
|
||||||
|
_messageKey:
|
||||||
_interactionAvailableFlows: 1
|
_interactionAvailableFlows: 1
|
||||||
|
_aiInteractionPoints: []
|
||||||
|
autoInitialize: 1
|
||||||
--- !u!114 &3538352761187622062
|
--- !u!114 &3538352761187622062
|
||||||
MonoBehaviour:
|
MonoBehaviour:
|
||||||
m_ObjectHideFlags: 0
|
m_ObjectHideFlags: 0
|
||||||
@ -375,3 +382,16 @@ MonoBehaviour:
|
|||||||
_outlineSharpness: 8
|
_outlineSharpness: 8
|
||||||
_currentOutlineType: 0
|
_currentOutlineType: 0
|
||||||
_currentOpacityMultiplier: 1
|
_currentOpacityMultiplier: 1
|
||||||
|
--- !u!114 &-4132148316966952702
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 9211739394093953175}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 1235f6bde9304d8f85079f2777bd4b3c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
_managementType: 1
|
||||||
|
@ -101,6 +101,9 @@ PrefabInstance:
|
|||||||
- targetCorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
- targetCorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
insertIndex: -1
|
insertIndex: -1
|
||||||
addedObject: {fileID: 5410819217098966190}
|
addedObject: {fileID: 5410819217098966190}
|
||||||
|
- targetCorrespondingSourceObject: {fileID: 4438924429928472453, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
|
insertIndex: -1
|
||||||
|
addedObject: {fileID: -1096657863250535257}
|
||||||
m_SourcePrefab: {fileID: 100100000, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
m_SourcePrefab: {fileID: 100100000, guid: 1d634c3376e4a4684bc984ced9134847, type: 3}
|
||||||
--- !u!1 &580268897300907643 stripped
|
--- !u!1 &580268897300907643 stripped
|
||||||
GameObject:
|
GameObject:
|
||||||
@ -120,8 +123,10 @@ MonoBehaviour:
|
|||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_interactionType: 1
|
_interactionType: 1
|
||||||
_holdTime: 0
|
_executionParameters:
|
||||||
_interactionMessageKey: Test
|
_holdTime: 1
|
||||||
|
_displayParameters:
|
||||||
|
_messageKey:
|
||||||
_interactionAvailableFlows: 1
|
_interactionAvailableFlows: 1
|
||||||
_aiInteractionPoints: []
|
_aiInteractionPoints: []
|
||||||
--- !u!114 &4545680930728379745
|
--- !u!114 &4545680930728379745
|
||||||
@ -364,3 +369,15 @@ MonoBehaviour:
|
|||||||
_outlineSharpness: 8
|
_outlineSharpness: 8
|
||||||
_currentOutlineType: 0
|
_currentOutlineType: 0
|
||||||
_currentOpacityMultiplier: 1
|
_currentOpacityMultiplier: 1
|
||||||
|
--- !u!114 &-1096657863250535257
|
||||||
|
MonoBehaviour:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInstance: {fileID: 0}
|
||||||
|
m_PrefabAsset: {fileID: 0}
|
||||||
|
m_GameObject: {fileID: 580268897300907643}
|
||||||
|
m_Enabled: 1
|
||||||
|
m_EditorHideFlags: 0
|
||||||
|
m_Script: {fileID: 11500000, guid: 1235f6bde9304d8f85079f2777bd4b3c, type: 3}
|
||||||
|
m_Name:
|
||||||
|
m_EditorClassIdentifier:
|
||||||
|
@ -423,7 +423,7 @@ MonoBehaviour:
|
|||||||
m_Script: {fileID: 11500000, guid: 81e01dd8c1cc3404d805400eba1bb4ae, type: 3}
|
m_Script: {fileID: 11500000, guid: 81e01dd8c1cc3404d805400eba1bb4ae, type: 3}
|
||||||
m_Name:
|
m_Name:
|
||||||
m_EditorClassIdentifier:
|
m_EditorClassIdentifier:
|
||||||
_interactionType: 4294967295
|
_availableInteractions: 1
|
||||||
_nearColliders:
|
_nearColliders:
|
||||||
- {fileID: 0}
|
- {fileID: 0}
|
||||||
- {fileID: 0}
|
- {fileID: 0}
|
||||||
|
@ -8,11 +8,34 @@ namespace DDD
|
|||||||
public enum InteractionType : uint
|
public enum InteractionType : uint
|
||||||
{
|
{
|
||||||
None = 0u,
|
None = 0u,
|
||||||
RestaurantManagementUi = 1u << 0,
|
RestaurantManagement = 1u << 0,
|
||||||
OpenRestaurant = 1u << 1,
|
RestaurantOrder = 1u << 1,
|
||||||
|
RestaurantMeal = 1u << 2,
|
||||||
All = 0xFFFFFFFFu
|
All = 0xFFFFFFFFu
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[System.Serializable]
|
||||||
|
public struct InteractionExecutionParameters
|
||||||
|
{
|
||||||
|
[SerializeField] private float _holdTime;
|
||||||
|
public float HoldTime => _holdTime;
|
||||||
|
public InteractionExecutionParameters(float holdTime = 0f)
|
||||||
|
{
|
||||||
|
_holdTime = holdTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[System.Serializable]
|
||||||
|
public struct InteractionDisplayParameters
|
||||||
|
{
|
||||||
|
[SerializeField] private string _messageKey;
|
||||||
|
public string MessageKey => _messageKey;
|
||||||
|
public InteractionDisplayParameters(string messageKey = "")
|
||||||
|
{
|
||||||
|
_messageKey = messageKey;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public interface IInteractable
|
public interface IInteractable
|
||||||
{
|
{
|
||||||
bool CanInteract();
|
bool CanInteract();
|
||||||
@ -21,10 +44,8 @@ public interface IInteractable
|
|||||||
InteractionType GetInteractionType();
|
InteractionType GetInteractionType();
|
||||||
GameObject GetInteractableGameObject();
|
GameObject GetInteractableGameObject();
|
||||||
void InitializeInteraction(InteractionType interactionType);
|
void InitializeInteraction(InteractionType interactionType);
|
||||||
// TODO : Struct InteractionExecutionParameters 등으로 정리
|
InteractionExecutionParameters GetExecutionParameters();
|
||||||
float GetRequiredHoldTime();
|
InteractionDisplayParameters GetDisplayParameters();
|
||||||
// TODO : Struct InteractionDisplayParameters 등으로 정리
|
|
||||||
string GetInteractionMessageKey();
|
|
||||||
Vector3[] GetInteractionPoints();
|
Vector3[] GetInteractionPoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
26
Assets/_DDD/_Scripts/GameEvent/InteractionSubsystem.cs
Normal file
26
Assets/_DDD/_Scripts/GameEvent/InteractionSubsystem.cs
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DDD
|
||||||
|
{
|
||||||
|
public interface IInteractionSubsystemObject
|
||||||
|
{
|
||||||
|
void InitializeSubsystem();
|
||||||
|
bool CanInteract();
|
||||||
|
bool OnInteracted(IInteractor interactor, ScriptableObject payloadSo = null);
|
||||||
|
}
|
||||||
|
public interface IInteractionSubsystemObject<T> : IInteractionSubsystemObject where T : Enum
|
||||||
|
{
|
||||||
|
T GetInteractionSubsystemType();
|
||||||
|
}
|
||||||
|
|
||||||
|
public interface IInteractionSubsystemSolver
|
||||||
|
{
|
||||||
|
}
|
||||||
|
public interface IInteractionSubsystemSolver<T> : IInteractionSubsystemSolver where T : Enum
|
||||||
|
{
|
||||||
|
bool ExecuteInteractionSubsystem(IInteractor interactor, IInteractable interactable, ScriptableObject payloadSo = null);
|
||||||
|
bool CanExecuteInteractionSubsystem(IInteractor interactor = null, IInteractable interactable = null,
|
||||||
|
ScriptableObject payloadSo = null);
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 2e8dca10c7c74466bd1df632b7d111c4
|
||||||
|
timeCreated: 1755665098
|
@ -23,7 +23,7 @@ protected virtual void Start()
|
|||||||
var flag = typeToSolver.Key;
|
var flag = typeToSolver.Key;
|
||||||
if (flag == InteractionType.None) continue;
|
if (flag == InteractionType.None) continue;
|
||||||
|
|
||||||
if ((_interactionComponent.InteractionType & flag) == 0) continue;
|
if ((_interactionComponent.AvailableInteractions & flag) == 0) continue;
|
||||||
|
|
||||||
if (!TryGetComponent(typeToSolver.Value, out _))
|
if (!TryGetComponent(typeToSolver.Value, out _))
|
||||||
{
|
{
|
||||||
|
@ -6,10 +6,10 @@ namespace DDD
|
|||||||
{
|
{
|
||||||
public class RestaurantCharacterInteraction : MonoBehaviour, IInteractor, IEventHandler<RestaurantInteractionEvent>
|
public class RestaurantCharacterInteraction : MonoBehaviour, IInteractor, IEventHandler<RestaurantInteractionEvent>
|
||||||
{
|
{
|
||||||
[EnumToggleButtons, SerializeField] protected InteractionType _interactionType;
|
[EnumToggleButtons, SerializeField] protected InteractionType _availableInteractions;
|
||||||
[SerializeField, ReadOnly] protected Collider[] _nearColliders = new Collider[10];
|
[SerializeField, ReadOnly] protected Collider[] _nearColliders = new Collider[10];
|
||||||
|
|
||||||
public InteractionType InteractionType => _interactionType;
|
public InteractionType AvailableInteractions => _availableInteractions;
|
||||||
|
|
||||||
protected IInteractable _nearestInteractable;
|
protected IInteractable _nearestInteractable;
|
||||||
protected IInteractable _previousInteractable;
|
protected IInteractable _previousInteractable;
|
||||||
@ -44,7 +44,7 @@ protected virtual void Update()
|
|||||||
|
|
||||||
_interactHeldTime += Time.deltaTime;
|
_interactHeldTime += Time.deltaTime;
|
||||||
|
|
||||||
float requiredHoldTime = _interactingTarget.GetRequiredHoldTime();
|
float requiredHoldTime = _interactingTarget.GetExecutionParameters().HoldTime;
|
||||||
float ratio = Mathf.Clamp01(_interactHeldTime / requiredHoldTime);
|
float ratio = Mathf.Clamp01(_interactHeldTime / requiredHoldTime);
|
||||||
|
|
||||||
if (_interactHeldTime >= requiredHoldTime)
|
if (_interactHeldTime >= requiredHoldTime)
|
||||||
|
@ -49,7 +49,7 @@ private void OnInteractPerformed(InputAction.CallbackContext context)
|
|||||||
{
|
{
|
||||||
if (_nearestInteractable == null || CanInteractTo(_nearestInteractable) == false) return;
|
if (_nearestInteractable == null || CanInteractTo(_nearestInteractable) == false) return;
|
||||||
|
|
||||||
float requiredHoldTime = _nearestInteractable.GetRequiredHoldTime();
|
float requiredHoldTime = _nearestInteractable.GetExecutionParameters().HoldTime;
|
||||||
|
|
||||||
if (requiredHoldTime <= 0f)
|
if (requiredHoldTime <= 0f)
|
||||||
{
|
{
|
||||||
@ -98,7 +98,7 @@ private void BroadcastShowUi(IInteractable interactable, bool canInteract, float
|
|||||||
{
|
{
|
||||||
var evt = GameEvents.ShowInteractionUiEvent;
|
var evt = GameEvents.ShowInteractionUiEvent;
|
||||||
evt.CanInteract = canInteract;
|
evt.CanInteract = canInteract;
|
||||||
evt.TextKey = interactable.GetInteractionMessageKey();
|
evt.TextKey = interactable.GetDisplayParameters().MessageKey;
|
||||||
evt.HoldProgress = ratio;
|
evt.HoldProgress = ratio;
|
||||||
EventBus.Broadcast(evt);
|
EventBus.Broadcast(evt);
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,10 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DDD
|
||||||
|
{
|
||||||
|
public interface IInteractionSubsystemOwner
|
||||||
|
{
|
||||||
|
public bool TryGetSubsystemObject<T>(out IInteractionSubsystemObject<T> subsystemObject) where T : Enum;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 254d64ce6ee84b20a154931fcf04958f
|
||||||
|
timeCreated: 1755681729
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 30a19025059e4338b29bf140644dd5aa
|
||||||
|
timeCreated: 1755655803
|
@ -0,0 +1,36 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DDD
|
||||||
|
{
|
||||||
|
[Flags]
|
||||||
|
public enum RestaurantManagementType : uint
|
||||||
|
{
|
||||||
|
OpenRestaurantMenu = 0,
|
||||||
|
StartRestaurant = 1,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class RestaurantManagementInteractionSubsystem : MonoBehaviour, IInteractionSubsystemObject<RestaurantManagementType>
|
||||||
|
{
|
||||||
|
[SerializeField] protected RestaurantManagementType _managementType = RestaurantManagementType.OpenRestaurantMenu;
|
||||||
|
public RestaurantManagementType GetInteractionSubsystemType()
|
||||||
|
{
|
||||||
|
return _managementType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void InitializeSubsystem()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CanInteract()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool OnInteracted(IInteractor interactor, ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1235f6bde9304d8f85079f2777bd4b3c
|
||||||
|
timeCreated: 1755671037
|
@ -0,0 +1,54 @@
|
|||||||
|
using System;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DDD
|
||||||
|
{
|
||||||
|
[Flags]
|
||||||
|
public enum RestaurantOrderType : uint
|
||||||
|
{
|
||||||
|
Wait = 0u,
|
||||||
|
Reserved = 1u,
|
||||||
|
Order = 1u << 1,
|
||||||
|
Serve = 1u << 2,
|
||||||
|
}
|
||||||
|
|
||||||
|
public class RestaurantOrderInteractionSubsystem : MonoBehaviour, IInteractionSubsystemObject<RestaurantOrderType>
|
||||||
|
{
|
||||||
|
[SerializeField] protected RestaurantOrderType orderType = RestaurantOrderType.Wait;
|
||||||
|
private RestaurantOrderType currentRestaurantOrderType;
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
currentRestaurantOrderType = orderType;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CanInteract()
|
||||||
|
{
|
||||||
|
if (GetInteractionSubsystemType() == RestaurantOrderType.Wait)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool OnInteracted(IInteractor interactor, ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
if (GetInteractionSubsystemType() == RestaurantOrderType.Wait)
|
||||||
|
{
|
||||||
|
// DO WAIT CUSTOMER
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void InitializeSubsystem()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public RestaurantOrderType GetInteractionSubsystemType()
|
||||||
|
{
|
||||||
|
return currentRestaurantOrderType;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c0b1e0992510498b8d33d5b6094b8f4b
|
||||||
|
timeCreated: 1755655843
|
@ -1,3 +1,4 @@
|
|||||||
|
using System;
|
||||||
using Spine.Unity;
|
using Spine.Unity;
|
||||||
using Unity.VisualScripting;
|
using Unity.VisualScripting;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
3
Assets/_DDD/_Scripts/RestaurantEvent/Cosmetic.meta
Normal file
3
Assets/_DDD/_Scripts/RestaurantEvent/Cosmetic.meta
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 59f8f35926714893bb8d4192e527fa48
|
||||||
|
timeCreated: 1755655771
|
@ -1,29 +1,69 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
using Sirenix.OdinInspector;
|
||||||
|
|
||||||
namespace DDD
|
namespace DDD
|
||||||
{
|
{
|
||||||
public class RestaurantInteractionComponent : MonoBehaviour, IInteractable
|
public static class RestaurantInteractionSubsystems
|
||||||
{
|
{
|
||||||
[SerializeField] private InteractionType _interactionType = InteractionType.None;
|
public static Dictionary<InteractionType, Type> TypeToSubsystem = new()
|
||||||
[SerializeField] private float _holdTime = 1f;
|
|
||||||
[SerializeField] private string _interactionMessageKey = "";
|
|
||||||
|
|
||||||
[SerializeField] protected GameFlowState _interactionAvailableFlows;
|
|
||||||
[SerializeField] private Transform[] _aiInteractionPoints;
|
|
||||||
|
|
||||||
public bool CanInteract()
|
|
||||||
{
|
{
|
||||||
return !IsInteractionHidden();
|
{InteractionType.RestaurantOrder, typeof(RestaurantOrderInteractionSubsystem)},
|
||||||
|
{InteractionType.RestaurantManagement, typeof(RestaurantManagementInteractionSubsystem)}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsInteractionHidden()
|
|
||||||
|
public class RestaurantInteractionComponent : MonoBehaviour, IInteractable, IInteractionSubsystemOwner
|
||||||
|
{
|
||||||
|
// Single interaction type
|
||||||
|
[ValueDropdown("GetAllInteractionTypes")]
|
||||||
|
[SerializeField] protected InteractionType _interactionType = InteractionType.None;
|
||||||
|
[SerializeField] protected InteractionExecutionParameters _executionParameters = new InteractionExecutionParameters(1f);
|
||||||
|
[SerializeField] protected InteractionDisplayParameters _displayParameters = new InteractionDisplayParameters("");
|
||||||
|
[SerializeField] protected GameFlowState _interactionAvailableFlows;
|
||||||
|
[SerializeField] private Transform[] _aiInteractionPoints;
|
||||||
|
[SerializeField] private bool autoInitialize = true;
|
||||||
|
|
||||||
|
private Dictionary<InteractionType, IInteractionSubsystemObject> _subsystems = new();
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
if (autoInitialize)
|
||||||
|
{
|
||||||
|
InitializeInteraction(_interactionType);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private static IEnumerable GetAllInteractionTypes()
|
||||||
|
{
|
||||||
|
return System.Enum.GetValues(typeof(InteractionType))
|
||||||
|
.Cast<InteractionType>()
|
||||||
|
.Where(x => x != InteractionType.All); // All은 제외
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual bool CanInteract()
|
||||||
|
{
|
||||||
|
bool isInteractionVisible = !IsInteractionHidden();
|
||||||
|
bool hasValidSubsystem = true;
|
||||||
|
if (HasSubsystem(_interactionType))
|
||||||
|
{
|
||||||
|
hasValidSubsystem = GetSubsystem(_interactionType).CanInteract();
|
||||||
|
}
|
||||||
|
return isInteractionVisible && hasValidSubsystem;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual bool IsInteractionHidden()
|
||||||
{
|
{
|
||||||
var currentGameFlowState = GameFlowManager.Instance.GameFlowDataSo.CurrentGameState;
|
var currentGameFlowState = GameFlowManager.Instance.GameFlowDataSo.CurrentGameState;
|
||||||
var flowDisabled = (currentGameFlowState & _interactionAvailableFlows) == 0;
|
var flowDisabled = (currentGameFlowState & _interactionAvailableFlows) == 0;
|
||||||
return flowDisabled;
|
return flowDisabled;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool OnInteracted(IInteractor interactor, ScriptableObject payloadSo = null)
|
public virtual bool OnInteracted(IInteractor interactor, ScriptableObject payloadSo = null)
|
||||||
{
|
{
|
||||||
if (CanInteract() == false)
|
if (CanInteract() == false)
|
||||||
{
|
{
|
||||||
@ -31,10 +71,14 @@ public bool OnInteracted(IInteractor interactor, ScriptableObject payloadSo = nu
|
|||||||
}
|
}
|
||||||
bool interactionResult = RestaurantInteractionEvents.RestaurantInteraction.RequestInteraction(interactor.GetInteractorGameObject(),
|
bool interactionResult = RestaurantInteractionEvents.RestaurantInteraction.RequestInteraction(interactor.GetInteractorGameObject(),
|
||||||
GetInteractableGameObject(), GetInteractionType(), payloadSo, true);
|
GetInteractableGameObject(), GetInteractionType(), payloadSo, true);
|
||||||
|
if (HasSubsystem(_interactionType))
|
||||||
|
{
|
||||||
|
interactionResult &= GetSubsystem(_interactionType).OnInteracted(interactor, payloadSo);
|
||||||
|
}
|
||||||
return interactionResult;
|
return interactionResult;
|
||||||
}
|
}
|
||||||
|
|
||||||
public InteractionType GetInteractionType()
|
public virtual InteractionType GetInteractionType()
|
||||||
{
|
{
|
||||||
return _interactionType;
|
return _interactionType;
|
||||||
}
|
}
|
||||||
@ -44,26 +88,64 @@ public GameObject GetInteractableGameObject()
|
|||||||
return gameObject;
|
return gameObject;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void InitializeInteraction(InteractionType interactionType)
|
public virtual void InitializeInteraction(InteractionType interactionType)
|
||||||
{
|
{
|
||||||
_interactionType = interactionType;
|
_interactionType = interactionType;
|
||||||
|
|
||||||
|
InitializeSubsystems();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void InitializeSubsystems()
|
||||||
|
{
|
||||||
|
// Initialize Interaction Subsystems
|
||||||
|
bool hasSubsystemType = RestaurantInteractionSubsystems.TypeToSubsystem.TryGetValue(_interactionType, out var subsystemType);
|
||||||
|
if (!hasSubsystemType) return;
|
||||||
|
|
||||||
|
var subsystem = gameObject.GetComponent(subsystemType) as IInteractionSubsystemObject;
|
||||||
|
if (subsystem == null)
|
||||||
|
{
|
||||||
|
subsystem = gameObject.AddComponent(subsystemType) as IInteractionSubsystemObject;
|
||||||
|
}
|
||||||
|
_subsystems.Add(_interactionType, subsystem);
|
||||||
|
subsystem?.InitializeSubsystem();
|
||||||
|
}
|
||||||
|
|
||||||
|
private bool HasSubsystem(InteractionType interactionType)
|
||||||
|
{
|
||||||
|
return _subsystems.ContainsKey(interactionType);
|
||||||
|
}
|
||||||
|
|
||||||
|
private IInteractionSubsystemObject GetSubsystem(InteractionType interactionType)
|
||||||
|
{
|
||||||
|
return _subsystems.GetValueOrDefault(interactionType) as IInteractionSubsystemObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 새로운 스트럭트 기반 메서드들
|
||||||
|
public virtual InteractionExecutionParameters GetExecutionParameters()
|
||||||
|
{
|
||||||
|
return _executionParameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual InteractionDisplayParameters GetDisplayParameters()
|
||||||
|
{
|
||||||
|
return _displayParameters;
|
||||||
|
}
|
||||||
|
|
||||||
|
// 하위 호환성을 위한 기존 메서드들
|
||||||
public float GetRequiredHoldTime()
|
public float GetRequiredHoldTime()
|
||||||
{
|
{
|
||||||
return _holdTime;
|
return _executionParameters.HoldTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string GetInteractionMessageKey()
|
public string GetInteractionMessageKey()
|
||||||
{
|
{
|
||||||
return _interactionMessageKey;
|
return _displayParameters.MessageKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Vector3[] GetInteractionPoints()
|
public Vector3[] GetInteractionPoints()
|
||||||
{
|
{
|
||||||
if (_aiInteractionPoints == null || _aiInteractionPoints.Length == 0)
|
if (_aiInteractionPoints == null || _aiInteractionPoints.Length == 0)
|
||||||
{
|
{
|
||||||
// AI 상호작용 포인트가 설정되지 않은 경우 오브젝트의 위치를 기본값으로 반환
|
|
||||||
return new Vector3[] { transform.position };
|
return new Vector3[] { transform.position };
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -81,5 +163,20 @@ public Vector3[] GetInteractionPoints()
|
|||||||
}
|
}
|
||||||
return positions;
|
return positions;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool TryGetSubsystemObject<T>(out IInteractionSubsystemObject<T> subsystemObject) where T : Enum
|
||||||
|
{
|
||||||
|
foreach (var interactionSubsystemObject in _subsystems.Values)
|
||||||
|
{
|
||||||
|
if (interactionSubsystemObject is IInteractionSubsystemObject<T> subsystem)
|
||||||
|
{
|
||||||
|
subsystemObject = subsystem;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
subsystemObject = null;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -13,8 +13,8 @@ public static class RestaurantInteractionEventSolvers
|
|||||||
{
|
{
|
||||||
public static Dictionary<InteractionType, Type> TypeToSolver = new()
|
public static Dictionary<InteractionType, Type> TypeToSolver = new()
|
||||||
{
|
{
|
||||||
{InteractionType.RestaurantManagementUi, typeof(RestaurantManagementUiEventSolver)},
|
{InteractionType.RestaurantManagement, typeof(RestaurantManagementSolver)},
|
||||||
{InteractionType.OpenRestaurant, typeof(RestaurantOpenEventSolver)}
|
{InteractionType.RestaurantOrder, typeof(RestaurantOrderSolver)}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ad4643acb4b34f1ab27e79503ccff0dd
|
||||||
|
timeCreated: 1755677592
|
@ -0,0 +1,23 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using DDD.RestaurantOrders;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DDD
|
||||||
|
{
|
||||||
|
public static class RestaurantManagementSolvers
|
||||||
|
{
|
||||||
|
public static Dictionary<RestaurantManagementType, Type> TypeToManagementSolver = new()
|
||||||
|
{
|
||||||
|
{ RestaurantManagementType.OpenRestaurantMenu, typeof(RestaurantManagementSolver_Menu) },
|
||||||
|
{ RestaurantManagementType.StartRestaurant, typeof(RestaurantManagementSolver_Start) }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
public class RestaurantManagementSolver : RestaurantSubsystemSolver<RestaurantManagementType>
|
||||||
|
{
|
||||||
|
protected override Dictionary<RestaurantManagementType, Type> GetSubsystemSolverTypeMappings()
|
||||||
|
{
|
||||||
|
return RestaurantManagementSolvers.TypeToManagementSolver;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c457857b6ba0432db546ef0d8970548d
|
||||||
|
timeCreated: 1755677639
|
@ -2,11 +2,11 @@
|
|||||||
|
|
||||||
namespace DDD
|
namespace DDD
|
||||||
{
|
{
|
||||||
public class RestaurantManagementUiEventSolver : MonoBehaviour, IInteractionSolver
|
public class RestaurantManagementSolver_Menu : MonoBehaviour, IInteractionSubsystemSolver<RestaurantManagementType>
|
||||||
{
|
{
|
||||||
public bool ExecuteInteraction(IInteractor interactor, IInteractable interactable, ScriptableObject payloadSo = null)
|
public bool ExecuteInteractionSubsystem(IInteractor interactor, IInteractable interactable, ScriptableObject payloadSo = null)
|
||||||
{
|
{
|
||||||
if (CanExecuteInteraction() == false) return false;
|
if (CanExecuteInteractionSubsystem(interactor, interactable, payloadSo) == false) return false;
|
||||||
|
|
||||||
var evt = GameEvents.OpenPopupUiEvent;
|
var evt = GameEvents.OpenPopupUiEvent;
|
||||||
evt.UiType = typeof(RestaurantManagementUi);
|
evt.UiType = typeof(RestaurantManagementUi);
|
||||||
@ -14,7 +14,7 @@ public bool ExecuteInteraction(IInteractor interactor, IInteractable interactabl
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CanExecuteInteraction(IInteractor interactor = null, IInteractable interactable = null,
|
public bool CanExecuteInteractionSubsystem(IInteractor interactor = null, IInteractable interactable = null,
|
||||||
ScriptableObject payloadSo = null)
|
ScriptableObject payloadSo = null)
|
||||||
{
|
{
|
||||||
GameFlowState currentGameFlowState = GameFlowManager.Instance.GameFlowDataSo.CurrentGameState;
|
GameFlowState currentGameFlowState = GameFlowManager.Instance.GameFlowDataSo.CurrentGameState;
|
@ -3,22 +3,23 @@
|
|||||||
|
|
||||||
namespace DDD
|
namespace DDD
|
||||||
{
|
{
|
||||||
public class RestaurantOpenEventSolver : MonoBehaviour, IInteractionSolver
|
public class RestaurantManagementSolver_Start : MonoBehaviour, IInteractionSubsystemSolver<RestaurantManagementType>
|
||||||
{
|
{
|
||||||
public bool ExecuteInteraction(IInteractor interactor, IInteractable interactable, ScriptableObject interactionPayloadSo = null)
|
|
||||||
{
|
|
||||||
if (CanExecuteInteraction() == false) return false;
|
|
||||||
|
|
||||||
_ = GameFlowManager.Instance.ChangeFlow(GameFlowState.RunRestaurant);
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private RestaurantManagementState GetManagementState()
|
private RestaurantManagementState GetManagementState()
|
||||||
{
|
{
|
||||||
return RestaurantState.Instance.ManagementState;
|
return RestaurantState.Instance.ManagementState;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool CanExecuteInteraction(IInteractor interactor = null, IInteractable interactable = null, ScriptableObject payloadSo = null)
|
public bool ExecuteInteractionSubsystem(IInteractor interactor, IInteractable interactable, ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
if (CanExecuteInteractionSubsystem(interactor, interactable, payloadSo) == false) return false;
|
||||||
|
|
||||||
|
_ = GameFlowManager.Instance.ChangeFlow(GameFlowState.RunRestaurant);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CanExecuteInteractionSubsystem(IInteractor interactor = null, IInteractable interactable = null,
|
||||||
|
ScriptableObject payloadSo = null)
|
||||||
{
|
{
|
||||||
GameFlowState currentGameFlowState = GameFlowManager.Instance.GameFlowDataSo.CurrentGameState;
|
GameFlowState currentGameFlowState = GameFlowManager.Instance.GameFlowDataSo.CurrentGameState;
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using DDD.RestaurantOrders;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DDD
|
||||||
|
{
|
||||||
|
public static class RestaurantOrderSolvers
|
||||||
|
{
|
||||||
|
public static Dictionary<RestaurantOrderType, Type> TypeToOrderSolver = new()
|
||||||
|
{
|
||||||
|
{ RestaurantOrderType.Wait, typeof(RestaurantOrderSolver_Wait) },
|
||||||
|
{ RestaurantOrderType.Reserved, typeof(RestaurantOrderSolver_Reserved) },
|
||||||
|
{ RestaurantOrderType.Order, typeof(RestaurantOrderSolver_Order) },
|
||||||
|
{ RestaurantOrderType.Serve, typeof(RestaurantOrderSolver_Serve) }
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public class RestaurantOrderSolver : RestaurantSubsystemSolver<RestaurantOrderType>
|
||||||
|
{
|
||||||
|
protected override Dictionary<RestaurantOrderType, Type> GetSubsystemSolverTypeMappings()
|
||||||
|
{
|
||||||
|
return RestaurantOrderSolvers.TypeToOrderSolver;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: b832b16fa5964817afa836bc86f25f6b
|
||||||
|
timeCreated: 1755664610
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 0a7eea23af674c2aa6ffc20bd5801efb
|
||||||
|
timeCreated: 1755672003
|
@ -0,0 +1,19 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DDD.RestaurantOrders
|
||||||
|
{
|
||||||
|
public class RestaurantOrderSolver_Order : MonoBehaviour, IInteractionSubsystemSolver<RestaurantOrderType>
|
||||||
|
{
|
||||||
|
public bool ExecuteInteractionSubsystem(IInteractor interactor, IInteractable interactable, ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
// TODO : DO SOMETHING!!!
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CanExecuteInteractionSubsystem(IInteractor interactor = null, IInteractable interactable = null,
|
||||||
|
ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 3afc1759b02e4230967b3b72fe354ea3
|
||||||
|
timeCreated: 1755672492
|
@ -0,0 +1,19 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DDD.RestaurantOrders
|
||||||
|
{
|
||||||
|
public class RestaurantOrderSolver_Reserved : MonoBehaviour, IInteractionSubsystemSolver<RestaurantOrderType>
|
||||||
|
{
|
||||||
|
public bool ExecuteInteractionSubsystem(IInteractor interactor, IInteractable interactable, ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
// TODO : DO SOMETHING!!!
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CanExecuteInteractionSubsystem(IInteractor interactor = null, IInteractable interactable = null,
|
||||||
|
ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f62abf1706184529880b9353b63a2adc
|
||||||
|
timeCreated: 1755682089
|
@ -0,0 +1,19 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DDD.RestaurantOrders
|
||||||
|
{
|
||||||
|
public class RestaurantOrderSolver_Serve : MonoBehaviour, IInteractionSubsystemSolver<RestaurantOrderType>
|
||||||
|
{
|
||||||
|
public bool ExecuteInteractionSubsystem(IInteractor interactor, IInteractable interactable, ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
// TODO : DO SOMETHING!!!
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CanExecuteInteractionSubsystem(IInteractor interactor = null, IInteractable interactable = null,
|
||||||
|
ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 4df15c40347044648623d5932bb0724e
|
||||||
|
timeCreated: 1755672501
|
@ -0,0 +1,19 @@
|
|||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DDD.RestaurantOrders
|
||||||
|
{
|
||||||
|
public class RestaurantOrderSolver_Wait : MonoBehaviour, IInteractionSubsystemSolver<RestaurantOrderType>
|
||||||
|
{
|
||||||
|
public bool ExecuteInteractionSubsystem(IInteractor interactor, IInteractable interactable, ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
// TODO : DO SOMETHING!!!
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CanExecuteInteractionSubsystem(IInteractor interactor = null, IInteractable interactable = null,
|
||||||
|
ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: cc81a22ff98a4b42b45ad27219ec05fa
|
||||||
|
timeCreated: 1755672371
|
@ -0,0 +1,49 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace DDD
|
||||||
|
{
|
||||||
|
public abstract class RestaurantSubsystemSolver<T> : MonoBehaviour, IInteractionSolver where T : Enum
|
||||||
|
{
|
||||||
|
private Dictionary<T, IInteractionSubsystemSolver<T>> _solvers = new();
|
||||||
|
|
||||||
|
protected abstract Dictionary<T, Type> GetSubsystemSolverTypeMappings();
|
||||||
|
|
||||||
|
private void Start()
|
||||||
|
{
|
||||||
|
foreach (var subsystemSolverType in GetSubsystemSolverTypeMappings())
|
||||||
|
{
|
||||||
|
var solver = (IInteractionSubsystemSolver<T>)gameObject.AddComponent(subsystemSolverType.Value);
|
||||||
|
_solvers.Add(subsystemSolverType.Key, solver);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
public bool ExecuteInteraction(IInteractor interactor, IInteractable interactable, ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
return TryGetSolver(interactable, out var solver) &&
|
||||||
|
solver.ExecuteInteractionSubsystem(interactor, interactable, payloadSo);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool CanExecuteInteraction(IInteractor interactor = null, IInteractable interactable = null,
|
||||||
|
ScriptableObject payloadSo = null)
|
||||||
|
{
|
||||||
|
return TryGetSolver(interactable, out var solver) &&
|
||||||
|
solver.CanExecuteInteractionSubsystem(interactor, interactable, payloadSo);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Solver를 가져오는 공통 로직
|
||||||
|
private bool TryGetSolver(IInteractable interactable, out IInteractionSubsystemSolver<T> solver)
|
||||||
|
{
|
||||||
|
solver = null;
|
||||||
|
|
||||||
|
var owner = interactable as IInteractionSubsystemOwner;
|
||||||
|
IInteractionSubsystemObject<T> subsystem = null;
|
||||||
|
bool isExist = owner != null && owner.TryGetSubsystemObject<T>(out subsystem);
|
||||||
|
|
||||||
|
if (!isExist || subsystem == null) return false;
|
||||||
|
|
||||||
|
var type = subsystem.GetInteractionSubsystemType();
|
||||||
|
return _solvers.TryGetValue(type, out solver);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,3 @@
|
|||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 716224c78a914321b7b7e43a93860465
|
||||||
|
timeCreated: 1755677990
|
BIN
ProjectSettings/EditorBuildSettings.asset
(Stored with Git LFS)
BIN
ProjectSettings/EditorBuildSettings.asset
(Stored with Git LFS)
Binary file not shown.
Loading…
Reference in New Issue
Block a user