From b92742cbeef59c4a2585b6e2d9548b7ae264de66 Mon Sep 17 00:00:00 2001 From: EmirHanMamak Date: Sat, 28 Feb 2026 01:57:05 +0300 Subject: [PATCH] feat(ObserverPattern): Add RealWorldUsage example to Observer --- .../Patterns/The Observer Pattern/Scene.meta | 3 - .../{Scene/WithEvent.meta => Shared.meta} | 2 +- .../{WithEvent/WithEvent => Shared}/Sfx.meta | 0 .../WithEvent => Shared}/Sfx/CoinSFX.wav | Bin .../WithEvent => Shared}/Sfx/CoinSFX.wav.meta | 0 .../WithEvent => Shared}/Texture.meta | 0 .../Texture/Jump_To_Freedom_BG.png | Bin .../Texture/Jump_To_Freedom_BG.png.meta | 0 .../WithEvent/Scene/01_BasicExample.unity | 854 ------------------ .../Scene/01_BasicExample_WithEvent.unity} | 0 ...a => 01_BasicExample_WithEvent.unity.meta} | 0 ...nity => 02_RealWorldUsage_WithEvent.unity} | 0 ...=> 02_RealWorldUsage_WithEvent.unity.meta} | 0 .../Scene.meta} | 2 +- .../{ => Scene}/01_BasicExample.meta | 0 .../{ => Scene}/02_RealWorldUsage.meta | 0 .../02_RealWorldUsage_WithoutEvent.unity | 566 ++++++++++++ ...02_RealWorldUsage_WithoutEvent.unity.meta} | 2 +- .../WithoutEvent/Script.meta | 8 + .../WithoutEvent/Script/01_BasicExample.meta | 8 + .../Script/02_RealWorldUsage.meta | 8 + .../Script/02_RealWorldUsage/Abstract.meta | 8 + .../02_RealWorldUsage/Abstract/Observer.cs | 9 + .../Abstract/Observer.cs.meta | 3 + .../02_RealWorldUsage/Abstract/Subject.cs | 26 + .../Abstract/Subject.cs.meta | 3 + .../02_RealWorldUsage/ClientObserver.cs | 34 + .../02_RealWorldUsage/ClientObserver.cs.meta | 3 + .../Script/02_RealWorldUsage/Observer.meta | 8 + .../Observer/CameraController.cs | 45 + .../Observer/CameraController.cs.meta | 3 + .../Observer/HUDContoller.cs | 50 + .../Observer/HUDContoller.cs.meta | 3 + .../Script/02_RealWorldUsage/Subject.meta | 8 + .../Subject/BikeController.cs | 86 ++ .../Subject/BikeController.cs.meta | 3 + ProjectSettings/EditorBuildSettings.asset | 2 +- UserSettings/EditorUserSettings.asset | 7 +- 38 files changed, 891 insertions(+), 863 deletions(-) delete mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene.meta rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/{Scene/WithEvent.meta => Shared.meta} (77%) rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/{WithEvent/WithEvent => Shared}/Sfx.meta (100%) rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/{WithEvent/WithEvent => Shared}/Sfx/CoinSFX.wav (100%) rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/{WithEvent/WithEvent => Shared}/Sfx/CoinSFX.wav.meta (100%) rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/{WithEvent/WithEvent => Shared}/Texture.meta (100%) rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/{WithEvent/WithEvent => Shared}/Texture/Jump_To_Freedom_BG.png (100%) rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/{WithEvent/WithEvent => Shared}/Texture/Jump_To_Freedom_BG.png.meta (100%) delete mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/01_BasicExample.unity rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/{Scene/WithEvent/01_BasicExample.unity => WithEvent/WithEvent/Scene/01_BasicExample_WithEvent.unity} (100%) rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/{01_BasicExample.unity.meta => 01_BasicExample_WithEvent.unity.meta} (100%) rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/{02_RealWorldUsage.unity => 02_RealWorldUsage_WithEvent.unity} (100%) rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/{02_RealWorldUsage.unity.meta => 02_RealWorldUsage_WithEvent.unity.meta} (100%) rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/{Scene/WithoutEvent.meta => WithoutEvent/Scene.meta} (77%) rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/{ => Scene}/01_BasicExample.meta (100%) rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/{ => Scene}/02_RealWorldUsage.meta (100%) create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene/02_RealWorldUsage/02_RealWorldUsage_WithoutEvent.unity rename Assets/Patterns_And_Principles/Patterns/The Observer Pattern/{Scene/WithEvent/01_BasicExample.unity.meta => WithoutEvent/Scene/02_RealWorldUsage/02_RealWorldUsage_WithoutEvent.unity.meta} (74%) create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script.meta create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/01_BasicExample.meta create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage.meta create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract.meta create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Observer.cs create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Observer.cs.meta create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Subject.cs create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Subject.cs.meta create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/ClientObserver.cs create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/ClientObserver.cs.meta create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer.meta create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/CameraController.cs create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/CameraController.cs.meta create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/HUDContoller.cs create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/HUDContoller.cs.meta create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Subject.meta create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Subject/BikeController.cs create mode 100644 Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Subject/BikeController.cs.meta diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene.meta deleted file mode 100644 index 5d99d3b..0000000 --- a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene.meta +++ /dev/null @@ -1,3 +0,0 @@ -fileFormatVersion: 2 -guid: cd9a25e27055e3947ab2b3ae3d1489d0 -timeCreated: 1772206557 \ No newline at end of file diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene/WithEvent.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared.meta similarity index 77% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene/WithEvent.meta rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared.meta index b6aa421..b6e24d8 100644 --- a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene/WithEvent.meta +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 6eac9a3ffc23b86459bb0a5ca071ed2b +guid: ae8643aa14a5dc84d9e33d02478676ea folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Sfx.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared/Sfx.meta similarity index 100% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Sfx.meta rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared/Sfx.meta diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Sfx/CoinSFX.wav b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared/Sfx/CoinSFX.wav similarity index 100% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Sfx/CoinSFX.wav rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared/Sfx/CoinSFX.wav diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Sfx/CoinSFX.wav.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared/Sfx/CoinSFX.wav.meta similarity index 100% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Sfx/CoinSFX.wav.meta rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared/Sfx/CoinSFX.wav.meta diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Texture.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared/Texture.meta similarity index 100% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Texture.meta rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared/Texture.meta diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Texture/Jump_To_Freedom_BG.png b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared/Texture/Jump_To_Freedom_BG.png similarity index 100% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Texture/Jump_To_Freedom_BG.png rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared/Texture/Jump_To_Freedom_BG.png diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Texture/Jump_To_Freedom_BG.png.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared/Texture/Jump_To_Freedom_BG.png.meta similarity index 100% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Texture/Jump_To_Freedom_BG.png.meta rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Shared/Texture/Jump_To_Freedom_BG.png.meta diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/01_BasicExample.unity b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/01_BasicExample.unity deleted file mode 100644 index 7e61f63..0000000 --- a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/01_BasicExample.unity +++ /dev/null @@ -1,854 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!29 &1 -OcclusionCullingSettings: - m_ObjectHideFlags: 0 - serializedVersion: 2 - m_OcclusionBakeSettings: - smallestOccluder: 5 - smallestHole: 0.25 - backfaceThreshold: 100 - m_SceneGUID: 00000000000000000000000000000000 - m_OcclusionCullingData: {fileID: 0} ---- !u!104 &2 -RenderSettings: - m_ObjectHideFlags: 0 - serializedVersion: 10 - m_Fog: 0 - m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} - m_FogMode: 3 - m_FogDensity: 0.01 - m_LinearFogStart: 0 - m_LinearFogEnd: 300 - m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} - m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} - m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} - m_AmbientIntensity: 1 - m_AmbientMode: 0 - m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} - m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} - m_HaloStrength: 0.5 - m_FlareStrength: 1 - m_FlareFadeSpeed: 3 - m_HaloTexture: {fileID: 0} - m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} - m_DefaultReflectionMode: 0 - m_DefaultReflectionResolution: 128 - m_ReflectionBounces: 1 - m_ReflectionIntensity: 1 - m_CustomReflection: {fileID: 0} - m_Sun: {fileID: 0} - m_UseRadianceAmbientProbe: 0 ---- !u!157 &3 -LightmapSettings: - m_ObjectHideFlags: 0 - serializedVersion: 13 - m_BakeOnSceneLoad: 0 - m_GISettings: - serializedVersion: 2 - m_BounceScale: 1 - m_IndirectOutputScale: 1 - m_AlbedoBoost: 1 - m_EnvironmentLightingMode: 0 - m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 0 - m_LightmapEditorSettings: - serializedVersion: 12 - m_Resolution: 2 - m_BakeResolution: 40 - m_AtlasSize: 1024 - m_AO: 0 - m_AOMaxDistance: 1 - m_CompAOExponent: 1 - m_CompAOExponentDirect: 0 - m_ExtractAmbientOcclusion: 0 - m_Padding: 2 - m_LightmapParameters: {fileID: 0} - m_LightmapsBakeMode: 1 - m_TextureCompression: 1 - m_ReflectionCompression: 2 - m_MixedBakeMode: 2 - m_BakeBackend: 1 - m_PVRSampling: 1 - m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 512 - m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 256 - m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 1 - m_PVRDenoiserTypeDirect: 1 - m_PVRDenoiserTypeIndirect: 1 - m_PVRDenoiserTypeAO: 1 - m_PVRFilterTypeDirect: 0 - m_PVRFilterTypeIndirect: 0 - m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 1 - m_PVRCulling: 1 - m_PVRFilteringGaussRadiusDirect: 1 - m_PVRFilteringGaussRadiusIndirect: 5 - m_PVRFilteringGaussRadiusAO: 2 - m_PVRFilteringAtrousPositionSigmaDirect: 0.5 - m_PVRFilteringAtrousPositionSigmaIndirect: 2 - m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ExportTrainingData: 0 - m_TrainingDataDestination: TrainingData - m_LightProbeSampleCountMultiplier: 4 - m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} - m_LightingSettings: {fileID: 0} ---- !u!196 &4 -NavMeshSettings: - serializedVersion: 2 - m_ObjectHideFlags: 0 - m_BuildSettings: - serializedVersion: 3 - agentTypeID: 0 - agentRadius: 0.5 - agentHeight: 2 - agentSlope: 45 - agentClimb: 0.4 - ledgeDropHeight: 0 - maxJumpAcrossDistance: 0 - minRegionArea: 2 - manualCellSize: 0 - cellSize: 0.16666667 - manualTileSize: 0 - tileSize: 256 - buildHeightMesh: 0 - maxJobWorkers: 0 - preserveTilesOutsideBounds: 0 - debug: - m_Flags: 0 - m_NavMeshData: {fileID: 0} ---- !u!1 &52907385 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 52907386} - - component: {fileID: 52907388} - - component: {fileID: 52907387} - m_Layer: 5 - m_Name: Text (TMP) - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &52907386 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 52907385} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1420139590} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -30, y: 0} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &52907387 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 52907385} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_text: Invoke Subject - m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2100000, guid: e73a58f6e2794ae7b1b7e50b7fb811b0, type: 2} - m_fontSharedMaterials: [] - m_fontMaterial: {fileID: 0} - m_fontMaterials: [] - m_fontColor32: - serializedVersion: 2 - rgba: 4281479730 - m_fontColor: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} - m_enableVertexGradient: 0 - m_colorMode: 3 - m_fontColorGradient: - topLeft: {r: 1, g: 1, b: 1, a: 1} - topRight: {r: 1, g: 1, b: 1, a: 1} - bottomLeft: {r: 1, g: 1, b: 1, a: 1} - bottomRight: {r: 1, g: 1, b: 1, a: 1} - m_fontColorGradientPreset: {fileID: 0} - m_spriteAsset: {fileID: 0} - m_tintAllSprites: 0 - m_StyleSheet: {fileID: 0} - m_TextStyleHashCode: -1183493901 - m_overrideHtmlColors: 0 - m_faceColor: - serializedVersion: 2 - rgba: 4294967295 - m_fontSize: 40.95 - m_fontSizeBase: 24 - m_fontWeight: 400 - m_enableAutoSizing: 1 - m_fontSizeMin: 0 - m_fontSizeMax: 128 - m_fontStyle: 0 - m_HorizontalAlignment: 2 - m_VerticalAlignment: 512 - m_textAlignment: 65535 - m_characterSpacing: 0 - m_wordSpacing: 0 - m_lineSpacing: 0 - m_lineSpacingMax: 0 - m_paragraphSpacing: 0 - m_charWidthMaxAdj: 0 - m_TextWrappingMode: 0 - m_wordWrappingRatios: 0.4 - m_overflowMode: 0 - m_linkedTextComponent: {fileID: 0} - parentLinkedComponent: {fileID: 0} - m_enableKerning: 0 - m_ActiveFontFeatures: - m_enableExtraPadding: 0 - checkPaddingRequired: 0 - m_isRichText: 1 - m_EmojiFallbackSupport: 1 - m_parseCtrlCharacters: 1 - m_isOrthographic: 1 - m_isCullingEnabled: 0 - m_horizontalMapping: 0 - m_verticalMapping: 0 - m_uvLineOffset: 0 - m_geometrySortingOrder: 0 - m_IsTextObjectScaleStatic: 0 - m_VertexBufferAutoSizeReduction: 0 - m_useMaxVisibleDescender: 1 - m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} - m_isUsingLegacyAnimationComponent: 0 - m_isVolumetricText: 0 - m_hasFontAssetChanged: 0 - m_baseMaterial: {fileID: 0} - m_maskOffset: {x: 0, y: 0, z: 0, w: 0} ---- !u!222 &52907388 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 52907385} - m_CullTransparentMesh: 1 ---- !u!1 &318053841 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 318053844} - - component: {fileID: 318053843} - - component: {fileID: 318053842} - m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &318053842 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 318053841} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 01614664b831546d2ae94a42149d80ac, type: 3} - m_Name: - m_EditorClassIdentifier: - m_SendPointerHoverToParent: 1 - m_MoveRepeatDelay: 0.5 - m_MoveRepeatRate: 0.1 - m_XRTrackingOrigin: {fileID: 0} - m_ActionsAsset: {fileID: -944628639613478452, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} - m_PointAction: {fileID: -1654692200621890270, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} - m_MoveAction: {fileID: -8784545083839296357, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} - m_SubmitAction: {fileID: 392368643174621059, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} - m_CancelAction: {fileID: 7727032971491509709, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} - m_LeftClickAction: {fileID: 3001919216989983466, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} - m_MiddleClickAction: {fileID: -2185481485913320682, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} - m_RightClickAction: {fileID: -4090225696740746782, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} - m_ScrollWheelAction: {fileID: 6240969308177333660, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} - m_TrackedDevicePositionAction: {fileID: 6564999863303420839, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} - m_TrackedDeviceOrientationAction: {fileID: 7970375526676320489, guid: ca9f5fa95ffab41fb9a615ab714db018, type: 3} - m_DeselectOnBackgroundClick: 1 - m_PointerBehavior: 0 - m_CursorLockBehavior: 0 - m_ScrollDeltaPerTick: 6 ---- !u!114 &318053843 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 318053841} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 10 ---- !u!4 &318053844 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 318053841} - serializedVersion: 2 - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -960, y: -540, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 711537155} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &330585543 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 330585546} - - component: {fileID: 330585545} - - component: {fileID: 330585544} - - component: {fileID: 330585547} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &330585544 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} - m_Enabled: 1 ---- !u!20 &330585545 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_Iso: 200 - m_ShutterSpeed: 0.005 - m_Aperture: 16 - m_FocusDistance: 10 - m_FocalLength: 50 - m_BladeCount: 5 - m_Curvature: {x: 2, y: 11} - m_BarrelClipping: 0.25 - m_Anamorphism: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 1000 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &330585546 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -10} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!114 &330585547 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 330585543} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_RenderShadows: 1 - m_RequiresDepthTextureOption: 2 - m_RequiresOpaqueTextureOption: 2 - m_CameraType: 0 - m_Cameras: [] - m_RendererIndex: -1 - m_VolumeLayerMask: - serializedVersion: 2 - m_Bits: 1 - m_VolumeTrigger: {fileID: 0} - m_VolumeFrameworkUpdateModeOption: 2 - m_RenderPostProcessing: 1 - m_Antialiasing: 0 - m_AntialiasingQuality: 2 - m_StopNaN: 0 - m_Dithering: 0 - m_ClearDepth: 1 - m_AllowXRRendering: 1 - m_AllowHDROutput: 1 - m_UseScreenCoordOverride: 0 - m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} - m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} - m_RequiresDepthTexture: 0 - m_RequiresColorTexture: 0 - m_Version: 2 - m_TaaSettings: - m_Quality: 3 - m_FrameInfluence: 0.1 - m_JitterScale: 1 - m_MipBias: 0 - m_VarianceClampScale: 0.9 - m_ContrastAdaptiveSharpening: 0 ---- !u!1 &711537154 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 711537155} - - component: {fileID: 711537157} - - component: {fileID: 711537156} - m_Layer: 5 - m_Name: Panel - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &711537155 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 711537154} - 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: 1420139590} - - {fileID: 1240246227} - - {fileID: 318053844} - m_Father: {fileID: 1342425452} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 1, y: 1} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: -400, y: -400} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &711537156 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 711537154} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 0.392} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10907, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &711537157 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 711537154} - m_CullTransparentMesh: 1 ---- !u!1 &1240246226 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1240246227} - - component: {fileID: 1240246228} - m_Layer: 5 - m_Name: Observer - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1240246227 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1240246226} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 711537155} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 100, y: 100} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1240246228 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1240246226} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4d8a9962935b41b182df4fa29ed78bf2, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1 &1342425448 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1342425452} - - component: {fileID: 1342425451} - - component: {fileID: 1342425450} - - component: {fileID: 1342425449} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &1342425449 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1342425448} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &1342425450 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1342425448} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 1 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 1920, y: 1080} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0.5 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 - m_PresetInfoIsWorld: 0 ---- !u!223 &1342425451 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1342425448} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_VertexColorAlwaysGammaSpace: 0 - m_AdditionalShaderChannelsFlag: 25 - m_UpdateRectTransformForStandalone: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!224 &1342425452 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1342425448} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 0, y: 0, z: 0} - m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 711537155} - m_Father: {fileID: 0} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 0} - m_AnchorMax: {x: 0, y: 0} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 0, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!1 &1420139589 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1420139590} - - component: {fileID: 1420139593} - - component: {fileID: 1420139592} - - component: {fileID: 1420139591} - - component: {fileID: 1420139594} - m_Layer: 5 - m_Name: Subject_Button - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1420139590 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1420139589} - 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: 52907386} - m_Father: {fileID: 711537155} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0.5, y: 0.5} - m_AnchorMax: {x: 0.5, y: 0.5} - m_AnchoredPosition: {x: 0, y: 0} - m_SizeDelta: {x: 300, y: 200} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1420139591 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1420139589} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - m_WrapAround: 0 - m_SelectOnUp: {fileID: 0} - m_SelectOnDown: {fileID: 0} - m_SelectOnLeft: {fileID: 0} - m_SelectOnRight: {fileID: 0} - m_Transition: 1 - m_Colors: - m_NormalColor: {r: 1, g: 1, b: 1, a: 1} - m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} - m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} - m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} - m_ColorMultiplier: 1 - m_FadeDuration: 0.1 - m_SpriteState: - m_HighlightedSprite: {fileID: 0} - m_PressedSprite: {fileID: 0} - m_SelectedSprite: {fileID: 0} - m_DisabledSprite: {fileID: 0} - m_AnimationTriggers: - m_NormalTrigger: Normal - m_HighlightedTrigger: Highlighted - m_PressedTrigger: Pressed - m_SelectedTrigger: Selected - m_DisabledTrigger: Disabled - m_Interactable: 1 - m_TargetGraphic: {fileID: 1420139592} - m_OnClick: - m_PersistentCalls: - m_Calls: - - m_Target: {fileID: 1420139594} - m_TargetAssemblyTypeName: Patterns_And_Principles.Patterns.The_Observer_Pattern.Scripts.WithEvent._01_BasicExample.Subject, - Assembly-CSharp - m_MethodName: OnThingHappened - m_Mode: 1 - m_Arguments: - m_ObjectArgument: {fileID: 0} - m_ObjectArgumentAssemblyTypeName: UnityEngine.Object, UnityEngine - m_IntArgument: 0 - m_FloatArgument: 0 - m_StringArgument: - m_BoolArgument: 0 - m_CallState: 2 ---- !u!114 &1420139592 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1420139589} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Material: {fileID: 0} - m_Color: {r: 1, g: 1, b: 1, a: 1} - m_RaycastTarget: 1 - m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} - m_Maskable: 1 - m_OnCullStateChanged: - m_PersistentCalls: - m_Calls: [] - m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} - m_Type: 1 - m_PreserveAspect: 0 - m_FillCenter: 1 - m_FillMethod: 4 - m_FillAmount: 1 - m_FillClockwise: 1 - m_FillOrigin: 0 - m_UseSpriteMesh: 0 - m_PixelsPerUnitMultiplier: 1 ---- !u!222 &1420139593 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1420139589} - m_CullTransparentMesh: 1 ---- !u!114 &1420139594 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1420139589} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dd6ea123079a4c97be7f98fca68a88a1, type: 3} - m_Name: - m_EditorClassIdentifier: ---- !u!1660057539 &9223372036854775807 -SceneRoots: - m_ObjectHideFlags: 0 - m_Roots: - - {fileID: 330585546} - - {fileID: 1342425452} diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene/WithEvent/01_BasicExample.unity b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/01_BasicExample_WithEvent.unity similarity index 100% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene/WithEvent/01_BasicExample.unity rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/01_BasicExample_WithEvent.unity diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/01_BasicExample.unity.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/01_BasicExample_WithEvent.unity.meta similarity index 100% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/01_BasicExample.unity.meta rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/01_BasicExample_WithEvent.unity.meta diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/02_RealWorldUsage.unity b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/02_RealWorldUsage_WithEvent.unity similarity index 100% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/02_RealWorldUsage.unity rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/02_RealWorldUsage_WithEvent.unity diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/02_RealWorldUsage.unity.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/02_RealWorldUsage_WithEvent.unity.meta similarity index 100% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/02_RealWorldUsage.unity.meta rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/02_RealWorldUsage_WithEvent.unity.meta diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene/WithoutEvent.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene.meta similarity index 77% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene/WithoutEvent.meta rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene.meta index 7d978a2..5c75fc2 100644 --- a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene/WithoutEvent.meta +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 872aa17cdc754fb4ca9687eef9c07690 +guid: 744333a9996bbe64380bfcc6596eb75d folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/01_BasicExample.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene/01_BasicExample.meta similarity index 100% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/01_BasicExample.meta rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene/01_BasicExample.meta diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/02_RealWorldUsage.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene/02_RealWorldUsage.meta similarity index 100% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/02_RealWorldUsage.meta rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene/02_RealWorldUsage.meta diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene/02_RealWorldUsage/02_RealWorldUsage_WithoutEvent.unity b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene/02_RealWorldUsage/02_RealWorldUsage_WithoutEvent.unity new file mode 100644 index 0000000..096a6fa --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene/02_RealWorldUsage/02_RealWorldUsage_WithoutEvent.unity @@ -0,0 +1,566 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!29 &1 +OcclusionCullingSettings: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_OcclusionBakeSettings: + smallestOccluder: 5 + smallestHole: 0.25 + backfaceThreshold: 100 + m_SceneGUID: 00000000000000000000000000000000 + m_OcclusionCullingData: {fileID: 0} +--- !u!104 &2 +RenderSettings: + m_ObjectHideFlags: 0 + serializedVersion: 10 + m_Fog: 0 + m_FogColor: {r: 0.5, g: 0.5, b: 0.5, a: 1} + m_FogMode: 3 + m_FogDensity: 0.01 + m_LinearFogStart: 0 + m_LinearFogEnd: 300 + m_AmbientSkyColor: {r: 0.212, g: 0.227, b: 0.259, a: 1} + m_AmbientEquatorColor: {r: 0.114, g: 0.125, b: 0.133, a: 1} + m_AmbientGroundColor: {r: 0.047, g: 0.043, b: 0.035, a: 1} + m_AmbientIntensity: 1 + m_AmbientMode: 0 + m_SubtractiveShadowColor: {r: 0.42, g: 0.478, b: 0.627, a: 1} + m_SkyboxMaterial: {fileID: 10304, guid: 0000000000000000f000000000000000, type: 0} + m_HaloStrength: 0.5 + m_FlareStrength: 1 + m_FlareFadeSpeed: 3 + m_HaloTexture: {fileID: 0} + m_SpotCookie: {fileID: 10001, guid: 0000000000000000e000000000000000, type: 0} + m_DefaultReflectionMode: 0 + m_DefaultReflectionResolution: 128 + m_ReflectionBounces: 1 + m_ReflectionIntensity: 1 + m_CustomReflection: {fileID: 0} + m_Sun: {fileID: 0} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 13 + m_BakeOnSceneLoad: 0 + m_GISettings: + serializedVersion: 2 + m_BounceScale: 1 + m_IndirectOutputScale: 1 + m_AlbedoBoost: 1 + m_EnvironmentLightingMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 0 + m_LightmapEditorSettings: + serializedVersion: 12 + m_Resolution: 2 + m_BakeResolution: 40 + m_AtlasSize: 1024 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 + m_Padding: 2 + m_LightmapParameters: {fileID: 0} + m_LightmapsBakeMode: 1 + m_TextureCompression: 1 + m_ReflectionCompression: 2 + m_MixedBakeMode: 2 + m_BakeBackend: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 512 + m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 256 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVREnvironmentMIS: 1 + m_PVRCulling: 1 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 1 + m_PVRFilteringGaussRadiusAO: 1 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 + m_LightingDataAsset: {fileID: 20201, guid: 0000000000000000f000000000000000, type: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 3 + agentTypeID: 0 + agentRadius: 0.5 + agentHeight: 2 + agentSlope: 45 + agentClimb: 0.4 + ledgeDropHeight: 0 + maxJumpAcrossDistance: 0 + minRegionArea: 2 + manualCellSize: 0 + cellSize: 0.16666667 + manualTileSize: 0 + tileSize: 256 + buildHeightMesh: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &248892156 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 248892161} + - component: {fileID: 248892160} + - component: {fileID: 248892159} + - component: {fileID: 248892158} + - component: {fileID: 248892157} + m_Layer: 0 + m_Name: BikeController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &248892157 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 248892156} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f82286a8669247b1a00fd9845055bf92, type: 3} + m_Name: + m_EditorClassIdentifier: + health: 100 +--- !u!65 &248892158 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 248892156} + m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_IsTrigger: 0 + m_ProvidesContacts: 0 + m_Enabled: 1 + serializedVersion: 3 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &248892159 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 248892156} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RayTracingAccelStructBuildFlagsOverride: 0 + m_RayTracingAccelStructBuildFlags: 1 + m_SmallMeshCulling: 1 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 31321ba15b8f8eb4c954353edc038b1d, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!33 &248892160 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 248892156} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &248892161 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 248892156} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1077043155 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1077043158} + - component: {fileID: 1077043157} + - component: {fileID: 1077043156} + - component: {fileID: 1077043159} + - component: {fileID: 1077043160} + m_Layer: 0 + m_Name: Main Camera + m_TagString: MainCamera + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!81 &1077043156 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1077043155} + m_Enabled: 1 +--- !u!20 &1077043157 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1077043155} + m_Enabled: 1 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &1077043158 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1077043155} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1077043159 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1077043155} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a79441f348de89743a2939f4d699eac1, type: 3} + m_Name: + m_EditorClassIdentifier: + m_RenderShadows: 1 + m_RequiresDepthTextureOption: 2 + m_RequiresOpaqueTextureOption: 2 + m_CameraType: 0 + m_Cameras: [] + m_RendererIndex: -1 + m_VolumeLayerMask: + serializedVersion: 2 + m_Bits: 1 + m_VolumeTrigger: {fileID: 0} + m_VolumeFrameworkUpdateModeOption: 2 + m_RenderPostProcessing: 0 + m_Antialiasing: 0 + m_AntialiasingQuality: 2 + m_StopNaN: 0 + m_Dithering: 0 + m_ClearDepth: 1 + m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} + m_RequiresDepthTexture: 0 + m_RequiresColorTexture: 0 + m_Version: 2 + m_TaaSettings: + m_Quality: 3 + m_FrameInfluence: 0.1 + m_JitterScale: 1 + m_MipBias: 0 + m_VarianceClampScale: 0.9 + m_ContrastAdaptiveSharpening: 0 +--- !u!114 &1077043160 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1077043155} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a8d257f7140b4e3b8f01ef044b77fd4a, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1584716712 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1584716714} + - component: {fileID: 1584716713} + - component: {fileID: 1584716715} + m_Layer: 0 + m_Name: Directional Light + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!108 &1584716713 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1584716712} + m_Enabled: 1 + serializedVersion: 11 + m_Type: 1 + m_Color: {r: 1, g: 0.95686275, b: 0.8392157, a: 1} + m_Intensity: 1 + m_Range: 10 + m_SpotAngle: 30 + m_InnerSpotAngle: 21.80208 + m_CookieSize: 10 + m_Shadows: + m_Type: 2 + m_Resolution: -1 + m_CustomResolution: -1 + m_Strength: 1 + m_Bias: 0.05 + m_NormalBias: 0.4 + m_NearPlane: 0.2 + m_CullingMatrixOverride: + e00: 1 + e01: 0 + e02: 0 + e03: 0 + e10: 0 + e11: 1 + e12: 0 + e13: 0 + e20: 0 + e21: 0 + e22: 1 + e23: 0 + e30: 0 + e31: 0 + e32: 0 + e33: 1 + m_UseCullingMatrixOverride: 0 + m_Cookie: {fileID: 0} + m_DrawHalo: 0 + m_Flare: {fileID: 0} + m_RenderMode: 0 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingLayerMask: 1 + m_Lightmapping: 4 + m_LightShadowCasterMode: 0 + m_AreaSize: {x: 1, y: 1} + m_BounceIntensity: 1 + m_ColorTemperature: 6570 + m_UseColorTemperature: 0 + m_BoundingSphereOverride: {x: 0, y: 0, z: 0, w: 0} + m_UseBoundingSphereOverride: 0 + m_UseViewFrustumForShadowCasterCull: 1 + m_ForceVisible: 0 + m_ShadowRadius: 0 + m_ShadowAngle: 0 + m_LightUnit: 1 + m_LuxAtDistance: 1 + m_EnableSpotReflector: 1 +--- !u!4 &1584716714 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1584716712} + serializedVersion: 2 + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 3, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!114 &1584716715 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1584716712} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Version: 3 + m_UsePipelineSettings: 1 + m_AdditionalLightsShadowResolutionTier: 2 + m_LightLayerMask: 1 + m_RenderingLayers: 1 + m_CustomShadowLayers: 0 + m_ShadowLayerMask: 1 + m_ShadowRenderingLayers: 1 + m_LightCookieSize: {x: 1, y: 1} + m_LightCookieOffset: {x: 0, y: 0} + m_SoftShadowQuality: 0 +--- !u!1 &1985147610 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1985147611} + - component: {fileID: 1985147612} + m_Layer: 0 + m_Name: ClientObserver + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1985147611 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1985147610} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 1, z: -10} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1985147612 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1985147610} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 636992c737ec40f881267c699f2c8c93, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 1077043158} + - {fileID: 1584716714} + - {fileID: 248892161} + - {fileID: 1985147611} diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene/WithEvent/01_BasicExample.unity.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene/02_RealWorldUsage/02_RealWorldUsage_WithoutEvent.unity.meta similarity index 74% rename from Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene/WithEvent/01_BasicExample.unity.meta rename to Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene/02_RealWorldUsage/02_RealWorldUsage_WithoutEvent.unity.meta index 7a3d6c0..210c557 100644 --- a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene/WithEvent/01_BasicExample.unity.meta +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Scene/02_RealWorldUsage/02_RealWorldUsage_WithoutEvent.unity.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 90869632ff4619849b9b1990ec495f72 +guid: 0200b6bd6bfacde45b1ea6b27fbe55f8 DefaultImporter: externalObjects: {} userData: diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script.meta new file mode 100644 index 0000000..55a284e --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 51c6ec187162135448f4498527148ab1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/01_BasicExample.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/01_BasicExample.meta new file mode 100644 index 0000000..129eca6 --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/01_BasicExample.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b69807096c5b48d4fb5d64f82c89f0df +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage.meta new file mode 100644 index 0000000..ca98e8e --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e04f27fafa218854680ab44d86063295 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract.meta new file mode 100644 index 0000000..a9d4a21 --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1d9061cade448eb4d904fd438ac201c7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Observer.cs b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Observer.cs new file mode 100644 index 0000000..5673a43 --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Observer.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +namespace Patterns_And_Principles.Patterns.The_Observer_Pattern.WithoutEvent.Script._02_RealWorldUsage.Abstract +{ + public abstract class Observer : MonoBehaviour + { + public abstract void Notify(Subject subject); + } +} \ No newline at end of file diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Observer.cs.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Observer.cs.meta new file mode 100644 index 0000000..68cba08 --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Observer.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: e98d3f6b50ef4d0cb99b9b563b84a100 +timeCreated: 1772230669 \ No newline at end of file diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Subject.cs b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Subject.cs new file mode 100644 index 0000000..7e85b78 --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Subject.cs @@ -0,0 +1,26 @@ +using System.Collections; +using UnityEngine; + +namespace Patterns_And_Principles.Patterns.The_Observer_Pattern.WithoutEvent.Script._02_RealWorldUsage.Abstract +{ + public abstract class Subject : MonoBehaviour + { + private readonly ArrayList _observers = new ArrayList(); + + public void Attach(Observer observer) + { + _observers.Add(observer); + } + public void Detach(Observer observer) + { + _observers.Remove(observer); + } + public void NotifyObservers() + { + foreach (Observer observer in _observers) + { + observer.Notify(this); + } + } + } +} \ No newline at end of file diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Subject.cs.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Subject.cs.meta new file mode 100644 index 0000000..111feaa --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Abstract/Subject.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 85665f7bc56d40e68788f9a95242e8c1 +timeCreated: 1772230439 \ No newline at end of file diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/ClientObserver.cs b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/ClientObserver.cs new file mode 100644 index 0000000..9ca6e3d --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/ClientObserver.cs @@ -0,0 +1,34 @@ +using System; +using Patterns_And_Principles.Patterns.The_Observer_Pattern.WithoutEvent.Script._02_RealWorldUsage.Subject; +using UnityEngine; + +namespace Patterns_And_Principles.Patterns.The_Observer_Pattern.WithoutEvent.Script._02_RealWorldUsage +{ + public class ClientObserver : MonoBehaviour + { + private BikeController _bikeController; + + private void Start() + { + _bikeController = (BikeController)FindObjectOfType(typeof(BikeController)); + } + + private void OnGUI() + { + if (GUILayout.Button("Damage Bike")) + { + if (_bikeController) + { + _bikeController.TakeDamage(15f); + } + } + if (GUILayout.Button("Toggle Turbo")) + { + if (_bikeController) + { + _bikeController.ToggleTurbo(); + } + } + } + } +} \ No newline at end of file diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/ClientObserver.cs.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/ClientObserver.cs.meta new file mode 100644 index 0000000..db222c5 --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/ClientObserver.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 636992c737ec40f881267c699f2c8c93 +timeCreated: 1772232408 \ No newline at end of file diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer.meta new file mode 100644 index 0000000..373b444 --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8a2df6920e0588c42a08791b2f270e03 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/CameraController.cs b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/CameraController.cs new file mode 100644 index 0000000..7b24c8f --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/CameraController.cs @@ -0,0 +1,45 @@ +using System; +using Patterns_And_Principles.Patterns.The_Observer_Pattern.WithoutEvent.Script._02_RealWorldUsage.Subject; +using UnityEngine; +using Random = UnityEngine.Random; + +namespace Patterns_And_Principles.Patterns.The_Observer_Pattern.WithoutEvent.Script._02_RealWorldUsage.Observer +{ + public class CameraController : Abstract.Observer + { + private bool _isTurboOn; + private Vector3 _initalPosition; + private float _shakingMagnitude = 0.1f; + private BikeController _bikeController; + + private void OnEnable() + { + _initalPosition = gameObject.transform.localPosition; + } + + private void Update() + { + if (_isTurboOn) + { + gameObject.transform.localPosition = _initalPosition + (Random.insideUnitSphere * _shakingMagnitude); + } + else + { + gameObject.transform.localPosition = _initalPosition; + } + } + + public override void Notify(Abstract.Subject subject) + { + if (!_bikeController) + { + _bikeController = subject.GetComponent(); + } + + if (_bikeController) + { + _isTurboOn = _bikeController.IsTurboOn; + } + } + } +} \ No newline at end of file diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/CameraController.cs.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/CameraController.cs.meta new file mode 100644 index 0000000..dd1dfe1 --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/CameraController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: a8d257f7140b4e3b8f01ef044b77fd4a +timeCreated: 1772231734 \ No newline at end of file diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/HUDContoller.cs b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/HUDContoller.cs new file mode 100644 index 0000000..1cdd782 --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/HUDContoller.cs @@ -0,0 +1,50 @@ +using System; +using Patterns_And_Principles.Patterns.The_Observer_Pattern.WithoutEvent.Script._02_RealWorldUsage.Subject; +using UnityEngine; + +namespace Patterns_And_Principles.Patterns.The_Observer_Pattern.WithoutEvent.Script._02_RealWorldUsage.Observer +{ + public class HUDContoller : Abstract.Observer + { + private bool _isTurboOn; + private float _currentHealth; + private BikeController _bikeController; + + private void OnGUI() + { + GUILayout.BeginArea(new Rect(50, 50, 200, 200)); + + GUILayout.Label("Health: " + _currentHealth); + + if (_isTurboOn) + { + GUILayout.BeginHorizontal("box"); + GUILayout.Label("Turbo Activated!"); + GUILayout.EndHorizontal(); + } + + if (_currentHealth <= 50f) + { + GUILayout.BeginHorizontal("box"); + GUILayout.Label("WARNING Low Health"); + GUILayout.EndHorizontal(); + } + + GUILayout.EndArea(); + } + + public override void Notify(Abstract.Subject subject) + { + if (!_bikeController) + { + _bikeController = subject.GetComponent(); + } + + if (_bikeController) + { + _isTurboOn = _bikeController.IsTurboOn; + _currentHealth = _bikeController.CurrentHealth; + } + } + } +} \ No newline at end of file diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/HUDContoller.cs.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/HUDContoller.cs.meta new file mode 100644 index 0000000..42c183c --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Observer/HUDContoller.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f45328b77da240b3b310909f8049306a +timeCreated: 1772231259 \ No newline at end of file diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Subject.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Subject.meta new file mode 100644 index 0000000..dfd0ac4 --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Subject.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1acc0a21a615c7740932603b30425257 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Subject/BikeController.cs b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Subject/BikeController.cs new file mode 100644 index 0000000..24a2298 --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Subject/BikeController.cs @@ -0,0 +1,86 @@ +using System; +using Patterns_And_Principles.Patterns.The_Observer_Pattern.WithoutEvent.Script._02_RealWorldUsage.Observer; +using UnityEngine; + +namespace Patterns_And_Principles.Patterns.The_Observer_Pattern.WithoutEvent.Script._02_RealWorldUsage.Subject +{ + public class BikeController : Abstract.Subject + { + public bool IsTurboOn { get; private set; } + + public float CurrentHealth + { + get { return health; } + } + + private bool _isEngineOn; + private HUDContoller _hudContoller; + private CameraController _cameraController; + + [SerializeField] + private float health; + + private void OnEnable() + { + if (_hudContoller) + { + Attach(_hudContoller); + } + + if (_cameraController) + { + Attach(_cameraController); + } + } + + private void OnDisable() + { + if (_hudContoller) + { + Detach(_hudContoller); + } + + if (_cameraController) + { + Detach(_cameraController); + } + } + + private void Awake() + { + _hudContoller = gameObject.AddComponent(); + _cameraController = (CameraController)FindObjectOfType(typeof(CameraController)); + } + + private void Start() + { + StartEngine(); + } + + private void StartEngine() + { + _isEngineOn = true; + NotifyObservers(); + } + + public void ToggleTurbo() + { + if (_isEngineOn) + { + IsTurboOn = !IsTurboOn; + } + NotifyObservers(); + } + + public void TakeDamage(float amount) + { + health -= amount; + IsTurboOn = false; + NotifyObservers(); + if (health <= 0) + { + Destroy(gameObject); + } + } + } +} \ No newline at end of file diff --git a/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Subject/BikeController.cs.meta b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Subject/BikeController.cs.meta new file mode 100644 index 0000000..2c82596 --- /dev/null +++ b/Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithoutEvent/Script/02_RealWorldUsage/Subject/BikeController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: f82286a8669247b1a00fd9845055bf92 +timeCreated: 1772230875 \ No newline at end of file diff --git a/ProjectSettings/EditorBuildSettings.asset b/ProjectSettings/EditorBuildSettings.asset index 8570621..1cf5ebf 100644 --- a/ProjectSettings/EditorBuildSettings.asset +++ b/ProjectSettings/EditorBuildSettings.asset @@ -6,7 +6,7 @@ EditorBuildSettings: serializedVersion: 2 m_Scenes: - enabled: 1 - path: Assets/Patterns_And_Principles/Patterns/The Observer Pattern/Scene/WithEvent/01_BasicExample.unity + path: Assets/Patterns_And_Principles/Patterns/The Observer Pattern/WithEvent/WithEvent/Scene/01_BasicExample_WithEvent.unity guid: 99c9720ab356a0642a771bea13969a05 m_configObjects: com.unity.input.settings.actions: {fileID: -944628639613478452, guid: 052faaac586de48259a63d0c4782560b, type: 3} diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index 822a39e..df03f18 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -12,10 +12,13 @@ EditorUserSettings: value: 5a08575f5207595a0f5d59741173094444164f7d7d2a23317c7a4465bbe1646d flags: 0 RecentlyUsedSceneGuid-1: - value: 0507525f5c545a035a59087414720e44141641797c70253274784b64b2e3376d + value: 5a010c505c035a090b085874417a07444f1541287d717f60282a496ab7e6636a flags: 0 RecentlyUsedSceneGuid-2: - value: 5a010c505c035a090b085874417a07444f1541287d717f60282a496ab7e6636a + value: 0507525f5c545a035a59087414720e44141641797c70253274784b64b2e3376d + flags: 0 + RecentlyUsedSceneGuid-3: + value: 5303045607030b5f5b0c0a2313275a444315492f2d7e24627a2f1f36b7b53260 flags: 0 lightmappingBakingProfile: value: 51