diff --git a/Assets/Resources/Butterfly.prefab b/Assets/Resources/Butterfly.prefab new file mode 100644 index 00000000..48ed09c4 --- /dev/null +++ b/Assets/Resources/Butterfly.prefab @@ -0,0 +1,716 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &991646415075395470 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8008568497130423293} + - component: {fileID: 8919402494214851087} + - component: {fileID: 8229769567978585665} + m_Layer: 0 + m_Name: UpperWing + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8008568497130423293 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 991646415075395470} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5, y: 0.4, z: 0} + m_LocalScale: {x: 1.3, y: 1.3, z: 0.3} + m_Children: [] + m_Father: {fileID: 5591064814930782750} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &8919402494214851087 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 991646415075395470} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &8229769567978585665 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 991646415075395470} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 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 +--- !u!1 &1046338145758687286 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8489916887498396023} + - component: {fileID: 6879251021528824578} + - component: {fileID: 6211179014730079487} + m_Layer: 0 + m_Name: LowerWing + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8489916887498396023 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046338145758687286} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5, y: -0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 0.3} + m_Children: [] + m_Father: {fileID: 814682776945506473} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &6879251021528824578 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046338145758687286} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &6211179014730079487 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1046338145758687286} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 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 +--- !u!1 &1477585280903066572 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5591064814930782750} + m_Layer: 0 + m_Name: WingRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &5591064814930782750 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1477585280903066572} + m_LocalRotation: {x: 0, y: 0.2588191, z: 0, w: 0.9659258} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8008568497130423293} + - {fileID: 2404873315510811925} + m_Father: {fileID: 3636514719014338902} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 30, z: 0} +--- !u!1 &1871216191951174837 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2404873315510811925} + - component: {fileID: 5921926660788516552} + - component: {fileID: 4983986825351880441} + m_Layer: 0 + m_Name: LowerWing + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &2404873315510811925 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1871216191951174837} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5, y: -0.5, z: 0} + m_LocalScale: {x: 1, y: 1, z: 0.3} + m_Children: [] + m_Father: {fileID: 5591064814930782750} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &5921926660788516552 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1871216191951174837} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &4983986825351880441 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1871216191951174837} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 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 +--- !u!1 &2855194029055974746 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1901794325962471166} + - component: {fileID: 6405033900919574126} + - component: {fileID: 8701344842131264936} + m_Layer: 0 + m_Name: TendrilLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1901794325962471166 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2855194029055974746} + m_LocalRotation: {x: 0, y: 0, z: 0.08715578, w: 0.9961947} + m_LocalPosition: {x: -0.06, y: 1.1, z: 0} + m_LocalScale: {x: 0.02, y: 0.15, z: 0.02} + m_Children: [] + m_Father: {fileID: 3636514719014338902} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 10} +--- !u!33 &6405033900919574126 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2855194029055974746} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &8701344842131264936 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2855194029055974746} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 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 +--- !u!1 &2993840150745115514 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 827066373157184637} + - component: {fileID: 5367639586013753549} + - component: {fileID: 8047030731867282900} + - component: {fileID: 7655398171623067457} + m_Layer: 0 + m_Name: Butterfly + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &827066373157184637 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2993840150745115514} + 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_Children: + - {fileID: 3636514719014338902} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &5367639586013753549 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2993840150745115514} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 588a53f9e308795479b5deafb2409b71, type: 3} + m_Name: + m_EditorClassIdentifier: + _type: 8 +--- !u!65 &8047030731867282900 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2993840150745115514} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1.8195341, y: 1.3612261, z: 1.9005007} + m_Center: {x: 0, y: 0.11655903, z: -0.053422987} +--- !u!54 &7655398171623067457 +Rigidbody: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2993840150745115514} + serializedVersion: 2 + m_Mass: 1 + m_Drag: 0 + m_AngularDrag: 0 + m_UseGravity: 0 + m_IsKinematic: 0 + m_Interpolate: 0 + m_Constraints: 0 + m_CollisionDetection: 0 +--- !u!1 &3476534694907690316 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3636514719014338902} + m_Layer: 0 + m_Name: Entity + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3636514719014338902 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3476534694907690316} + m_LocalRotation: {x: 0.5, y: 0, z: 0, w: 0.8660254} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 391456270969537645} + - {fileID: 5591064814930782750} + - {fileID: 1901794325962471166} + - {fileID: 7087493410217138242} + - {fileID: 814682776945506473} + m_Father: {fileID: 827066373157184637} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 60, y: 0, z: 0} +--- !u!1 &4624359324713433189 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 8526958045338143545} + - component: {fileID: 3692214335629163378} + - component: {fileID: 2122207419020544819} + m_Layer: 0 + m_Name: UpperWing + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &8526958045338143545 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4624359324713433189} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0.5, y: 0.4, z: 0} + m_LocalScale: {x: 1.3, y: 1.3, z: 0.3} + m_Children: [] + m_Father: {fileID: 814682776945506473} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &3692214335629163378 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4624359324713433189} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2122207419020544819 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4624359324713433189} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 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 +--- !u!1 &7160409032735634229 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 814682776945506473} + m_Layer: 0 + m_Name: WingLeft + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &814682776945506473 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7160409032735634229} + m_LocalRotation: {x: 0, y: 0.9659258, z: 0, w: 0.2588191} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: + - {fileID: 8526958045338143545} + - {fileID: 8489916887498396023} + m_Father: {fileID: 3636514719014338902} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 150, z: 0} +--- !u!1 &7362634901258417595 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 391456270969537645} + - component: {fileID: 303920579915094136} + - component: {fileID: 5584508775454098069} + m_Layer: 0 + m_Name: Body + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &391456270969537645 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362634901258417595} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.3, y: 1, z: 0.3} + m_Children: [] + m_Father: {fileID: 3636514719014338902} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &303920579915094136 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362634901258417595} + m_Mesh: {fileID: 10208, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &5584508775454098069 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 7362634901258417595} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 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 +--- !u!1 &9028549881059421617 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 7087493410217138242} + - component: {fileID: 3805552051775387363} + - component: {fileID: 1197430458320753393} + m_Layer: 0 + m_Name: TendrilRight + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &7087493410217138242 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9028549881059421617} + m_LocalRotation: {x: 0, y: 0, z: -0.08715578, w: 0.9961947} + m_LocalPosition: {x: 0.06, y: 1.1, z: 0} + m_LocalScale: {x: 0.019999998, y: 0.14999999, z: 0.02} + m_Children: [] + m_Father: {fileID: 3636514719014338902} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: -10} +--- !u!33 &3805552051775387363 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9028549881059421617} + m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1197430458320753393 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 9028549881059421617} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 10303, guid: 0000000000000000f000000000000000, type: 0} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 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 diff --git a/Assets/Resources/Butterfly.prefab.meta b/Assets/Resources/Butterfly.prefab.meta new file mode 100644 index 00000000..9f1eb56c --- /dev/null +++ b/Assets/Resources/Butterfly.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 0167d9e91d1e6e742a4510e447cbef03 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Data/ButterflyData.asset b/Assets/Resources/Data/ButterflyData.asset new file mode 100644 index 00000000..bbc5e065 --- /dev/null +++ b/Assets/Resources/Data/ButterflyData.asset @@ -0,0 +1,22 @@ +%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: 9198d4fb6d83f4c44b9a7f026a956854, type: 3} + m_Name: ButterflyData + m_EditorClassIdentifier: + Struct: + Prefab: {fileID: 2770142703575531339, guid: 0167d9e91d1e6e742a4510e447cbef03, + type: 3} + Size: 0.5 + MaxDistanceFromCurrentPosition: 10 + Speed: 0.1 + TurnSpeed: 0.03 + MaxFlyAltitudeFromSpawn: 5 diff --git a/Assets/Resources/Data/ButterflyData.asset.meta b/Assets/Resources/Data/ButterflyData.asset.meta new file mode 100644 index 00000000..e6daaf32 --- /dev/null +++ b/Assets/Resources/Data/ButterflyData.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f5120f52297e32c4aa50bb38456e92b9 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Resources/Data/Data.asset b/Assets/Resources/Data/Data.asset index 79469fc9..01d3c23d 100644 --- a/Assets/Resources/Data/Data.asset +++ b/Assets/Resources/Data/Data.asset @@ -12,6 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1b31b7596ae2b4a4ab972d36383fc2fb, type: 3} m_Name: Data m_EditorClassIdentifier: + _butterflyDataPath: ButterflyData _sphereDataPath: SphereData _characterDataPath: CharacterData _startDialogueDataPath: StartDialogueData diff --git a/Assets/Scenes/ITickTest.unity b/Assets/Scenes/ITickTest.unity index 4d05735e..528ce42e 100644 --- a/Assets/Scenes/ITickTest.unity +++ b/Assets/Scenes/ITickTest.unity @@ -391,7 +391,7 @@ GameObject: - component: {fileID: 966662972} m_Layer: 0 m_Name: BattlePlate - m_TagString: Untagged + m_TagString: Ground m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 8 diff --git a/Assets/Scripts/To_Refactoring/Character/Weapons.meta b/Assets/Scripts/ContextTest/MVC/Butterfly.meta similarity index 77% rename from Assets/Scripts/To_Refactoring/Character/Weapons.meta rename to Assets/Scripts/ContextTest/MVC/Butterfly.meta index ed151ea9..6bd01143 100644 --- a/Assets/Scripts/To_Refactoring/Character/Weapons.meta +++ b/Assets/Scripts/ContextTest/MVC/Butterfly.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 3f3aa28c519cc714eabee8aeb10e70f9 +guid: e9dc962257911d646a653355bc3778c8 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyBehaviour.cs b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyBehaviour.cs new file mode 100644 index 00000000..bc93912d --- /dev/null +++ b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyBehaviour.cs @@ -0,0 +1,6 @@ +namespace BeastHunter +{ + class ButterflyBehaviour: InteractableObjectBehavior + { + } +} diff --git a/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyBehaviour.cs.meta b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyBehaviour.cs.meta new file mode 100644 index 00000000..85f46e17 --- /dev/null +++ b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyBehaviour.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 588a53f9e308795479b5deafb2409b71 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyController.cs b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyController.cs new file mode 100644 index 00000000..45e83f46 --- /dev/null +++ b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyController.cs @@ -0,0 +1,59 @@ +using UnityEngine; + +namespace BeastHunter +{ + public class ButterflyController: IAwake, IUpdate + { + #region Fields + + private readonly GameContext _context; + + #endregion + + + #region ClassLifeCycle + + public ButterflyController(GameContext context) + { + _context = context; + } + + #endregion + + + #region IUpdate + + public void Updating() + { + _context.ButterflyModel.Execute(); + } + + #endregion + + + #region IAwake + + public void OnAwake() + { + var butterflies = _context.GetTriggers(InteractableObjectType.Butterfly); + foreach (var trigger in butterflies) + { + ButterflyBehaviour butterflyBehaviour = trigger as ButterflyBehaviour; + butterflyBehaviour.OnFilterHandler += OnFilter; + butterflyBehaviour.OnTriggerEnterHandler += OnTriggerEnter; + } + } + + private bool OnFilter(Collider collider) + { + return collider.CompareTag(TagManager.GROUND); + } + + private void OnTriggerEnter(ITrigger trigger, Collider collider) + { + _context.ButterflyModel.OnTriggerEnter(collider); + } + + #endregion + } +} diff --git a/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyController.cs.meta b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyController.cs.meta new file mode 100644 index 00000000..2737c630 --- /dev/null +++ b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ddcb6ffd04bd86d4eb943b6513a0af81 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyData.cs b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyData.cs new file mode 100644 index 00000000..25c3f06f --- /dev/null +++ b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyData.cs @@ -0,0 +1,192 @@ +using BeastHunter; +using UnityEngine; + + +[CreateAssetMenu(fileName = "NewButterfly", menuName = "CreateData/Butterfly", order = 0)] +public class ButterflyData : ScriptableObject +{ + #region Fields + + private const float SITTING_CHANCE = 75.00f; + private const float MIN_SITTING_TIME = 1.5f; + private const float MAX_SITTING_TIME = 4.0f; + + public ButterflyStruct Struct; + + #endregion + + + #region ClassLifeCycle + + public ButterflyData() + { + Struct.Size = 0.5f; + Struct.Speed = 0.1f; + Struct.TurnSpeed = 0.03f; + Struct.MaxFlyAltitudeFromSpawn = 5.0f; + Struct.MaxDistanceFromCurrentPosition = 10.0f; + Struct.CircularRotationSpeed = 6.0f; + Struct.MinCircleSize = 1.0f; + Struct.MaxCircleSize = 3.0f; + } + + #endregion + + + #region Methods + + public void Act(ButterflyModel model) + { + Transform transform = model.ObjTransform; + + if (model.IsCircling) + { + float rotateAroundSpeed = Struct.CircularRotationSpeed / model.CirclePoint.ToVectorXZ().DirectionTo(transform.position.ToVectorXZ()).magnitude; + transform.RotateAround(model.CirclePoint, Vector3.up * model.RotateAroundDirection, rotateAroundSpeed); + transform.rotation = CirclingRotate(model.CirclePoint, transform.position, transform.forward, model.RotateAroundDirection); + + float dot = Vector2.Dot(transform.forward.ToVectorXZ().normalized, model.TargetPoint.ToVectorXZ().normalized); + if (dot > 0.99f) model.IsCircling = false; + } + else + { + if (model.IsSitting) + { + model.SittingTimer -= Time.deltaTime; + if (model.SittingTimer <= 0) model.IsSitting = false; + } + else + { + if (transform.position != model.TargetPoint) + { + if (transform.position.y >= model.MaxFlyAltitude && model.TargetPoint.y > transform.position.y) + { + Debug.Log(this + " maxFlyAltitude has reached"); + model.TargetPoint = NewTargetPointInOppositeDirection(transform.position, model.TargetPoint.DirectionTo(transform.position), "Y"); + } + transform.rotation = Turn(model.TargetPoint, transform.position, transform.forward); + transform.position = Move(model.TargetPoint, transform.position); + } + else + { + model.TargetPoint = NewTargetPoint(transform.position); + model.CirclePoint = NewCirclePoint(transform.position); + model.IsCircling = true; + + Vector2 directionToCirclePoint = model.CirclePoint.ToVectorXZ().DirectionTo(transform.position.ToVectorXZ()); + float dot = Vector2.Dot(transform.forward.ToVectorXZ().TurnToRight(), directionToCirclePoint); + if (dot > 0) model.RotateAroundDirection = 1; + else model.RotateAroundDirection = -1; + } + } + } + } + + public void TriggerEnter(Collider collider, ButterflyModel model) + { + Debug.Log(this + " OnTriggerEnter(Collider collider)"); + + if (collider.gameObject.tag == TagManager.GROUND) + { + model.TargetPoint = NewTargetPointInOppositeDirection(model.ObjTransform.position, model.TargetPoint - model.ObjTransform.position, "Y"); + if (Random.Range(1, 100) <= SITTING_CHANCE) + { + Debug.Log(this + " is sitting"); + + model.IsSitting = true; + model.SittingTimer = Random.Range(MIN_SITTING_TIME, MAX_SITTING_TIME); + + Debug.Log(this + " sittingTimer: " + model.SittingTimer); + } + } + } + + private Vector3 Move(Vector3 targetPoint, Vector3 currentPosition) + { + return Vector3.MoveTowards(currentPosition, targetPoint, Struct.Speed); + } + + private Quaternion Turn(Vector3 targetPoint, Vector3 position, Vector3 forward) + { + Vector3 targetDirection = targetPoint - position; + Vector3 newDirection = Vector3.RotateTowards(forward, targetDirection, Struct.TurnSpeed, 0.0f); + newDirection.y = forward.y; + return Quaternion.LookRotation(newDirection); + } + + private Quaternion CirclingRotate(Vector3 circlePoint, Vector3 position, Vector3 forward, int rotateAroundDirection) + { + Vector3 circlePointDirectionRotate90 = Quaternion.AngleAxis(-90 * rotateAroundDirection, Vector3.up) * circlePoint.DirectionTo(position); + Vector3 newDirection = Vector3.RotateTowards(forward, circlePointDirectionRotate90, Struct.TurnSpeed, 0.0f); + newDirection.y = forward.y; + return Quaternion.LookRotation(newDirection); + } + + /// Return random coordinates within MaxDistanceFromCurrentPosition + private Vector3 NewTargetPoint(Vector3 currentPosition) + { + float x = GetRandomCoord(currentPosition.x); + float y = GetRandomCoord(currentPosition.y); + float z = GetRandomCoord(currentPosition.z); + return new Vector3(x, y, z); + } + + /// Return random coordinates within MaxDistanceFromCurrentPosition in the opposite direction along the specified coordinate axis + private Vector3 NewTargetPointInOppositeDirection(Vector3 currentPosition, Vector3 currentDirection, string axis) + { + Vector3 newTarget = NewTargetPoint(currentPosition); + + switch (axis.ToUpper()) + { + case "X": newTarget.x = GetRandomCoord(currentPosition.x, currentDirection.x); break; + case "Y": newTarget.y = GetRandomCoord(currentPosition.y, currentDirection.y); break; + case "Z": newTarget.z = GetRandomCoord(currentPosition.z, currentDirection.z); break; + } + + return newTarget; + } + + private float GetRandomCoord(float currentCoord, float? directionCoord = null) + { + if (directionCoord.HasValue && directionCoord.Value != 0) + { + if (directionCoord > 0) return Random.Range(currentCoord - Struct.MaxDistanceFromCurrentPosition, currentCoord - 0.5f); + else return Random.Range(currentCoord + 0.5f, currentCoord + Struct.MaxDistanceFromCurrentPosition); + } + return Random.Range(currentCoord - Struct.MaxDistanceFromCurrentPosition, currentCoord + Struct.MaxDistanceFromCurrentPosition); ; + } + + private Vector3 NewCirclePoint(Vector3 currentPosition) + { + float x = GetRandomCoordForCircle(currentPosition.x); + float z = GetRandomCoordForCircle(currentPosition.z); + return new Vector3(x, currentPosition.y, z); + } + + private float GetRandomCoordForCircle(float coord) + { + int sign = 1; + if (Random.Range(1, 100) > 50) sign = -sign; + float random = Random.Range(Struct.MinCircleSize, Struct.MaxCircleSize); + return coord + random * sign; + } + + #endregion +} + + + +static class VectorExtension +{ + /// Convert Vector3 into Vector2 for XZ-plane + public static Vector2 ToVectorXZ(this Vector3 vector3) => new Vector2(vector3.x, vector3.z); + + /// Rotates the vector2 90 degrees + public static Vector2 TurnToRight(this Vector2 vector2) => new Vector2(vector2.y, -vector2.x); + + /// Returns the direction vector2 to the specified point + public static Vector2 DirectionTo(this Vector2 vector2, Vector2 target) => vector2 - target; + + /// Returns the direction vector3 to the specified point + public static Vector3 DirectionTo(this Vector3 vector3, Vector3 target) => vector3 - target; +} \ No newline at end of file diff --git a/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyData.cs.meta b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyData.cs.meta new file mode 100644 index 00000000..b7bfdb03 --- /dev/null +++ b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyData.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9198d4fb6d83f4c44b9a7f026a956854 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyInitilizeController.cs b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyInitilizeController.cs new file mode 100644 index 00000000..3c47b271 --- /dev/null +++ b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyInitilizeController.cs @@ -0,0 +1,36 @@ +using UnityEngine; + +namespace BeastHunter +{ + public class ButterflyInitilizeController: IAwake + { + #region Field + + private GameContext _context; + + #endregion + + + #region ClassLifeCycle + + public ButterflyInitilizeController(GameContext context) + { + _context = context; + } + + #endregion + + + #region IAwake + + public void OnAwake() + { + ButterflyData butterflyData = Data.ButterflyData; + GameObject butterflyObject = Object.Instantiate(butterflyData.Struct.Prefab); + ButterflyModel butterflyModel = new ButterflyModel(butterflyObject, butterflyData); + _context.ButterflyModel = butterflyModel; + } + + #endregion + } +} diff --git a/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyInitilizeController.cs.meta b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyInitilizeController.cs.meta new file mode 100644 index 00000000..58f36215 --- /dev/null +++ b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyInitilizeController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1addded9479d78f4ab2c8b3a9fb89822 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyModel.cs b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyModel.cs new file mode 100644 index 00000000..7a4440d4 --- /dev/null +++ b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyModel.cs @@ -0,0 +1,45 @@ +using UnityEngine; + +namespace BeastHunter +{ + public class ButterflyModel + { + #region Fields + + private ButterflyData objData; + public Transform ObjTransform; + + public Vector3 TargetPoint; + public readonly float MaxFlyAltitude; + + public Vector3 CirclePoint; + public int RotateAroundDirection; + public bool IsCircling = false; + + public float SittingTimer; + public bool IsSitting = false; + + #endregion + + + #region ClassLifeCycle + + public ButterflyModel(GameObject butterflyObject, ButterflyData butterflyData) + { + objData = butterflyData; + ObjTransform = butterflyObject.transform; + ObjTransform.localScale *= objData.Struct.Size; + MaxFlyAltitude = ObjTransform.position.y + objData.Struct.MaxFlyAltitudeFromSpawn; + } + + #endregion + + + #region Methods + + public void Execute() => objData.Act(this); + public void OnTriggerEnter(Collider collider) => objData.TriggerEnter(collider, this); + + #endregion + } +} diff --git a/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyModel.cs.meta b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyModel.cs.meta new file mode 100644 index 00000000..880e3fd8 --- /dev/null +++ b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyModel.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 312ddfa946eb8b148942120ad73de566 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyStruct.cs b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyStruct.cs new file mode 100644 index 00000000..cb9fc374 --- /dev/null +++ b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyStruct.cs @@ -0,0 +1,45 @@ +using UnityEngine; +using System; + +[Serializable] +public struct ButterflyStruct +{ + #region Fields + + public GameObject Prefab; + + /// butterfly size + [Tooltip("Default: 0.5")] + public float Size; + + /// maximum distance of the coordinate from the current position + [Tooltip("Default: 10")] + public float MaxDistanceFromCurrentPosition; + + /// butterfly fly speed + [Tooltip("Default: 0.1")] + public float Speed; + + /// butterfly turn speed + [Tooltip("Default: 0.03")] + public float TurnSpeed; + + /// maximum butterfly flight height from the spawn point + [Tooltip("Default: 5")] + public float MaxFlyAltitudeFromSpawn; + + /// butterfly fly speed during a circular motion + [Tooltip("Default: 6")] + public float CircularRotationSpeed; + + /// Minimum circle size that the butterfly will fly + [Tooltip("Default: 1")] + public float MinCircleSize; + + /// Maximum circle size that the butterfly will fly + [Tooltip("Default: 3")] + public float MaxCircleSize; + + #endregion +} + diff --git a/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyStruct.cs.meta b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyStruct.cs.meta new file mode 100644 index 00000000..f211de51 --- /dev/null +++ b/Assets/Scripts/ContextTest/MVC/Butterfly/ButterflyStruct.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b83adf6f2ee790c469af6d880a760e8f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Contexts/GameContext.cs b/Assets/Scripts/Contexts/GameContext.cs index 2be72457..3c6b2116 100644 --- a/Assets/Scripts/Contexts/GameContext.cs +++ b/Assets/Scripts/Contexts/GameContext.cs @@ -9,6 +9,7 @@ public sealed class GameContext : Contexts { #region Fields + public ButterflyModel ButterflyModel; public StartDialogueModel StartDialogueModel; public DialogueSystemModel DialogueSystemModel; public QuestModel QuestModel; diff --git a/Assets/Scripts/Controllers/BaseControllers/MainControllers.cs b/Assets/Scripts/Controllers/BaseControllers/MainControllers.cs index 75138a86..76e40f7c 100644 --- a/Assets/Scripts/Controllers/BaseControllers/MainControllers.cs +++ b/Assets/Scripts/Controllers/BaseControllers/MainControllers.cs @@ -6,10 +6,15 @@ public sealed class MainControllers : ControllersStart public MainControllers(GameContext context) { - Add(new SphereInitilizeController(context)); + Add(new ButterflyInitilizeController(context)); Add(new InitializeInteractableObjectController(context)); - Add(new SphereController(context)); - Add(new TargetController(context)); + Add(new ButterflyController(context)); + + //Example Sphere + //Add(new SphereInitilizeController(context)); + //Add(new InitializeInteractableObjectController(context)); + //Add(new SphereController(context)); + //Add(new TargetController(context)); } #endregion diff --git a/Assets/Scripts/Data/Data.asset b/Assets/Scripts/Data/Data.asset index 79469fc9..8c66c25d 100644 --- a/Assets/Scripts/Data/Data.asset +++ b/Assets/Scripts/Data/Data.asset @@ -12,6 +12,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1b31b7596ae2b4a4ab972d36383fc2fb, type: 3} m_Name: Data m_EditorClassIdentifier: + _butterflyDataPath: _sphereDataPath: SphereData _characterDataPath: CharacterData _startDialogueDataPath: StartDialogueData diff --git a/Assets/Scripts/Data/Data.cs b/Assets/Scripts/Data/Data.cs index edc249b0..75b33411 100644 --- a/Assets/Scripts/Data/Data.cs +++ b/Assets/Scripts/Data/Data.cs @@ -6,6 +6,7 @@ namespace BeastHunter { public sealed class Data : ScriptableObject { #region Fields + [SerializeField] private string _butterflyDataPath; [SerializeField] private string _sphereDataPath; [SerializeField] private string _characterDataPath; [SerializeField] private string _startDialogueDataPath; @@ -14,6 +15,7 @@ public sealed class Data : ScriptableObject { private static Data _instance; + private static ButterflyData _butterflyData; private static SphereData _sphereData; private static CharacterData _characterData; private static StartDialogueData _startDialogueData; @@ -36,6 +38,18 @@ public static Data Instance { } } + public static ButterflyData ButterflyData + { + get + { + if (_butterflyData == null) + { + _butterflyData = Load("Data/" + Instance._butterflyDataPath); + } + return _butterflyData; + } + } + public static SphereData SphereData { get { if (_sphereData == null) { diff --git a/Assets/Scripts/Enum/InteractableObjectType.cs b/Assets/Scripts/Enum/InteractableObjectType.cs index ed8b0de5..bf07b86d 100644 --- a/Assets/Scripts/Enum/InteractableObjectType.cs +++ b/Assets/Scripts/Enum/InteractableObjectType.cs @@ -9,6 +9,7 @@ public enum InteractableObjectType Player = 4, Enemy = 5, HitBox = 6, - Npc = 7 + Npc = 7, + Butterfly = 8 } } diff --git a/Assets/Scripts/Managers/TagManager.cs b/Assets/Scripts/Managers/TagManager.cs index f28d4ff5..6651c32b 100644 --- a/Assets/Scripts/Managers/TagManager.cs +++ b/Assets/Scripts/Managers/TagManager.cs @@ -8,6 +8,7 @@ public static class TagManager public const string SPHERE = "Sphere"; public const string NPC = "NPC"; public const string ENEMY = "Enemy"; + public const string GROUND = "Ground"; #endregion }