From e92332ee3d2fca0d51d879802694b0cac608fcf8 Mon Sep 17 00:00:00 2001 From: Masoud Darvishian Date: Mon, 27 Dec 2021 11:01:23 +0330 Subject: [PATCH 01/68] Improve the implementation of SingletonUnity.cs --- .../5. Singleton/Scripts/SingletonUnity.cs | 55 ++++++++++--------- 1 file changed, 28 insertions(+), 27 deletions(-) diff --git a/Assets/Patterns/5. Singleton/Scripts/SingletonUnity.cs b/Assets/Patterns/5. Singleton/Scripts/SingletonUnity.cs index b73e8bf..00c9292 100644 --- a/Assets/Patterns/5. Singleton/Scripts/SingletonUnity.cs +++ b/Assets/Patterns/5. Singleton/Scripts/SingletonUnity.cs @@ -1,5 +1,3 @@ -using System.Collections; -using System.Collections.Generic; using UnityEngine; // @@ -28,36 +26,20 @@ public static SingletonUnity Instance { if (instance == null) { - //If a script in Unity inherits from MonoBehaviour, we can't use the new keyword to create a new Singleton as we did before - //So you have to manually add this script to a gameobject in the scene - //But because we inherit from MonoBehaviour whem might have accidentally added several of them to the scene, which will cause trouble, so we have to make sure we have just one! + // Find singleton of this type in the scene + var instance = GameObject.FindObjectOfType(); - //Find all singletons of this type in the scene - SingletonUnity[] allSingletonsInScene = GameObject.FindObjectsOfType(); - - if (allSingletonsInScene != null && allSingletonsInScene.Length > 0) + // If there is no singleton object in the scene, we have to add one + if (instance == null) { - //Destroy all but one singleton - if (allSingletonsInScene.Length > 1) - { - Debug.LogWarning($"You have more than one SingletonUnity in the scene!"); - - for (int i = 1; i < allSingletonsInScene.Length; i++) - { - Destroy(allSingletonsInScene[i].gameObject); - } - } - - //Now we should have just one singleton in the scene, so pick it - instance = allSingletonsInScene[0]; + GameObject obj = new GameObject("Unity Singleton"); + instance = obj.AddComponent(); //Init the singleton instance.FakeConstructor(); - } - //We have no singletons in the scene - else - { - Debug.LogError($"You need to add the script SingletonUnity to a gameobject in the scene!"); + + // The singleton object shouldn't be destroyed when we switch between scenes + DontDestroyOnLoad(obj); } } @@ -65,6 +47,25 @@ public static SingletonUnity Instance } } + void Awake() + { + if (instance == null) + { + instance = this; + + // Init the singleton + instance.FakeConstructor(); + + // The singleton object shouldn't be destroyed when we switch between scenes + DontDestroyOnLoad(this.gameObject); + } + // because we inherit from MonoBehaviour whem might have accidentally added several of them to the scene, + // which will cause trouble, so we have to make sure we have just one! + else + { + Destroy(gameObject); + } + } //Because this script inherits from MonoBehaviour, we cant use a constructor, so we have to invent our own From 7742d0f65c94251358f5c38cc7970d94346e0ab0 Mon Sep 17 00:00:00 2001 From: Masoud Darvishian Date: Thu, 6 Jan 2022 20:57:06 +0330 Subject: [PATCH 02/68] Bug fix for the Update design pattern example --- .../9. Update/Custom Update method/Scripts/GameController.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Assets/Patterns/9. Update/Custom Update method/Scripts/GameController.cs b/Assets/Patterns/9. Update/Custom Update method/Scripts/GameController.cs index a737caa..f5dc36c 100644 --- a/Assets/Patterns/9. Update/Custom Update method/Scripts/GameController.cs +++ b/Assets/Patterns/9. Update/Custom Update method/Scripts/GameController.cs @@ -63,7 +63,7 @@ public static void RegisterUpdateableObject(IUpdateable obj) //Unregister public static void UnregisterUpdateableObject(IUpdateable obj) { - if (!updateableObjects.Contains(obj)) + if (updateableObjects.Contains(obj)) { updateableObjects.Remove(obj); } From 8428ebcc78f54f2e997e60fa11e65e93bf0f0561 Mon Sep 17 00:00:00 2001 From: Masoud Darvishian Date: Sun, 9 Jan 2022 18:54:21 +0330 Subject: [PATCH 03/68] Implementation of the Command Queue (Event Queue) pattern is added. --- .../14. Command Queue (Event Queue).meta | 8 + .../CommandBase.cs | 18 + .../CommandBase.cs.meta | 11 + .../CommandQueue.cs | 57 + .../CommandQueue.cs.meta | 11 + .../CommandQueueScene.unity | 1790 +++++++++++++++++ .../CommandQueueScene.unity.meta | 7 + .../Commands.meta | 8 + .../Commands/FirstCmd.cs | 40 + .../Commands/FirstCmd.cs.meta | 11 + .../Commands/SecondCmd.cs | 35 + .../Commands/SecondCmd.cs.meta | 11 + .../Commands/ThirdCmd.cs | 35 + .../Commands/ThirdCmd.cs.meta | 11 + .../GameController.cs | 32 + .../GameController.cs.meta | 11 + .../14. Command Queue (Event Queue)/Popup.cs | 15 + .../Popup.cs.meta | 11 + 18 files changed, 2122 insertions(+) create mode 100644 Assets/Patterns/14. Command Queue (Event Queue).meta create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs.meta create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/CommandQueue.cs create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/CommandQueue.cs.meta create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/CommandQueueScene.unity create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/CommandQueueScene.unity.meta create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/Commands.meta create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/Commands/FirstCmd.cs create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/Commands/FirstCmd.cs.meta create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/Commands/SecondCmd.cs create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/Commands/SecondCmd.cs.meta create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/Commands/ThirdCmd.cs create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/Commands/ThirdCmd.cs.meta create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/GameController.cs create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/GameController.cs.meta create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/Popup.cs create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/Popup.cs.meta diff --git a/Assets/Patterns/14. Command Queue (Event Queue).meta b/Assets/Patterns/14. Command Queue (Event Queue).meta new file mode 100644 index 0000000..5296742 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue).meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 64e066b22053b694dafc5fbef88b7d5c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs b/Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs new file mode 100644 index 0000000..090d7e7 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs @@ -0,0 +1,18 @@ +using System; + +namespace CommandQueuePattern +{ + public abstract class CommandBase + { + public Action OnFinished { get; set; } + + public abstract void Execute(); + + public abstract bool IsFinished { get; protected set; } + + protected void CallOnFinished() + { + OnFinished?.Invoke(); + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs.meta b/Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs.meta new file mode 100644 index 0000000..39a26ac --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 56eaf97de9299bb4daf746cbf0b4504e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueue.cs b/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueue.cs new file mode 100644 index 0000000..9634edd --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueue.cs @@ -0,0 +1,57 @@ +using System.Collections.Generic; + +namespace CommandQueuePattern +{ + public class CommandQueue + { + // queue of commands + private readonly Queue _queue; + + // it's true when a command is running + private bool _isPending; + + public CommandQueue() + { + // create a queue + _queue = new Queue(); + + // no command is running + _isPending = false; + } + + public void Enqueue(CommandBase cmd) + { + // add a command + _queue.Enqueue(cmd); + + // if no command is running, start to execute commands + if (!_isPending) + DoNext(); + } + + public void DoNext() + { + // if queue is empty, do nothing. + if (_queue.Count == 0) + return; + + // get a command + var cmd = _queue.Dequeue(); + // setting _isPending to true means this command is running + _isPending = true; + // listen to the OnFinished event + cmd.OnFinished += OnCmdFinished; + // execute command + cmd.Execute(); + } + + private void OnCmdFinished() + { + // current command is finished + _isPending = false; + + // run the next command + DoNext(); + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueue.cs.meta b/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueue.cs.meta new file mode 100644 index 0000000..b0860c9 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueue.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 5e2c3806c187c964fb1b8e559c15dbd9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueueScene.unity b/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueueScene.unity new file mode 100644 index 0000000..60cfbc5 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueueScene.unity @@ -0,0 +1,1790 @@ +%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: 9 + 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_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + 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_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + 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: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &39917111 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 39917112} + - component: {fileID: 39917114} + - component: {fileID: 39917113} + - component: {fileID: 39917115} + m_Layer: 5 + m_Name: FirstPopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &39917112 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39917111} + 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: 1953702264} + - {fileID: 854852039} + m_Father: {fileID: 503701280} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -0.000030517578, y: 0} + m_SizeDelta: {x: -435.30905, y: -198.01656} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &39917113 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39917111} + 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: 0, b: 0, a: 0.69411767} + m_RaycastTarget: 1 + 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 &39917114 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39917111} + m_CullTransparentMesh: 0 +--- !u!114 &39917115 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 39917111} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7aad7754c7316194fbcef0c515cfd3d6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &117838404 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 117838405} + - component: {fileID: 117838408} + - component: {fileID: 117838407} + - component: {fileID: 117838406} + m_Layer: 5 + m_Name: Close Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &117838405 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117838404} + 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: 2046382975} + m_Father: {fileID: 1265532431} + m_RootOrder: 1 + 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: -104.4} + m_SizeDelta: {x: 80, y: 33.202057} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &117838406 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117838404} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + 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: 117838407} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1265532434} + m_MethodName: Close + 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 &117838407 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117838404} + 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_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 &117838408 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 117838404} + m_CullTransparentMesh: 0 +--- !u!1 &163705240 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 163705243} + - component: {fileID: 163705242} + - component: {fileID: 163705241} + m_Layer: 0 + m_Name: EventSystem + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &163705241 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163705240} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} + m_Name: + m_EditorClassIdentifier: + m_HorizontalAxis: Horizontal + m_VerticalAxis: Vertical + m_SubmitButton: Submit + m_CancelButton: Cancel + m_InputActionsPerSecond: 10 + m_RepeatDelay: 0.5 + m_ForceModuleActive: 0 +--- !u!114 &163705242 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163705240} + 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 &163705243 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 163705240} + 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: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &388960864 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 388960865} + - component: {fileID: 388960867} + - component: {fileID: 388960866} + m_Layer: 5 + m_Name: Header Txt + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &388960865 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 388960864} + 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: [] + m_Father: {fileID: 503701280} + m_RootOrder: 0 + 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.000038147, y: 171.2} + m_SizeDelta: {x: 276.14392, y: 69.658905} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &388960866 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 388960864} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Welcome to the game! +--- !u!222 &388960867 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 388960864} + m_CullTransparentMesh: 0 +--- !u!1 &503701279 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 503701280} + - component: {fileID: 503701282} + - component: {fileID: 503701281} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &503701280 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 503701279} + 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: 388960865} + - {fileID: 39917112} + - {fileID: 1265532431} + - {fileID: 1976395495} + m_Father: {fileID: 603566541} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &503701281 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 503701279} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0, b: 0, a: 0.392} + m_RaycastTarget: 1 + 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 &503701282 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 503701279} + m_CullTransparentMesh: 0 +--- !u!1 &603566537 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 603566541} + - component: {fileID: 603566540} + - component: {fileID: 603566539} + - component: {fileID: 603566538} + m_Layer: 5 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &603566538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 603566537} + 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 &603566539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 603566537} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 +--- !u!223 &603566540 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 603566537} + 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_AdditionalShaderChannelsFlag: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &603566541 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 603566537} + 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_Children: + - {fileID: 503701280} + m_Father: {fileID: 0} + m_RootOrder: 3 + 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 &610259451 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 610259452} + - component: {fileID: 610259454} + - component: {fileID: 610259453} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &610259452 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 610259451} + 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: [] + m_Father: {fileID: 612968657} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &610259453 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 610259451} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Close +--- !u!222 &610259454 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 610259451} + m_CullTransparentMesh: 0 +--- !u!1 &612968656 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 612968657} + - component: {fileID: 612968660} + - component: {fileID: 612968659} + - component: {fileID: 612968658} + m_Layer: 5 + m_Name: Close Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &612968657 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 612968656} + 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: 610259452} + m_Father: {fileID: 1976395495} + m_RootOrder: 1 + 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: -104.4} + m_SizeDelta: {x: 80, y: 33.202057} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &612968658 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 612968656} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + 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: 612968659} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 1976395498} + m_MethodName: Close + 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 &612968659 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 612968656} + 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_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 &612968660 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 612968656} + m_CullTransparentMesh: 0 +--- !u!1 &648954875 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 648954878} + - component: {fileID: 648954877} + - component: {fileID: 648954876} + 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 &648954876 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648954875} + m_Enabled: 1 +--- !u!20 &648954877 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648954875} + 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_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &648954878 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 648954875} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &668348811 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 668348812} + - component: {fileID: 668348814} + - component: {fileID: 668348813} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &668348812 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 668348811} + 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: [] + m_Father: {fileID: 1976395495} + m_RootOrder: 0 + 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: 324.04028, y: 36.4041} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &668348813 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 668348811} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Third Popup +--- !u!222 &668348814 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 668348811} + m_CullTransparentMesh: 0 +--- !u!1 &854852038 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 854852039} + - component: {fileID: 854852042} + - component: {fileID: 854852041} + - component: {fileID: 854852040} + m_Layer: 5 + m_Name: Close Button + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &854852039 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854852038} + 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: 1796699346} + m_Father: {fileID: 39917112} + m_RootOrder: 1 + 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: -104.4} + m_SizeDelta: {x: 80, y: 33.202057} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &854852040 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854852038} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + 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: 854852041} + m_OnClick: + m_PersistentCalls: + m_Calls: + - m_Target: {fileID: 39917115} + m_MethodName: Close + 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 &854852041 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854852038} + 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_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 &854852042 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 854852038} + m_CullTransparentMesh: 0 +--- !u!1 &1265532430 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1265532431} + - component: {fileID: 1265532433} + - component: {fileID: 1265532432} + - component: {fileID: 1265532434} + m_Layer: 5 + m_Name: 'SecondPopup ' + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1265532431 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1265532430} + 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: 1892493390} + - {fileID: 117838405} + m_Father: {fileID: 503701280} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -0.000030517578, y: 0} + m_SizeDelta: {x: -435.30905, y: -198.01656} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1265532432 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1265532430} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.12152922, g: 1, b: 0, a: 0.69411767} + m_RaycastTarget: 1 + 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 &1265532433 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1265532430} + m_CullTransparentMesh: 0 +--- !u!114 &1265532434 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1265532430} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7aad7754c7316194fbcef0c515cfd3d6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1717216349 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1717216351} + - component: {fileID: 1717216350} + 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 &1717216350 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1717216349} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1717216351 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1717216349} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1796699345 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1796699346} + - component: {fileID: 1796699348} + - component: {fileID: 1796699347} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1796699346 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796699345} + 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: [] + m_Father: {fileID: 854852039} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1796699347 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796699345} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Close +--- !u!222 &1796699348 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1796699345} + m_CullTransparentMesh: 0 +--- !u!1 &1813885560 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1813885561} + - component: {fileID: 1813885562} + m_Layer: 0 + m_Name: GameController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1813885561 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1813885560} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -6.939781, y: -4.2541914, z: -3.756424} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1813885562 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1813885560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fab6d57a6720db047b51ffb337d7974e, type: 3} + m_Name: + m_EditorClassIdentifier: + firstPopUp: {fileID: 39917115} + secondPopup: {fileID: 1265532434} + thirdPopup: {fileID: 1976395498} +--- !u!1 &1892493389 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1892493390} + - component: {fileID: 1892493392} + - component: {fileID: 1892493391} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1892493390 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1892493389} + 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: [] + m_Father: {fileID: 1265532431} + m_RootOrder: 0 + 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: 324.04028, y: 36.4041} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1892493391 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1892493389} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Second Popup +--- !u!222 &1892493392 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1892493389} + m_CullTransparentMesh: 0 +--- !u!1 &1953702263 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1953702264} + - component: {fileID: 1953702266} + - component: {fileID: 1953702265} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1953702264 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1953702263} + 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: [] + m_Father: {fileID: 39917112} + m_RootOrder: 0 + 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: 324.04028, y: 36.4041} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1953702265 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1953702263} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 20 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 2 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: First Popup +--- !u!222 &1953702266 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1953702263} + m_CullTransparentMesh: 0 +--- !u!1 &1976395494 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1976395495} + - component: {fileID: 1976395497} + - component: {fileID: 1976395496} + - component: {fileID: 1976395498} + m_Layer: 5 + m_Name: ThirdPopup + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 0 +--- !u!224 &1976395495 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1976395494} + 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: 668348812} + - {fileID: 612968657} + m_Father: {fileID: 503701280} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -0.000030517578, y: 0} + m_SizeDelta: {x: -435.30905, y: -198.01656} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1976395496 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1976395494} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0, g: 0.5415592, b: 1, a: 0.69411767} + m_RaycastTarget: 1 + 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 &1976395497 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1976395494} + m_CullTransparentMesh: 0 +--- !u!114 &1976395498 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1976395494} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 7aad7754c7316194fbcef0c515cfd3d6, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &2046382974 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2046382975} + - component: {fileID: 2046382977} + - component: {fileID: 2046382976} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2046382975 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046382974} + 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: [] + m_Father: {fileID: 117838405} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2046382976 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046382974} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: Close +--- !u!222 &2046382977 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2046382974} + m_CullTransparentMesh: 0 diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueueScene.unity.meta b/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueueScene.unity.meta new file mode 100644 index 0000000..589437b --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueueScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 2508b7e936b89c44f9dab72413fdd7dd +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/Commands.meta b/Assets/Patterns/14. Command Queue (Event Queue)/Commands.meta new file mode 100644 index 0000000..e3dd585 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/Commands.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 51358a28e180084499754f600e481533 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/Commands/FirstCmd.cs b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/FirstCmd.cs new file mode 100644 index 0000000..450b402 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/FirstCmd.cs @@ -0,0 +1,40 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace CommandQueuePattern +{ + public class FirstCmd : CommandBase + { + private readonly GameController _owner; + + public override bool IsFinished { get; protected set; } = false; + + public FirstCmd(GameController owner) + { + _owner = owner; + } + + public override void Execute() + { + // activate gameobject + _owner.firstPopUp.gameObject.SetActive(true); + + // listen to its onClose event + _owner.firstPopUp.onClose += OnClose; + } + + private void OnClose() + { + _owner.firstPopUp.onClose -= OnClose; + + // deactivate gameobject + _owner.firstPopUp.gameObject.SetActive(false); + + // rise the OnFinished event to say we're done with this command + CallOnFinished(); + IsFinished = true; + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/Commands/FirstCmd.cs.meta b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/FirstCmd.cs.meta new file mode 100644 index 0000000..add79ff --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/FirstCmd.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6c3e5ee159ede7d49b285f3ac9cb04d5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/Commands/SecondCmd.cs b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/SecondCmd.cs new file mode 100644 index 0000000..d4ee723 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/SecondCmd.cs @@ -0,0 +1,35 @@ +namespace CommandQueuePattern +{ + public class SecondCmd : CommandBase + { + private readonly GameController _owner; + + public override bool IsFinished { get; protected set; } = false; + + public SecondCmd(GameController owner) + { + _owner = owner; + } + + public override void Execute() + { + // activate gameobject + _owner.secondPopup.gameObject.SetActive(true); + + // listen to its onClose event + _owner.secondPopup.onClose += OnClose; + } + + private void OnClose() + { + _owner.secondPopup.onClose -= OnClose; + + // deactivate gameobject + _owner.secondPopup.gameObject.SetActive(false); + + // rise the OnFinished event to say we're done with this command + CallOnFinished(); + IsFinished = true; + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/Commands/SecondCmd.cs.meta b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/SecondCmd.cs.meta new file mode 100644 index 0000000..64771c2 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/SecondCmd.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3ad7d9eb551366d46a22781d5200cf80 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/Commands/ThirdCmd.cs b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/ThirdCmd.cs new file mode 100644 index 0000000..ee95316 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/ThirdCmd.cs @@ -0,0 +1,35 @@ +namespace CommandQueuePattern +{ + public class ThirdCmd : CommandBase + { + private readonly GameController _owner; + + public override bool IsFinished { get; protected set; } = false; + + public ThirdCmd(GameController owner) + { + _owner = owner; + } + + public override void Execute() + { + // activate gameobject + _owner.thirdPopup.gameObject.SetActive(true); + + // listen to its onClose event + _owner.thirdPopup.onClose += OnClose; + } + + private void OnClose() + { + _owner.thirdPopup.onClose -= OnClose; + + // deactivate gameobject + _owner.thirdPopup.gameObject.SetActive(false); + + // rise the OnFinished event to say we're done with this command + CallOnFinished(); + IsFinished = true; + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/Commands/ThirdCmd.cs.meta b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/ThirdCmd.cs.meta new file mode 100644 index 0000000..0e839af --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/ThirdCmd.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 94367edfe739ac2438cb7e32f881b859 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/GameController.cs b/Assets/Patterns/14. Command Queue (Event Queue)/GameController.cs new file mode 100644 index 0000000..038fd02 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/GameController.cs @@ -0,0 +1,32 @@ +using System.Collections; +using UnityEngine; + +namespace CommandQueuePattern +{ + public class GameController : MonoBehaviour + { + public Popup firstPopUp, secondPopup, thirdPopup; + + private CommandQueue _commandQueue; + + private void Start() + { + // create a command queue + _commandQueue = new CommandQueue(); + + // add commands after a period of time + StartCoroutine(StartCommandsCr()); + } + + private IEnumerator StartCommandsCr() + { + // wait for 2 seconds + yield return new WaitForSeconds(2f); + + // add commands + _commandQueue.Enqueue(new FirstCmd(this)); + _commandQueue.Enqueue(new SecondCmd(this)); + _commandQueue.Enqueue(new ThirdCmd(this)); + } + } +} diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/GameController.cs.meta b/Assets/Patterns/14. Command Queue (Event Queue)/GameController.cs.meta new file mode 100644 index 0000000..dc83ea7 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/GameController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fab6d57a6720db047b51ffb337d7974e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/Popup.cs b/Assets/Patterns/14. Command Queue (Event Queue)/Popup.cs new file mode 100644 index 0000000..d450109 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/Popup.cs @@ -0,0 +1,15 @@ +using System; +using UnityEngine; + +namespace CommandQueuePattern +{ + public class Popup : MonoBehaviour + { + public Action onClose; + + public void Close() + { + onClose?.Invoke(); + } + } +} diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/Popup.cs.meta b/Assets/Patterns/14. Command Queue (Event Queue)/Popup.cs.meta new file mode 100644 index 0000000..9134ae3 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/Popup.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 7aad7754c7316194fbcef0c515cfd3d6 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 75a570634498a308d25d52231b70fc13b605cf00 Mon Sep 17 00:00:00 2001 From: Masoud Darvishian Date: Sun, 9 Jan 2022 19:40:57 +0330 Subject: [PATCH 04/68] Implementation of the Service Locator pattern is added. --- Assets/Patterns/16. Service Locator.meta | 8 + .../16. Service Locator/GameController.cs | 18 + .../GameController.cs.meta | 11 + .../16. Service Locator/ServiceLocator.cs | 34 ++ .../ServiceLocator.cs.meta | 11 + .../ServiceLocatorScene.unity | 470 ++++++++++++++++++ .../ServiceLocatorScene.unity.meta | 7 + .../16. Service Locator/Services.meta | 8 + .../Services/FirstService.cs | 22 + .../Services/FirstService.cs.meta | 11 + .../Services/SecondService.cs | 22 + .../Services/SecondService.cs.meta | 11 + .../Services/ThirdService.cs | 22 + .../Services/ThirdService.cs.meta | 11 + 14 files changed, 666 insertions(+) create mode 100644 Assets/Patterns/16. Service Locator.meta create mode 100644 Assets/Patterns/16. Service Locator/GameController.cs create mode 100644 Assets/Patterns/16. Service Locator/GameController.cs.meta create mode 100644 Assets/Patterns/16. Service Locator/ServiceLocator.cs create mode 100644 Assets/Patterns/16. Service Locator/ServiceLocator.cs.meta create mode 100644 Assets/Patterns/16. Service Locator/ServiceLocatorScene.unity create mode 100644 Assets/Patterns/16. Service Locator/ServiceLocatorScene.unity.meta create mode 100644 Assets/Patterns/16. Service Locator/Services.meta create mode 100644 Assets/Patterns/16. Service Locator/Services/FirstService.cs create mode 100644 Assets/Patterns/16. Service Locator/Services/FirstService.cs.meta create mode 100644 Assets/Patterns/16. Service Locator/Services/SecondService.cs create mode 100644 Assets/Patterns/16. Service Locator/Services/SecondService.cs.meta create mode 100644 Assets/Patterns/16. Service Locator/Services/ThirdService.cs create mode 100644 Assets/Patterns/16. Service Locator/Services/ThirdService.cs.meta diff --git a/Assets/Patterns/16. Service Locator.meta b/Assets/Patterns/16. Service Locator.meta new file mode 100644 index 0000000..b7146c6 --- /dev/null +++ b/Assets/Patterns/16. Service Locator.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 26dc8a89f0c03e946ab5c825e982ec1e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/16. Service Locator/GameController.cs b/Assets/Patterns/16. Service Locator/GameController.cs new file mode 100644 index 0000000..4728f7d --- /dev/null +++ b/Assets/Patterns/16. Service Locator/GameController.cs @@ -0,0 +1,18 @@ +namespace ServiceLocatorPattern +{ + using UnityEngine; + + public class GameController : MonoBehaviour + { + private void Start() + { + var firstService = ServiceLocator.Resolve(); + var secondService = ServiceLocator.Resolve(); + var thirdService = ServiceLocator.Resolve(); + + firstService?.SayHi(); + secondService?.SimpleMethod(); + thirdService?.Foo(); + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/16. Service Locator/GameController.cs.meta b/Assets/Patterns/16. Service Locator/GameController.cs.meta new file mode 100644 index 0000000..c51fd2b --- /dev/null +++ b/Assets/Patterns/16. Service Locator/GameController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b8b083eac1ecd2745b4b2eb8b2d3d470 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/16. Service Locator/ServiceLocator.cs b/Assets/Patterns/16. Service Locator/ServiceLocator.cs new file mode 100644 index 0000000..994c91d --- /dev/null +++ b/Assets/Patterns/16. Service Locator/ServiceLocator.cs @@ -0,0 +1,34 @@ +using System.Collections.Generic; +using System.Linq; + +namespace ServiceLocatorPattern +{ + public static class ServiceLocator + { + private static readonly HashSet _registeredObjects; + + static ServiceLocator() + { + _registeredObjects = new HashSet(); + } + + public static void Register(T obj) where T : class + { + _registeredObjects.Add(obj); + } + + public static void Unregister(T obj) where T : class + { + _registeredObjects.Remove(obj); + } + + public static T Resolve() where T : class + { + var obj = _registeredObjects.SingleOrDefault(x => x is T); + if (obj != null) + return obj as T; + + return null; + } + } +} diff --git a/Assets/Patterns/16. Service Locator/ServiceLocator.cs.meta b/Assets/Patterns/16. Service Locator/ServiceLocator.cs.meta new file mode 100644 index 0000000..1abd54d --- /dev/null +++ b/Assets/Patterns/16. Service Locator/ServiceLocator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8e6f18119d4fe0d48b650f4b701c6708 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/16. Service Locator/ServiceLocatorScene.unity b/Assets/Patterns/16. Service Locator/ServiceLocatorScene.unity new file mode 100644 index 0000000..08cfad8 --- /dev/null +++ b/Assets/Patterns/16. Service Locator/ServiceLocatorScene.unity @@ -0,0 +1,470 @@ +%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: 9 + 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_IndirectSpecularColor: {r: 0.44657898, g: 0.4964133, b: 0.5748178, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 11 + m_GIWorkflowMode: 1 + 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_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + 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: 0} + m_UseShadowmask: 1 +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &138225925 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 138225928} + - component: {fileID: 138225927} + - component: {fileID: 138225926} + 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 &138225926 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 138225925} + m_Enabled: 1 +--- !u!20 &138225927 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 138225925} + 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_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &138225928 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 138225925} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &325266288 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 325266289} + - component: {fileID: 325266290} + m_Layer: 0 + m_Name: Second Service + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &325266289 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 325266288} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 214.25294, y: -411.10437, z: -183.65768} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 4 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &325266290 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 325266288} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 1df5c99439826bd48a3d81f94978aca4, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &865490952 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 865490954} + - component: {fileID: 865490953} + 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 &865490953 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865490952} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &865490954 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 865490952} + 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_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1027150828 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1027150829} + - component: {fileID: 1027150830} + m_Layer: 0 + m_Name: GameController + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1027150829 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1027150828} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 214.25294, y: -411.10437, z: -183.65768} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1027150830 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1027150828} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b8b083eac1ecd2745b4b2eb8b2d3d470, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1432518748 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1432518749} + - component: {fileID: 1432518750} + m_Layer: 0 + m_Name: First Service + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1432518749 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1432518748} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 214.25294, y: -411.10437, z: -183.65768} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1432518750 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1432518748} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 44d086f170cf84a4b95c0e2a8b703ba5, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &1761968133 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1761968134} + - component: {fileID: 1761968135} + m_Layer: 0 + m_Name: Third Service + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1761968134 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1761968133} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 214.25294, y: -411.10437, z: -183.65768} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1761968135 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1761968133} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 23e3d2944fa834948972e81b26ffc4fa, type: 3} + m_Name: + m_EditorClassIdentifier: diff --git a/Assets/Patterns/16. Service Locator/ServiceLocatorScene.unity.meta b/Assets/Patterns/16. Service Locator/ServiceLocatorScene.unity.meta new file mode 100644 index 0000000..f503427 --- /dev/null +++ b/Assets/Patterns/16. Service Locator/ServiceLocatorScene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 1e9d4c7e4d3ed4e4da7f2248a4cf22b9 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/16. Service Locator/Services.meta b/Assets/Patterns/16. Service Locator/Services.meta new file mode 100644 index 0000000..e65a95a --- /dev/null +++ b/Assets/Patterns/16. Service Locator/Services.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c50f12adc46877f4c8ea7cc2d873d35c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/16. Service Locator/Services/FirstService.cs b/Assets/Patterns/16. Service Locator/Services/FirstService.cs new file mode 100644 index 0000000..5ad1715 --- /dev/null +++ b/Assets/Patterns/16. Service Locator/Services/FirstService.cs @@ -0,0 +1,22 @@ +using UnityEngine; + +namespace ServiceLocatorPattern +{ + public class FirstService : MonoBehaviour + { + private void Awake() + { + ServiceLocator.Register(this); + } + + private void OnDestroy() + { + ServiceLocator.Unregister(this); + } + + public void SayHi() + { + Debug.Log("Hi, this is the " + nameof(FirstService)); + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/16. Service Locator/Services/FirstService.cs.meta b/Assets/Patterns/16. Service Locator/Services/FirstService.cs.meta new file mode 100644 index 0000000..2ec8e33 --- /dev/null +++ b/Assets/Patterns/16. Service Locator/Services/FirstService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 44d086f170cf84a4b95c0e2a8b703ba5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/16. Service Locator/Services/SecondService.cs b/Assets/Patterns/16. Service Locator/Services/SecondService.cs new file mode 100644 index 0000000..8e02932 --- /dev/null +++ b/Assets/Patterns/16. Service Locator/Services/SecondService.cs @@ -0,0 +1,22 @@ +using UnityEngine; + +namespace ServiceLocatorPattern +{ + public class SecondService : MonoBehaviour + { + private void Awake() + { + ServiceLocator.Register(this); + } + + private void OnDestroy() + { + ServiceLocator.Unregister(this); + } + + public void SimpleMethod() + { + Debug.Log("Hey, this is just a simple method from " + nameof(SecondService)); + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/16. Service Locator/Services/SecondService.cs.meta b/Assets/Patterns/16. Service Locator/Services/SecondService.cs.meta new file mode 100644 index 0000000..0433c8c --- /dev/null +++ b/Assets/Patterns/16. Service Locator/Services/SecondService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1df5c99439826bd48a3d81f94978aca4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/16. Service Locator/Services/ThirdService.cs b/Assets/Patterns/16. Service Locator/Services/ThirdService.cs new file mode 100644 index 0000000..94442aa --- /dev/null +++ b/Assets/Patterns/16. Service Locator/Services/ThirdService.cs @@ -0,0 +1,22 @@ +using UnityEngine; + +namespace ServiceLocatorPattern +{ + public class ThirdService : MonoBehaviour + { + private void Awake() + { + ServiceLocator.Register(this); + } + + private void OnDestroy() + { + ServiceLocator.Unregister(this); + } + + public void Foo() + { + Debug.Log("This is Foo method from " + nameof(ThirdService)); + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/16. Service Locator/Services/ThirdService.cs.meta b/Assets/Patterns/16. Service Locator/Services/ThirdService.cs.meta new file mode 100644 index 0000000..290b6ae --- /dev/null +++ b/Assets/Patterns/16. Service Locator/Services/ThirdService.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 23e3d2944fa834948972e81b26ffc4fa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 6e278a1e29b497017dca8b535843da7adec04977 Mon Sep 17 00:00:00 2001 From: Masoud Darvishian Date: Sun, 9 Jan 2022 19:55:51 +0330 Subject: [PATCH 05/68] Rename "16. Service Locator" forlder to "15. Service Locator (Another Implementation)" --- ...tor.meta => 15. Service Locator (Another Implementation).meta} | 0 .../GameController.cs | 0 .../GameController.cs.meta | 0 .../ServiceLocator.cs | 0 .../ServiceLocator.cs.meta | 0 .../ServiceLocatorScene.unity | 0 .../ServiceLocatorScene.unity.meta | 0 .../Services.meta | 0 .../Services/FirstService.cs | 0 .../Services/FirstService.cs.meta | 0 .../Services/SecondService.cs | 0 .../Services/SecondService.cs.meta | 0 .../Services/ThirdService.cs | 0 .../Services/ThirdService.cs.meta | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename Assets/Patterns/{16. Service Locator.meta => 15. Service Locator (Another Implementation).meta} (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/GameController.cs (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/GameController.cs.meta (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/ServiceLocator.cs (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/ServiceLocator.cs.meta (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/ServiceLocatorScene.unity (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/ServiceLocatorScene.unity.meta (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/Services.meta (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/Services/FirstService.cs (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/Services/FirstService.cs.meta (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/Services/SecondService.cs (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/Services/SecondService.cs.meta (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/Services/ThirdService.cs (100%) rename Assets/Patterns/{16. Service Locator => 15. Service Locator (Another Implementation)}/Services/ThirdService.cs.meta (100%) diff --git a/Assets/Patterns/16. Service Locator.meta b/Assets/Patterns/15. Service Locator (Another Implementation).meta similarity index 100% rename from Assets/Patterns/16. Service Locator.meta rename to Assets/Patterns/15. Service Locator (Another Implementation).meta diff --git a/Assets/Patterns/16. Service Locator/GameController.cs b/Assets/Patterns/15. Service Locator (Another Implementation)/GameController.cs similarity index 100% rename from Assets/Patterns/16. Service Locator/GameController.cs rename to Assets/Patterns/15. Service Locator (Another Implementation)/GameController.cs diff --git a/Assets/Patterns/16. Service Locator/GameController.cs.meta b/Assets/Patterns/15. Service Locator (Another Implementation)/GameController.cs.meta similarity index 100% rename from Assets/Patterns/16. Service Locator/GameController.cs.meta rename to Assets/Patterns/15. Service Locator (Another Implementation)/GameController.cs.meta diff --git a/Assets/Patterns/16. Service Locator/ServiceLocator.cs b/Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocator.cs similarity index 100% rename from Assets/Patterns/16. Service Locator/ServiceLocator.cs rename to Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocator.cs diff --git a/Assets/Patterns/16. Service Locator/ServiceLocator.cs.meta b/Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocator.cs.meta similarity index 100% rename from Assets/Patterns/16. Service Locator/ServiceLocator.cs.meta rename to Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocator.cs.meta diff --git a/Assets/Patterns/16. Service Locator/ServiceLocatorScene.unity b/Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocatorScene.unity similarity index 100% rename from Assets/Patterns/16. Service Locator/ServiceLocatorScene.unity rename to Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocatorScene.unity diff --git a/Assets/Patterns/16. Service Locator/ServiceLocatorScene.unity.meta b/Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocatorScene.unity.meta similarity index 100% rename from Assets/Patterns/16. Service Locator/ServiceLocatorScene.unity.meta rename to Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocatorScene.unity.meta diff --git a/Assets/Patterns/16. Service Locator/Services.meta b/Assets/Patterns/15. Service Locator (Another Implementation)/Services.meta similarity index 100% rename from Assets/Patterns/16. Service Locator/Services.meta rename to Assets/Patterns/15. Service Locator (Another Implementation)/Services.meta diff --git a/Assets/Patterns/16. Service Locator/Services/FirstService.cs b/Assets/Patterns/15. Service Locator (Another Implementation)/Services/FirstService.cs similarity index 100% rename from Assets/Patterns/16. Service Locator/Services/FirstService.cs rename to Assets/Patterns/15. Service Locator (Another Implementation)/Services/FirstService.cs diff --git a/Assets/Patterns/16. Service Locator/Services/FirstService.cs.meta b/Assets/Patterns/15. Service Locator (Another Implementation)/Services/FirstService.cs.meta similarity index 100% rename from Assets/Patterns/16. Service Locator/Services/FirstService.cs.meta rename to Assets/Patterns/15. Service Locator (Another Implementation)/Services/FirstService.cs.meta diff --git a/Assets/Patterns/16. Service Locator/Services/SecondService.cs b/Assets/Patterns/15. Service Locator (Another Implementation)/Services/SecondService.cs similarity index 100% rename from Assets/Patterns/16. Service Locator/Services/SecondService.cs rename to Assets/Patterns/15. Service Locator (Another Implementation)/Services/SecondService.cs diff --git a/Assets/Patterns/16. Service Locator/Services/SecondService.cs.meta b/Assets/Patterns/15. Service Locator (Another Implementation)/Services/SecondService.cs.meta similarity index 100% rename from Assets/Patterns/16. Service Locator/Services/SecondService.cs.meta rename to Assets/Patterns/15. Service Locator (Another Implementation)/Services/SecondService.cs.meta diff --git a/Assets/Patterns/16. Service Locator/Services/ThirdService.cs b/Assets/Patterns/15. Service Locator (Another Implementation)/Services/ThirdService.cs similarity index 100% rename from Assets/Patterns/16. Service Locator/Services/ThirdService.cs rename to Assets/Patterns/15. Service Locator (Another Implementation)/Services/ThirdService.cs diff --git a/Assets/Patterns/16. Service Locator/Services/ThirdService.cs.meta b/Assets/Patterns/15. Service Locator (Another Implementation)/Services/ThirdService.cs.meta similarity index 100% rename from Assets/Patterns/16. Service Locator/Services/ThirdService.cs.meta rename to Assets/Patterns/15. Service Locator (Another Implementation)/Services/ThirdService.cs.meta From fc8e84b2214b72aa36034591ce6798ca61d8b96c Mon Sep 17 00:00:00 2001 From: Masoud Darvishian Date: Mon, 10 Jan 2022 08:50:31 +0330 Subject: [PATCH 06/68] The abstract CommandBase class is changed to ICommand interface --- .../CommandBase.cs | 18 ------------------ .../CommandQueue.cs | 6 +++--- .../Commands/FirstCmd.cs | 12 ++++-------- .../Commands/SecondCmd.cs | 15 ++++++++------- .../Commands/ThirdCmd.cs | 13 +++++++------ .../ICommand.cs | 11 +++++++++++ .../{CommandBase.cs.meta => ICommand.cs.meta} | 0 7 files changed, 33 insertions(+), 42 deletions(-) delete mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs create mode 100644 Assets/Patterns/14. Command Queue (Event Queue)/ICommand.cs rename Assets/Patterns/14. Command Queue (Event Queue)/{CommandBase.cs.meta => ICommand.cs.meta} (100%) diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs b/Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs deleted file mode 100644 index 090d7e7..0000000 --- a/Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs +++ /dev/null @@ -1,18 +0,0 @@ -using System; - -namespace CommandQueuePattern -{ - public abstract class CommandBase - { - public Action OnFinished { get; set; } - - public abstract void Execute(); - - public abstract bool IsFinished { get; protected set; } - - protected void CallOnFinished() - { - OnFinished?.Invoke(); - } - } -} \ No newline at end of file diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueue.cs b/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueue.cs index 9634edd..babba94 100644 --- a/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueue.cs +++ b/Assets/Patterns/14. Command Queue (Event Queue)/CommandQueue.cs @@ -5,7 +5,7 @@ namespace CommandQueuePattern public class CommandQueue { // queue of commands - private readonly Queue _queue; + private readonly Queue _queue; // it's true when a command is running private bool _isPending; @@ -13,13 +13,13 @@ public class CommandQueue public CommandQueue() { // create a queue - _queue = new Queue(); + _queue = new Queue(); // no command is running _isPending = false; } - public void Enqueue(CommandBase cmd) + public void Enqueue(ICommand cmd) { // add a command _queue.Enqueue(cmd); diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/Commands/FirstCmd.cs b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/FirstCmd.cs index 450b402..74058d3 100644 --- a/Assets/Patterns/14. Command Queue (Event Queue)/Commands/FirstCmd.cs +++ b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/FirstCmd.cs @@ -1,22 +1,19 @@ using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; namespace CommandQueuePattern { - public class FirstCmd : CommandBase + public class FirstCmd : ICommand { private readonly GameController _owner; - public override bool IsFinished { get; protected set; } = false; + public Action OnFinished { get; set; } public FirstCmd(GameController owner) { _owner = owner; } - public override void Execute() + public void Execute() { // activate gameobject _owner.firstPopUp.gameObject.SetActive(true); @@ -33,8 +30,7 @@ private void OnClose() _owner.firstPopUp.gameObject.SetActive(false); // rise the OnFinished event to say we're done with this command - CallOnFinished(); - IsFinished = true; + OnFinished?.Invoke(); } } } \ No newline at end of file diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/Commands/SecondCmd.cs b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/SecondCmd.cs index d4ee723..0e5770a 100644 --- a/Assets/Patterns/14. Command Queue (Event Queue)/Commands/SecondCmd.cs +++ b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/SecondCmd.cs @@ -1,17 +1,19 @@ -namespace CommandQueuePattern +using System; + +namespace CommandQueuePattern { - public class SecondCmd : CommandBase + public class SecondCmd : ICommand { private readonly GameController _owner; - public override bool IsFinished { get; protected set; } = false; - public SecondCmd(GameController owner) { _owner = owner; } - public override void Execute() + public Action OnFinished { get; set; } + + public void Execute() { // activate gameobject _owner.secondPopup.gameObject.SetActive(true); @@ -28,8 +30,7 @@ private void OnClose() _owner.secondPopup.gameObject.SetActive(false); // rise the OnFinished event to say we're done with this command - CallOnFinished(); - IsFinished = true; + OnFinished?.Invoke(); } } } \ No newline at end of file diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/Commands/ThirdCmd.cs b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/ThirdCmd.cs index ee95316..291163c 100644 --- a/Assets/Patterns/14. Command Queue (Event Queue)/Commands/ThirdCmd.cs +++ b/Assets/Patterns/14. Command Queue (Event Queue)/Commands/ThirdCmd.cs @@ -1,17 +1,19 @@ -namespace CommandQueuePattern +using System; + +namespace CommandQueuePattern { - public class ThirdCmd : CommandBase + public class ThirdCmd : ICommand { private readonly GameController _owner; - public override bool IsFinished { get; protected set; } = false; + public Action OnFinished { get; set; } public ThirdCmd(GameController owner) { _owner = owner; } - public override void Execute() + public void Execute() { // activate gameobject _owner.thirdPopup.gameObject.SetActive(true); @@ -28,8 +30,7 @@ private void OnClose() _owner.thirdPopup.gameObject.SetActive(false); // rise the OnFinished event to say we're done with this command - CallOnFinished(); - IsFinished = true; + OnFinished?.Invoke(); } } } \ No newline at end of file diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/ICommand.cs b/Assets/Patterns/14. Command Queue (Event Queue)/ICommand.cs new file mode 100644 index 0000000..19816c5 --- /dev/null +++ b/Assets/Patterns/14. Command Queue (Event Queue)/ICommand.cs @@ -0,0 +1,11 @@ +using System; + +namespace CommandQueuePattern +{ + public interface ICommand + { + Action OnFinished { get; set; } + + void Execute(); + } +} \ No newline at end of file diff --git a/Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs.meta b/Assets/Patterns/14. Command Queue (Event Queue)/ICommand.cs.meta similarity index 100% rename from Assets/Patterns/14. Command Queue (Event Queue)/CommandBase.cs.meta rename to Assets/Patterns/14. Command Queue (Event Queue)/ICommand.cs.meta From f03d139701267d985421e9422820ee0d4ad8e4ad Mon Sep 17 00:00:00 2001 From: habrador Date: Mon, 31 Jan 2022 09:10:36 +0100 Subject: [PATCH 07/68] Upgraded to Unity 2020 and updated packages --- Packages/manifest.json | 11 ++--- Packages/packages-lock.json | 42 +++++++++++++++---- ProjectSettings/PackageManagerSettings.asset | 7 +++- ProjectSettings/ProjectVersion.txt | 4 +- ProjectSettings/VersionControlSettings.asset | 8 ++++ UserSettings/EditorUserSettings.asset | Bin 0 -> 4156 bytes 6 files changed, 56 insertions(+), 16 deletions(-) create mode 100644 ProjectSettings/VersionControlSettings.asset create mode 100644 UserSettings/EditorUserSettings.asset diff --git a/Packages/manifest.json b/Packages/manifest.json index 9ac52f1..0ee8286 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -2,11 +2,12 @@ "dependencies": { "com.unity.2d.sprite": "1.0.0", "com.unity.2d.tilemap": "1.0.0", - "com.unity.ide.rider": "1.1.4", - "com.unity.ide.vscode": "1.2.3", - "com.unity.test-framework": "1.1.19", - "com.unity.textmeshpro": "2.0.1", - "com.unity.timeline": "1.2.6", + "com.unity.ide.rider": "2.0.7", + "com.unity.ide.visualstudio": "2.0.14", + "com.unity.ide.vscode": "1.2.4", + "com.unity.test-framework": "1.1.29", + "com.unity.textmeshpro": "3.0.6", + "com.unity.timeline": "1.4.8", "com.unity.ugui": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index a19ae12..2e0479b 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -13,14 +13,14 @@ "dependencies": {} }, "com.unity.ext.nunit": { - "version": "1.0.5", + "version": "1.0.6", "depth": 1, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com/" }, "com.unity.ide.rider": { - "version": "1.1.4", + "version": "2.0.7", "depth": 0, "source": "registry", "dependencies": { @@ -28,26 +28,35 @@ }, "url": "https://packages.unity.com/" }, + "com.unity.ide.visualstudio": { + "version": "2.0.14", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.test-framework": "1.1.9" + }, + "url": "https://packages.unity.com/" + }, "com.unity.ide.vscode": { - "version": "1.2.3", + "version": "1.2.4", "depth": 0, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com/" }, "com.unity.test-framework": { - "version": "1.1.19", + "version": "1.1.29", "depth": 0, "source": "registry", "dependencies": { - "com.unity.ext.nunit": "1.0.5", + "com.unity.ext.nunit": "1.0.6", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" }, "url": "https://packages.unity.com/" }, "com.unity.textmeshpro": { - "version": "2.0.1", + "version": "3.0.6", "depth": 0, "source": "registry", "dependencies": { @@ -56,10 +65,15 @@ "url": "https://packages.unity.com/" }, "com.unity.timeline": { - "version": "1.2.6", + "version": "1.4.8", "depth": 0, "source": "registry", - "dependencies": {}, + "dependencies": { + "com.unity.modules.director": "1.0.0", + "com.unity.modules.animation": "1.0.0", + "com.unity.modules.audio": "1.0.0", + "com.unity.modules.particlesystem": "1.0.0" + }, "url": "https://packages.unity.com/" }, "com.unity.ugui": { @@ -204,6 +218,18 @@ "depth": 0, "source": "builtin", "dependencies": { + "com.unity.modules.ui": "1.0.0", + "com.unity.modules.imgui": "1.0.0", + "com.unity.modules.jsonserialize": "1.0.0", + "com.unity.modules.uielementsnative": "1.0.0" + } + }, + "com.unity.modules.uielementsnative": { + "version": "1.0.0", + "depth": 1, + "source": "builtin", + "dependencies": { + "com.unity.modules.ui": "1.0.0", "com.unity.modules.imgui": "1.0.0", "com.unity.modules.jsonserialize": "1.0.0" } diff --git a/ProjectSettings/PackageManagerSettings.asset b/ProjectSettings/PackageManagerSettings.asset index ca9e773..be4a797 100644 --- a/ProjectSettings/PackageManagerSettings.asset +++ b/ProjectSettings/PackageManagerSettings.asset @@ -9,9 +9,12 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 13960, guid: 0000000000000000e000000000000000, type: 0} + m_Script: {fileID: 13964, guid: 0000000000000000e000000000000000, type: 0} m_Name: m_EditorClassIdentifier: + m_EnablePreviewPackages: 0 + m_EnablePackageDependencies: 0 + m_AdvancedSettingsExpanded: 1 m_ScopedRegistriesSettingsExpanded: 1 oneTimeWarningShown: 0 m_Registries: @@ -20,6 +23,7 @@ MonoBehaviour: m_Url: https://packages.unity.com m_Scopes: [] m_IsDefault: 1 + m_Capabilities: 7 m_UserSelectedRegistryName: m_UserAddingNewScopedRegistry: 0 m_RegistryInfoDraft: @@ -30,6 +34,7 @@ MonoBehaviour: m_Url: m_Scopes: [] m_IsDefault: 0 + m_Capabilities: 0 m_Modified: 0 m_Name: m_Url: diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 88062e3..4c9401b 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2019.4.17f1 -m_EditorVersionWithRevision: 2019.4.17f1 (667c8606c536) +m_EditorVersion: 2020.3.25f1 +m_EditorVersionWithRevision: 2020.3.25f1 (9b9180224418) diff --git a/ProjectSettings/VersionControlSettings.asset b/ProjectSettings/VersionControlSettings.asset new file mode 100644 index 0000000..dca2881 --- /dev/null +++ b/ProjectSettings/VersionControlSettings.asset @@ -0,0 +1,8 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!890905787 &1 +VersionControlSettings: + m_ObjectHideFlags: 0 + m_Mode: Visible Meta Files + m_CollabEditorSettings: + inProgressEnabled: 1 diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset new file mode 100644 index 0000000000000000000000000000000000000000..c870a0bf492f98a3f6a4e921a5a2479d93593c1a GIT binary patch literal 4156 zcmeI0yN=UP5QfKbF0kBoxv!9*p^ltY7PdfWEd!#+DxhdXgM>_c;+VB#WIK-NT=NPP z2nrqmfkeMc11~_uJ0MYG=09W5o!GS zpi}lyqYN6fS}cuzvGxMj(AW4$8TM*ghchg2z2rLmWOj{vq0e%jMmpW7QTC$HH%fh- z9QSFZc$;983LEnG>Ct zbj7`bM@aQx63!pko-Z70B1Q+Hln$+aDx!JhC8D}##<56nUOt5HhjTN2H6880 zbnHa1Kk#A|_@Sv#4k!nd1IhvAfO0@Npd3&RC Date: Mon, 31 Jan 2022 11:26:06 +0100 Subject: [PATCH 08/68] Updated readme --- .vsconfig | 6 ++++++ README.md | 4 +++- UserSettings/EditorUserSettings.asset | Bin 4156 -> 631 bytes 3 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 .vsconfig diff --git a/.vsconfig b/.vsconfig new file mode 100644 index 0000000..d70cd98 --- /dev/null +++ b/.vsconfig @@ -0,0 +1,6 @@ +{ + "version": "1.0", + "components": [ + "Microsoft.VisualStudio.Workload.ManagedGame" + ] +} diff --git a/README.md b/README.md index b074ad0..b146e5a 100644 --- a/README.md +++ b/README.md @@ -342,7 +342,9 @@ This pattern is almost the same as the [Observer](#3-observer) pattern. The only **How to implement?** -Combine the [Command](#1-command) pattern with a C#'s built-in queue, which is why this pattern is sometimes known as a **Command Queue**. In the Update method you pick the first Command in the queue and run it while measuring time. To measure time you can use System.Diagnostics.Stopwatch. If you have time to spare, you run the next Command, and so on until you are out of time. How much time you can spend on the Event Queue each update depends on the game, so you have to experiment. +Combine the [Command](#1-command) pattern with a C#'s built-in queue, which is why this pattern is sometimes known as a **Command Queue**. In the Update method you pick the first Command in the queue and run it while measuring time. To measure time you can use System.Diagnostics.Stopwatch. If you have time to spare, you run the next Command, and so on until you are out of time. How much time you can spend on the Event Queue each update depends on the game, so you have to experiment. + +Credit to [masoudarvishian](https://github.com/masoudarvishian) for implementing this pattern! **When is it useful?** diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index c870a0bf492f98a3f6a4e921a5a2479d93593c1a..7098a395582d8b4bb5e9b6f8bbb6ff0660e1ba43 100644 GIT binary patch literal 631 zcmZvZT~FIE6o&8fE6fGEqR3xK+uTKA45U^?%c#T^a_p1D;KY;Tw90<{Y@k~=ajvZQ zJbusDw4a%}mbSm5n2WnS9rFaC{&`owfb@4-!L1QNL^#NS(!%Ipp!VQKZHFB3H@dV#quX-_gua7>!J9dF zt13L58mrN;68Bq${Qf zWlE@qF~u@Sp=PX6uwr~k=$b8Y-PAPwsM7pxK9rPICmg7aZ8vZL^It1irNA+6aF)hl zW1M~OpZ8@kdD{!GWua7#$lK`q@&@XuEp7k4qsYB0ePE)|A7wZBlTtx1hG4V>*TUAS zxQP$6>g@4WXalP3K)%}e=~QZW0C#lS!@oc=j^M+MPS}I9@p_RqV!oGlI7{AXaKg!M b{ye?&9k|a^g)#P6jPoELe=6Za&p7!F;TOJv literal 4156 zcmeI0yN=UP5QfKbF0kBoxv!9*p^ltY7PdfWEd!#+DxhdXgM>_c;+VB#WIK-NT=NPP z2nrqmfkeMc11~_uJ0MYG=09W5o!GS zpi}lyqYN6fS}cuzvGxMj(AW4$8TM*ghchg2z2rLmWOj{vq0e%jMmpW7QTC$HH%fh- z9QSFZc$;983LEnG>Ct zbj7`bM@aQx63!pko-Z70B1Q+Hln$+aDx!JhC8D}##<56nUOt5HhjTN2H6880 zbnHa1Kk#A|_@Sv#4k!nd1IhvAfO0@Npd3&RC Date: Mon, 31 Jan 2022 15:06:00 +0100 Subject: [PATCH 09/68] Updated readme --- README.md | 9 +++++++-- UserSettings/EditorUserSettings.asset | 12 ++++++++++++ 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index b146e5a..64f488e 100644 --- a/README.md +++ b/README.md @@ -344,8 +344,6 @@ This pattern is almost the same as the [Observer](#3-observer) pattern. The only Combine the [Command](#1-command) pattern with a C#'s built-in queue, which is why this pattern is sometimes known as a **Command Queue**. In the Update method you pick the first Command in the queue and run it while measuring time. To measure time you can use System.Diagnostics.Stopwatch. If you have time to spare, you run the next Command, and so on until you are out of time. How much time you can spend on the Event Queue each update depends on the game, so you have to experiment. -Credit to [masoudarvishian](https://github.com/masoudarvishian) for implementing this pattern! - **When is it useful?** * When you after an event will load an asset. This may take time, so if you want to play a sound when clicking a button, the game may freeze because it has to load the sound. A better way is to play the sound some frames after the click. @@ -557,6 +555,13 @@ Define a template method in the parent class which consists of calling several m +# Credits + +* [masoudarvishian](https://github.com/masoudarvishian) for implementing Event Queue pattern, Service Locator pattern, and bug fixing +* [VladimirMirMir](https://github.com/VladimirMirMir) for bug fixing + + + # Socials * Visit my [Portfolio](https://www.habrador.com) diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index 7098a39..c69f9f7 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -8,6 +8,18 @@ EditorUserSettings: RecentlyUsedScenePath-0: value: 224247031146466b0c1a1827022d4c5f435958192526213c283d123dadf33d36e5eb33fde8347129370bfb25 flags: 0 + RecentlyUsedScenePath-1: + value: 224247031146466b0c1a1827022d4c5f4159580e233d243c28693f26e4e6312aadc437ffe2753b332c00e339443c1439f40f1b4bf50a1c0e5f1bf30705e6 + flags: 0 + RecentlyUsedScenePath-2: + value: 224247031146466b0c1a1827022d4c5f40595819382932356204183df7af272ce3f333a4ea3f31297717e1351027 + flags: 0 + RecentlyUsedScenePath-3: + value: 224247031146466b0c1a1827022d4c5f4743566a0f272b3d2c271973d3f5312de7a77eccf13f31287933fa39113b4870d1050406f7050e3a040be80b22fc151d148b0dcb13dc06 + flags: 0 + RecentlyUsedScenePath-4: + value: 224247031146466b0c1a1827022d4c5f4742566a1f2d3426242a1873ceef3739f6e824a9af1b31332d0aea2e44170c2ffe0f040ef81f0b1f1801f3475ecc150107cc1bc036c71c1ddf160efdce18dfe69bc3dae3ccf2 + flags: 0 vcSharedLogLevel: value: 0d5e400f0650 flags: 0 From c8df0fcd4fcb0931d69811ceae8a7fc023e567d3 Mon Sep 17 00:00:00 2001 From: habrador Date: Mon, 31 Jan 2022 15:10:16 +0100 Subject: [PATCH 10/68] Updated readme --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index 64f488e..99f4285 100644 --- a/README.md +++ b/README.md @@ -564,6 +564,4 @@ Define a template method in the parent class which consists of calling several m # Socials -* Visit my [Portfolio](https://www.habrador.com) - * Follow me on [Twitter](https://twitter.com/eriknordeus) \ No newline at end of file From 75dc1e4df3b5650e4ac68690b0fda0bfaedceaab Mon Sep 17 00:00:00 2001 From: habrador Date: Mon, 31 Jan 2022 15:16:22 +0100 Subject: [PATCH 11/68] Nothing important --- .../GameController.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/GameController.cs b/Assets/Patterns/15. Service Locator (Another Implementation)/GameController.cs index 4728f7d..0a2c8ec 100644 --- a/Assets/Patterns/15. Service Locator (Another Implementation)/GameController.cs +++ b/Assets/Patterns/15. Service Locator (Another Implementation)/GameController.cs @@ -1,4 +1,4 @@ -namespace ServiceLocatorPattern +namespace ServiceLocatorPattern { using UnityEngine; @@ -15,4 +15,4 @@ private void Start() thirdService?.Foo(); } } -} \ No newline at end of file +} From 75a46c98454807ccbfc8a11e038780c539e45d5f Mon Sep 17 00:00:00 2001 From: habrador Date: Thu, 13 Oct 2022 10:43:43 +0200 Subject: [PATCH 12/68] Upgraded to Unity 2021 LTS and updated packages --- .../7. Double Buffer/Cave/Cave mat.mat | 1 + Packages/manifest.json | 10 +- Packages/packages-lock.json | 12 +- ProjectSettings/MemorySettings.asset | 35 + ProjectSettings/ProjectVersion.txt | 4 +- ProjectSettings/boot.config | 0 README.md | 2 +- UserSettings/EditorUserSettings.asset | 22 +- UserSettings/Layouts/default-2021.dwlt | 689 ++++++++++++++++++ 9 files changed, 746 insertions(+), 29 deletions(-) create mode 100644 ProjectSettings/MemorySettings.asset create mode 100644 ProjectSettings/boot.config create mode 100644 UserSettings/Layouts/default-2021.dwlt diff --git a/Assets/Patterns/7. Double Buffer/Cave/Cave mat.mat b/Assets/Patterns/7. Double Buffer/Cave/Cave mat.mat index 1847db3..40d5ad2 100644 --- a/Assets/Patterns/7. Double Buffer/Cave/Cave mat.mat +++ b/Assets/Patterns/7. Double Buffer/Cave/Cave mat.mat @@ -75,3 +75,4 @@ Material: m_Colors: - _Color: {r: 1, g: 1, b: 1, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Packages/manifest.json b/Packages/manifest.json index 0ee8286..9d62b9f 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -2,12 +2,12 @@ "dependencies": { "com.unity.2d.sprite": "1.0.0", "com.unity.2d.tilemap": "1.0.0", - "com.unity.ide.rider": "2.0.7", - "com.unity.ide.visualstudio": "2.0.14", - "com.unity.ide.vscode": "1.2.4", - "com.unity.test-framework": "1.1.29", + "com.unity.ide.rider": "3.0.16", + "com.unity.ide.visualstudio": "2.0.16", + "com.unity.ide.vscode": "1.2.5", + "com.unity.test-framework": "1.1.33", "com.unity.textmeshpro": "3.0.6", - "com.unity.timeline": "1.4.8", + "com.unity.timeline": "1.6.4", "com.unity.ugui": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 2e0479b..166612b 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -20,16 +20,16 @@ "url": "https://packages.unity.com/" }, "com.unity.ide.rider": { - "version": "2.0.7", + "version": "3.0.16", "depth": 0, "source": "registry", "dependencies": { - "com.unity.test-framework": "1.1.1" + "com.unity.ext.nunit": "1.0.6" }, "url": "https://packages.unity.com/" }, "com.unity.ide.visualstudio": { - "version": "2.0.14", + "version": "2.0.16", "depth": 0, "source": "registry", "dependencies": { @@ -38,14 +38,14 @@ "url": "https://packages.unity.com/" }, "com.unity.ide.vscode": { - "version": "1.2.4", + "version": "1.2.5", "depth": 0, "source": "registry", "dependencies": {}, "url": "https://packages.unity.com/" }, "com.unity.test-framework": { - "version": "1.1.29", + "version": "1.1.33", "depth": 0, "source": "registry", "dependencies": { @@ -65,7 +65,7 @@ "url": "https://packages.unity.com/" }, "com.unity.timeline": { - "version": "1.4.8", + "version": "1.6.4", "depth": 0, "source": "registry", "dependencies": { diff --git a/ProjectSettings/MemorySettings.asset b/ProjectSettings/MemorySettings.asset new file mode 100644 index 0000000..5b5face --- /dev/null +++ b/ProjectSettings/MemorySettings.asset @@ -0,0 +1,35 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!387306366 &1 +MemorySettings: + m_ObjectHideFlags: 0 + m_EditorMemorySettings: + m_MainAllocatorBlockSize: -1 + m_ThreadAllocatorBlockSize: -1 + m_MainGfxBlockSize: -1 + m_ThreadGfxBlockSize: -1 + m_CacheBlockSize: -1 + m_TypetreeBlockSize: -1 + m_ProfilerBlockSize: -1 + m_ProfilerEditorBlockSize: -1 + m_BucketAllocatorGranularity: -1 + m_BucketAllocatorBucketsCount: -1 + m_BucketAllocatorBlockSize: -1 + m_BucketAllocatorBlockCount: -1 + m_ProfilerBucketAllocatorGranularity: -1 + m_ProfilerBucketAllocatorBucketsCount: -1 + m_ProfilerBucketAllocatorBlockSize: -1 + m_ProfilerBucketAllocatorBlockCount: -1 + m_TempAllocatorSizeMain: -1 + m_JobTempAllocatorBlockSize: -1 + m_BackgroundJobTempAllocatorBlockSize: -1 + m_JobTempAllocatorReducedBlockSize: -1 + m_TempAllocatorSizeGIBakingWorker: -1 + m_TempAllocatorSizeNavMeshWorker: -1 + m_TempAllocatorSizeAudioWorker: -1 + m_TempAllocatorSizeCloudWorker: -1 + m_TempAllocatorSizeGfx: -1 + m_TempAllocatorSizeJobWorker: -1 + m_TempAllocatorSizeBackgroundWorker: -1 + m_TempAllocatorSizePreloadManager: -1 + m_PlatformMemorySettings: {} diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 4c9401b..8d9054d 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2020.3.25f1 -m_EditorVersionWithRevision: 2020.3.25f1 (9b9180224418) +m_EditorVersion: 2021.3.9f1 +m_EditorVersionWithRevision: 2021.3.9f1 (ad3870b89536) diff --git a/ProjectSettings/boot.config b/ProjectSettings/boot.config new file mode 100644 index 0000000..e69de29 diff --git a/README.md b/README.md index 99f4285..a3f3895 100644 --- a/README.md +++ b/README.md @@ -555,7 +555,7 @@ Define a template method in the parent class which consists of calling several m -# Credits +# Special thanks * [masoudarvishian](https://github.com/masoudarvishian) for implementing Event Queue pattern, Service Locator pattern, and bug fixing * [VladimirMirMir](https://github.com/VladimirMirMir) for bug fixing diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset index c69f9f7..b44fb44 100644 --- a/UserSettings/EditorUserSettings.asset +++ b/UserSettings/EditorUserSettings.asset @@ -5,20 +5,8 @@ EditorUserSettings: m_ObjectHideFlags: 0 serializedVersion: 4 m_ConfigSettings: - RecentlyUsedScenePath-0: - value: 224247031146466b0c1a1827022d4c5f435958192526213c283d123dadf33d36e5eb33fde8347129370bfb25 - flags: 0 - RecentlyUsedScenePath-1: - value: 224247031146466b0c1a1827022d4c5f4159580e233d243c28693f26e4e6312aadc437ffe2753b332c00e339443c1439f40f1b4bf50a1c0e5f1bf30705e6 - flags: 0 - RecentlyUsedScenePath-2: - value: 224247031146466b0c1a1827022d4c5f40595819382932356204183df7af272ce3f333a4ea3f31297717e1351027 - flags: 0 - RecentlyUsedScenePath-3: - value: 224247031146466b0c1a1827022d4c5f4743566a0f272b3d2c271973d3f5312de7a77eccf13f31287933fa39113b4870d1050406f7050e3a040be80b22fc151d148b0dcb13dc06 - flags: 0 - RecentlyUsedScenePath-4: - value: 224247031146466b0c1a1827022d4c5f4742566a1f2d3426242a1873ceef3739f6e824a9af1b31332d0aea2e44170c2ffe0f040ef81f0b1f1801f3475ecc150107cc1bc036c71c1ddf160efdce18dfe69bc3dae3ccf2 + RecentlyUsedSceneGuid-0: + value: 560001075d54085d5b5c597746770a4410151c727d782060792a4e67e1b9323b flags: 0 vcSharedLogLevel: value: 0d5e400f0650 @@ -28,9 +16,13 @@ EditorUserSettings: m_VCDebugCmd: 0 m_VCDebugOut: 0 m_SemanticMergeMode: 2 + m_DesiredImportWorkerCount: 1 + m_StandbyImportWorkerCount: 1 + m_IdleImportWorkerShutdownDelay: 60000 m_VCShowFailedCheckout: 1 m_VCOverwriteFailedCheckoutAssets: 1 m_VCProjectOverlayIcons: 1 m_VCHierarchyOverlayIcons: 1 m_VCOtherOverlayIcons: 1 - m_VCAllowAsyncUpdate: 0 + m_VCAllowAsyncUpdate: 1 + m_ArtifactGarbageCollection: 1 diff --git a/UserSettings/Layouts/default-2021.dwlt b/UserSettings/Layouts/default-2021.dwlt new file mode 100644 index 0000000..3693400 --- /dev/null +++ b/UserSettings/Layouts/default-2021.dwlt @@ -0,0 +1,689 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &1 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_PixelRect: + serializedVersion: 2 + x: 0 + y: 45 + width: 2560 + height: 1391 + m_ShowMode: 4 + m_Title: + m_RootView: {fileID: 6} + m_MinSize: {x: 950, y: 300} + m_MaxSize: {x: 10000, y: 10000} +--- !u!114 &2 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 9} + - {fileID: 3} + m_Position: + serializedVersion: 2 + x: 0 + y: 30 + width: 2560 + height: 1341 + m_MinSize: {x: 683, y: 492} + m_MaxSize: {x: 14004, y: 14042} + vertical: 0 + controlID: 615 +--- !u!114 &3 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 2041 + y: 0 + width: 519 + height: 1341 + m_MinSize: {x: 277, y: 71} + m_MaxSize: {x: 4002, y: 4021} + m_ActualView: {fileID: 14} + m_Panes: + - {fileID: 14} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &4 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 505 + height: 811 + m_MinSize: {x: 202, y: 221} + m_MaxSize: {x: 4002, y: 4021} + m_ActualView: {fileID: 15} + m_Panes: + - {fileID: 15} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &5 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 811 + width: 2041 + height: 530 + m_MinSize: {x: 232, y: 271} + m_MaxSize: {x: 10002, y: 10021} + m_ActualView: {fileID: 13} + m_Panes: + - {fileID: 13} + - {fileID: 18} + m_Selected: 0 + m_LastSelected: 0 +--- !u!114 &6 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 7} + - {fileID: 2} + - {fileID: 8} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 2560 + height: 1391 + m_MinSize: {x: 950, y: 300} + m_MaxSize: {x: 10000, y: 10000} +--- !u!114 &7 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 2560 + height: 30 + m_MinSize: {x: 0, y: 0} + m_MaxSize: {x: 0, y: 0} + m_LastLoadedLayoutName: Default +--- !u!114 &8 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 0 + y: 1371 + width: 2560 + height: 20 + m_MinSize: {x: 0, y: 0} + m_MaxSize: {x: 0, y: 0} +--- !u!114 &9 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 10} + - {fileID: 5} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 2041 + height: 1341 + m_MinSize: {x: 406, y: 492} + m_MaxSize: {x: 10002, y: 14042} + vertical: 1 + controlID: 547 +--- !u!114 &10 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: + - {fileID: 4} + - {fileID: 11} + m_Position: + serializedVersion: 2 + x: 0 + y: 0 + width: 2041 + height: 811 + m_MinSize: {x: 406, y: 221} + m_MaxSize: {x: 8006, y: 4021} + vertical: 0 + controlID: 548 +--- !u!114 &11 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_Children: [] + m_Position: + serializedVersion: 2 + x: 505 + y: 0 + width: 1536 + height: 811 + m_MinSize: {x: 204, y: 221} + m_MaxSize: {x: 4004, y: 4021} + m_ActualView: {fileID: 16} + m_Panes: + - {fileID: 16} + - {fileID: 17} + - {fileID: 12} + m_Selected: 0 + m_LastSelected: 1 +--- !u!114 &12 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12111, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 0 + m_MinSize: {x: 400, y: 100} + m_MaxSize: {x: 2048, y: 2048} + m_TitleContent: + m_Text: Asset Store + m_Image: {fileID: 357073275683767465, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 0 + m_Pos: + serializedVersion: 2 + x: 468 + y: 181 + width: 973 + height: 501 +--- !u!114 &13 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 0 + m_MinSize: {x: 230, y: 250} + m_MaxSize: {x: 10000, y: 10000} + m_TitleContent: + m_Text: Project + m_Image: {fileID: -7501376956915960154, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 0 + m_Pos: + serializedVersion: 2 + x: 0 + y: 905 + width: 2039 + height: 509 + m_SearchFilter: + m_NameFilter: + m_ClassNames: [] + m_AssetLabels: [] + m_AssetBundleNames: [] + m_VersionControlStates: [] + m_ReferencingInstanceIDs: + m_ScenePaths: [] + m_ShowAllHits: 0 + m_SearchArea: 0 + m_Folders: + - Assets + m_ViewMode: 1 + m_StartGridSize: 64 + m_LastFolders: + - Assets + m_LastFoldersGridSize: -1 + m_LastProjectPath: /Users/danielbrauer/Unity Projects/New Unity Project 20 + m_IsLocked: 0 + m_FolderTreeState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: b0230000 + m_LastClickedID: 9136 + m_ExpandedIDs: 00000000b023000000ca9a3bffffff7f + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_SearchString: + m_ColumnWidths: [] + m_AssetTreeState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: 00000000b023000000ca9a3bffffff7f + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_SearchString: + m_ColumnWidths: [] + m_ListAreaState: + m_SelectedInstanceIDs: + m_LastClickedInstanceID: 0 + m_HadKeyboardFocusLastEvent: 0 + m_ExpandedInstanceIDs: c6230000 + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 1 + m_ClientGUIView: {fileID: 0} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_NewAssetIndexInList: -1 + m_ScrollPosition: {x: 0, y: 0} + m_GridSize: 64 + m_DirectoriesAreaWidth: 115 +--- !u!114 &14 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 0 + m_MinSize: {x: 275, y: 50} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Inspector + m_Image: {fileID: -6905738622615590433, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 0 + m_Pos: + serializedVersion: 2 + x: 2043 + y: 94 + width: 517 + height: 1320 + m_ScrollPosition: {x: 0, y: 0} + m_InspectorMode: 0 + m_PreviewResizer: + m_CachedPref: 160 + m_ControlHash: -371814159 + m_PrefName: Preview_InspectorPreview + m_PreviewWindow: {fileID: 0} +--- !u!114 &15 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 0 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Hierarchy + m_Image: {fileID: -590624980919486359, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 0 + m_Pos: + serializedVersion: 2 + x: 0 + y: 94 + width: 503 + height: 790 + m_TreeViewState: + scrollPos: {x: 0, y: 0} + m_SelectedIDs: + m_LastClickedID: 0 + m_ExpandedIDs: 00000000 + m_RenameOverlay: + m_UserAcceptedRename: 0 + m_Name: + m_OriginalName: + m_EditFieldRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 0 + height: 0 + m_UserData: 0 + m_IsWaitingForDelay: 0 + m_IsRenaming: 0 + m_OriginalEventType: 11 + m_IsRenamingFilename: 0 + m_ClientGUIView: {fileID: 0} + m_CreateAssetUtility: + m_EndAction: {fileID: 0} + m_InstanceID: 0 + m_Path: + m_Icon: {fileID: 0} + m_ResourceFile: + m_SearchString: + m_ColumnWidths: [] + m_ExpandedScenes: [] + m_CurrenRootInstanceID: 0 + m_Locked: 0 + m_CurrentSortingName: TransformSorting +--- !u!114 &16 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 1 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Scene + m_Image: {fileID: 2318424515335265636, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 32 + m_Pos: + serializedVersion: 2 + x: 507 + y: 94 + width: 1532 + height: 790 + m_SceneLighting: 1 + lastFramingTime: 0 + m_2DMode: 0 + m_isRotationLocked: 0 + m_AudioPlay: 0 + m_Position: + m_Target: {x: 0, y: 0, z: 0} + speed: 2 + m_Value: {x: 0, y: 0, z: 0} + m_RenderMode: 0 + m_SceneViewState: + showFog: 1 + showMaterialUpdate: 0 + showSkybox: 1 + showFlares: 1 + showImageEffects: 1 + grid: + xGrid: + m_Target: 0 + speed: 2 + m_Value: 0 + yGrid: + m_Target: 1 + speed: 2 + m_Value: 1 + zGrid: + m_Target: 0 + speed: 2 + m_Value: 0 + m_Rotation: + m_Target: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} + speed: 2 + m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} + m_Size: + m_Target: 10 + speed: 2 + m_Value: 10 + m_Ortho: + m_Target: 0 + speed: 2 + m_Value: 0 + m_LastSceneViewRotation: {x: 0, y: 0, z: 0, w: 0} + m_LastSceneViewOrtho: 0 + m_ReplacementShader: {fileID: 0} + m_ReplacementString: + m_LastLockedObject: {fileID: 0} + m_ViewIsLockedToObject: 0 +--- !u!114 &17 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 1 + m_MinSize: {x: 200, y: 200} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Game + m_Image: {fileID: -2087823869225018852, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 32 + m_Pos: + serializedVersion: 2 + x: 507 + y: 94 + width: 1532 + height: 790 + m_MaximizeOnPlay: 0 + m_Gizmos: 0 + m_Stats: 0 + m_SelectedSizes: 000000000000000000000000000000000000000000000000000000000000000000000000 + m_TargetDisplay: 0 + m_ZoomArea: + m_HRangeLocked: 0 + m_VRangeLocked: 0 + m_HBaseRangeMin: -383 + m_HBaseRangeMax: 383 + m_VBaseRangeMin: -193.25 + m_VBaseRangeMax: 193.25 + m_HAllowExceedBaseRangeMin: 1 + m_HAllowExceedBaseRangeMax: 1 + m_VAllowExceedBaseRangeMin: 1 + m_VAllowExceedBaseRangeMax: 1 + m_ScaleWithWindow: 0 + m_HSlider: 0 + m_VSlider: 0 + m_IgnoreScrollWheelUntilClicked: 0 + m_EnableMouseInput: 1 + m_EnableSliderZoom: 0 + m_UniformScale: 1 + m_UpDirection: 1 + m_DrawArea: + serializedVersion: 2 + x: 0 + y: 17 + width: 1532 + height: 773 + m_Scale: {x: 2, y: 2} + m_Translation: {x: 766, y: 386.5} + m_MarginLeft: 0 + m_MarginRight: 0 + m_MarginTop: 0 + m_MarginBottom: 0 + m_LastShownAreaInsideMargins: + serializedVersion: 2 + x: -383 + y: -193.25 + width: 766 + height: 386.5 + m_MinimalGUI: 1 + m_defaultScale: 2 + m_TargetTexture: {fileID: 0} + m_CurrentColorSpace: 1 + m_LastWindowPixelSize: {x: 3064, y: 1580} + m_ClearInEditMode: 1 + m_NoCameraWarning: 1 +--- !u!114 &18 +MonoBehaviour: + m_ObjectHideFlags: 52 + m_PrefabParentObject: {fileID: 0} + m_PrefabInternal: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 1 + m_Script: {fileID: 12003, guid: 0000000000000000e000000000000000, type: 0} + m_Name: + m_EditorClassIdentifier: + m_AutoRepaintOnSceneChange: 0 + m_MinSize: {x: 100, y: 100} + m_MaxSize: {x: 4000, y: 4000} + m_TitleContent: + m_Text: Console + m_Image: {fileID: 111653112392082826, guid: 0000000000000000d000000000000000, + type: 0} + m_Tooltip: + m_DepthBufferBits: 0 + m_Pos: + serializedVersion: 2 + x: 8 + y: 718 + width: 1366 + height: 308 From 7fd60ea632a2be5efdd317b9b203fff24dd31bf4 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 18 Oct 2022 12:04:00 +0200 Subject: [PATCH 13/68] Removed UserSettings folder --- UserSettings/EditorUserSettings.asset | 28 - UserSettings/Layouts/default-2021.dwlt | 689 ------------------------- 2 files changed, 717 deletions(-) delete mode 100644 UserSettings/EditorUserSettings.asset delete mode 100644 UserSettings/Layouts/default-2021.dwlt diff --git a/UserSettings/EditorUserSettings.asset b/UserSettings/EditorUserSettings.asset deleted file mode 100644 index b44fb44..0000000 --- a/UserSettings/EditorUserSettings.asset +++ /dev/null @@ -1,28 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!162 &1 -EditorUserSettings: - m_ObjectHideFlags: 0 - serializedVersion: 4 - m_ConfigSettings: - RecentlyUsedSceneGuid-0: - value: 560001075d54085d5b5c597746770a4410151c727d782060792a4e67e1b9323b - flags: 0 - vcSharedLogLevel: - value: 0d5e400f0650 - flags: 0 - m_VCAutomaticAdd: 1 - m_VCDebugCom: 0 - m_VCDebugCmd: 0 - m_VCDebugOut: 0 - m_SemanticMergeMode: 2 - m_DesiredImportWorkerCount: 1 - m_StandbyImportWorkerCount: 1 - m_IdleImportWorkerShutdownDelay: 60000 - m_VCShowFailedCheckout: 1 - m_VCOverwriteFailedCheckoutAssets: 1 - m_VCProjectOverlayIcons: 1 - m_VCHierarchyOverlayIcons: 1 - m_VCOtherOverlayIcons: 1 - m_VCAllowAsyncUpdate: 1 - m_ArtifactGarbageCollection: 1 diff --git a/UserSettings/Layouts/default-2021.dwlt b/UserSettings/Layouts/default-2021.dwlt deleted file mode 100644 index 3693400..0000000 --- a/UserSettings/Layouts/default-2021.dwlt +++ /dev/null @@ -1,689 +0,0 @@ -%YAML 1.1 -%TAG !u! tag:unity3d.com,2011: ---- !u!114 &1 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12004, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_PixelRect: - serializedVersion: 2 - x: 0 - y: 45 - width: 2560 - height: 1391 - m_ShowMode: 4 - m_Title: - m_RootView: {fileID: 6} - m_MinSize: {x: 950, y: 300} - m_MaxSize: {x: 10000, y: 10000} ---- !u!114 &2 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: - - {fileID: 9} - - {fileID: 3} - m_Position: - serializedVersion: 2 - x: 0 - y: 30 - width: 2560 - height: 1341 - m_MinSize: {x: 683, y: 492} - m_MaxSize: {x: 14004, y: 14042} - vertical: 0 - controlID: 615 ---- !u!114 &3 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: [] - m_Position: - serializedVersion: 2 - x: 2041 - y: 0 - width: 519 - height: 1341 - m_MinSize: {x: 277, y: 71} - m_MaxSize: {x: 4002, y: 4021} - m_ActualView: {fileID: 14} - m_Panes: - - {fileID: 14} - m_Selected: 0 - m_LastSelected: 0 ---- !u!114 &4 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: [] - m_Position: - serializedVersion: 2 - x: 0 - y: 0 - width: 505 - height: 811 - m_MinSize: {x: 202, y: 221} - m_MaxSize: {x: 4002, y: 4021} - m_ActualView: {fileID: 15} - m_Panes: - - {fileID: 15} - m_Selected: 0 - m_LastSelected: 0 ---- !u!114 &5 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: [] - m_Position: - serializedVersion: 2 - x: 0 - y: 811 - width: 2041 - height: 530 - m_MinSize: {x: 232, y: 271} - m_MaxSize: {x: 10002, y: 10021} - m_ActualView: {fileID: 13} - m_Panes: - - {fileID: 13} - - {fileID: 18} - m_Selected: 0 - m_LastSelected: 0 ---- !u!114 &6 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12008, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: - - {fileID: 7} - - {fileID: 2} - - {fileID: 8} - m_Position: - serializedVersion: 2 - x: 0 - y: 0 - width: 2560 - height: 1391 - m_MinSize: {x: 950, y: 300} - m_MaxSize: {x: 10000, y: 10000} ---- !u!114 &7 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12011, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: [] - m_Position: - serializedVersion: 2 - x: 0 - y: 0 - width: 2560 - height: 30 - m_MinSize: {x: 0, y: 0} - m_MaxSize: {x: 0, y: 0} - m_LastLoadedLayoutName: Default ---- !u!114 &8 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12042, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: [] - m_Position: - serializedVersion: 2 - x: 0 - y: 1371 - width: 2560 - height: 20 - m_MinSize: {x: 0, y: 0} - m_MaxSize: {x: 0, y: 0} ---- !u!114 &9 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: - - {fileID: 10} - - {fileID: 5} - m_Position: - serializedVersion: 2 - x: 0 - y: 0 - width: 2041 - height: 1341 - m_MinSize: {x: 406, y: 492} - m_MaxSize: {x: 10002, y: 14042} - vertical: 1 - controlID: 547 ---- !u!114 &10 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12010, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: - - {fileID: 4} - - {fileID: 11} - m_Position: - serializedVersion: 2 - x: 0 - y: 0 - width: 2041 - height: 811 - m_MinSize: {x: 406, y: 221} - m_MaxSize: {x: 8006, y: 4021} - vertical: 0 - controlID: 548 ---- !u!114 &11 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12006, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_Children: [] - m_Position: - serializedVersion: 2 - x: 505 - y: 0 - width: 1536 - height: 811 - m_MinSize: {x: 204, y: 221} - m_MaxSize: {x: 4004, y: 4021} - m_ActualView: {fileID: 16} - m_Panes: - - {fileID: 16} - - {fileID: 17} - - {fileID: 12} - m_Selected: 0 - m_LastSelected: 1 ---- !u!114 &12 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12111, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_AutoRepaintOnSceneChange: 0 - m_MinSize: {x: 400, y: 100} - m_MaxSize: {x: 2048, y: 2048} - m_TitleContent: - m_Text: Asset Store - m_Image: {fileID: 357073275683767465, guid: 0000000000000000d000000000000000, - type: 0} - m_Tooltip: - m_DepthBufferBits: 0 - m_Pos: - serializedVersion: 2 - x: 468 - y: 181 - width: 973 - height: 501 ---- !u!114 &13 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12014, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_AutoRepaintOnSceneChange: 0 - m_MinSize: {x: 230, y: 250} - m_MaxSize: {x: 10000, y: 10000} - m_TitleContent: - m_Text: Project - m_Image: {fileID: -7501376956915960154, guid: 0000000000000000d000000000000000, - type: 0} - m_Tooltip: - m_DepthBufferBits: 0 - m_Pos: - serializedVersion: 2 - x: 0 - y: 905 - width: 2039 - height: 509 - m_SearchFilter: - m_NameFilter: - m_ClassNames: [] - m_AssetLabels: [] - m_AssetBundleNames: [] - m_VersionControlStates: [] - m_ReferencingInstanceIDs: - m_ScenePaths: [] - m_ShowAllHits: 0 - m_SearchArea: 0 - m_Folders: - - Assets - m_ViewMode: 1 - m_StartGridSize: 64 - m_LastFolders: - - Assets - m_LastFoldersGridSize: -1 - m_LastProjectPath: /Users/danielbrauer/Unity Projects/New Unity Project 20 - m_IsLocked: 0 - m_FolderTreeState: - scrollPos: {x: 0, y: 0} - m_SelectedIDs: b0230000 - m_LastClickedID: 9136 - m_ExpandedIDs: 00000000b023000000ca9a3bffffff7f - m_RenameOverlay: - m_UserAcceptedRename: 0 - m_Name: - m_OriginalName: - m_EditFieldRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - m_UserData: 0 - m_IsWaitingForDelay: 0 - m_IsRenaming: 0 - m_OriginalEventType: 11 - m_IsRenamingFilename: 1 - m_ClientGUIView: {fileID: 0} - m_CreateAssetUtility: - m_EndAction: {fileID: 0} - m_InstanceID: 0 - m_Path: - m_Icon: {fileID: 0} - m_ResourceFile: - m_SearchString: - m_ColumnWidths: [] - m_AssetTreeState: - scrollPos: {x: 0, y: 0} - m_SelectedIDs: - m_LastClickedID: 0 - m_ExpandedIDs: 00000000b023000000ca9a3bffffff7f - m_RenameOverlay: - m_UserAcceptedRename: 0 - m_Name: - m_OriginalName: - m_EditFieldRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - m_UserData: 0 - m_IsWaitingForDelay: 0 - m_IsRenaming: 0 - m_OriginalEventType: 11 - m_IsRenamingFilename: 1 - m_ClientGUIView: {fileID: 0} - m_CreateAssetUtility: - m_EndAction: {fileID: 0} - m_InstanceID: 0 - m_Path: - m_Icon: {fileID: 0} - m_ResourceFile: - m_SearchString: - m_ColumnWidths: [] - m_ListAreaState: - m_SelectedInstanceIDs: - m_LastClickedInstanceID: 0 - m_HadKeyboardFocusLastEvent: 0 - m_ExpandedInstanceIDs: c6230000 - m_RenameOverlay: - m_UserAcceptedRename: 0 - m_Name: - m_OriginalName: - m_EditFieldRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - m_UserData: 0 - m_IsWaitingForDelay: 0 - m_IsRenaming: 0 - m_OriginalEventType: 11 - m_IsRenamingFilename: 1 - m_ClientGUIView: {fileID: 0} - m_CreateAssetUtility: - m_EndAction: {fileID: 0} - m_InstanceID: 0 - m_Path: - m_Icon: {fileID: 0} - m_ResourceFile: - m_NewAssetIndexInList: -1 - m_ScrollPosition: {x: 0, y: 0} - m_GridSize: 64 - m_DirectoriesAreaWidth: 115 ---- !u!114 &14 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12019, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_AutoRepaintOnSceneChange: 0 - m_MinSize: {x: 275, y: 50} - m_MaxSize: {x: 4000, y: 4000} - m_TitleContent: - m_Text: Inspector - m_Image: {fileID: -6905738622615590433, guid: 0000000000000000d000000000000000, - type: 0} - m_Tooltip: - m_DepthBufferBits: 0 - m_Pos: - serializedVersion: 2 - x: 2043 - y: 94 - width: 517 - height: 1320 - m_ScrollPosition: {x: 0, y: 0} - m_InspectorMode: 0 - m_PreviewResizer: - m_CachedPref: 160 - m_ControlHash: -371814159 - m_PrefName: Preview_InspectorPreview - m_PreviewWindow: {fileID: 0} ---- !u!114 &15 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12061, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_AutoRepaintOnSceneChange: 0 - m_MinSize: {x: 200, y: 200} - m_MaxSize: {x: 4000, y: 4000} - m_TitleContent: - m_Text: Hierarchy - m_Image: {fileID: -590624980919486359, guid: 0000000000000000d000000000000000, - type: 0} - m_Tooltip: - m_DepthBufferBits: 0 - m_Pos: - serializedVersion: 2 - x: 0 - y: 94 - width: 503 - height: 790 - m_TreeViewState: - scrollPos: {x: 0, y: 0} - m_SelectedIDs: - m_LastClickedID: 0 - m_ExpandedIDs: 00000000 - m_RenameOverlay: - m_UserAcceptedRename: 0 - m_Name: - m_OriginalName: - m_EditFieldRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 0 - height: 0 - m_UserData: 0 - m_IsWaitingForDelay: 0 - m_IsRenaming: 0 - m_OriginalEventType: 11 - m_IsRenamingFilename: 0 - m_ClientGUIView: {fileID: 0} - m_CreateAssetUtility: - m_EndAction: {fileID: 0} - m_InstanceID: 0 - m_Path: - m_Icon: {fileID: 0} - m_ResourceFile: - m_SearchString: - m_ColumnWidths: [] - m_ExpandedScenes: [] - m_CurrenRootInstanceID: 0 - m_Locked: 0 - m_CurrentSortingName: TransformSorting ---- !u!114 &16 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12013, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_AutoRepaintOnSceneChange: 1 - m_MinSize: {x: 200, y: 200} - m_MaxSize: {x: 4000, y: 4000} - m_TitleContent: - m_Text: Scene - m_Image: {fileID: 2318424515335265636, guid: 0000000000000000d000000000000000, - type: 0} - m_Tooltip: - m_DepthBufferBits: 32 - m_Pos: - serializedVersion: 2 - x: 507 - y: 94 - width: 1532 - height: 790 - m_SceneLighting: 1 - lastFramingTime: 0 - m_2DMode: 0 - m_isRotationLocked: 0 - m_AudioPlay: 0 - m_Position: - m_Target: {x: 0, y: 0, z: 0} - speed: 2 - m_Value: {x: 0, y: 0, z: 0} - m_RenderMode: 0 - m_SceneViewState: - showFog: 1 - showMaterialUpdate: 0 - showSkybox: 1 - showFlares: 1 - showImageEffects: 1 - grid: - xGrid: - m_Target: 0 - speed: 2 - m_Value: 0 - yGrid: - m_Target: 1 - speed: 2 - m_Value: 1 - zGrid: - m_Target: 0 - speed: 2 - m_Value: 0 - m_Rotation: - m_Target: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} - speed: 2 - m_Value: {x: -0.08717229, y: 0.89959055, z: -0.21045254, w: -0.3726226} - m_Size: - m_Target: 10 - speed: 2 - m_Value: 10 - m_Ortho: - m_Target: 0 - speed: 2 - m_Value: 0 - m_LastSceneViewRotation: {x: 0, y: 0, z: 0, w: 0} - m_LastSceneViewOrtho: 0 - m_ReplacementShader: {fileID: 0} - m_ReplacementString: - m_LastLockedObject: {fileID: 0} - m_ViewIsLockedToObject: 0 ---- !u!114 &17 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12015, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_AutoRepaintOnSceneChange: 1 - m_MinSize: {x: 200, y: 200} - m_MaxSize: {x: 4000, y: 4000} - m_TitleContent: - m_Text: Game - m_Image: {fileID: -2087823869225018852, guid: 0000000000000000d000000000000000, - type: 0} - m_Tooltip: - m_DepthBufferBits: 32 - m_Pos: - serializedVersion: 2 - x: 507 - y: 94 - width: 1532 - height: 790 - m_MaximizeOnPlay: 0 - m_Gizmos: 0 - m_Stats: 0 - m_SelectedSizes: 000000000000000000000000000000000000000000000000000000000000000000000000 - m_TargetDisplay: 0 - m_ZoomArea: - m_HRangeLocked: 0 - m_VRangeLocked: 0 - m_HBaseRangeMin: -383 - m_HBaseRangeMax: 383 - m_VBaseRangeMin: -193.25 - m_VBaseRangeMax: 193.25 - m_HAllowExceedBaseRangeMin: 1 - m_HAllowExceedBaseRangeMax: 1 - m_VAllowExceedBaseRangeMin: 1 - m_VAllowExceedBaseRangeMax: 1 - m_ScaleWithWindow: 0 - m_HSlider: 0 - m_VSlider: 0 - m_IgnoreScrollWheelUntilClicked: 0 - m_EnableMouseInput: 1 - m_EnableSliderZoom: 0 - m_UniformScale: 1 - m_UpDirection: 1 - m_DrawArea: - serializedVersion: 2 - x: 0 - y: 17 - width: 1532 - height: 773 - m_Scale: {x: 2, y: 2} - m_Translation: {x: 766, y: 386.5} - m_MarginLeft: 0 - m_MarginRight: 0 - m_MarginTop: 0 - m_MarginBottom: 0 - m_LastShownAreaInsideMargins: - serializedVersion: 2 - x: -383 - y: -193.25 - width: 766 - height: 386.5 - m_MinimalGUI: 1 - m_defaultScale: 2 - m_TargetTexture: {fileID: 0} - m_CurrentColorSpace: 1 - m_LastWindowPixelSize: {x: 3064, y: 1580} - m_ClearInEditMode: 1 - m_NoCameraWarning: 1 ---- !u!114 &18 -MonoBehaviour: - m_ObjectHideFlags: 52 - m_PrefabParentObject: {fileID: 0} - m_PrefabInternal: {fileID: 0} - m_GameObject: {fileID: 0} - m_Enabled: 1 - m_EditorHideFlags: 1 - m_Script: {fileID: 12003, guid: 0000000000000000e000000000000000, type: 0} - m_Name: - m_EditorClassIdentifier: - m_AutoRepaintOnSceneChange: 0 - m_MinSize: {x: 100, y: 100} - m_MaxSize: {x: 4000, y: 4000} - m_TitleContent: - m_Text: Console - m_Image: {fileID: 111653112392082826, guid: 0000000000000000d000000000000000, - type: 0} - m_Tooltip: - m_DepthBufferBits: 0 - m_Pos: - serializedVersion: 2 - x: 8 - y: 718 - width: 1366 - height: 308 From f9965ee993fae733a778069fe6d2ed84b208e022 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 18 Oct 2022 12:09:39 +0200 Subject: [PATCH 14/68] Added new gitignore file --- .gitignore | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/.gitignore b/.gitignore index 8af868e..58cbc82 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ # This .gitignore file should be placed at the root of your Unity project directory # -# Get latest from https://github.com/github/gitignore/blob/master/Unity.gitignore +# Get latest from https://github.com/github/gitignore/blob/main/Unity.gitignore # /[Ll]ibrary/ /[Tt]emp/ @@ -8,16 +8,20 @@ /[Bb]uild/ /[Bb]uilds/ /[Ll]ogs/ +/[Uu]ser[Ss]ettings/ + +# MemoryCaptures can get excessive in size. +# They also could contain extremely sensitive data /[Mm]emoryCaptures/ -# Asset meta data should only be ignored when the corresponding asset is also ignored -!/[Aa]ssets/**/*.meta +# Recordings can get excessive in size +/[Rr]ecordings/ # Uncomment this line if you wish to ignore the asset store tools plugin # /[Aa]ssets/AssetStoreTools* # Autogenerated Jetbrains Rider plugin -[Aa]ssets/Plugins/Editor/JetBrains* +/[Aa]ssets/Plugins/Editor/JetBrains* # Visual Studio cache directory .vs/ @@ -53,8 +57,16 @@ sysinfo.txt # Builds *.apk +*.aab *.unitypackage +*.app # Crashlytics generated file crashlytics-build.properties +# Packed Addressables +/[Aa]ssets/[Aa]ddressable[Aa]ssets[Dd]ata/*/*.bin* + +# Temporary auto-generated Android Assets +/[Aa]ssets/[Ss]treamingAssets/aa.meta +/[Aa]ssets/[Ss]treamingAssets/aa/* From 20ee84c833d89647de36238a0e6e2b65f934ccee Mon Sep 17 00:00:00 2001 From: habrador Date: Wed, 26 Oct 2022 15:39:02 +0200 Subject: [PATCH 15/68] Updated readme --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index a3f3895..15a152c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Game programming patterns in Unity -A collection of programming patterns in Unity, mainly from the book [Game Programming Patterns](http://gameprogrammingpatterns.com). These are very useful to better organize your Unity project as the game grows. You don't have to use them - you should see them as tools in your toolbox. Some patterns, such as Update, Game Loop, Component, are already been built-in into Unity so you are already using them! +A collection of programming (design) patterns in Unity, mainly from the book [Game Programming Patterns](http://gameprogrammingpatterns.com). These are very useful to better organize your Unity project as it grows because they capture best practices and solutions to commonly occuring problems. You don't have to use them - you should see them as tools in your toolbox. Some patterns, such as Update, Game Loop, Component, are already been built-in into Unity so you are already using them! Programming patterns can be divided into the following groups: 1. **Architectural patterns.** One example is the MVC (Model-View-Controller). @@ -36,6 +36,8 @@ Other patterns: 22. [Facade](#22-facade) 23. [Template](#23-template) +Note that these are not all patterns out there. I recently read a book called "Machine Learning Design Patterns" which includes even more design patterns with a focus on machine learning problems. But I will continue adding patterns as I find them and if they are related to game development. + # Patterns from the book Game Programming Patterns From ac3332eb969729003073b94c8237074ac57d19ae Mon Sep 17 00:00:00 2001 From: habrador Date: Fri, 28 Oct 2022 14:06:55 +0200 Subject: [PATCH 16/68] Update facade pattern text --- README.md | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 15a152c..fa22921 100644 --- a/README.md +++ b/README.md @@ -523,20 +523,22 @@ If you are creating several different factories, then they should inherit from s ## 22. Facade -When you have several classes and want to make it simpler to access methods in those classes. +When you have several related classes, such as AI or audio, and want to make it simpler to access methods in those classes without creating spaghetti code. The name comes from [building facades](https://en.wikipedia.org/wiki/Fa%C3%A7ade) - you can only see the exterior of the building, but have no idea how the building looks like inside. The more classes you hide from other classes the better! **How to implement?** -Create a new script that includes methods which accesses the needed methods in the classes you want a simple access to. +Create a manager class that provides a single interface to a large collection of related classes. **When is it useful?** -* In games it's common to write standardized code libraries, such as a library for the AI, which includes pathfinding, etc. These tend to include massive amounts of methods in subfolders. To make it easier for yourself you create a script that includes access to the most important methods you need, such as get a path. An example of this can't be found here but in another open source library I have: [Computational geometry](https://github.com/Habrador/Computational-geometry). For example, there are multiple methods on how to generate a Delaunay triangulation. To simplify the access to those methods I wrote a class called _Delaunay, which accesses each Delaunay method in a simple way. Otherwise you would have to first go into the Delaunay folder and figure out which class is doing what and which method you should use to generate the needed triangulation. +* In games it's common to write standardized code libraries, such as a library for the AI, which includes pathfinding, etc. These tend to include massive amounts of subclasses. To make it easier for yourself you create a script that includes access to the most important methods you need, such as get a path. An example of this can't be found here but in another open source library I have: [Computational geometry](https://github.com/Habrador/Computational-geometry). For example, there are multiple methods on how to generate a Delaunay triangulation. To simplify the access to those methods I wrote a class called _Delaunay, which accesses each Delaunay method in a simple way. Otherwise you would have to first go into the Delaunay folder and figure out which class is doing what and which method you should use to generate the needed triangulation. And if I decided to use another triangulation library I only need to change the facade script. **Related patterns** * [Service Locator](#15-service-locator). Is very similar but the Service Locator is not necessarily consisting of several classes - the service we want to get might consist of a single class. But the Service Locator can use the Facade Pattern if needed. +* [Singleton](#5-singleton). The facade class is often a singleton because you need only a single object to manage access to audio or to AI. + ## 23. Template From 6b9b40962ba60f1473d68378c6baab3cfadb9b7e Mon Sep 17 00:00:00 2001 From: habrador Date: Fri, 28 Oct 2022 14:15:47 +0200 Subject: [PATCH 17/68] Added sources to readme --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index fa22921..2e77b66 100644 --- a/README.md +++ b/README.md @@ -559,13 +559,14 @@ Define a template method in the parent class which consists of calling several m -# Special thanks +# Sources -* [masoudarvishian](https://github.com/masoudarvishian) for implementing Event Queue pattern, Service Locator pattern, and bug fixing -* [VladimirMirMir](https://github.com/VladimirMirMir) for bug fixing +* [Game Programming Patterns](http://gameprogrammingpatterns.com) +* [Game Programming Gems](https://www.amazon.com/Game-Programming-Gems-CD/dp/1584500492) -# Socials +# Special thanks -* Follow me on [Twitter](https://twitter.com/eriknordeus) \ No newline at end of file +* [masoudarvishian](https://github.com/masoudarvishian) for implementing Event Queue pattern, Service Locator pattern, and bug fixing +* [VladimirMirMir](https://github.com/VladimirMirMir) for bug fixing From 9853578f243104646e2f487a4f0c585e04777c91 Mon Sep 17 00:00:00 2001 From: habrador Date: Fri, 28 Oct 2022 14:29:24 +0200 Subject: [PATCH 18/68] Updated factor pattern text --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2e77b66..796a175 100644 --- a/README.md +++ b/README.md @@ -505,7 +505,7 @@ You have some class you want to add some behaviors to in a flexible way without ## 21. Factory -Sometimes it's useful to collect all methods on how to create new objects in their own class. +It can be useful to collect all methods on how to create new objects in their own class. This makes the code better organized. For each object you make you have to allocate some memory, and by creating all objects in a central area it makes it easier to monitor these allocations. **How to implement?** From d781f76251da37d234cd9cc9bdebf51c6fad7878 Mon Sep 17 00:00:00 2001 From: habrador Date: Sat, 29 Oct 2022 13:43:28 +0200 Subject: [PATCH 19/68] Updated readme --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 796a175..7dba9a8 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,10 @@ This pattern is useful if you have many objects. Even though a single object tak * If you make Minecraft and have a million cubes in the scene. All cubes can share the same texture if you put all textures that belongs to each cube type (grass, stone, sand, etc) into a [texture atlas](https://en.wikipedia.org/wiki/Texture_atlas). +* If you make a strategy game, all infantry units share the same mesh, texture, maxHealth settings, etc. You only need to create one object with this data and then all infantry units can share that object. Each individual infantry unit only need to keep track of its own position and health. + +* This is implemented in Unity as [sharedMesh](https://docs.unity3d.com/ScriptReference/MeshFilter-sharedMesh.html) and [sharedMaterial](https://docs.unity3d.com/ScriptReference/Renderer-sharedMaterial.html). If you make a change to a sharedMesh then all objects using that mesh will get a new mesh. + **Related patterns** * [Type object](#12-type-object). The main difference is that in Type object you don't need to have the exact same data and you can also have behavior. @@ -505,7 +509,7 @@ You have some class you want to add some behaviors to in a flexible way without ## 21. Factory -It can be useful to collect all methods on how to create new objects in their own class. This makes the code better organized. For each object you make you have to allocate some memory, and by creating all objects in a central area it makes it easier to monitor these allocations. +Collect all methods on how to create new objects in their own class. For each object you make you have to allocate some memory, and by creating all objects in a central area it makes it easier to monitor these allocations - especially if several team mambers are working on the code. The factory can also be responsible for the destruction of objects. **How to implement?** From 668877f53dc7a1c7b64ceec13b0a5bf8170777a2 Mon Sep 17 00:00:00 2001 From: habrador Date: Sat, 29 Oct 2022 13:48:29 +0200 Subject: [PATCH 20/68] Updated readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7dba9a8..79261cd 100644 --- a/README.md +++ b/README.md @@ -509,7 +509,7 @@ You have some class you want to add some behaviors to in a flexible way without ## 21. Factory -Collect all methods on how to create new objects in their own class. For each object you make you have to allocate some memory, and by creating all objects in a central area it makes it easier to monitor these allocations - especially if several team mambers are working on the code. The factory can also be responsible for the destruction of objects. +Collect all methods on how to create new objects in their own class. For each object you make you have to allocate some memory, and by creating all objects in a central area it makes it easier to monitor these allocations. The factory can also be responsible for the destruction of objects. **How to implement?** From b55896ed6b6b42a4336aeb7771ce285179839d16 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 1 Nov 2022 09:13:27 +0100 Subject: [PATCH 21/68] Added Dirty Flag TSP example to readme --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 79261cd..56d755f 100644 --- a/README.md +++ b/README.md @@ -422,7 +422,9 @@ This pattern is useful if something has changed in your game, and if so you have * If you ever done some editor scripting in Unity, you know that you can use SetDirty() to mark an object as dirty or you can even mark the entire scene as dirty. Now Unity will understand that you have changed something and those changes should be saved when you save your scene. -* Unity is using it in the physics system. A RigidBody doesn't have to be updated unless a force is applied to it. If the RigidBody is sleeping (not moving), a Dirty Flag is used so the physics system can ignore it. +* Unity is using it in the physics system. A RigidBody doesn't have to be updated unless a force is applied to it. If the RigidBody is sleeping (not moving), a Dirty Flag is used so the physics system can ignore it. + +* I used this pattern when experimenting with Genetic Algorithms (GA) and the Traveling Salesman Problem (TSP) where you find the shortest path between multiple cities. The GA generates multiple solutions, like 100, to the TSP and then each iteration you evolve 100 better solutions by calculating a cost function, which is the distance between all cities. You can use "tournament selection" to find good solutions from the previous iteration to the next, which is basically picking 3 solutions and returns the solution with the shortest distance between all cities. I realized I didn't have to calculate the cost fuction 100 times each iteration because it's a costly operation. To optimize I only calculate the cost function of the cities being picked by the tournament selection. I kept track of which solution has had its cost fuction calculated by using a boolean which is set to false each iteration and then to true if the cost function had been run. @@ -521,7 +523,7 @@ If you are creating several different factories, then they should inherit from s **Related patterns** -* [Prototype](#4-prototype). The Prototype pattern is generally used if you want to make a copy an existing object, while the Factory pattern is generating new objects. But some argue you can put the Prototype pattern inside of the Factory pattern. +* [Prototype](#4-prototype). The Prototype pattern is generally used if you want to make a copy of an existing object, while the Factory pattern is generating new objects. But some argue you can put the Prototype pattern inside of the Factory pattern. From e422831ef89ac6fabdaecd658e5a845e9158d86a Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 1 Nov 2022 14:21:00 +0100 Subject: [PATCH 22/68] Added Unitys native object pool implementation. Updated readme. Refactored object pooling code --- .../Gun/{Scripts.meta => Object pools.meta} | 0 .../Gun/Object pools/BulletBase.cs | 36 ++++ .../Gun/Object pools/BulletBase.cs.meta | 11 ++ .../GunController.cs | 32 ++- .../GunController.cs.meta | 0 .../Gun/Object pools/ObjectPoolBase.cs | 16 ++ .../Gun/Object pools/ObjectPoolBase.cs.meta | 11 ++ .../{Scripts => Object pools}/Optimized.meta | 0 .../Optimized/Bullet Prefab Optimized.prefab} | 0 .../Bullet Prefab Optimized.prefab.meta} | 0 .../Optimized/BulletObjectPoolOptimized.cs | 27 +-- .../BulletObjectPoolOptimized.cs.meta | 0 .../Optimized/MoveBulletOptimized.cs | 12 +- .../Optimized/MoveBulletOptimized.cs.meta | 0 .../Slow.meta => Object pools/Simple.meta} | 0 .../Simple/Bullet Prefab Simple.prefab} | 2 +- .../Simple/Bullet Prefab Simple.prefab.meta} | 0 .../Simple/BulletObjectPoolSimple.cs} | 39 ++-- .../Simple/BulletObjectPoolSimple.cs.meta} | 0 .../Gun/Object pools/Simple/MoveBullet.cs | 20 ++ .../Simple}/MoveBullet.cs.meta | 0 .../Gun/Object pools/UnityNative.meta | 8 + .../Bullet Prefab Unity Native.prefab | 144 ++++++++++++++ .../Bullet Prefab Unity Native.prefab.meta | 7 + .../UnityNative/BulletObjectPoolUnity.cs | 111 +++++++++++ .../UnityNative/BulletObjectPoolUnity.cs.meta | 11 ++ .../UnityNative/MoveBulletUnity.cs | 28 +++ .../UnityNative/MoveBulletUnity.cs.meta | 11 ++ .../Gun/Scripts/Slow/MoveBullet.cs | 25 --- .../18. Object Pool/Gun/object pool gun.unity | 183 ++++++++++++++++-- ProjectSettings/SceneTemplateSettings.json | 167 ++++++++++++++++ README.md | 4 +- 32 files changed, 808 insertions(+), 97 deletions(-) rename Assets/Patterns/18. Object Pool/Gun/{Scripts.meta => Object pools.meta} (100%) create mode 100644 Assets/Patterns/18. Object Pool/Gun/Object pools/BulletBase.cs create mode 100644 Assets/Patterns/18. Object Pool/Gun/Object pools/BulletBase.cs.meta rename Assets/Patterns/18. Object Pool/Gun/{Scripts => Object pools}/GunController.cs (72%) rename Assets/Patterns/18. Object Pool/Gun/{Scripts => Object pools}/GunController.cs.meta (100%) create mode 100644 Assets/Patterns/18. Object Pool/Gun/Object pools/ObjectPoolBase.cs create mode 100644 Assets/Patterns/18. Object Pool/Gun/Object pools/ObjectPoolBase.cs.meta rename Assets/Patterns/18. Object Pool/Gun/{Scripts => Object pools}/Optimized.meta (100%) rename Assets/Patterns/18. Object Pool/Gun/{Optimized Bullet Prefab.prefab => Object pools/Optimized/Bullet Prefab Optimized.prefab} (100%) rename Assets/Patterns/18. Object Pool/Gun/{Optimized Bullet Prefab.prefab.meta => Object pools/Optimized/Bullet Prefab Optimized.prefab.meta} (100%) rename Assets/Patterns/18. Object Pool/Gun/{Scripts => Object pools}/Optimized/BulletObjectPoolOptimized.cs (79%) rename Assets/Patterns/18. Object Pool/Gun/{Scripts => Object pools}/Optimized/BulletObjectPoolOptimized.cs.meta (100%) rename Assets/Patterns/18. Object Pool/Gun/{Scripts => Object pools}/Optimized/MoveBulletOptimized.cs (68%) rename Assets/Patterns/18. Object Pool/Gun/{Scripts => Object pools}/Optimized/MoveBulletOptimized.cs.meta (100%) rename Assets/Patterns/18. Object Pool/Gun/{Scripts/Slow.meta => Object pools/Simple.meta} (100%) rename Assets/Patterns/18. Object Pool/Gun/{Bullet Prefab.prefab => Object pools/Simple/Bullet Prefab Simple.prefab} (99%) rename Assets/Patterns/18. Object Pool/Gun/{Bullet Prefab.prefab.meta => Object pools/Simple/Bullet Prefab Simple.prefab.meta} (100%) rename Assets/Patterns/18. Object Pool/Gun/{Scripts/Slow/BulletObjectPool.cs => Object pools/Simple/BulletObjectPoolSimple.cs} (58%) rename Assets/Patterns/18. Object Pool/Gun/{Scripts/Slow/BulletObjectPool.cs.meta => Object pools/Simple/BulletObjectPoolSimple.cs.meta} (100%) create mode 100644 Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/MoveBullet.cs rename Assets/Patterns/18. Object Pool/Gun/{Scripts/Slow => Object pools/Simple}/MoveBullet.cs.meta (100%) create mode 100644 Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative.meta create mode 100644 Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/Bullet Prefab Unity Native.prefab create mode 100644 Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/Bullet Prefab Unity Native.prefab.meta create mode 100644 Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/BulletObjectPoolUnity.cs create mode 100644 Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/BulletObjectPoolUnity.cs.meta create mode 100644 Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/MoveBulletUnity.cs create mode 100644 Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/MoveBulletUnity.cs.meta delete mode 100644 Assets/Patterns/18. Object Pool/Gun/Scripts/Slow/MoveBullet.cs create mode 100644 ProjectSettings/SceneTemplateSettings.json diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools.meta similarity index 100% rename from Assets/Patterns/18. Object Pool/Gun/Scripts.meta rename to Assets/Patterns/18. Object Pool/Gun/Object pools.meta diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/BulletBase.cs b/Assets/Patterns/18. Object Pool/Gun/Object pools/BulletBase.cs new file mode 100644 index 0000000..53cbd4f --- /dev/null +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/BulletBase.cs @@ -0,0 +1,36 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace ObjectPool.Gun +{ + //Parent bullet class to avoid code duplication + public class BulletBase : MonoBehaviour + { + private readonly float bulletSpeed = 10f; + + private readonly float deactivationDistance = 30f; + + + + protected void MoveBullet() + { + transform.Translate(bulletSpeed * Time.deltaTime * Vector3.forward); + } + + + + protected bool IsBulletDead() + { + bool isDead = false; + + //The gun is at 0 + if (Vector3.SqrMagnitude(Vector3.zero - transform.position) > deactivationDistance * deactivationDistance) + { + isDead = true; + } + + return isDead; + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/BulletBase.cs.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/BulletBase.cs.meta new file mode 100644 index 0000000..082f19a --- /dev/null +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/BulletBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ff7490a22b8d5024c9044a74ca383d4f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts/GunController.cs b/Assets/Patterns/18. Object Pool/Gun/Object pools/GunController.cs similarity index 72% rename from Assets/Patterns/18. Object Pool/Gun/Scripts/GunController.cs rename to Assets/Patterns/18. Object Pool/Gun/Object pools/GunController.cs index 03e65a3..8e97bde 100644 --- a/Assets/Patterns/18. Object Pool/Gun/Scripts/GunController.cs +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/GunController.cs @@ -2,22 +2,29 @@ using System.Collections.Generic; using UnityEngine; + namespace ObjectPool.Gun { public class GunController : MonoBehaviour { - //Pick which object pool you want to use - public BulletObjectPool bulletPool; + //Pick which object pool you want to use by activating it in the hierarchy and drag it to its uncommented slot + + //Simplest possible object pool + //public BulletObjectPoolSimple bulletPool; + //Optimized object pool //public BulletObjectPoolOptimized bulletPool; + //Unity's native object pool + public BulletObjectPoolUnity bulletPool; + //Private - private float rotationSpeed = 60f; + private readonly float rotationSpeed = 60f; private float fireTimer; - private float fireInterval = 0.1f; + private readonly float fireInterval = 0.1f; @@ -35,7 +42,7 @@ void Start() void Update() { - //Rotate gun + //Rotate gun with A and D keys if (Input.GetKey(KeyCode.A)) { transform.Rotate(Vector3.up, -rotationSpeed * Time.deltaTime); @@ -46,17 +53,15 @@ void Update() } - //Fire gun + //Fire gun with spacebar if (Input.GetKey(KeyCode.Space) && fireTimer > fireInterval) { fireTimer = 0f; - GameObject newBullet = GetABullet(); + GameObject newBullet = bulletPool.GetBullet(); if (newBullet != null) { - newBullet.SetActive(true); - newBullet.transform.forward = transform.forward; //Move the bullet to the tip of the gun or it will look strange if we rotate while firing @@ -72,14 +77,5 @@ void Update() //Update the time since we last fired a bullet fireTimer += Time.deltaTime; } - - - - private GameObject GetABullet() - { - GameObject bullet = bulletPool.GetBullet(); - - return bullet; - } } } diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts/GunController.cs.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/GunController.cs.meta similarity index 100% rename from Assets/Patterns/18. Object Pool/Gun/Scripts/GunController.cs.meta rename to Assets/Patterns/18. Object Pool/Gun/Object pools/GunController.cs.meta diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/ObjectPoolBase.cs b/Assets/Patterns/18. Object Pool/Gun/Object pools/ObjectPoolBase.cs new file mode 100644 index 0000000..5164f15 --- /dev/null +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/ObjectPoolBase.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace ObjectPool.Gun +{ + //Parent object pool class to avoid code duplication + public class ObjectPoolBase : MonoBehaviour + { + //How many bullets do we start with when the game starts + protected const int INITIAL_POOL_SIZE = 10; + + //Sometimes it can be good to put a limit to how many bullets we can instantiate or we might get millions of them + protected const int MAX_POOL_SIZE = 20; + } +} \ No newline at end of file diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/ObjectPoolBase.cs.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/ObjectPoolBase.cs.meta new file mode 100644 index 0000000..1543cce --- /dev/null +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/ObjectPoolBase.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ef6f375cf30597d459c3fc05bd57d66c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts/Optimized.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized.meta similarity index 100% rename from Assets/Patterns/18. Object Pool/Gun/Scripts/Optimized.meta rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized.meta diff --git a/Assets/Patterns/18. Object Pool/Gun/Optimized Bullet Prefab.prefab b/Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/Bullet Prefab Optimized.prefab similarity index 100% rename from Assets/Patterns/18. Object Pool/Gun/Optimized Bullet Prefab.prefab rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/Bullet Prefab Optimized.prefab diff --git a/Assets/Patterns/18. Object Pool/Gun/Optimized Bullet Prefab.prefab.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/Bullet Prefab Optimized.prefab.meta similarity index 100% rename from Assets/Patterns/18. Object Pool/Gun/Optimized Bullet Prefab.prefab.meta rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/Bullet Prefab Optimized.prefab.meta diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts/Optimized/BulletObjectPoolOptimized.cs b/Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/BulletObjectPoolOptimized.cs similarity index 79% rename from Assets/Patterns/18. Object Pool/Gun/Scripts/Optimized/BulletObjectPoolOptimized.cs rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/BulletObjectPoolOptimized.cs index 800b0d5..cb9dfe7 100644 --- a/Assets/Patterns/18. Object Pool/Gun/Scripts/Optimized/BulletObjectPoolOptimized.cs +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/BulletObjectPoolOptimized.cs @@ -4,27 +4,21 @@ namespace ObjectPool.Gun { - //Has to inherit from MonoBehaviour so we can use Instantiate() - public class BulletObjectPoolOptimized : MonoBehaviour + //This object pool is slightly more complicated to understand but has better performance + public class BulletObjectPoolOptimized : ObjectPoolBase { //The bullet prefab we instantiate public MoveBulletOptimized bulletPrefab; //Store the pooled bullets here - //Instead of GameObject, use MoveBulletOptimized so we dont need a million GetComponent because we need access to that script - private List bullets = new List(); - - //How many bullets do we start with when the game starts - private const int INITIAL_POOL_SIZE = 10; - - //Sometimes it can be good to put a limit to how many bullets we can isntantiate or we might get millions of them - private const int MAX_POOL_SIZE = 20; + private readonly List bullets = new (); //First available bullet, so we don't have to search a list to find it //Instead we create a linked-list where all unused bullets are linked together private MoveBulletOptimized firstAvailable; + private void Start() { if (bulletPrefab == null) @@ -50,10 +44,11 @@ private void Start() } //The last one terminates the linked-list - bullets[bullets.Count - 1].next = null; + bullets[^1].next = null; } + //Generate a single new bullet and put it in the list private void GenerateBullet() { @@ -68,6 +63,7 @@ private void GenerateBullet() } + //A bullet has been deactivated so we need to add it to the linked list public void ConfigureDeactivatedBullet(MoveBulletOptimized deactivatedObj) { @@ -78,6 +74,7 @@ public void ConfigureDeactivatedBullet(MoveBulletOptimized deactivatedObj) } + //Try to get a bullet public GameObject GetBullet() { @@ -90,7 +87,7 @@ public GameObject GetBullet() GenerateBullet(); //The new bullet is last in the list so get it - MoveBulletOptimized lastBullet = bullets[bullets.Count - 1]; + MoveBulletOptimized lastBullet = bullets[^1]; //Add it to the linked list by reusing the method we use for deactivated bullets, so it will now be the first bullet in the linked-list ConfigureDeactivatedBullet(lastBullet); @@ -106,7 +103,11 @@ public GameObject GetBullet() firstAvailable = newBullet.next; - return newBullet.gameObject; + GameObject newBulletGO = newBullet.gameObject; + + newBulletGO.SetActive(true); + + return newBulletGO; } } } diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts/Optimized/BulletObjectPoolOptimized.cs.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/BulletObjectPoolOptimized.cs.meta similarity index 100% rename from Assets/Patterns/18. Object Pool/Gun/Scripts/Optimized/BulletObjectPoolOptimized.cs.meta rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/BulletObjectPoolOptimized.cs.meta diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts/Optimized/MoveBulletOptimized.cs b/Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/MoveBulletOptimized.cs similarity index 68% rename from Assets/Patterns/18. Object Pool/Gun/Scripts/Optimized/MoveBulletOptimized.cs rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/MoveBulletOptimized.cs index c7d827b..e5e6b62 100644 --- a/Assets/Patterns/18. Object Pool/Gun/Scripts/Optimized/MoveBulletOptimized.cs +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/MoveBulletOptimized.cs @@ -4,12 +4,8 @@ namespace ObjectPool.Gun { - public class MoveBulletOptimized : MonoBehaviour + public class MoveBulletOptimized : BulletBase { - private float bulletSpeed = 10f; - - private float deactivationDistance = 30f; - //Needed to optimize object pooling [System.NonSerialized] public MoveBulletOptimized next; //Instead of using this dependency you could use the Observer pattern because other things may happen when the bullet dies @@ -17,11 +13,11 @@ public class MoveBulletOptimized : MonoBehaviour void Update() - { - transform.Translate(Vector3.forward * bulletSpeed * Time.deltaTime); + { + MoveBullet(); //Deactivate the bullet when it's far away - if (Vector3.SqrMagnitude(transform.position) > deactivationDistance * deactivationDistance) + if (IsBulletDead()) { //In the optimized version, we have to tell the object pool that this bullet has been deactivated objectPool.ConfigureDeactivatedBullet(this); diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts/Optimized/MoveBulletOptimized.cs.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/MoveBulletOptimized.cs.meta similarity index 100% rename from Assets/Patterns/18. Object Pool/Gun/Scripts/Optimized/MoveBulletOptimized.cs.meta rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Optimized/MoveBulletOptimized.cs.meta diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts/Slow.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/Simple.meta similarity index 100% rename from Assets/Patterns/18. Object Pool/Gun/Scripts/Slow.meta rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Simple.meta diff --git a/Assets/Patterns/18. Object Pool/Gun/Bullet Prefab.prefab b/Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/Bullet Prefab Simple.prefab similarity index 99% rename from Assets/Patterns/18. Object Pool/Gun/Bullet Prefab.prefab rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/Bullet Prefab Simple.prefab index 2bb05b4..2f5fa8c 100644 --- a/Assets/Patterns/18. Object Pool/Gun/Bullet Prefab.prefab +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/Bullet Prefab Simple.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 747956090910683963} - component: {fileID: 747956090910683964} m_Layer: 0 - m_Name: Bullet + m_Name: Bullet Prefab Simple m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Patterns/18. Object Pool/Gun/Bullet Prefab.prefab.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/Bullet Prefab Simple.prefab.meta similarity index 100% rename from Assets/Patterns/18. Object Pool/Gun/Bullet Prefab.prefab.meta rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/Bullet Prefab Simple.prefab.meta diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts/Slow/BulletObjectPool.cs b/Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/BulletObjectPoolSimple.cs similarity index 58% rename from Assets/Patterns/18. Object Pool/Gun/Scripts/Slow/BulletObjectPool.cs rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/BulletObjectPoolSimple.cs index a51828f..6e74b59 100644 --- a/Assets/Patterns/18. Object Pool/Gun/Scripts/Slow/BulletObjectPool.cs +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/BulletObjectPoolSimple.cs @@ -4,21 +4,16 @@ namespace ObjectPool.Gun { - //Has to inherit from MonoBehaviour so we can use Instantiate() - public class BulletObjectPool : MonoBehaviour + //Simplest possible object pool + public class BulletObjectPoolSimple : ObjectPoolBase { //The bullet prefab we instantiate - public GameObject bulletPrefab; - - //Store the pooled bullets here - private List bullets = new List(); - - //How many bullets do we start with when the game starts - private const int INITIAL_POOL_SIZE = 10; + public MoveBullet bulletPrefab; - //Sometimes it can be good to put a limit to how many bullets we can isntantiate or we might get millions of them - private const int MAX_POOL_SIZE = 20; + //Store the pooled bullets here + private readonly List bullets = new (); + private void Start() { @@ -35,10 +30,11 @@ private void Start() } + //Generate a single new bullet and put it in list private void GenerateBullet() { - GameObject newBullet = Instantiate(bulletPrefab, transform); + GameObject newBullet = Instantiate(bulletPrefab.gameObject, transform); newBullet.SetActive(false); @@ -46,17 +42,18 @@ private void GenerateBullet() } - //Try to get a bullet + + //Get a bullet from the pool public GameObject GetBullet() { //Try to find an inactive bullet - for (int i = 0; i < bullets.Count; i++) + foreach (GameObject bullet in bullets) { - GameObject thisBullet = bullets[i]; - - if (!thisBullet.activeInHierarchy) - { - return thisBullet; + if (!bullet.activeInHierarchy) + { + bullet.SetActive(true); + + return bullet; } } @@ -66,7 +63,9 @@ public GameObject GetBullet() GenerateBullet(); //The new bullet is last in the list so get it - GameObject lastBullet = bullets[bullets.Count - 1]; + GameObject lastBullet = bullets[^1]; + + lastBullet.SetActive(true); return lastBullet; } diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts/Slow/BulletObjectPool.cs.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/BulletObjectPoolSimple.cs.meta similarity index 100% rename from Assets/Patterns/18. Object Pool/Gun/Scripts/Slow/BulletObjectPool.cs.meta rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/BulletObjectPoolSimple.cs.meta diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/MoveBullet.cs b/Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/MoveBullet.cs new file mode 100644 index 0000000..c8499d2 --- /dev/null +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/MoveBullet.cs @@ -0,0 +1,20 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace ObjectPool.Gun +{ + public class MoveBullet : BulletBase + { + void Update() + { + MoveBullet(); + + //Deactivate the bullet when it's far away + if (IsBulletDead()) + { + gameObject.SetActive(false); + } + } + } +} diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts/Slow/MoveBullet.cs.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/MoveBullet.cs.meta similarity index 100% rename from Assets/Patterns/18. Object Pool/Gun/Scripts/Slow/MoveBullet.cs.meta rename to Assets/Patterns/18. Object Pool/Gun/Object pools/Simple/MoveBullet.cs.meta diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative.meta new file mode 100644 index 0000000..0543a8f --- /dev/null +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5f8704ec3d46c524d902721910775a6e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/Bullet Prefab Unity Native.prefab b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/Bullet Prefab Unity Native.prefab new file mode 100644 index 0000000..323dff2 --- /dev/null +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/Bullet Prefab Unity Native.prefab @@ -0,0 +1,144 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &747956090910683962 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 747956090910683963} + - component: {fileID: -2170308942933978635} + m_Layer: 0 + m_Name: Bullet Prefab Unity Native + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &747956090910683963 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747956090910683962} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -4.3366795, y: -2.768264, z: -0.27852014} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 747956090950962446} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &-2170308942933978635 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747956090910683962} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: a7108424a9ff44d45aa4ee5f7fd5ba79, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!1 &747956090950962445 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 747956090950962446} + - component: {fileID: 747956090950962449} + - component: {fileID: 747956090950962448} + - component: {fileID: 747956090950962447} + m_Layer: 0 + m_Name: Sphere + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &747956090950962446 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747956090950962445} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0.15, y: 0.15, z: 0.15} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 747956090910683963} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!33 &747956090950962449 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747956090950962445} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &747956090950962448 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747956090950962445} + 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_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_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 0 + 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!135 &747956090950962447 +SphereCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 747956090950962445} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Radius: 0.5 + m_Center: {x: 0, y: 0, z: 0} diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/Bullet Prefab Unity Native.prefab.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/Bullet Prefab Unity Native.prefab.meta new file mode 100644 index 0000000..20cb92b --- /dev/null +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/Bullet Prefab Unity Native.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 27c55addebb30864b83d3092b8747516 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/BulletObjectPoolUnity.cs b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/BulletObjectPoolUnity.cs new file mode 100644 index 0000000..6984cb8 --- /dev/null +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/BulletObjectPoolUnity.cs @@ -0,0 +1,111 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Pool; + + +namespace ObjectPool.Gun +{ + //Unity has a native object pooling system + //https://docs.unity3d.com/ScriptReference/Pool.IObjectPool_1.html + //Think its still under development so has bugs + public class BulletObjectPoolUnity : ObjectPoolBase + { + //The bullet prefab we instantiate + public MoveBulletUnity bulletPrefab; + + //Unity's native object pool + private ObjectPool allBullets; + + + + private void Start() + { + if (bulletPrefab == null) + { + Debug.LogError("Need a reference to the bullet prefab"); + } + + //Create a new object pool + //You can also create a LinkedPool + allBullets = new ObjectPool( + CreatePooledItem, + OnTakeFromPool, + OnReturnedToPool, + OnDestroyPoolObject, + true, //Collection checks will throw errors if we try to release an item that is already in the pool + INITIAL_POOL_SIZE, + MAX_POOL_SIZE); + } + + + + private void Update() + { + //For some unkown reason if we can create more bullets than MAX_POOL_SIZE. When released they are counted as active but not visible, which might be a bug in Unity because Inactive is the same as MAX_POOL_SIZE so correct? + Debug.Log($"In pool: {allBullets.CountAll}, Active: {allBullets.CountActive}, Inactive: {allBullets.CountInactive}"); + + if (Input.GetKeyDown(KeyCode.K)) + { + //These are doing the same thing for some reason... + //allBullets.Dispose(); + allBullets.Clear(); + } + } + + + + //Add a new item to the pool + private MoveBulletUnity CreatePooledItem() + { + GameObject newBullet = Instantiate(bulletPrefab.gameObject, transform); + + //newBullet.SetActive(false); + + MoveBulletUnity moveBulletScript = newBullet.GetComponent(); + + //The bullet needs a reference to this object pool so we can return it to the pool when it dies + moveBulletScript.objectPool = allBullets; + + return moveBulletScript; + } + + + + //Called when an item is taken from the pool using pool.Get() + private void OnTakeFromPool(MoveBulletUnity bullet) + { + bullet.gameObject.SetActive(true); + } + + + + //Called when an item is returned to the pool using pool.Release() + private void OnReturnedToPool(MoveBulletUnity bullet) + { + bullet.gameObject.SetActive(false); + } + + + + //If the pool capacity is reached then any items returned will be destroyed + private void OnDestroyPoolObject(MoveBulletUnity bullet) + { + Debug.Log("Destroyed pooled object"); + + Destroy(bullet.gameObject); + } + + + + //Get a bullet from the pool + public GameObject GetBullet() + { + //Get an instance from the pool. If the pool is empty then a new instance will be created + //https://docs.unity3d.com/ScriptReference/Pool.IObjectPool_1.html + GameObject newBullet = allBullets.Get().gameObject; + + return newBullet; + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/BulletObjectPoolUnity.cs.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/BulletObjectPoolUnity.cs.meta new file mode 100644 index 0000000..5c6a24c --- /dev/null +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/BulletObjectPoolUnity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8b830a0ee49e8224e8eaee518f7cfed3 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/MoveBulletUnity.cs b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/MoveBulletUnity.cs new file mode 100644 index 0000000..ba023c2 --- /dev/null +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/MoveBulletUnity.cs @@ -0,0 +1,28 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using UnityEngine.Pool; + +namespace ObjectPool.Gun +{ + public class MoveBulletUnity : BulletBase + { + //Ref to the object pool so we can deactivate dead bullets + public IObjectPool objectPool; + + + + void Update() + { + MoveBullet(); + + //Deactivate the bullet when it's far away + if (IsBulletDead()) + { + //Returns the instance to the pool + //https://docs.unity3d.com/ScriptReference/Pool.IObjectPool_1.html + objectPool.Release(this); + } + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/MoveBulletUnity.cs.meta b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/MoveBulletUnity.cs.meta new file mode 100644 index 0000000..6a419d3 --- /dev/null +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/UnityNative/MoveBulletUnity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: a7108424a9ff44d45aa4ee5f7fd5ba79 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/18. Object Pool/Gun/Scripts/Slow/MoveBullet.cs b/Assets/Patterns/18. Object Pool/Gun/Scripts/Slow/MoveBullet.cs deleted file mode 100644 index f851285..0000000 --- a/Assets/Patterns/18. Object Pool/Gun/Scripts/Slow/MoveBullet.cs +++ /dev/null @@ -1,25 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -namespace ObjectPool.Gun -{ - public class MoveBullet : MonoBehaviour - { - private float bulletSpeed = 10f; - - private float deactivationDistance = 30f; - - - void Update() - { - transform.Translate(Vector3.forward * bulletSpeed * Time.deltaTime); - - //Deactivate the bullet when it's far away - if (Vector3.SqrMagnitude(transform.position) > deactivationDistance * deactivationDistance) - { - gameObject.SetActive(false); - } - } - } -} diff --git a/Assets/Patterns/18. Object Pool/Gun/object pool gun.unity b/Assets/Patterns/18. Object Pool/Gun/object pool gun.unity index 9807065..7dbfc52 100644 --- a/Assets/Patterns/18. Object Pool/Gun/object pool gun.unity +++ b/Assets/Patterns/18. Object Pool/Gun/object pool gun.unity @@ -43,7 +43,7 @@ RenderSettings: --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 11 + serializedVersion: 12 m_GIWorkflowMode: 0 m_GISettings: serializedVersion: 2 @@ -54,7 +54,7 @@ LightmapSettings: m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_LightmapEditorSettings: - serializedVersion: 10 + serializedVersion: 12 m_Resolution: 2 m_BakeResolution: 40 m_AtlasSize: 1024 @@ -62,6 +62,7 @@ LightmapSettings: m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 m_Padding: 2 m_LightmapParameters: {fileID: 0} m_LightmapsBakeMode: 1 @@ -76,10 +77,16 @@ LightmapSettings: m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 + m_PVREnvironmentMIS: 0 m_PVRCulling: 1 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 @@ -87,9 +94,11 @@ LightmapSettings: m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 + m_LightingSettings: {fileID: 244224820} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 @@ -109,6 +118,8 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} @@ -141,6 +152,7 @@ Transform: 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: 243783919} m_Father: {fileID: 761632166} @@ -170,9 +182,12 @@ MeshRenderer: 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_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -184,6 +199,7 @@ MeshRenderer: m_ProbeAnchor: {fileID: 0} m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 + m_ReceiveGI: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 @@ -196,6 +212,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &71555713 MeshFilter: m_ObjectHideFlags: 0 @@ -233,6 +250,7 @@ Transform: m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} m_LocalPosition: {x: 0, y: -0, z: 1} m_LocalScale: {x: 0.2, y: 1, z: 0.2} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 71555710} m_RootOrder: 0 @@ -262,9 +280,12 @@ MeshRenderer: 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_RenderingLayerMask: 1 m_RendererPriority: 0 m_Materials: @@ -276,6 +297,7 @@ MeshRenderer: m_ProbeAnchor: {fileID: 0} m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 + m_ReceiveGI: 1 m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 @@ -288,6 +310,7 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} --- !u!33 &243783922 MeshFilter: m_ObjectHideFlags: 0 @@ -296,6 +319,68 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 243783918} m_Mesh: {fileID: 10206, guid: 0000000000000000e000000000000000, type: 0} +--- !u!850595691 &244224820 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: Settings.lighting + serializedVersion: 4 + m_GIWorkflowMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 --- !u!1 &362299604 GameObject: m_ObjectHideFlags: 0 @@ -334,9 +419,10 @@ Camera: 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_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 @@ -374,6 +460,7 @@ Transform: m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} m_LocalPosition: {x: 0, y: 10, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 @@ -419,6 +506,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -4.3366795, y: -2.768264, z: -0.27852014} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 4 @@ -434,12 +522,12 @@ GameObject: - component: {fileID: 546990865} - component: {fileID: 546990866} m_Layer: 0 - m_Name: Bullet object pool + m_Name: Bullet object pool simple m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 1 + m_IsActive: 0 --- !u!4 &546990865 Transform: m_ObjectHideFlags: 0 @@ -450,6 +538,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -4.3366795, y: -2.768264, z: -0.27852014} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 3 @@ -466,7 +555,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 1f92528de463b114083bcb4093cacd8a, type: 3} m_Name: m_EditorClassIdentifier: - bulletPrefab: {fileID: 747956090910683962, guid: 993620b09a1d7804a81460b71ed97893, + bulletPrefab: {fileID: 747956090910683964, guid: 993620b09a1d7804a81460b71ed97893, type: 3} --- !u!1 &761632165 GameObject: @@ -495,6 +584,7 @@ Transform: 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: 71555710} m_Father: {fileID: 0} @@ -512,7 +602,53 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 8f12dac7db74c904b8c713df5e80a1aa, type: 3} m_Name: m_EditorClassIdentifier: - bulletPool: {fileID: 546990866} + bulletPool: {fileID: 938094604} +--- !u!1 &938094602 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 938094603} + - component: {fileID: 938094604} + m_Layer: 0 + m_Name: Bullet object pool Unity + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &938094603 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 938094602} + 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_RootOrder: 5 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &938094604 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 938094602} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 8b830a0ee49e8224e8eaee518f7cfed3, type: 3} + m_Name: + m_EditorClassIdentifier: + bulletPrefab: {fileID: -2170308942933978635, guid: 27c55addebb30864b83d3092b8747516, + type: 3} --- !u!1 &2069808499 GameObject: m_ObjectHideFlags: 0 @@ -538,12 +674,14 @@ Light: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2069808499} m_Enabled: 1 - serializedVersion: 8 + serializedVersion: 10 m_Type: 1 + m_Shape: 0 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 @@ -553,6 +691,24 @@ Light: 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} @@ -560,12 +716,16 @@ Light: 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_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &2069808501 @@ -578,6 +738,7 @@ Transform: m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 500, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 diff --git a/ProjectSettings/SceneTemplateSettings.json b/ProjectSettings/SceneTemplateSettings.json new file mode 100644 index 0000000..6f3e60f --- /dev/null +++ b/ProjectSettings/SceneTemplateSettings.json @@ -0,0 +1,167 @@ +{ + "templatePinStates": [], + "dependencyTypeInfos": [ + { + "userAdded": false, + "type": "UnityEngine.AnimationClip", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.Animations.AnimatorController", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.AnimatorOverrideController", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.Audio.AudioMixerController", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.ComputeShader", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Cubemap", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.GameObject", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.LightingDataAsset", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": false + }, + { + "userAdded": false, + "type": "UnityEngine.LightingSettings", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Material", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.MonoScript", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicMaterial", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.PhysicsMaterial2D", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessProfile", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.PostProcessing.PostProcessResources", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Rendering.VolumeProfile", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEditor.SceneAsset", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": false + }, + { + "userAdded": false, + "type": "UnityEngine.Shader", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.ShaderVariantCollection", + "ignore": true, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Texture", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Texture2D", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + }, + { + "userAdded": false, + "type": "UnityEngine.Timeline.TimelineAsset", + "ignore": false, + "defaultInstantiationMode": 0, + "supportsModification": true + } + ], + "defaultDependencyTypeInfo": { + "userAdded": false, + "type": "", + "ignore": false, + "defaultInstantiationMode": 1, + "supportsModification": true + }, + "newSceneOverride": 0 +} \ No newline at end of file diff --git a/README.md b/README.md index 56d755f..5b114d1 100644 --- a/README.md +++ b/README.md @@ -430,7 +430,7 @@ This pattern is useful if something has changed in your game, and if so you have ## 18. Object Pool -If you constantly create and destroy objects, the performance of your game will suffer. A better way is to create the objects once in the beginning and deactivate them. When you need an object, you pick one of the deactivate objects and activate it. When you don't need the object anymore, you deactivate it instead of destroying it. +If you constantly create and destroy objects, the performance of your game will suffer. A better way is to create the objects once when you start the game and deactivate them. When you need an object, you pick one of the deactivate objects and activate it. When you don't need the object anymore, you deactivate it instead of destroying it. **How to implement?** @@ -446,6 +446,8 @@ If you constantly create and destroy objects, the performance of your game will * One problem with storing objects in a list and search the list to find an avilable object is that the list may be very long, so it's a waste of time. Another way is to store the objects in the pool in a linked-list. +* This pattern is so popular Unity has implemented their own version of it [ObjectPool](https://docs.unity3d.com/ScriptReference/Pool.ObjectPool_1.html) in later versions of Unity. + **When is it useful?** * The most common example is when you fire bullets from a gun, then you will need many bullets. I've given an example of this in the code section. You can find two versions: the optimized version which uses a linked-list, and the slow version which has to search a list to find an available bullet. From 5c784675c20731afdb5536b089a7f572bfb925bb Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 1 Nov 2022 14:22:36 +0100 Subject: [PATCH 23/68] Updated readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 5b114d1..9abc20a 100644 --- a/README.md +++ b/README.md @@ -446,7 +446,7 @@ If you constantly create and destroy objects, the performance of your game will * One problem with storing objects in a list and search the list to find an avilable object is that the list may be very long, so it's a waste of time. Another way is to store the objects in the pool in a linked-list. -* This pattern is so popular Unity has implemented their own version of it [ObjectPool](https://docs.unity3d.com/ScriptReference/Pool.ObjectPool_1.html) in later versions of Unity. +* This pattern is so popular Unity has implemented their own version of it called [ObjectPool](https://docs.unity3d.com/ScriptReference/Pool.ObjectPool_1.html). Is only available in later versions of Unity. **When is it useful?** From 0e8e67b40f801b7de6a96fe0c1ec1bdfe1698763 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 1 Nov 2022 14:23:08 +0100 Subject: [PATCH 24/68] Updated readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9abc20a..a3b5938 100644 --- a/README.md +++ b/README.md @@ -446,7 +446,7 @@ If you constantly create and destroy objects, the performance of your game will * One problem with storing objects in a list and search the list to find an avilable object is that the list may be very long, so it's a waste of time. Another way is to store the objects in the pool in a linked-list. -* This pattern is so popular Unity has implemented their own version of it called [ObjectPool](https://docs.unity3d.com/ScriptReference/Pool.ObjectPool_1.html). Is only available in later versions of Unity. +* This pattern is so popular Unity has implemented their own version of it called [ObjectPool](https://docs.unity3d.com/ScriptReference/Pool.ObjectPool_1.html). Is only available in later versions of Unity. **When is it useful?** From 60811444d0ce4ac3b7422ad6f0dbb39d3194e662 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 1 Nov 2022 17:38:13 +0100 Subject: [PATCH 25/68] Updated readme --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index a3b5938..0db3744 100644 --- a/README.md +++ b/README.md @@ -199,6 +199,8 @@ Your game can be in a number of states. For example, the main character can have **Related patterns** * [Type Object](#12-type-object). In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the object in Type Object can be switched you get the State pattern. + +* Strategy. Is very similar to State but you can give an object a new behavior (a new strategy to follow) without taking into account its current state or states coming after the current behavior. It means you can use the code from the State pattern to implement the Strategy pattern. From 2288ea850ee08a6cc27b1251532540d2524776d8 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 1 Nov 2022 19:50:14 +0100 Subject: [PATCH 26/68] Updated readme --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0db3744..511577e 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Game programming patterns in Unity -A collection of programming (design) patterns in Unity, mainly from the book [Game Programming Patterns](http://gameprogrammingpatterns.com). These are very useful to better organize your Unity project as it grows because they capture best practices and solutions to commonly occuring problems. You don't have to use them - you should see them as tools in your toolbox. Some patterns, such as Update, Game Loop, Component, are already been built-in into Unity so you are already using them! +Here you can find a collection of programming (design) patterns in Unity, mainly from the book [Game Programming Patterns](http://gameprogrammingpatterns.com). These are very useful to better organize your Unity project as it grows because they capture best practices and solutions to commonly occuring problems. You don't have to use them - you should see them as tools in your toolbox. You can also experiment with how they are implemented to fit your specific needs. Some patterns, such as Update, Game Loop, Component, are already been built-in into Unity so you are already using them! Programming patterns can be divided into the following groups: 1. **Architectural patterns.** One example is the MVC (Model-View-Controller). @@ -196,6 +196,8 @@ Your game can be in a number of states. For example, the main character can have * If you are making a GTA-style game. You have one state for driving, one for when the character is not in a vehicle, another state for flying, etc. Then you can also add state-of-states. For example, in the state class where the character is not in a vehicle, you can have several sub-states, such as holding nothing, holding grenade, holding pistol, etc. +* Enemy AI is often using the State pattern. The creepers in Minecraft have three states: move randomly when you are far away, move towards you if you are closer, blow up when you are very close. + **Related patterns** * [Type Object](#12-type-object). In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the object in Type Object can be switched you get the State pattern. @@ -507,6 +509,8 @@ You have some class you want to add some behaviors to in a flexible way without * If you have an order system where people order several products at the same time but pay at a later time. An example of this can be found in the code section where you order Tesla cars with modifications. Yes you could store each order in a list, but a better way is to store them in objects linked to each other. Instead of iterating through each object to find the price, you can just ask the "last" object to get the price of the entire chain. +* If you ever played Pubg you know you have weapons to which you can attach various attachments you find while playing the game. You can find magazines, sights, silenzers, etc, modifying the weapon's properties. You can use the Decorator pattern to implement this in your game. + **Related patterns** * [Subclass Sandbox](#11-subclass-sandbox). You may end up with many child-classes. To easier handle the code, you can define high-level methods in the parent like in the Subclass Sandbox pattern. From 0e68fda5cf4a81e822b72a7d7931601360934786 Mon Sep 17 00:00:00 2001 From: habrador Date: Wed, 2 Nov 2022 08:27:27 +0100 Subject: [PATCH 27/68] Updated readme --- README.md | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 511577e..9717f11 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ In you game you have many commands, such as play sound, throw cake, etc. It can **Related patterns** -* [Subclass Sandbox](#11-subclass-sandbox). You may end up with many child-command-classes. To easier handle the code, you can define high-level methods in the parent like in the Subclass Sandbox pattern. +* **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-command-classes. To easier handle the code, you can define high-level methods in the parent like in the Subclass Sandbox pattern. @@ -202,7 +202,11 @@ Your game can be in a number of states. For example, the main character can have * [Type Object](#12-type-object). In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the object in Type Object can be switched you get the State pattern. -* Strategy. Is very similar to State but you can give an object a new behavior (a new strategy to follow) without taking into account its current state or states coming after the current behavior. It means you can use the code from the State pattern to implement the Strategy pattern. +* Strategy. With this pattern you can give an object a new behavior (a new strategy to follow) without taking into account its current state or states coming after the current behavior. It means you can use the code from the State pattern to implement the Strategy pattern. + +* Memento. Same as state but you can roll back to a previous state. + +* Behavior Tree. The states are organized in a tree. @@ -553,6 +557,8 @@ Create a manager class that provides a single interface to a large collection of * [Singleton](#5-singleton). The facade class is often a singleton because you need only a single object to manage access to audio or to AI. +* Adapter. This pattern is dealing with legacy code that doesn't work directly with your system and you can't modify that code on your own. This legacy code could be a facade but doesn't have to be. So you add code to make the non-functioning facade work with your system. Facade creates a new interface while adapter adapts an old interface. + ## 23. Template From c5b37f9dbf22c448ab6c4f473e7d5d8098ba9324 Mon Sep 17 00:00:00 2001 From: habrador Date: Wed, 2 Nov 2022 08:31:08 +0100 Subject: [PATCH 28/68] Updated readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9717f11..6bd4aac 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ In you game you have many commands, such as play sound, throw cake, etc. It can **Related patterns** -* **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-command-classes. To easier handle the code, you can define high-level methods in the parent like in the Subclass Sandbox pattern. +- **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-command-classes. To easier handle the code, you can define high-level methods in the parent like in the Subclass Sandbox pattern. From bf34fceb384f6e52e58046156683971caa0a6598 Mon Sep 17 00:00:00 2001 From: habrador Date: Wed, 2 Nov 2022 08:46:13 +0100 Subject: [PATCH 29/68] Updated readme --- README.md | 275 +++++++++++++++++++++++++++--------------------------- 1 file changed, 138 insertions(+), 137 deletions(-) diff --git a/README.md b/README.md index 6bd4aac..243c057 100644 --- a/README.md +++ b/README.md @@ -47,15 +47,15 @@ In you game you have many commands, such as play sound, throw cake, etc. It can **How to implement?** -* You have a base class called Command which has a method that a child can implement called Execute. In each child class, you put in the Execute method what will actually happen when you run (execute) that command. +You have a base class called Command which has a method that a child can implement called Execute. In each child class, you put in the Execute method what will actually happen when you run (execute) that command. **When is it useful?** -* To make it easier to rebind keys. Example of this is available in the code section. +- To make it easier to rebind keys. Example of this is available in the code section. -* To make it easier to make a replay system. When you play the game, you store in some data structure which button you pressed each update. When you want to replay what has happened, you just iterate through each command while running the game. Example of this is available in the code section. +- To make it easier to make a replay system. When you play the game, you store in some data structure which button you pressed each update. When you want to replay what has happened, you just iterate through each command while running the game. Example of this is available in the code section. -* To make it easier to make an undo and redo system. Is similar to the replay system, but in each command you also have a method called Undo() where you do the opposite of what the command is doing. Example of this is available in the code section. +- To make it easier to make an undo and redo system. Is similar to the replay system, but in each command you also have a method called Undo() where you do the opposite of what the command is doing. Example of this is available in the code section. **Related patterns** @@ -69,19 +69,19 @@ This pattern is useful if you have many objects. Even though a single object tak **How to implement?** -* Separate the data that’s not specific to a single instance of that object and can be shared across all of them. You can do that by creating a new class and put the shared data in it. Then each object that should share data gets a reference to a single instance of that "storage" class. +Separate the data that’s not specific to a single instance of that object and can be shared across all of them. You can do that by creating a new class and put the shared data in it. Then each object that should share data gets a reference to a single instance of that "storage" class. **When is it useful?** -* If you make Minecraft and have a million cubes in the scene. All cubes can share the same texture if you put all textures that belongs to each cube type (grass, stone, sand, etc) into a [texture atlas](https://en.wikipedia.org/wiki/Texture_atlas). +- If you make Minecraft and have a million cubes in the scene. All cubes can share the same texture if you put all textures that belongs to each cube type (grass, stone, sand, etc) into a [texture atlas](https://en.wikipedia.org/wiki/Texture_atlas). -* If you make a strategy game, all infantry units share the same mesh, texture, maxHealth settings, etc. You only need to create one object with this data and then all infantry units can share that object. Each individual infantry unit only need to keep track of its own position and health. +- If you make a strategy game, all infantry units share the same mesh, texture, maxHealth settings, etc. You only need to create one object with this data and then all infantry units can share that object. Each individual infantry unit only need to keep track of its own position and health. -* This is implemented in Unity as [sharedMesh](https://docs.unity3d.com/ScriptReference/MeshFilter-sharedMesh.html) and [sharedMaterial](https://docs.unity3d.com/ScriptReference/Renderer-sharedMaterial.html). If you make a change to a sharedMesh then all objects using that mesh will get a new mesh. +- This is implemented in Unity as [sharedMesh](https://docs.unity3d.com/ScriptReference/MeshFilter-sharedMesh.html) and [sharedMaterial](https://docs.unity3d.com/ScriptReference/Renderer-sharedMaterial.html). If you make a change to a sharedMesh then all objects using that mesh will get a new mesh. **Related patterns** -* [Type object](#12-type-object). The main difference is that in Type object you don't need to have the exact same data and you can also have behavior. +- **[Type object](#12-type-object).** The main difference is that in Type object you don't need to have the exact same data and you can also have behavior. @@ -93,26 +93,26 @@ Many things are constantly happening in your game. These things are called event This pattern is so popular that C# has implemented it for you. Unity also has its own implementation. So your alternatives are: -* EventHandler -* Action -* UnityEvent -* Your own implementation by using a delegate +- EventHandler +- Action +- UnityEvent +- Your own implementation by using a delegate I've implemented all these in the code, so if you don't understand the difference take a look there. **When is it useful?** -* This pattern is really useful if you want to avoid spaghetti code by making classes independent of each other, also known as decoupling. The best part of events is that the part that's triggering the event doesn't care which methods are attached to the event. There might be zero methods. So if an event is triggered but nothing is happening we can easier find where the bug might be. +- This pattern is really useful if you want to avoid spaghetti code by making classes independent of each other, also known as decoupling. The best part of events is that the part that's triggering the event doesn't care which methods are attached to the event. There might be zero methods. So if an event is triggered but nothing is happening we can easier find where the bug might be. -* If you really want to decouple your code, then you still have a problem. To subscribe to the event you need a reference to the script where the event is defined. Another way is to create an Event Manager, which is a global class that takes care of all events. Unity has its own tutorial on how to implement that: [Creating a Simple Messaging System](https://www.youtube.com/watch?v=0AqG1fDhPT8). +- If you really want to decouple your code, then you still have a problem. To subscribe to the event you need a reference to the script where the event is defined. Another way is to create an Event Manager, which is a global class that takes care of all events. Unity has its own tutorial on how to implement that: [Creating a Simple Messaging System](https://www.youtube.com/watch?v=0AqG1fDhPT8). -* Another way to decouple the code is to make the event static. An example of a static event is available in the code. +- Another way to decouple the code is to make the event static. An example of a static event is available in the code. **Related patterns** -* [Event queue](#14-event-queue). The biggest problem with Observer is that it will trigger all methods that subscribe to the event. So if five methods subscribe, then five methods will be triggered. But what if 10 enemies are killed at the same time, then 50 methods will be triggered at the same time, which may freeze your game. This is when you should use the Event queue, which is basically the same as the Observer, but you put the events in a queue and you trigger as many as you can without freezing the game. +- **[Event queue](#14-event-queue).** The biggest problem with Observer is that it will trigger all methods that subscribe to the event. So if five methods subscribe, then five methods will be triggered. But what if 10 enemies are killed at the same time, then 50 methods will be triggered at the same time, which may freeze your game. This is when you should use the Event queue, which is basically the same as the Observer, but you put the events in a queue and you trigger as many as you can without freezing the game. -* Model-View-Controller (MVC). The MVC is an architectural pattern, and to implement it you can use the Observer. +- **Model-View-Controller (MVC).** The MVC is an architectural pattern, and to implement it you can use the Observer. @@ -122,19 +122,19 @@ In your game you have a game object. Now you want to duplicate that object to cr **How to implement?** -* This is a pattern that already exists in Unity in the form of the [Instantiate-method](https://docs.unity3d.com/ScriptReference/Object.Instantiate.html). But it assumes that the object you want to duplicate inherits from Object, which is a class in UnityEngine. +This is a pattern that already exists in Unity in the form of the [Instantiate-method](https://docs.unity3d.com/ScriptReference/Object.Instantiate.html). But it assumes that the object you want to duplicate inherits from Object, which is a class in UnityEngine. -* You could also make you own implementation. But then you have to ask yourself: do you do a deep clone (a copy of the structure and the elements in the structure) or a shallow clone (a copy of the structure not the elements in the structure)? Maybe the Flyweight pattern can give you the answer? +You could also make you own implementation. But then you have to ask yourself: do you do a deep clone (a copy of the structure and the elements in the structure) or a shallow clone (a copy of the structure not the elements in the structure)? Maybe the Flyweight pattern can give you the answer? **When is it useful?** -* If you have a gun that fires bullets. You add one bullet prefab to the script. Each time you fire the gun you need a new bullet because you don't want to use the original bullet, so you call Unity's Instantiate-method and you get a duplicate of the original bullet. +- If you have a gun that fires bullets. You add one bullet prefab to the script. Each time you fire the gun you need a new bullet because you don't want to use the original bullet, so you call Unity's Instantiate-method and you get a duplicate of the original bullet. **Related patterns** -* [Factory](#21-factory). In the Factory you are generally generating new objects - not copies of already existing objects (which may include position and other states). You can put the Prototype inside of the Factory so you have one class where you create all objects instead of having the creation in multiple classes which might be troublesome if you want to change something. +- **[Factory](#21-factory).** In the Factory you are generally generating new objects - not copies of already existing objects (which may include position and other states). You can put the Prototype inside of the Factory so you have one class where you create all objects instead of having the creation in multiple classes which might be troublesome if you want to change something. -* [Object pool](#18-object-pool). If you Instantiate and destroy many game objects, it will affect the performance of the game. To solve that problem you can use the Object pool pattern. +- **[Object pool](#18-object-pool).** If you Instantiate and destroy many game objects, it will affect the performance of the game. To solve that problem you can use the Object pool pattern. @@ -144,35 +144,35 @@ In your game you might have a class that saves the game for you. It's really imp **How to implement?** -* In C#. Make the instance static and provide a public static means of getting the reference to the single created instance. If the instance hasn't been created yet, create it. The constructor should be private and have no parameters. You can find this implemented in the code section. +In C#. Make the instance static and provide a public static means of getting the reference to the single created instance. If the instance hasn't been created yet, create it. The constructor should be private and have no parameters. You can find this implemented in the code section. -* If your Singleton has to be thread safe, things will get more complicated. This is a good tutorial on the topic of more advanced Singleton patterns: [Implementing the Singleton Pattern in C#](https://csharpindepth.com/articles/singleton). +If your Singleton has to be thread safe, things will get more complicated. This is a good tutorial on the topic of more advanced Singleton patterns: [Implementing the Singleton Pattern in C#](https://csharpindepth.com/articles/singleton). -* In C# but the class also inherits from MonoBehaviour. If you want the Singleton to also inherit from MonoBehaviour (because you need some of that functionality) things will get slightly more complicated. The problem now is that you can accidentally add several Singletons to the project. So you have to make sure you destroy all except one of the objects. Neither can you use a constructor, because MonoBehaviour doesn't allow it, so you have to implement your own constructor. You can find this implemented in the code section. +In C# but the class also inherits from MonoBehaviour. If you want the Singleton to also inherit from MonoBehaviour (because you need some of that functionality) things will get slightly more complicated. The problem now is that you can accidentally add several Singletons to the project. So you have to make sure you destroy all except one of the objects. Neither can you use a constructor, because MonoBehaviour doesn't allow it, so you have to implement your own constructor. You can find this implemented in the code section. **When is it not useful?** -* According to the book, you should avoid this pattern because global objects may cause trouble. If you need to use this pattern, then it should be for manager classes, such as GameController, SaveGame, etc. +- According to the book, you should avoid this pattern because global objects may cause trouble. If you need to use this pattern, then it should be for manager classes, such as GameController, SaveGame, etc. -* A problem if you use the MonoBehaviour version is that if you call the Singleton object from another object's OnDestroy method when you quit the game, the Singleton might have already been destroyed. +- A problem if you use the MonoBehaviour version is that if you call the Singleton object from another object's OnDestroy method when you quit the game, the Singleton might have already been destroyed. **What are some alternatives?** You tend to use the Singleton pattern because you want an easy access to that script. But if Singletons are so bad, what are some alternatives? -* **No class at all.** Most Singeltons are helpers, and in many cases you can remove the manager and put the help-code in the class the manager manages. +- **No class at all.** Most Singeltons are helpers, and in many cases you can remove the manager and put the help-code in the class the manager manages. -* **Static class.** This is basically the [Service Locator pattern](#15-service-locator). +- **Static class.** This is basically the [Service Locator pattern](#15-service-locator). -* **Unity's built-in Find() and SendMessage().** But these are so slow they should be avoided. If you have to use them, use them only once to get a reference to the script in the Start method. +- **Unity's built-in Find() and SendMessage().** But these are so slow they should be avoided. If you have to use them, use them only once to get a reference to the script in the Start method. -* **Assign references to pre-existing objects.** This means dragging the object (on which the script that used to be a singleton is attached) to public variables exposed in the Editor. The problem now is that this may become very complicated, and if you change a reference you often have to again drag them to wherever it's needed, which may be many locations if you have many objects. +- **Assign references to pre-existing objects.** This means dragging the object (on which the script that used to be a singleton is attached) to public variables exposed in the Editor. The problem now is that this may become very complicated, and if you change a reference you often have to again drag them to wherever it's needed, which may be many locations if you have many objects. -* **A global event system.** This is basically the [Observer pattern](#3-observer). You still need a Singleton for this global system, but you can remove all other Singletons. +- **A global event system.** This is basically the [Observer pattern](#3-observer). You still need a Singleton for this global system, but you can remove all other Singletons. -* **Dependency Injection.** This means that you inject the reference to the object (that used to be a singleton) in for example the constructor belonging to the class that need a reference to that object. There are also [Dependency Injection frameworks](https://www.youtube.com/watch?v=6tn8pMQuxEk) to make this process easier. +- **Dependency Injection.** This means that you inject the reference to the object (that used to be a singleton) in for example the constructor belonging to the class that need a reference to that object. There's also [Dependency Injection frameworks](https://www.youtube.com/watch?v=6tn8pMQuxEk) to make this process easier. -* **One Singleton.** Have just one Singleton class and all managers that used to be Singletons are collected in this class. If you need the SaveGame object, you type GameController.Instance.getSaveGameManager(). +- **One Singleton.** Have just one Singleton class and all managers that used to be Singletons are collected in this class. If you need the SaveGame object, you type GameController.Instance.getSaveGameManager(). @@ -182,55 +182,55 @@ Your game can be in a number of states. For example, the main character can have **How to implement?** -* You could use an enum that keeps track of each state and then a switch statement. +You could use an enum that keeps track of each state and then a switch statement. -* The problem with the switch statement is that it tends to become complicated the more states you add. A better way is to define an object for each state and then you switch between the objects as you switch states. +The problem with the switch statement is that it tends to become complicated the more states you add. A better way is to define an object for each state and then you switch between the objects as you switch states. **When is it useful?** -* When you have too many nested if-statements, such as in a menu system. In the code, you can see an example of a menu system that uses this pattern. +- When you have too many nested if-statements, such as in a menu system. In the code, you can see an example of a menu system that uses this pattern. -* Unity is using this pattern in the animation engine. +- Unity is using this pattern in the animation engine. -* When you make a turn-based combat system: [How to Code a Simple State Machine](https://www.youtube.com/watch?v=G1bd75R10m4). +- When you make a turn-based combat system: [How to Code a Simple State Machine](https://www.youtube.com/watch?v=G1bd75R10m4). -* If you are making a GTA-style game. You have one state for driving, one for when the character is not in a vehicle, another state for flying, etc. Then you can also add state-of-states. For example, in the state class where the character is not in a vehicle, you can have several sub-states, such as holding nothing, holding grenade, holding pistol, etc. +- If you are making a GTA-style game. You have one state for driving, one for when the character is not in a vehicle, another state for flying, etc. Then you can also add state-of-states. For example, in the state class where the character is not in a vehicle, you can have several sub-states, such as holding nothing, holding grenade, holding pistol, etc. -* Enemy AI is often using the State pattern. The creepers in Minecraft have three states: move randomly when you are far away, move towards you if you are closer, blow up when you are very close. +- Enemy AI is often using the State pattern. The creepers in Minecraft have three states: move randomly when you are far away, move towards you if you are closer, blow up when you are very close. **Related patterns** -* [Type Object](#12-type-object). In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the object in Type Object can be switched you get the State pattern. +- **[Type Object](#12-type-object).** In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the object in Type Object can be switched you get the State pattern. -* Strategy. With this pattern you can give an object a new behavior (a new strategy to follow) without taking into account its current state or states coming after the current behavior. It means you can use the code from the State pattern to implement the Strategy pattern. +- **Strategy.** With this pattern you can give an object a new behavior (a new strategy to follow) without taking into account its current state or states coming after the current behavior. It means you can use the code from the State pattern to implement the Strategy pattern. -* Memento. Same as state but you can roll back to a previous state. +- **Memento.** Same as state but you can roll back to a previous state. -* Behavior Tree. The states are organized in a tree. +- **Behavior Tree.** ## 7. Double Buffer -You have two buffers: you update #1 with new data while you are not allowed to modify #2 because #2 is holding old data from previous update, which you might want to display on the screen or use when updating #1. When you have finished updating #1, you swap them, so #2 is now including fresh data and you can start updating #1 which is now including old data. +You have two buffers: you update #1 with new data while you are not allowed to modify #2 because #2 is holding old data from previous update, which you might want to display on the screen or use when updating #1. When you have finished updating #1, you swap them, so #2 is now including fresh data and you can start updating #1 which is now including old data. **How to implement?** -* You can have two arrays. You write to one of them, and when the calculations are finished you swap the pointer to the arrays. +You can have two arrays. You write to one of them, and when the calculations are finished you swap the pointer to the arrays. **When is it useful?** -* To display stuff on the screen. This is already built-in into you computer which uses two buffers to display stuff on the screen. It reads from #2 while #1 is being updated with new data. When #1 is finished updating, the buffers are switched, so now you will see the newly updated data on the screen. It would look strange if you used just one buffer because then one part of the screen would display old data and one new data in some kind of horrible mix. +- To display stuff on the screen. This is already built-in into you computer which uses two buffers to display stuff on the screen. It reads from #2 while #1 is being updated with new data. When #1 is finished updating, the buffers are switched, so now you will see the newly updated data on the screen. It would look strange if you used just one buffer because then one part of the screen would display old data and one new data in some kind of horrible mix. -* To generate motion blur. The current buffer is blended with a bit of the previous buffer. +- To generate motion blur. The current buffer is blended with a bit of the previous buffer. -* Cellular Automation. In games it's common that you store data in a grid (which is a 2d array). To calculate new data you combine data from the cells, such as the maximum value of the current cell and surrounding cells. But where are you storing the data for the cell you just calculated? You can't store it in the cell because that will screw up the calculations for neighboring cells because you always want to use old data when doing the calculations. So you use two grids: #2 holds the old data and #1 is using #2 to update itself. When the calculations are finished, you swap them. +- Cellular Automation. In games it's common that you store data in a grid (which is a 2d array). To calculate new data you combine data from the cells, such as the maximum value of the current cell and surrounding cells. But where are you storing the data for the cell you just calculated? You can't store it in the cell because that will screw up the calculations for neighboring cells because you always want to use old data when doing the calculations. So you use two grids: #2 holds the old data and #1 is using #2 to update itself. When the calculations are finished, you swap them. - * Cave-generation. This is the example I've included in the code. + - Cave-generation. This is the example I've included in the code. - * [Water](http://www.jgallant.com/2d-liquid-simulator-with-cellular-automaton-in-unity/). You simulate movement of water on a grid. + - [Water](http://www.jgallant.com/2d-liquid-simulator-with-cellular-automaton-in-unity/). You simulate movement of water on a grid. - * [Forest fire](https://www.habrador.com/p/forest-fire/). You store in each cell the amount of burning material in that cell, then you simulate heat to ignite the material. When there's no more material to burn, the heat disappears. + - [Forest fire](https://www.youtube.com/watch?v=JtGp9eUugFs). You store in each cell the amount of burning material in that cell, then you simulate heat to ignite the material. When there's no more material to burn, the heat disappears. @@ -238,23 +238,23 @@ You have two buffers: you update #1 with new data while you are not allowed to m The game loop is the core of all games. It's basically an infinite while loop that keeps updating until you stop it. But the problem with such a while loop is that it updates faster on faster computers than it is on slower computers. This will be very problematic if you have some object that travels with some speed, then it will travel faster on the faster computer and the player will maybe not even understand what's going on. To solve this problem you need to take time into account by using the following: -* Fixed time step. You determine you want the game to run at 30 frames-per-second (FPS). Now you know how long one while loop should take (1/30 = 0.03333 seconds). If the while loop is faster than that, you simply pause it at the end until 0.03333 seconds has passed. If it's slower, you should optimize your game. +- Fixed time step. You determine you want the game to run at 30 frames-per-second (FPS). Now you know how long one while loop should take (1/30 = 0.03333 seconds). If the while loop is faster than that, you simply pause it at the end until 0.03333 seconds has passed. If it's slower, you should optimize your game. -* Variable (fluid) time step. You measure how many seconds has passed since the last frame. You then pass this time to the update method, so the game world can take bigger steps if the computer is slow and smaller steps if the computer is fast. +- Variable (fluid) time step. You measure how many seconds has passed since the last frame. You then pass this time to the update method, so the game world can take bigger steps if the computer is slow and smaller steps if the computer is fast. **How to implement?** -* This pattern has already been implemented in Unity, which is actually using both versions of the while loop: +This pattern has already been implemented in Unity, which is actually using both versions of the while loop: - * Fixed time step: Time.fixedDeltaTime. This version is used for physics calculations where you should use a constant step to make more accurate calculations. + - Fixed time step: Time.fixedDeltaTime. This version is used for physics calculations where you should use a constant step to make more accurate calculations. - * Variable time step: [Time.deltaTime](https://docs.unity3d.com/ScriptReference/Time-deltaTime.html), which Unity defines as "The completion time in seconds since the last frame." + - Variable time step: [Time.deltaTime](https://docs.unity3d.com/ScriptReference/Time-deltaTime.html), which Unity defines as "The completion time in seconds since the last frame." -* The game loop is also checking for input before anything else. This is why in Unity you can type "if (Input.GetKey(KeyCode.A))" because the game loop has already checked (before the update method) if the A key has been pressed and stored that information in some data structure. +The game loop is also checking for input before anything else. This is why in Unity you can type "if (Input.GetKey(KeyCode.A))" because the game loop has already checked (before the update method) if the A key has been pressed and stored that information in some data structure. **When is it useful?** -* When you have a bullet that should move with a constant speed. So you determine a bulletSpeed and in the update method you multiply the speed with Time.deltaTime so the bullet travels with the same speed no matter how fast the computer is. +- When you have a bullet that should move with a constant speed. So you determine a bulletSpeed and in the update method you multiply the speed with Time.deltaTime so the bullet travels with the same speed no matter how fast the computer is. @@ -264,9 +264,9 @@ The update method will process one frame of behavior. Each object that needs it **How to implement?** -* This pattern has already been implemented in Unity, in the form of the Update() method, which you can use if your script inherits from MonoBehaviour. Then Unity processes each Update one-by-one in the main Update method. +This pattern has already been implemented in Unity, in the form of the Update() method, which you can use if your script inherits from MonoBehaviour. Then Unity processes each Update one-by-one in the main Update method. -* You could instead of using Unity's update method, implement your custom update method. You store all the scripts that uses this custom update method in a list. Then in some script, like a GameController, you iterate through this list in Unity's update method while calling each custom update method one-by-one. This may make it easier to for example pause your game by simply not iterating through that list when the game is paused. I've given an example of this in the code section. +You could instead of using Unity's update method, implement your custom update method. You store all the scripts that uses this custom update method in a list. Then in some script, like a GameController, you iterate through this list in Unity's update method while calling each custom update method one-by-one. This may make it easier to for example pause your game by simply not iterating through that list when the game is paused. I've given an example of this in the code section. @@ -276,13 +276,13 @@ What if other people want to help you with your game, but these people have no c **How to implement?** -* The programmers with no skillz write their code in a .txt-file. You read that file, loop through each row, and then use a switch statement to translate the code from your programming language to C#. +The programmers with no skillz write their code in a .txt-file. You read that file, loop through each row, and then use a switch statement to translate the code from your programming language to C#. **When is it useful?** -* If you want to add modding support. +- If you want to add modding support. -* If you don't want to hard-code behaviour. +- If you don't want to hard-coded behaviour. @@ -292,19 +292,19 @@ You have similar objects but they have different behavior. Create those behavior **How to implement?** -* Define several protected methods in the parent class and how they are implemented. In the child class, you call the methods you need to get the behavior you want. +Define several protected methods in the parent class and how they are implemented. In the child class, you call the methods you need to get the behavior you want. **When is it useful?** -* When your child classes share behavior and the parent class can provide these behaviors. For example if you are using superpowers and the child class can combine these superpowers. This is an example from the book so you can find the code in the code section. +- When your child classes share behavior and the parent class can provide these behaviors. For example if you are using superpowers and the child class can combine these superpowers. This is an example from the book so you can find the code in the code section. **Related patterns** -* [Update Method](#9-update-method). The Update Method is often implemented as a Sandbox method. +- **[Update Method](#9-update-method).** The Update Method is often implemented as a Sandbox method. -* [Type Object](#12-type-object). Instead of defining all methods in the parent you could give the child a reference to an object that defines these methods. +- **[Type Object](#12-type-object).** Instead of defining all methods in the parent you could give the child a reference to an object that defines these methods. -* [Template](#23-template). Is the opposite of the Subclass sandbox pattern. In the Subclass Sandbox you implement the methods in the parent class, while in Template you implement the methods in the child class. +- **[Template](#23-template).** Is the opposite of the Subclass sandbox pattern. In the Subclass Sandbox you implement the methods in the parent class, while in Template you implement the methods in the child class. @@ -314,19 +314,19 @@ You have an object and now you want to change its type (such as behavior or some **How to implement?** -* The Type Objects should share the same interface (or parent) to make it easier for the main class to reference the object. +The Type Objects should share the same interface (or parent) to make it easier for the main class to reference the object. **When is it useful?** -* When you can't (or don't want to) use class inehritance. Let's say you make a game with animals. You have a base class which is parent to all animals, and then as children to that class you add birds, fish, and mammals. In the bird class you define a flying behavior, which is all fine until you add an ostrich, which can't fly. In that case you have to inherit from the bird class and create new children that can fly and can't fly. But what about bats, which is a mammal that can fly? You don't want to add flying behavior in two separate classes! A better way is to define a flying and a non-flying type in a separate class, so both ostriches remain on the ground and bats can fly. +- When you can't (or don't want to) use class inehritance. Let's say you make a game with animals. You have a base class which is parent to all animals, and then as children to that class you add birds, fish, and mammals. In the bird class you define a flying behavior, which is all fine until you add an ostrich, which can't fly. In that case you have to inherit from the bird class and create new children that can fly and can't fly. But what about bats, which is a mammal that can fly? You don't want to add flying behavior in two separate classes! A better way is to define a flying and a non-flying type in a separate class, so both ostriches remain on the ground and bats can fly. **Related patterns** -* [State](#6-state). In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the type can be switched you get the State pattern. +- **[State](#6-state).** In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the type can be switched you get the State pattern. -* [Subclass Sandbox](#11-subclass-sandbox). You could define all types in the parent class and then combine them in the child class. +- **[Subclass Sandbox](#11-subclass-sandbox).** You could define all types in the parent class and then combine them in the child class. -* [Component](#13-component). The difference is that the Component is not always coupled with something else on the game object – it’s living its own life. In Unity you can add colliders, scripts, mesh renderers and they don’t need to know about each other to function. Type Object, however, is about adding a behavior to an existing class, so the type can't live on its own. +- **[Component](#13-component).** The difference is that the Component is not always coupled with something else on the game object – it’s living its own life. In Unity you can add colliders, scripts, mesh renderers and they don’t need to know about each other to function. Type Object, however, is about adding a behavior to an existing class, so the type can't live on its own. @@ -336,17 +336,17 @@ When making a big game you should start thinking in components. A component is s **How to implement?** -* In Unity you can attach components to GameObjects, such as colliders, mesh renderers, your own scripts, so it's already built-in. It's up to you to make the custom scripts you attach as reusable as possible. +In Unity you can attach components to GameObjects, such as colliders, mesh renderers, your own scripts, so it's already built-in. It's up to you to make the custom scripts you attach as reusable as possible. **When is it useful?** -* Because Unity's FPS counter is not to be trusted, you can have a custom FPS counter that you re-use throughout all projects. Just add the script to the project and attach it to some GameObject and it works fine independently of everything else going on in the game. +- Because Unity's FPS counter is not to be trusted, you can have a custom FPS counter that you re-use throughout all projects. Just add the script to the project and attach it to some GameObject and it works fine independently of everything else going on in the game. -* When making a car game you can put physics in one script, such as drag and rolling resistance, becuse physics will always affect the car and the physics calculations are the same for all cars. This component will not be completely independent because it will need some data from the car, such as current speed, but as said before that's fine. +- When making a car game you can put physics in one script, such as drag and rolling resistance, becuse physics will always affect the car and the physics calculations are the same for all cars. This component will not be completely independent because it will need some data from the car, such as current speed, but as said before that's fine. **Related patterns** -* [Type Object](#12-type-object). The difference is that the Component is not always coupled with something else on the game object – it’s living its own life. In Unity you can add colliders, scripts, mesh renderers and they don’t need to know about each other to function. Type Object, however, is about adding a behavior to an existing class, so the type can't live on its own. +- **[Type Object](#12-type-object).** The difference is that the Component is not always coupled with something else on the game object – it’s living its own life. In Unity you can add colliders, scripts, mesh renderers and they don’t need to know about each other to function. Type Object, however, is about adding a behavior to an existing class, so the type can't live on its own. @@ -360,13 +360,13 @@ Combine the [Command](#1-command) pattern with a C#'s built-in queue, which is w **When is it useful?** -* When you after an event will load an asset. This may take time, so if you want to play a sound when clicking a button, the game may freeze because it has to load the sound. A better way is to play the sound some frames after the click. +- When you after an event will load an asset. This may take time, so if you want to play a sound when clicking a button, the game may freeze because it has to load the sound. A better way is to play the sound some frames after the click. -* When you after an event will play a sound effect. What if 100 enemies die at the same time and each time an enemy dies you play a death-sound. Now 100 sounds will play at the same time. If you put the events in a queue, you can check if a sound is already playing and then ignore the event. You can also merge the events that are the same, so you have only one of each event type in the queue. +- When you after an event will play a sound effect. What if 100 enemies die at the same time and each time an enemy dies you play a death-sound. Now 100 sounds will play at the same time. If you put the events in a queue, you can check if a sound is already playing and then ignore the event. You can also merge the events that are the same, so you have only one of each event type in the queue. -* If you are making a strategy game, you can put orders in the queue that the player wants a certain unit to do: 1. build wall, 2. collect food, 3. attack creature. Now the player doesn't have to wait for a unit to finish one task. You can also put waypoints in the queue to make a unit patrol between waypoints. The AI can also put commands in a queue to for example determine which units should attack. +- If you are making a strategy game, you can put orders in the queue that the player wants a certain unit to do: 1. build wall, 2. collect food, 3. attack creature. Now the player doesn't have to wait for a unit to finish one task. You can also put waypoints in the queue to make a unit patrol between waypoints. The AI can also put commands in a queue to for example determine which units should attack. -* When making a speech system. Each character has its own queue with audio it wants to say. To know which character should speak, you can go through all queues. If the player presses Escape because the player doesn't want to listen to the talk, you simply clear all queues. +- When making a speech system. Each character has its own queue with audio it wants to say. To know which character should speak, you can go through all queues. If the player presses Escape because the player doesn't want to listen to the talk, you simply clear all queues. @@ -376,23 +376,23 @@ When making your game you use many standardized methods to for example generate **How to implement?** -* Put each service in a static class. The static class should be in its own folder and have its own namespace to make sure you are not mixing the services with your main code. +Put each service in a static class. The static class should be in its own folder and have its own namespace to make sure you are not mixing the services with your main code. -* A slightly more complicated way is to use a service locator that provides access to a service provider. To make sure no other methods than the ones you need are exposed to the outside world, the service provider should limit which methods it can provide access to. +A slightly more complicated way is to use a service locator that provides access to a service provider. To make sure no other methods than the ones you need are exposed to the outside world, the service provider should limit which methods it can provide access to. -* Unity has implemented this pattern in the form of the GetComponent() method. +Unity has implemented this pattern in the form of the GetComponent() method. **When is it useful?** -* Several services are already built-in into Unity, such as Random.Range() to get a random number, Mathf.PI to get pi, and Debug.Log() to display something in the console. +- Several services are already built-in into Unity, such as Random.Range() to get a random number, Mathf.PI to get pi, and Debug.Log() to display something in the console. -* In the game you may have different audio objects depending on if the game is running on a console or on a PC. This is the same example as in the book so you can find the code for it in the code section. +- In the game you may have different audio objects depending on if the game is running on a console or on a PC. This is the same example as in the book so you can find the code for it in the code section. **Related patterns** -* [Singleton](#5-singleton). Both provide a global access to an object. So the problems with the Singleton also applies to this pattern. +- **[Singleton](#5-singleton).** Both provide a global access to an object. So the problems with the Singleton also applies to this pattern. -* [Facade](#22-facade). Is very similar, and you can use Facade in combination with Service Locator. +- **[Facade](#22-facade).** You can use Facade in combination with Service Locator. @@ -402,17 +402,17 @@ Have you done all otpimizations you can possible do? Is the game still too slow? **How to implement?** -* You have to arrange data to take advantage of CPU caching. The basic idea is that you should organize your data structures so that the things you're processing are next to each other in memory. This is a big topic and can't be summarized here, so you should read about it in the book. +You have to arrange data to take advantage of CPU caching. The basic idea is that you should organize your data structures so that the things you're processing are next to each other in memory. This is a big topic and can't be summarized here, so you should read about it in the book. -* This Unity article suggest that you should use struct instead of class because they are more cache friendly [How to Write Faster Code Than 90% of Programmers](https://jacksondunstan.com/articles/3860). +This Unity article suggest that you should use struct instead of class because they are more cache friendly [How to Write Faster Code Than 90% of Programmers](https://jacksondunstan.com/articles/3860). -* Unity has implemented this pattern in their [Data-Oriented Technology Stack (DOTS)](https://unity.com/dots). +Unity has implemented this pattern in their [Data-Oriented Technology Stack (DOTS)](https://unity.com/dots). -* A good Unity tutorial on the topic is: [Unity Memory Profiler: Where Are You Wasting Your Game's Memory?](https://thegamedev.guru/unity-memory/profiler-part-1/) and [Part 2](https://thegamedev.guru/unity-memory/profiler-part-2/). +A good Unity tutorial on the topic is: [Unity Memory Profiler: Where Are You Wasting Your Game's Memory?](https://thegamedev.guru/unity-memory/profiler-part-1/) and [Part 2](https://thegamedev.guru/unity-memory/profiler-part-2/). **When is it useful?** -* According to the book, this pattern should be used when everything else has failed. It's a waste of time to optimize code that doesn't need to be optimized - and it may also make the code more complicated to understand. You also have to make sure that cache misses is the reason your code is slow, so you have to first measure it. +- According to the book "Game Programming Patterns," this pattern should be used when everything else has failed. It's a waste of time to optimize code that doesn't need to be optimized - and it may also make the code more complicated to understand. You also have to make sure that cache misses is the reason your code is slow, so you have to first measure it. @@ -422,17 +422,17 @@ This pattern is useful if something has changed in your game, and if so you have **How to implement?** -* The dirty flag is just a simple boolean, which is set to true if something has changed. +The dirty flag is just a simple boolean, which is set to true if something has changed. **When is it useful?** -* Saving your game can be a costly operation. If something in your game has changed that also needs to be saved, you set a Dirty Flag in the save game object to true. Now if the player wants to quit the game, you can easily tell the player that there are unsaved changes. +- Saving your game can be a costly operation. If something in your game has changed that also needs to be saved, you set a Dirty Flag in the save game object to true. Now if the player wants to quit the game, you can easily tell the player that there are unsaved changes. -* If you ever done some editor scripting in Unity, you know that you can use SetDirty() to mark an object as dirty or you can even mark the entire scene as dirty. Now Unity will understand that you have changed something and those changes should be saved when you save your scene. +- If you ever done some editor scripting in Unity, you know that you can use SetDirty() to mark an object as dirty or you can even mark the entire scene as dirty. Now Unity will understand that you have changed something and those changes should be saved when you save your scene. -* Unity is using it in the physics system. A RigidBody doesn't have to be updated unless a force is applied to it. If the RigidBody is sleeping (not moving), a Dirty Flag is used so the physics system can ignore it. +- Unity is using it in the physics system. A RigidBody doesn't have to be updated unless a force is applied to it. If the RigidBody is sleeping (not moving), a Dirty Flag is used so the physics system can ignore it. -* I used this pattern when experimenting with Genetic Algorithms (GA) and the Traveling Salesman Problem (TSP) where you find the shortest path between multiple cities. The GA generates multiple solutions, like 100, to the TSP and then each iteration you evolve 100 better solutions by calculating a cost function, which is the distance between all cities. You can use "tournament selection" to find good solutions from the previous iteration to the next, which is basically picking 3 solutions and returns the solution with the shortest distance between all cities. I realized I didn't have to calculate the cost fuction 100 times each iteration because it's a costly operation. To optimize I only calculate the cost function of the cities being picked by the tournament selection. I kept track of which solution has had its cost fuction calculated by using a boolean which is set to false each iteration and then to true if the cost function had been run. +- I used this pattern when experimenting with Genetic Algorithms (GA) and the Traveling Salesman Problem (TSP) where you find the shortest path between multiple cities. The GA generates multiple solutions, like 100, to the TSP and then each iteration you evolve 100 better solutions by calculating a cost function, which is the distance between all cities. You can use "tournament selection" to find good solutions from the previous iteration to the next, which is basically picking 3 solutions and returns the solution with the shortest distance between all cities. I realized I didn't have to calculate the cost fuction 100 times each iteration because it's a costly operation. To optimize I only calculate the cost function of the cities being picked by the tournament selection. I kept track of which solution has had its cost fuction calculated by using a boolean which is set to false each iteration and then to true if the cost function had been run. @@ -442,29 +442,29 @@ If you constantly create and destroy objects, the performance of your game will **How to implement?** -* Create a class called object pool. Give it an object prefab and instantiate the number of objects you think you will need. Store them in a list. When you need an object you search through the list for a deactivated object and returns the first you find. If you realize you need more objects than the objects you started with, you have a few choises: +Create a class called object pool. Give it an object prefab and instantiate the number of objects you think you will need. Store them in a list. When you need an object you search through the list for a deactivated object and returns the first you find. If you realize you need more objects than the objects you started with, you have a few choises: - * You can instantiate more objects during gameplay. But make sure you don't instantiate too many objects because it will be a waste of memory. You could later remove the "extra" objects you added. + - You can instantiate more objects during gameplay. But make sure you don't instantiate too many objects because it will be a waste of memory. You could later remove the "extra" objects you added. - * Find one of the objects that's active but the player will not notice if it suddeny disappears so you can use it. + - Find one of the objects that's active but the player will not notice if it suddeny disappears so you can use it. - * Ignore that you have no more objects, which may be fine. If the screen is filled with explosions, the player will not notice a new explosion is missing. + - Ignore that you have no more objects, which may be fine. If the screen is filled with explosions, the player will not notice a new explosion is missing. -* If the objects you pool reference another object which is destroyed, then it's important to clear this reference when the object in the pool is deactivated. Otherwise the garbage collector will not be able to do its work on the destroyed object because it's still referenced by a living object. +If the objects you pool reference another object which is destroyed, then it's important to clear this reference when the object in the pool is deactivated. Otherwise the garbage collector will not be able to do its work on the destroyed object because it's still referenced by a living object. -* One problem with storing objects in a list and search the list to find an avilable object is that the list may be very long, so it's a waste of time. Another way is to store the objects in the pool in a linked-list. +One problem with storing objects in a list and search the list to find an avilable object is that the list may be very long, so it's a waste of time. Another way is to store the objects in the pool in a linked-list. -* This pattern is so popular Unity has implemented their own version of it called [ObjectPool](https://docs.unity3d.com/ScriptReference/Pool.ObjectPool_1.html). Is only available in later versions of Unity. +This pattern is so popular Unity has implemented their own version of it called [ObjectPool](https://docs.unity3d.com/ScriptReference/Pool.ObjectPool_1.html). Is only available in later versions of Unity. **When is it useful?** -* The most common example is when you fire bullets from a gun, then you will need many bullets. I've given an example of this in the code section. You can find two versions: the optimized version which uses a linked-list, and the slow version which has to search a list to find an available bullet. +- The most common example is when you fire bullets from a gun, then you will need many bullets. I've given an example of this in the code section. You can find two versions: the optimized version which uses a linked-list, and the slow version which has to search a list to find an available bullet. -* Unity is using this pattern in their particle system. In the particle settings you can set max number of particles, which can be useful so you don't accidentally instantiate millions of particles. +- Unity is using this pattern in their particle system. In the particle settings you can set max number of particles, which can be useful so you don't accidentally instantiate millions of particles. **Related patterns** -* [Data Locality](#16-data-locality). In this pattern we pack objects of the same type together in memory. It will help the CPU cache to be full as the game iterates over those objects, which is what the Data Locality patterns is about. +- **[Data Locality](#16-data-locality).** In this pattern we pack objects of the same type together in memory. It will help the CPU cache to be full as the game iterates over those objects, which is what the Data Locality patterns is about. @@ -476,24 +476,24 @@ If you have many objects in your game, store the objects in a data structure tha This is a common pattern, so you have several choices: -* **Grid.** Divide the area into a grid and store in the data structure in which cell each object is located. This is the example from the book, so you can find the code for it in the code section. +- **Grid.** Divide the area into a grid and store in the data structure in which cell each object is located. This is the example from the book, so you can find the code for it in the code section. -* **Trie.** Is actually called [Trie](https://en.wikipedia.org/wiki/Trie) and not Tree! - * [Quadtree (2d space)](https://en.wikipedia.org/wiki/Quadtree). Divide the square area into 4 cells. But if too many objects are in the same cell, divide that cell into 4 new cells. Continue until there are not "too many objects in the same cell." A good tutorial can be found here: [Coding Challenge #98.1: Quadtree - Part 1](https://www.youtube.com/watch?v=OJxEcs0w_kE). - * [Octree (3d space)](https://en.wikipedia.org/wiki/Octree). Is similar to Quadtree, but instead of cells you use cubes, so divide a cube volume into 8 cubes, and then split each cube into 8 new cubes until not "too many objects are in the same cube." +- **Trie.** Is actually called [Trie](https://en.wikipedia.org/wiki/Trie) and not Tree! + - [Quadtree (2d space)](https://en.wikipedia.org/wiki/Quadtree). Divide the square area into 4 cells. But if too many objects are in the same cell, divide that cell into 4 new cells. Continue until there are not "too many objects in the same cell." A good tutorial can be found here: [Coding Challenge #98.1: Quadtree - Part 1](https://www.youtube.com/watch?v=OJxEcs0w_kE). + - [Octree (3d space)](https://en.wikipedia.org/wiki/Octree). Is similar to Quadtree, but instead of cells you use cubes, so divide a cube volume into 8 cubes, and then split each cube into 8 new cubes until not "too many objects are in the same cube." -* **Binary search trees.** The name is binary, so the difference between Tree is that you split the groups into 2 smaller groups, and then you split one of the smaller groups into 2 smaller groups, and so on. - * [Binary space partition (BSP)](https://en.wikipedia.org/wiki/Binary_space_partitioning). You use a plane to split a group into 2 new groups. And then you use another plane to split the new group into 2 new groups, and so on until you are finished. - * [k-d trees](https://en.wikipedia.org/wiki/K-d_tree). In this case it has to be points that you split into smaller, and smaller groups. - * [Bounding volume hierarchy](https://en.wikipedia.org/wiki/Bounding_volume_hierarchy). You pick a bounding volume (or area in 2d space), such as a rectangle. The size of the first rectangle is determined so all objects fit within it. Then you split the rectangle into two new rectangles, and so on. +- **Binary search trees.** The name is binary, so the difference between Tree is that you split the groups into 2 smaller groups, and then you split one of the smaller groups into 2 smaller groups, and so on. + - [Binary space partition (BSP)](https://en.wikipedia.org/wiki/Binary_space_partitioning). You use a plane to split a group into 2 new groups. And then you use another plane to split the new group into 2 new groups, and so on until you are finished. + - [k-d trees](https://en.wikipedia.org/wiki/K-d_tree). In this case it has to be points that you split into smaller, and smaller groups. + - [Bounding volume hierarchy](https://en.wikipedia.org/wiki/Bounding_volume_hierarchy). You pick a bounding volume (or area in 2d space), such as a rectangle. The size of the first rectangle is determined so all objects fit within it. Then you split the rectangle into two new rectangles, and so on. A problem is if the objects move. If so you have to update the data structure or it will not be valid anymore. These data stuctures are also using more memory. So you have to measure that putting the objects in a data strcuture is faster than just searching for the closest object. **When is it useful?** -* Find the closest object to a character. This can be a really slow process if you have hundreds of objects around the character. And if you have soldiers fighting soldiers, you have to make that seach for each soldier. A better way is to divide the search-area so you don't have to search thorough all objects - just the ones closest to you. +- Find the closest object to a character. This can be a really slow process if you have hundreds of objects around the character. And if you have soldiers fighting soldiers, you have to make that seach for each soldier. A better way is to divide the search-area so you don't have to search thorough all objects - just the ones closest to you. -* To increase the performance of collision detection and raytracing. +- To increase the performance of collision detection and raytracing. @@ -507,17 +507,17 @@ You have some class you want to add some behaviors to in a flexible way without **How to implement?** -* You have a class and now you create several "decorator" classes that modifies some of the behaviors in the class you want to modify. The decorator class should wrap he class it wants to modify. The decorator class can in turn wrap itself to add other behaviors. This might be easier than the alternative to create child classes. +You have a class and now you create several "decorator" classes that modifies some of the behaviors in the class you want to modify. The decorator class should wrap he class it wants to modify. The decorator class can in turn wrap itself to add other behaviors. This might be easier than the alternative to create child classes. **When is it useful?** -* If you have an order system where people order several products at the same time but pay at a later time. An example of this can be found in the code section where you order Tesla cars with modifications. Yes you could store each order in a list, but a better way is to store them in objects linked to each other. Instead of iterating through each object to find the price, you can just ask the "last" object to get the price of the entire chain. +- If you have an order system where people order several products at the same time but pay at a later time. An example of this can be found in the code section where you order Tesla cars with modifications. Yes you could store each order in a list, but a better way is to store them in objects linked to each other. Instead of iterating through each object to find the price, you can just ask the "last" object to get the price of the entire chain. -* If you ever played Pubg you know you have weapons to which you can attach various attachments you find while playing the game. You can find magazines, sights, silenzers, etc, modifying the weapon's properties. You can use the Decorator pattern to implement this in your game. +- If you ever played Pubg you know you have weapons to which you can attach various attachments you find while playing the game. You can find magazines, sights, silenzers, etc, modifying the weapon's properties. You can use the Decorator pattern to implement this in your game. **Related patterns** -* [Subclass Sandbox](#11-subclass-sandbox). You may end up with many child-classes. To easier handle the code, you can define high-level methods in the parent like in the Subclass Sandbox pattern. +- **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-classes. To easier handle the code, you can define high-level methods in the parent like in the Subclass Sandbox pattern. @@ -531,11 +531,11 @@ If you are creating several different factories, then they should inherit from s **When is it useful?** -* If you've implemented the [Decorator](#20-decorator) then you can decorate the objects in a procedural way by using the Factory pattern. An example of this is in the code where you manufacture the Tesla cars you ordered in the Decorator pattern example. +- If you've implemented the [Decorator](#20-decorator) then you can decorate the objects in a procedural way by using the Factory pattern. An example of this is in the code where you manufacture the Tesla cars you ordered in the Decorator pattern example. **Related patterns** -* [Prototype](#4-prototype). The Prototype pattern is generally used if you want to make a copy of an existing object, while the Factory pattern is generating new objects. But some argue you can put the Prototype pattern inside of the Factory pattern. +- **[Prototype](#4-prototype).** The Prototype pattern is generally used if you want to make a copy of an existing object, while the Factory pattern is generating new objects. But some argue you can put the Prototype pattern inside of the Factory pattern. @@ -549,15 +549,15 @@ Create a manager class that provides a single interface to a large collection of **When is it useful?** -* In games it's common to write standardized code libraries, such as a library for the AI, which includes pathfinding, etc. These tend to include massive amounts of subclasses. To make it easier for yourself you create a script that includes access to the most important methods you need, such as get a path. An example of this can't be found here but in another open source library I have: [Computational geometry](https://github.com/Habrador/Computational-geometry). For example, there are multiple methods on how to generate a Delaunay triangulation. To simplify the access to those methods I wrote a class called _Delaunay, which accesses each Delaunay method in a simple way. Otherwise you would have to first go into the Delaunay folder and figure out which class is doing what and which method you should use to generate the needed triangulation. And if I decided to use another triangulation library I only need to change the facade script. +- In games it's common to write standardized code libraries, such as a library for the AI, which includes pathfinding, etc. These tend to include massive amounts of subclasses. To make it easier for yourself you create a script that includes access to the most important methods you need, such as get a path. An example of this can't be found here but in another open source library I have: [Computational geometry](https://github.com/Habrador/Computational-geometry). For example, there are multiple methods on how to generate a Delaunay triangulation. To simplify the access to those methods I wrote a class called _Delaunay, which accesses each Delaunay method in a simple way. Otherwise you would have to first go into the Delaunay folder and figure out which class is doing what and which method you should use to generate the needed triangulation. And if I decided to use another triangulation library I only need to change the facade script. **Related patterns** -* [Service Locator](#15-service-locator). Is very similar but the Service Locator is not necessarily consisting of several classes - the service we want to get might consist of a single class. But the Service Locator can use the Facade Pattern if needed. +- **[Service Locator](#15-service-locator).** Is very similar but the Service Locator is not necessarily consisting of several classes - the service we want to get might consist of a single class. But the Service Locator can use the Facade Pattern if needed. -* [Singleton](#5-singleton). The facade class is often a singleton because you need only a single object to manage access to audio or to AI. +- **[Singleton](#5-singleton).** The facade class is often a singleton because you need only a single object to manage access to audio or to AI. -* Adapter. This pattern is dealing with legacy code that doesn't work directly with your system and you can't modify that code on your own. This legacy code could be a facade but doesn't have to be. So you add code to make the non-functioning facade work with your system. Facade creates a new interface while adapter adapts an old interface. +- **Adapter.** This pattern is dealing with legacy code that doesn't work directly with your system and you can't modify that code on your own. This legacy code could be a facade but doesn't have to be. So you add code to make the non-functioning facade work with your system. Facade creates a new interface while adapter adapts an old interface. @@ -571,22 +571,23 @@ Define a template method in the parent class which consists of calling several m **When is it useful?** -* When your child classes share behavior and the parent class can provide these behaviors. The example in the code shows how to assemble Tesla cars. While each car consists of different parts the process of assembling a car is the same. +- When your child classes share behavior and the parent class can provide these behaviors. The example in the code shows how to assemble Tesla cars. While each car consists of different parts the process of assembling a car is the same. **Related patterns** -* [Subclass Sandbox](#11-subclass-sandbox). Is the opposite of the Template pattern. In the Subclass Sandbox you implement the methods in the parent class, while in Template you implement the methods in the child class. +- **[Subclass Sandbox](#11-subclass-sandbox).** Is the opposite of the Template pattern. In the Subclass Sandbox you implement the methods in the parent class, while in Template you implement the methods in the child class. # Sources -* [Game Programming Patterns](http://gameprogrammingpatterns.com) -* [Game Programming Gems](https://www.amazon.com/Game-Programming-Gems-CD/dp/1584500492) +- [Game Programming Patterns](http://gameprogrammingpatterns.com) + +- [Game Programming Gems](https://www.amazon.com/Game-Programming-Gems-CD/dp/1584500492) # Special thanks -* [masoudarvishian](https://github.com/masoudarvishian) for implementing Event Queue pattern, Service Locator pattern, and bug fixing -* [VladimirMirMir](https://github.com/VladimirMirMir) for bug fixing +- **[masoudarvishian](https://github.com/masoudarvishian)** for implementing Event Queue pattern, Service Locator pattern, and bug fixing. +- **[VladimirMirMir](https://github.com/VladimirMirMir)** for bug fixing. From 68701e03ff94e57b81ec45c8a2794e3b81048e6c Mon Sep 17 00:00:00 2001 From: habrador Date: Wed, 2 Nov 2022 08:48:07 +0100 Subject: [PATCH 30/68] Updated readme --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 243c057..bdc6923 100644 --- a/README.md +++ b/README.md @@ -246,9 +246,9 @@ The game loop is the core of all games. It's basically an infinite while loop th This pattern has already been implemented in Unity, which is actually using both versions of the while loop: - - Fixed time step: Time.fixedDeltaTime. This version is used for physics calculations where you should use a constant step to make more accurate calculations. +- Fixed time step: Time.fixedDeltaTime. This version is used for physics calculations where you should use a constant step to make more accurate calculations. - - Variable time step: [Time.deltaTime](https://docs.unity3d.com/ScriptReference/Time-deltaTime.html), which Unity defines as "The completion time in seconds since the last frame." +- Variable time step: [Time.deltaTime](https://docs.unity3d.com/ScriptReference/Time-deltaTime.html), which Unity defines as "The completion time in seconds since the last frame." The game loop is also checking for input before anything else. This is why in Unity you can type "if (Input.GetKey(KeyCode.A))" because the game loop has already checked (before the update method) if the A key has been pressed and stored that information in some data structure. From 17b955e1c6c21f184a3f203189f714c8f7f15538 Mon Sep 17 00:00:00 2001 From: habrador Date: Wed, 2 Nov 2022 08:50:21 +0100 Subject: [PATCH 31/68] Updated readme --- README.md | 1 - 1 file changed, 1 deletion(-) diff --git a/README.md b/README.md index bdc6923..0bf422b 100644 --- a/README.md +++ b/README.md @@ -582,7 +582,6 @@ Define a template method in the parent class which consists of calling several m # Sources - [Game Programming Patterns](http://gameprogrammingpatterns.com) - - [Game Programming Gems](https://www.amazon.com/Game-Programming-Gems-CD/dp/1584500492) From 1efa3e7a1a08ae415d5297854cf4aa6eafb89047 Mon Sep 17 00:00:00 2001 From: habrador Date: Wed, 2 Nov 2022 11:23:24 +0100 Subject: [PATCH 32/68] Updated readme --- README.md | 126 ++++++++++++++++++++++++++++-------------------------- 1 file changed, 66 insertions(+), 60 deletions(-) diff --git a/README.md b/README.md index 0bf422b..c2a0bd0 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ # Game programming patterns in Unity -Here you can find a collection of programming (design) patterns in Unity, mainly from the book [Game Programming Patterns](http://gameprogrammingpatterns.com). These are very useful to better organize your Unity project as it grows because they capture best practices and solutions to commonly occuring problems. You don't have to use them - you should see them as tools in your toolbox. You can also experiment with how they are implemented to fit your specific needs. Some patterns, such as Update, Game Loop, Component, are already been built-in into Unity so you are already using them! +Here you can find a collection of programming (design) patterns in Unity, mainly from the book [Game Programming Patterns](http://gameprogrammingpatterns.com). These are very useful to better organize your Unity project as it grows because they capture best practices and solutions to commonly occuring problems. You don't have to use them - you should see them as tools in your toolbox. You can also experiment with how they are implemented to fit your specific needs. Some patterns, such as Update, Game Loop, Component, are already built-in into Unity so you are already using them! Programming patterns can be divided into the following groups: 1. **Architectural patterns.** One example is the MVC (Model-View-Controller). 2. **Design patterns.** Are more specific than architectural patterns, such as the Singleton. -3. **Anti-patterns.** Are a collection of patterns that many programmers are using to solve problems even though they shouldn't use them because they are ineffective solutions to a problem. One example is a "God object," most likely called GameController where you collect everything you might need to make the game work. The problem with such as class is that it will grow in size, which will make it more difficult to maintain, and it will also be difficult to debug because the code doesn't belong together. +3. **Anti-patterns.** Are a collection of patterns programmers are using to solve problems even though they shouldn't use them because they are ineffective solutions. One example is a "God object," most likely called GameController where you collect everything you might need to make the game work. The problem with such as class is that it will grow in size, which will make it more difficult to maintain, and it will also be difficult to debug because the code doesn't belong together. Patterns from the book Game Programming Patterns: @@ -43,7 +43,7 @@ Note that these are not all patterns out there. I recently read a book called "M ## 1. Command -In you game you have many commands, such as play sound, throw cake, etc. It can be useful to wrap them in a Command object. Now the Command object doesn't have to care about how the command is executed. +In you game you have many commands, such as play sound, throw cake, etc. It can be useful to wrap them in a command object. Now the command object doesn't have to care about how the command is executed. **How to implement?** @@ -51,21 +51,23 @@ You have a base class called Command which has a method that a child can impleme **When is it useful?** -- To make it easier to rebind keys. Example of this is available in the code section. +- To rebind keys. Example of this is available in the code section. -- To make it easier to make a replay system. When you play the game, you store in some data structure which button you pressed each update. When you want to replay what has happened, you just iterate through each command while running the game. Example of this is available in the code section. +- To make a replay system. When you play the game, you store in some data structure which button you pressed each update. When you want to replay what has happened, you just iterate through each command while running the game. Example of this is available in the code section. -- To make it easier to make an undo and redo system. Is similar to the replay system, but in each command you also have a method called Undo() where you do the opposite of what the command is doing. Example of this is available in the code section. +- To make an undo and redo system. Is similar to the replay system, but in each command you also have a method called Undo() where you do the opposite of what the command is doing. Example of this is available in the code section. **Related patterns** -- **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-command-classes. To easier handle the code, you can define high-level methods in the parent like in the Subclass Sandbox pattern. +- **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-command-classes. To easier handle the code, you can define high-level methods in the parent. + +- **Memento.** With this pattern you can also return to a previous state. ## 2. Flyweight -This pattern is useful if you have many objects. Even though a single object takes up little memory – instantiating many of them can cause trouble. +This pattern is useful if you have many game objects. Even though a single object takes up little memory – instantiating many of them can cause trouble. **How to implement?** @@ -81,17 +83,17 @@ Separate the data that’s not specific to a single instance of that object and **Related patterns** -- **[Type object](#12-type-object).** The main difference is that in Type object you don't need to have the exact same data and you can also have behavior. +- **[Type Object](#12-type-object).** The main difference is that in Type Object you don't need to have the exact same data and you can also have behavior. ## 3. Observer -Many things are constantly happening in your game. These things are called events (and sometimes messages). The difference between event and message is that an event has happened while a message is something that will happen. So this pattern is all about what will happen after an event has happened. Which methods should be called after you killed an enemy to update score, show death animation, etc? These methods should subscribe to the event. +Many things are constantly happening in your game. These things are called events (or messages). The difference between event and message is that an event has happened while a message is something that will happen. So this pattern is all about what will happen after an event has happened. Which methods should be called after you killed an enemy to update score, show death animation, etc? These methods should subscribe to the event. **How to implement?** -This pattern is so popular that C# has implemented it for you. Unity also has its own implementation. So your alternatives are: +This pattern is so popular that C# has implemented it for you. Unity also has its own implementation. Your alternatives are: - EventHandler - Action @@ -102,7 +104,7 @@ I've implemented all these in the code, so if you don't understand the differenc **When is it useful?** -- This pattern is really useful if you want to avoid spaghetti code by making classes independent of each other, also known as decoupling. The best part of events is that the part that's triggering the event doesn't care which methods are attached to the event. There might be zero methods. So if an event is triggered but nothing is happening we can easier find where the bug might be. +- This pattern is really useful if you want to avoid spaghetti code by making classes independent of each other, also known as decoupling. The best part of events is the part that's triggering the event doesn't care which methods are attached to the event. There might be zero methods. So if an event is triggered but nothing is happening you can easier find where the bug might be. - If you really want to decouple your code, then you still have a problem. To subscribe to the event you need a reference to the script where the event is defined. Another way is to create an Event Manager, which is a global class that takes care of all events. Unity has its own tutorial on how to implement that: [Creating a Simple Messaging System](https://www.youtube.com/watch?v=0AqG1fDhPT8). @@ -110,21 +112,21 @@ I've implemented all these in the code, so if you don't understand the differenc **Related patterns** -- **[Event queue](#14-event-queue).** The biggest problem with Observer is that it will trigger all methods that subscribe to the event. So if five methods subscribe, then five methods will be triggered. But what if 10 enemies are killed at the same time, then 50 methods will be triggered at the same time, which may freeze your game. This is when you should use the Event queue, which is basically the same as the Observer, but you put the events in a queue and you trigger as many as you can without freezing the game. +- **[Event Queue](#14-event-queue).** The biggest problem with Observer is that it will trigger all methods subscribing to the event. If five methods subscribe, then five methods will be triggered. But what if 10 enemies are killed at the same time? Then 50 methods will be triggered and it can freeze the game. This is when you should use the Event Queue, which is basically the same as the Observer, but you put the events in a queue and you trigger as many as you can each Update without freezing the game. -- **Model-View-Controller (MVC).** The MVC is an architectural pattern, and to implement it you can use the Observer. +- **Model-View-Controller (MVC).** The MVC is an architectural pattern, and to implement it you can use the Observer pattern. ## 4. Prototype -In your game you have a game object. Now you want to duplicate that object to create another object. This pattern allows you to create as many duplicates of an object as you want. +In your game you have a game object. Now you want to duplicate that object. This pattern allows you to create as many duplicates of an object as you want. **How to implement?** This is a pattern that already exists in Unity in the form of the [Instantiate-method](https://docs.unity3d.com/ScriptReference/Object.Instantiate.html). But it assumes that the object you want to duplicate inherits from Object, which is a class in UnityEngine. -You could also make you own implementation. But then you have to ask yourself: do you do a deep clone (a copy of the structure and the elements in the structure) or a shallow clone (a copy of the structure not the elements in the structure)? Maybe the Flyweight pattern can give you the answer? +You can also make you own implementation. But then you have to ask yourself: do you do a deep clone (a copy of the structure and the elements in the structure) or a shallow clone (a copy of the structure not the elements in the structure)? Maybe the Flyweight pattern can give you the answer? **When is it useful?** @@ -134,13 +136,13 @@ You could also make you own implementation. But then you have to ask yourself: d - **[Factory](#21-factory).** In the Factory you are generally generating new objects - not copies of already existing objects (which may include position and other states). You can put the Prototype inside of the Factory so you have one class where you create all objects instead of having the creation in multiple classes which might be troublesome if you want to change something. -- **[Object pool](#18-object-pool).** If you Instantiate and destroy many game objects, it will affect the performance of the game. To solve that problem you can use the Object pool pattern. +- **[Object Pool](#18-object-pool).** If you Instantiate and destroy many game objects it will affect the performance of the game. To solve that problem you can use the Object Pool pattern. ## 5. Singleton -In your game you might have a class that saves the game for you. It's really important that you have just one instance of this class, or you might save different versions of the game if each instance includes different data. It should also be easy to access this save game class from where you need it. You can use the Singleton pattern to accomplish this. +In your game you might have a class that saves the game for you. It's really important that you have just one instance of this class or you might save different versions of the game if each instance includes different data. It should also be easy to access this save game class from where you need it. You can use the Singleton pattern to accomplish this. **How to implement?** @@ -148,13 +150,13 @@ In C#. Make the instance static and provide a public static means of getting the If your Singleton has to be thread safe, things will get more complicated. This is a good tutorial on the topic of more advanced Singleton patterns: [Implementing the Singleton Pattern in C#](https://csharpindepth.com/articles/singleton). -In C# but the class also inherits from MonoBehaviour. If you want the Singleton to also inherit from MonoBehaviour (because you need some of that functionality) things will get slightly more complicated. The problem now is that you can accidentally add several Singletons to the project. So you have to make sure you destroy all except one of the objects. Neither can you use a constructor, because MonoBehaviour doesn't allow it, so you have to implement your own constructor. You can find this implemented in the code section. +In C# but the class also inherits from MonoBehaviour. If you want the Singleton to also inherit from MonoBehaviour (because you need some of that functionality) things will get more complicated. The problem now is that you can accidentally add several Singletons to the project. So you have to make sure you destroy all except one of the objects. Neither can you use a constructor, because MonoBehaviour doesn't allow it, so you have to implement your own constructor. You can find this implemented in the code section. **When is it not useful?** -- According to the book, you should avoid this pattern because global objects may cause trouble. If you need to use this pattern, then it should be for manager classes, such as GameController, SaveGame, etc. +- According to the book "Game Programming Patterns," you should avoid this pattern because global objects can cause trouble. If you need to use this pattern, then it should be for manager classes, such as GameController, SaveGame, etc. The fewer Singletons the better! -- A problem if you use the MonoBehaviour version is that if you call the Singleton object from another object's OnDestroy method when you quit the game, the Singleton might have already been destroyed. +- If you use the MonoBehaviour version, a problem is that if you call the Singleton object from another object's OnDestroy method when you quit the game, the Singleton might have already been destroyed. **What are some alternatives?** @@ -166,11 +168,11 @@ You tend to use the Singleton pattern because you want an easy access to that sc - **Unity's built-in Find() and SendMessage().** But these are so slow they should be avoided. If you have to use them, use them only once to get a reference to the script in the Start method. -- **Assign references to pre-existing objects.** This means dragging the object (on which the script that used to be a singleton is attached) to public variables exposed in the Editor. The problem now is that this may become very complicated, and if you change a reference you often have to again drag them to wherever it's needed, which may be many locations if you have many objects. +- **Assign references to pre-existing objects.** This means dragging the object (on which the script that used to be a Singleton is attached) to public variables exposed in the Editor. The problem now is that this may become very complicated, and if you change a reference you often have to again drag them to wherever it's needed, which may be many locations if you have many objects. -- **A global event system.** This is basically the [Observer pattern](#3-observer). You still need a Singleton for this global system, but you can remove all other Singletons. +- **A global event system.** This is the [Observer pattern](#3-observer). You still need a Singleton for this global system, but you can remove all other Singletons. -- **Dependency Injection.** This means that you inject the reference to the object (that used to be a singleton) in for example the constructor belonging to the class that need a reference to that object. There's also [Dependency Injection frameworks](https://www.youtube.com/watch?v=6tn8pMQuxEk) to make this process easier. +- **Dependency Injection.** You inject the reference to the object (that used to be a Singleton) in for example the constructor belonging to the class that need a reference to that object. There's also [Dependency Injection frameworks](https://www.youtube.com/watch?v=6tn8pMQuxEk) to make this process easier. - **One Singleton.** Have just one Singleton class and all managers that used to be Singletons are collected in this class. If you need the SaveGame object, you type GameController.Instance.getSaveGameManager(). @@ -178,17 +180,15 @@ You tend to use the Singleton pattern because you want an easy access to that sc ## 6. State -Your game can be in a number of states. For example, the main character can have the following states: jump, walk, run, etc. Now you want an easy way to switch between the states. This pattern is also known as a **state machine**, and if you have a finite amount of states you get a **finite state machine (FSM)**. +Your game can be in a number of states. The main character can have the following states: jump, walk, run, etc. Now you want an easy way to switch between the states. This pattern is also known as a **state machine,** and if you have a finite amount of states you get a **finite state machine (FSM).** **How to implement?** -You could use an enum that keeps track of each state and then a switch statement. - -The problem with the switch statement is that it tends to become complicated the more states you add. A better way is to define an object for each state and then you switch between the objects as you switch states. +You could use an enum that keeps track of each state and then a switch statement. The problem with the switch statement is that it becomes complicated the more states you add. A better way is to define an object for each state and then you switch between the objects as you switch states. **When is it useful?** -- When you have too many nested if-statements, such as in a menu system. In the code, you can see an example of a menu system that uses this pattern. +- When you have too many nested if-statements, such as in a menu system. In the code, you can see an example of a menu system using the State pattern. - Unity is using this pattern in the animation engine. @@ -202,11 +202,11 @@ The problem with the switch statement is that it tends to become complicated the - **[Type Object](#12-type-object).** In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the object in Type Object can be switched you get the State pattern. -- **Strategy.** With this pattern you can give an object a new behavior (a new strategy to follow) without taking into account its current state or states coming after the current behavior. It means you can use the code from the State pattern to implement the Strategy pattern. +- **Strategy.** With this pattern you can give an object a new behavior (a new strategy to follow) without taking into account its current state or states coming after the current behavior. - **Memento.** Same as state but you can roll back to a previous state. -- **Behavior Tree.** +- **Behavior Tree.** Is useful if you have many states and want a more complex behavior. @@ -224,7 +224,7 @@ You can have two arrays. You write to one of them, and when the calculations are - To generate motion blur. The current buffer is blended with a bit of the previous buffer. -- Cellular Automation. In games it's common that you store data in a grid (which is a 2d array). To calculate new data you combine data from the cells, such as the maximum value of the current cell and surrounding cells. But where are you storing the data for the cell you just calculated? You can't store it in the cell because that will screw up the calculations for neighboring cells because you always want to use old data when doing the calculations. So you use two grids: #2 holds the old data and #1 is using #2 to update itself. When the calculations are finished, you swap them. +- Cellular Automata (CA). In games it's common to store data in a grid (which is a 2d array). To calculate new data you combine data from the cells, such as the maximum value of the current cell and surrounding cells. But where are you storing the data for the cell you just calculated? You can't store it in the cell because that will screw up the calculations for neighboring cells because you always want to use old data when doing the calculations. So you use two grids: #2 holds the old data and #1 is using #2 to update itself. When the calculations are finished, you swap them. - Cave-generation. This is the example I've included in the code. @@ -236,7 +236,7 @@ You can have two arrays. You write to one of them, and when the calculations are ## 8. Game Loop -The game loop is the core of all games. It's basically an infinite while loop that keeps updating until you stop it. But the problem with such a while loop is that it updates faster on faster computers than it is on slower computers. This will be very problematic if you have some object that travels with some speed, then it will travel faster on the faster computer and the player will maybe not even understand what's going on. To solve this problem you need to take time into account by using the following: +The game loop is the core of all games. It's basically an infinite while loop that keeps updating until you stop it. But the problem with such a while loop is that it updates faster on faster computers than it is on slower computers. This will be very problematic if you have some object that travels with some speed, then it will travel faster on the faster computer. To solve this problem you need to take time into account by using the following: - Fixed time step. You determine you want the game to run at 30 frames-per-second (FPS). Now you know how long one while loop should take (1/30 = 0.03333 seconds). If the while loop is faster than that, you simply pause it at the end until 0.03333 seconds has passed. If it's slower, you should optimize your game. @@ -282,7 +282,7 @@ The programmers with no skillz write their code in a .txt-file. You read that fi - If you want to add modding support. -- If you don't want to hard-coded behaviour. +- If you don't want to hard-code behaviour. @@ -304,7 +304,7 @@ Define several protected methods in the parent class and how they are implemente - **[Type Object](#12-type-object).** Instead of defining all methods in the parent you could give the child a reference to an object that defines these methods. -- **[Template](#23-template).** Is the opposite of the Subclass sandbox pattern. In the Subclass Sandbox you implement the methods in the parent class, while in Template you implement the methods in the child class. +- **[Template](#23-template).** Is the opposite of the Subclass sandbox pattern. In the Subclass Sandbox you implement the methods in the parent class while in Template you implement the methods in the child class. @@ -352,11 +352,11 @@ In Unity you can attach components to GameObjects, such as colliders, mesh rende ## 14. Event Queue -This pattern is almost the same as the [Observer](#3-observer) pattern. The only difference is that you wait until a later time to process each event. This may be useful if you have many events that may be activated at the same time which will freeze the game - this pattern will spread them out. +You have some events but you can wait until later to process each event. This may be useful if you have many events that may be activated at the same time which will freeze the game because this pattern will spread them out over some time period. **How to implement?** -Combine the [Command](#1-command) pattern with a C#'s built-in queue, which is why this pattern is sometimes known as a **Command Queue**. In the Update method you pick the first Command in the queue and run it while measuring time. To measure time you can use System.Diagnostics.Stopwatch. If you have time to spare, you run the next Command, and so on until you are out of time. How much time you can spend on the Event Queue each update depends on the game, so you have to experiment. +Combine the [Command](#1-command) pattern with C#'s built-in queue, which is why this pattern is sometimes known as a **Command Queue**. In the Update method you pick the first Command in the queue and run it while measuring time. To measure time you can use System.Diagnostics.Stopwatch. If you have time to spare, you run the next Command, and so on until you are out of time. How much time you can spend on the Event Queue each update depends on the game, so you have to experiment. **When is it useful?** @@ -366,7 +366,13 @@ Combine the [Command](#1-command) pattern with a C#'s built-in queue, which is w - If you are making a strategy game, you can put orders in the queue that the player wants a certain unit to do: 1. build wall, 2. collect food, 3. attack creature. Now the player doesn't have to wait for a unit to finish one task. You can also put waypoints in the queue to make a unit patrol between waypoints. The AI can also put commands in a queue to for example determine which units should attack. -- When making a speech system. Each character has its own queue with audio it wants to say. To know which character should speak, you can go through all queues. If the player presses Escape because the player doesn't want to listen to the talk, you simply clear all queues. +- When making a speech system. Each character has its own queue with audio it wants to say. To know which character should speak, you can go through all queues. If the player presses Escape because the player doesn't want to listen to the talk, you simply clear all queues. + +**Related patterns** + +- **Event Bus.** Similar to Event Queue but there's no delay. + +- **[Observer](#3-observer).** You use the Observer pattern to implement the Event Queue. @@ -378,7 +384,7 @@ When making your game you use many standardized methods to for example generate Put each service in a static class. The static class should be in its own folder and have its own namespace to make sure you are not mixing the services with your main code. -A slightly more complicated way is to use a service locator that provides access to a service provider. To make sure no other methods than the ones you need are exposed to the outside world, the service provider should limit which methods it can provide access to. +Use a Service Locator that provides access to a service provider. To make sure no other methods than the ones you need are exposed to the outside world, the service provider should limit which methods it can provide access to. Unity has implemented this pattern in the form of the GetComponent() method. @@ -386,7 +392,7 @@ Unity has implemented this pattern in the form of the GetComponent() method. - Several services are already built-in into Unity, such as Random.Range() to get a random number, Mathf.PI to get pi, and Debug.Log() to display something in the console. -- In the game you may have different audio objects depending on if the game is running on a console or on a PC. This is the same example as in the book so you can find the code for it in the code section. +- In the game you may have different audio objects depending on if the game is running on a console or PC. This is the same example as in the book so you can find the code for it in the code section. **Related patterns** @@ -398,11 +404,11 @@ Unity has implemented this pattern in the form of the GetComponent() method. ## 16. Data Locality -Have you done all otpimizations you can possible do? Is the game still too slow? Then this pattern may help you. It can make your game faster by accelerating memory access. +Have you done all optimizations you can possible do? Is the game still too slow? Then this pattern may help you. It can make your game faster by accelerating memory access. **How to implement?** -You have to arrange data to take advantage of CPU caching. The basic idea is that you should organize your data structures so that the things you're processing are next to each other in memory. This is a big topic and can't be summarized here, so you should read about it in the book. +You have to arrange data to take advantage of CPU caching. The basic idea is that you should organize your data structures so that the things you're processing are next to each other in memory. This is a big topic and can't be summarized here, so you should read about it in the book "Game Programming Patterns." This Unity article suggest that you should use struct instead of class because they are more cache friendly [How to Write Faster Code Than 90% of Programmers](https://jacksondunstan.com/articles/3860). @@ -412,7 +418,7 @@ A good Unity tutorial on the topic is: [Unity Memory Profiler: Where Are You Was **When is it useful?** -- According to the book "Game Programming Patterns," this pattern should be used when everything else has failed. It's a waste of time to optimize code that doesn't need to be optimized - and it may also make the code more complicated to understand. You also have to make sure that cache misses is the reason your code is slow, so you have to first measure it. +- According to the book "Game Programming Patterns," this pattern should be used when everything else has failed. It's a waste of time to optimize code that doesn't need to be optimized - and it may also make the code more complicated to understand. You also have to make sure that cache misses is the reason your code is slow, so you first have to measure it. @@ -428,7 +434,7 @@ The dirty flag is just a simple boolean, which is set to true if something has c - Saving your game can be a costly operation. If something in your game has changed that also needs to be saved, you set a Dirty Flag in the save game object to true. Now if the player wants to quit the game, you can easily tell the player that there are unsaved changes. -- If you ever done some editor scripting in Unity, you know that you can use SetDirty() to mark an object as dirty or you can even mark the entire scene as dirty. Now Unity will understand that you have changed something and those changes should be saved when you save your scene. +- If you ever done some editor scripting in Unity, you can use SetDirty() to mark an object as dirty or you can even mark the entire scene as dirty. Now Unity will understand that you have changed something and those changes should be saved when you save your scene. - Unity is using it in the physics system. A RigidBody doesn't have to be updated unless a force is applied to it. If the RigidBody is sleeping (not moving), a Dirty Flag is used so the physics system can ignore it. @@ -446,31 +452,31 @@ Create a class called object pool. Give it an object prefab and instantiate the - You can instantiate more objects during gameplay. But make sure you don't instantiate too many objects because it will be a waste of memory. You could later remove the "extra" objects you added. - - Find one of the objects that's active but the player will not notice if it suddeny disappears so you can use it. + - Pick one of the objects that's active but the player will not notice if it suddeny disappears so you can use it. - Ignore that you have no more objects, which may be fine. If the screen is filled with explosions, the player will not notice a new explosion is missing. -If the objects you pool reference another object which is destroyed, then it's important to clear this reference when the object in the pool is deactivated. Otherwise the garbage collector will not be able to do its work on the destroyed object because it's still referenced by a living object. - -One problem with storing objects in a list and search the list to find an avilable object is that the list may be very long, so it's a waste of time. Another way is to store the objects in the pool in a linked-list. +If you search the list to find an avilable object, and the list is very long because you have many pooled objects, you waste time. A better way is to store the objects in the pool in a linked-list. This pattern is so popular Unity has implemented their own version of it called [ObjectPool](https://docs.unity3d.com/ScriptReference/Pool.ObjectPool_1.html). Is only available in later versions of Unity. **When is it useful?** -- The most common example is when you fire bullets from a gun, then you will need many bullets. I've given an example of this in the code section. You can find two versions: the optimized version which uses a linked-list, and the slow version which has to search a list to find an available bullet. +- When you fire bullets from a gun then you will need many bullets. I've given an example of this in the code section. You can find three versions: the optimized version which uses a linked-list, the slow ut simple version which has to search a list, and Unity's native object pool. - Unity is using this pattern in their particle system. In the particle settings you can set max number of particles, which can be useful so you don't accidentally instantiate millions of particles. **Related patterns** -- **[Data Locality](#16-data-locality).** In this pattern we pack objects of the same type together in memory. It will help the CPU cache to be full as the game iterates over those objects, which is what the Data Locality patterns is about. +- **[Data Locality](#16-data-locality).** In this pattern you pack objects of the same type together in memory. It will help the CPU cache to be full as the game iterates over those objects, which is what the Data Locality patterns is about. + +- **[Prototype](#4-prototype).** ## 19. Spatial Partition -If you have many objects in your game, store the objects in a data structure that organizes the objects by their positions. This should make it faster to for example find the closest object to some other object. +If you have many objects in your game, store the objects in a data structure that organizes the objects by their positions. This should make it faster to for example find which objects are colliding. **How to implement?** @@ -480,14 +486,14 @@ This is a common pattern, so you have several choices: - **Trie.** Is actually called [Trie](https://en.wikipedia.org/wiki/Trie) and not Tree! - [Quadtree (2d space)](https://en.wikipedia.org/wiki/Quadtree). Divide the square area into 4 cells. But if too many objects are in the same cell, divide that cell into 4 new cells. Continue until there are not "too many objects in the same cell." A good tutorial can be found here: [Coding Challenge #98.1: Quadtree - Part 1](https://www.youtube.com/watch?v=OJxEcs0w_kE). - - [Octree (3d space)](https://en.wikipedia.org/wiki/Octree). Is similar to Quadtree, but instead of cells you use cubes, so divide a cube volume into 8 cubes, and then split each cube into 8 new cubes until not "too many objects are in the same cube." + - [Octree (3d space)](https://en.wikipedia.org/wiki/Octree). Is similar to Quadtree, but instead of cells you use cubes, so divide a cube volume into 8 cubes, and then split each cube into 8 new cubes and so on. - **Binary search trees.** The name is binary, so the difference between Tree is that you split the groups into 2 smaller groups, and then you split one of the smaller groups into 2 smaller groups, and so on. - [Binary space partition (BSP)](https://en.wikipedia.org/wiki/Binary_space_partitioning). You use a plane to split a group into 2 new groups. And then you use another plane to split the new group into 2 new groups, and so on until you are finished. - [k-d trees](https://en.wikipedia.org/wiki/K-d_tree). In this case it has to be points that you split into smaller, and smaller groups. - [Bounding volume hierarchy](https://en.wikipedia.org/wiki/Bounding_volume_hierarchy). You pick a bounding volume (or area in 2d space), such as a rectangle. The size of the first rectangle is determined so all objects fit within it. Then you split the rectangle into two new rectangles, and so on. -A problem is if the objects move. If so you have to update the data structure or it will not be valid anymore. These data stuctures are also using more memory. So you have to measure that putting the objects in a data strcuture is faster than just searching for the closest object. +If the objects move you have to update the data structure. These data stuctures are also using more memory meaning you have to measure that putting the objects in a data structure is faster than just searching for the closest object. **When is it useful?** @@ -503,11 +509,11 @@ A problem is if the objects move. If so you have to update the data structure or ## 20. Decorator -You have some class you want to add some behaviors to in a flexible way without modifying the original class. +You have a class you want to add some behaviors to in a flexible way without modifying the original class. **How to implement?** -You have a class and now you create several "decorator" classes that modifies some of the behaviors in the class you want to modify. The decorator class should wrap he class it wants to modify. The decorator class can in turn wrap itself to add other behaviors. This might be easier than the alternative to create child classes. +You have a class and now you create several "decorator" classes that modifies some of the behaviors in the class you want to modify. The decorator class should wrap the class it wants to modify. The decorator class can in turn wrap itself to add other behaviors. This might be easier than the alternative to create child classes. **When is it useful?** @@ -517,7 +523,7 @@ You have a class and now you create several "decorator" classes that modifies so **Related patterns** -- **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-classes. To easier handle the code, you can define high-level methods in the parent like in the Subclass Sandbox pattern. +- **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-classes. To easier handle the code, you can define high-level methods in the parent. @@ -549,15 +555,15 @@ Create a manager class that provides a single interface to a large collection of **When is it useful?** -- In games it's common to write standardized code libraries, such as a library for the AI, which includes pathfinding, etc. These tend to include massive amounts of subclasses. To make it easier for yourself you create a script that includes access to the most important methods you need, such as get a path. An example of this can't be found here but in another open source library I have: [Computational geometry](https://github.com/Habrador/Computational-geometry). For example, there are multiple methods on how to generate a Delaunay triangulation. To simplify the access to those methods I wrote a class called _Delaunay, which accesses each Delaunay method in a simple way. Otherwise you would have to first go into the Delaunay folder and figure out which class is doing what and which method you should use to generate the needed triangulation. And if I decided to use another triangulation library I only need to change the facade script. +- In games it's common to write standardized code libraries, such as a library for the AI, which includes pathfinding, etc. These tend to include massive amounts of classes. To make it easier for yourself you create a script that includes access to the most important methods you need, such as get a path. An example of this can't be found here but in another open source library I have: [Computational geometry](https://github.com/Habrador/Computational-geometry). For example, there are multiple methods on how to generate a Delaunay triangulation. To simplify the access to those methods I wrote a class called _Delaunay, which accesses each Delaunay method in a simple way. Otherwise you would have to first go into the Delaunay folder and figure out which class is doing what and which method you should use to generate the needed Delaunay triangulation. And if I decided to use another triangulation library I only need to change the facade script. **Related patterns** -- **[Service Locator](#15-service-locator).** Is very similar but the Service Locator is not necessarily consisting of several classes - the service we want to get might consist of a single class. But the Service Locator can use the Facade Pattern if needed. +- **[Service Locator](#15-service-locator).** The Service Locator is not necessarily consisting of several classes - the service we want to get might consist of a single class. But the Service Locator can use the Facade Pattern. -- **[Singleton](#5-singleton).** The facade class is often a singleton because you need only a single object to manage access to audio or to AI. +- **[Singleton](#5-singleton).** The facade class is often a Singleton because you need only a single object to manage access to audio or to AI. -- **Adapter.** This pattern is dealing with legacy code that doesn't work directly with your system and you can't modify that code on your own. This legacy code could be a facade but doesn't have to be. So you add code to make the non-functioning facade work with your system. Facade creates a new interface while adapter adapts an old interface. +- **Adapter.** This pattern is dealing with legacy code that doesn't work directly with your system and you can't modify that code on your own. This legacy code could be a facade but doesn't have to be. So you add code to make the non-functioning facade work with your system. Facade creates a new interface while Adapter adapts an old interface. From 3a106a31754bd296b7bb442f3b1854e8f459e6d0 Mon Sep 17 00:00:00 2001 From: habrador Date: Wed, 2 Nov 2022 13:46:52 +0100 Subject: [PATCH 33/68] Removed unnecessary cast in type object. Added goldfish to type object --- .../Patterns/12. Type Object/Animal/Scripts/Animals/Bird.cs | 2 +- .../Patterns/12. Type Object/Animal/Scripts/Animals/Fish.cs | 2 +- .../12. Type Object/Animal/Scripts/Animals/Mammal.cs | 2 +- .../12. Type Object/Animal/Scripts/TypeObjectController.cs | 6 +++++- 4 files changed, 8 insertions(+), 4 deletions(-) diff --git a/Assets/Patterns/12. Type Object/Animal/Scripts/Animals/Bird.cs b/Assets/Patterns/12. Type Object/Animal/Scripts/Animals/Bird.cs index 2282379..cc60890 100644 --- a/Assets/Patterns/12. Type Object/Animal/Scripts/Animals/Bird.cs +++ b/Assets/Patterns/12. Type Object/Animal/Scripts/Animals/Bird.cs @@ -13,7 +13,7 @@ public Bird(string name, bool canFly) { this.name = name; - this.flyingType = canFly ? new ICanFly() as IFlyingType : new ICantFly(); + this.flyingType = canFly ? new ICanFly() : new ICantFly(); } public override void Talk() diff --git a/Assets/Patterns/12. Type Object/Animal/Scripts/Animals/Fish.cs b/Assets/Patterns/12. Type Object/Animal/Scripts/Animals/Fish.cs index 3596332..12354c5 100644 --- a/Assets/Patterns/12. Type Object/Animal/Scripts/Animals/Fish.cs +++ b/Assets/Patterns/12. Type Object/Animal/Scripts/Animals/Fish.cs @@ -13,7 +13,7 @@ public Fish(string name, bool canFly) { this.name = name; - this.flyingType = canFly ? new ICanFly() as IFlyingType : new ICantFly(); + this.flyingType = canFly ? new ICanFly() : new ICantFly(); } public override void Talk() diff --git a/Assets/Patterns/12. Type Object/Animal/Scripts/Animals/Mammal.cs b/Assets/Patterns/12. Type Object/Animal/Scripts/Animals/Mammal.cs index a9ccc37..cd12896 100644 --- a/Assets/Patterns/12. Type Object/Animal/Scripts/Animals/Mammal.cs +++ b/Assets/Patterns/12. Type Object/Animal/Scripts/Animals/Mammal.cs @@ -13,7 +13,7 @@ public Mammal(string name, bool canFly) { this.name = name; - this.flyingType = canFly ? new ICanFly() as IFlyingType : new ICantFly(); + this.flyingType = canFly ? new ICanFly() : new ICantFly(); } public override void Talk() diff --git a/Assets/Patterns/12. Type Object/Animal/Scripts/TypeObjectController.cs b/Assets/Patterns/12. Type Object/Animal/Scripts/TypeObjectController.cs index 16b3900..c9ab14f 100644 --- a/Assets/Patterns/12. Type Object/Animal/Scripts/TypeObjectController.cs +++ b/Assets/Patterns/12. Type Object/Animal/Scripts/TypeObjectController.cs @@ -17,7 +17,9 @@ void Start() Mammal bat = new Mammal("bat", canFly: true); - Fish flyingFish = new Fish("Flying fish", canFly: true); + Fish flyingFish = new Fish("flying fish", canFly: true); + + Fish goldFish = new Fish("goldfish", canFly: false); ostrich.Talk(); @@ -29,6 +31,8 @@ void Start() bat.Talk(); flyingFish.Talk(); + + goldFish.Talk(); } } } From bd6a99ab22c3cacf17d4974a3d9163b4e3354da6 Mon Sep 17 00:00:00 2001 From: habrador Date: Wed, 2 Nov 2022 13:53:21 +0100 Subject: [PATCH 34/68] Moved the "another implementation" of the service locator pattern into the service locator pattern folder --- .../Another Implementation.meta} | 0 .../Another Implementation}/GameController.cs | 0 .../Another Implementation}/GameController.cs.meta | 0 .../Another Implementation}/ServiceLocator.cs | 0 .../Another Implementation}/ServiceLocator.cs.meta | 0 .../Another Implementation}/ServiceLocatorScene.unity | 0 .../Another Implementation}/ServiceLocatorScene.unity.meta | 0 .../Another Implementation}/Services.meta | 0 .../Another Implementation}/Services/FirstService.cs | 0 .../Another Implementation}/Services/FirstService.cs.meta | 0 .../Another Implementation}/Services/SecondService.cs | 0 .../Another Implementation}/Services/SecondService.cs.meta | 0 .../Another Implementation}/Services/ThirdService.cs | 0 .../Another Implementation}/Services/ThirdService.cs.meta | 0 14 files changed, 0 insertions(+), 0 deletions(-) rename Assets/Patterns/{15. Service Locator (Another Implementation).meta => 15. Service Locator/Another Implementation.meta} (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/GameController.cs (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/GameController.cs.meta (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/ServiceLocator.cs (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/ServiceLocator.cs.meta (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/ServiceLocatorScene.unity (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/ServiceLocatorScene.unity.meta (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/Services.meta (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/Services/FirstService.cs (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/Services/FirstService.cs.meta (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/Services/SecondService.cs (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/Services/SecondService.cs.meta (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/Services/ThirdService.cs (100%) rename Assets/Patterns/{15. Service Locator (Another Implementation) => 15. Service Locator/Another Implementation}/Services/ThirdService.cs.meta (100%) diff --git a/Assets/Patterns/15. Service Locator (Another Implementation).meta b/Assets/Patterns/15. Service Locator/Another Implementation.meta similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation).meta rename to Assets/Patterns/15. Service Locator/Another Implementation.meta diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/GameController.cs b/Assets/Patterns/15. Service Locator/Another Implementation/GameController.cs similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/GameController.cs rename to Assets/Patterns/15. Service Locator/Another Implementation/GameController.cs diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/GameController.cs.meta b/Assets/Patterns/15. Service Locator/Another Implementation/GameController.cs.meta similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/GameController.cs.meta rename to Assets/Patterns/15. Service Locator/Another Implementation/GameController.cs.meta diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocator.cs b/Assets/Patterns/15. Service Locator/Another Implementation/ServiceLocator.cs similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocator.cs rename to Assets/Patterns/15. Service Locator/Another Implementation/ServiceLocator.cs diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocator.cs.meta b/Assets/Patterns/15. Service Locator/Another Implementation/ServiceLocator.cs.meta similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocator.cs.meta rename to Assets/Patterns/15. Service Locator/Another Implementation/ServiceLocator.cs.meta diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocatorScene.unity b/Assets/Patterns/15. Service Locator/Another Implementation/ServiceLocatorScene.unity similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocatorScene.unity rename to Assets/Patterns/15. Service Locator/Another Implementation/ServiceLocatorScene.unity diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocatorScene.unity.meta b/Assets/Patterns/15. Service Locator/Another Implementation/ServiceLocatorScene.unity.meta similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/ServiceLocatorScene.unity.meta rename to Assets/Patterns/15. Service Locator/Another Implementation/ServiceLocatorScene.unity.meta diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/Services.meta b/Assets/Patterns/15. Service Locator/Another Implementation/Services.meta similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/Services.meta rename to Assets/Patterns/15. Service Locator/Another Implementation/Services.meta diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/Services/FirstService.cs b/Assets/Patterns/15. Service Locator/Another Implementation/Services/FirstService.cs similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/Services/FirstService.cs rename to Assets/Patterns/15. Service Locator/Another Implementation/Services/FirstService.cs diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/Services/FirstService.cs.meta b/Assets/Patterns/15. Service Locator/Another Implementation/Services/FirstService.cs.meta similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/Services/FirstService.cs.meta rename to Assets/Patterns/15. Service Locator/Another Implementation/Services/FirstService.cs.meta diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/Services/SecondService.cs b/Assets/Patterns/15. Service Locator/Another Implementation/Services/SecondService.cs similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/Services/SecondService.cs rename to Assets/Patterns/15. Service Locator/Another Implementation/Services/SecondService.cs diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/Services/SecondService.cs.meta b/Assets/Patterns/15. Service Locator/Another Implementation/Services/SecondService.cs.meta similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/Services/SecondService.cs.meta rename to Assets/Patterns/15. Service Locator/Another Implementation/Services/SecondService.cs.meta diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/Services/ThirdService.cs b/Assets/Patterns/15. Service Locator/Another Implementation/Services/ThirdService.cs similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/Services/ThirdService.cs rename to Assets/Patterns/15. Service Locator/Another Implementation/Services/ThirdService.cs diff --git a/Assets/Patterns/15. Service Locator (Another Implementation)/Services/ThirdService.cs.meta b/Assets/Patterns/15. Service Locator/Another Implementation/Services/ThirdService.cs.meta similarity index 100% rename from Assets/Patterns/15. Service Locator (Another Implementation)/Services/ThirdService.cs.meta rename to Assets/Patterns/15. Service Locator/Another Implementation/Services/ThirdService.cs.meta From 0012553bd5663b6bf7c87380c5ff3105fd941990 Mon Sep 17 00:00:00 2001 From: habrador Date: Wed, 2 Nov 2022 14:26:26 +0100 Subject: [PATCH 35/68] Renamed ManuFacture to Manufacture --- .../Grid/{Unit.prefab => Unit prefab.prefab} | 2 +- .../Grid/{Unit.prefab.meta => Unit prefab.prefab.meta} | 0 .../Assemble cars/Assembly line/AssembleCybertruck.cs | 2 +- .../22. Template/Assemble cars/Assembly line/_AssemblyLine.cs | 4 ++-- 4 files changed, 4 insertions(+), 4 deletions(-) rename Assets/Patterns/19. Spatial Partition/Grid/{Unit.prefab => Unit prefab.prefab} (99%) rename Assets/Patterns/19. Spatial Partition/Grid/{Unit.prefab.meta => Unit prefab.prefab.meta} (100%) diff --git a/Assets/Patterns/19. Spatial Partition/Grid/Unit.prefab b/Assets/Patterns/19. Spatial Partition/Grid/Unit prefab.prefab similarity index 99% rename from Assets/Patterns/19. Spatial Partition/Grid/Unit.prefab rename to Assets/Patterns/19. Spatial Partition/Grid/Unit prefab.prefab index b3a2983..2fd62d8 100644 --- a/Assets/Patterns/19. Spatial Partition/Grid/Unit.prefab +++ b/Assets/Patterns/19. Spatial Partition/Grid/Unit prefab.prefab @@ -11,7 +11,7 @@ GameObject: - component: {fileID: 6404582697255075594} - component: {fileID: 6404582697255075593} m_Layer: 0 - m_Name: Unit + m_Name: Unit prefab m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 diff --git a/Assets/Patterns/19. Spatial Partition/Grid/Unit.prefab.meta b/Assets/Patterns/19. Spatial Partition/Grid/Unit prefab.prefab.meta similarity index 100% rename from Assets/Patterns/19. Spatial Partition/Grid/Unit.prefab.meta rename to Assets/Patterns/19. Spatial Partition/Grid/Unit prefab.prefab.meta diff --git a/Assets/Patterns/22. Template/Assemble cars/Assembly line/AssembleCybertruck.cs b/Assets/Patterns/22. Template/Assemble cars/Assembly line/AssembleCybertruck.cs index 955ca77..2a8cc31 100644 --- a/Assets/Patterns/22. Template/Assemble cars/Assembly line/AssembleCybertruck.cs +++ b/Assets/Patterns/22. Template/Assemble cars/Assembly line/AssembleCybertruck.cs @@ -26,7 +26,7 @@ protected override void GetWheels() Debug.Log("Get Cybertruck wheels"); } - protected override bool CanManuFactureCar() + protected override bool CanManufactureCar() { Debug.Log("Sorry but the Cybertruck is still a prototype so we can't manufacture it!"); diff --git a/Assets/Patterns/22. Template/Assemble cars/Assembly line/_AssemblyLine.cs b/Assets/Patterns/22. Template/Assemble cars/Assembly line/_AssemblyLine.cs index 045254d..081ca72 100644 --- a/Assets/Patterns/22. Template/Assemble cars/Assembly line/_AssemblyLine.cs +++ b/Assets/Patterns/22. Template/Assemble cars/Assembly line/_AssemblyLine.cs @@ -15,7 +15,7 @@ public void AssembleCar(List carExtras = null) { InitAssemblyProcess(); - if (!CanManuFactureCar()) + if (!CanManufactureCar()) { return; } @@ -76,7 +76,7 @@ protected void GetCarExtras(List carExtras) //...and hooks which is a method the child can override if needed - protected virtual bool CanManuFactureCar() + protected virtual bool CanManufactureCar() { return true; } From 03233231443ccf8a4689c336fecaed63563ddc5e Mon Sep 17 00:00:00 2001 From: habrador Date: Wed, 2 Nov 2022 15:12:28 +0100 Subject: [PATCH 36/68] Added a grid to spatial partition pattern --- .../Grid/Scripts/GameController.cs | 91 ++++++++++-- .../Grid/grid spatial partition.unity | 137 +++++++----------- .../grid spatial partitionSettings.lighting | 64 ++++++++ ...id spatial partitionSettings.lighting.meta | 8 + 4 files changed, 201 insertions(+), 99 deletions(-) create mode 100644 Assets/Patterns/19. Spatial Partition/Grid/grid spatial partitionSettings.lighting create mode 100644 Assets/Patterns/19. Spatial Partition/Grid/grid spatial partitionSettings.lighting.meta diff --git a/Assets/Patterns/19. Spatial Partition/Grid/Scripts/GameController.cs b/Assets/Patterns/19. Spatial Partition/Grid/Scripts/GameController.cs index 05f6203..57b43fa 100644 --- a/Assets/Patterns/19. Spatial Partition/Grid/Scripts/GameController.cs +++ b/Assets/Patterns/19. Spatial Partition/Grid/Scripts/GameController.cs @@ -1,4 +1,3 @@ -using System.Collections; using System.Collections.Generic; using UnityEngine; @@ -9,8 +8,6 @@ namespace SpatialPartition.Grid public class GameController : MonoBehaviour { //Drags - public GameObject battlefieldObj; - public Unit unitPrefab; public Transform unitParentTrans; @@ -18,28 +15,28 @@ public class GameController : MonoBehaviour //Private private Grid grid; - //The number of units we start with + //The number of units moving on the map private const int NUMBER_OF_UNITS = 100; //To keep track of all units so we can move them private HashSet allUnits = new HashSet(); + //Display the grid with lines + + //Grid material + private Material gridMaterial; + + //Grid mesh + private Mesh gridMesh; + void Start() { grid = new Grid(); - - //Make the battlefield the same size as the grid float battlefieldWidth = Grid.NUM_CELLS * Grid.CELL_SIZE; - battlefieldObj.transform.localScale = new Vector3(battlefieldWidth, 1f, battlefieldWidth); - - //The grid starts at origo, so we need to change position as well - battlefieldObj.transform.position = new Vector3(battlefieldWidth * 0.5f, 0f, battlefieldWidth * 0.5f); - - //Add units within the grid at random positions for (int i = 0; i < NUMBER_OF_UNITS; i++) { @@ -70,5 +67,75 @@ void Update() //Units attack each other grid.HandleMelee(); } + + + + private void LateUpdate() + { + //Display the grid with lines + if (gridMaterial == null) + { + gridMaterial = new Material(Shader.Find("Unlit/Color")); + + gridMaterial.color = Color.black; + } + + if (grid == null) + { + return; + } + + if (gridMesh == null) + { + gridMesh = InitGridMesh(); + } + + //Display the mesh + Graphics.DrawMesh(gridMesh, Vector3.zero, Quaternion.identity, gridMaterial, 0, Camera.main, 0); + } + + + + private Mesh InitGridMesh() + { + //Generate the vertices + List lineVertices = new (); + + float battlefieldWidth = Grid.NUM_CELLS * Grid.CELL_SIZE; + + Vector3 linePosX = Vector3.zero; + Vector3 linePosY = Vector3.zero; + + for (int x = 0; x <= Grid.NUM_CELLS; x++) + { + lineVertices.Add(linePosX); + lineVertices.Add(linePosX + Vector3.right * battlefieldWidth); + + lineVertices.Add(linePosY); + lineVertices.Add(linePosY + Vector3.forward * battlefieldWidth); + + linePosX += Vector3.forward * Grid.CELL_SIZE; + linePosY += Vector3.right * Grid.CELL_SIZE; + } + + + //Generate the indices + List indices = new (); + + for (int i = 0; i < lineVertices.Count; i++) + { + indices.Add(i); + } + + + //Generate the mesh + Mesh gridMesh = new (); + + gridMesh.SetVertices(lineVertices); + gridMesh.SetIndices(indices, MeshTopology.Lines, 0); + + + return gridMesh; + } } } diff --git a/Assets/Patterns/19. Spatial Partition/Grid/grid spatial partition.unity b/Assets/Patterns/19. Spatial Partition/Grid/grid spatial partition.unity index 9dcc4de..1e80432 100644 --- a/Assets/Patterns/19. Spatial Partition/Grid/grid spatial partition.unity +++ b/Assets/Patterns/19. Spatial Partition/Grid/grid spatial partition.unity @@ -43,7 +43,7 @@ RenderSettings: --- !u!157 &3 LightmapSettings: m_ObjectHideFlags: 0 - serializedVersion: 11 + serializedVersion: 12 m_GIWorkflowMode: 0 m_GISettings: serializedVersion: 2 @@ -54,7 +54,7 @@ LightmapSettings: m_EnableBakedLightmaps: 1 m_EnableRealtimeLightmaps: 1 m_LightmapEditorSettings: - serializedVersion: 10 + serializedVersion: 12 m_Resolution: 2 m_BakeResolution: 40 m_AtlasSize: 1024 @@ -62,6 +62,7 @@ LightmapSettings: m_AOMaxDistance: 1 m_CompAOExponent: 1 m_CompAOExponentDirect: 0 + m_ExtractAmbientOcclusion: 0 m_Padding: 2 m_LightmapParameters: {fileID: 0} m_LightmapsBakeMode: 1 @@ -76,10 +77,16 @@ LightmapSettings: m_PVRDirectSampleCount: 32 m_PVRSampleCount: 500 m_PVRBounces: 2 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 - m_PVRFilteringMode: 1 + m_PVREnvironmentMIS: 0 m_PVRCulling: 1 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 @@ -87,9 +94,12 @@ LightmapSettings: m_PVRFilteringAtrousPositionSigmaDirect: 0.5 m_PVRFilteringAtrousPositionSigmaIndirect: 2 m_PVRFilteringAtrousPositionSigmaAO: 1 - m_ShowResolutionOverlay: 1 + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_LightProbeSampleCountMultiplier: 4 m_LightingDataAsset: {fileID: 0} - m_UseShadowmask: 1 + m_LightingSettings: {fileID: 4890085278179872738, guid: e997a83e1f1b5d64baa705f6789eaa95, + type: 2} --- !u!196 &4 NavMeshSettings: serializedVersion: 2 @@ -109,86 +119,11 @@ NavMeshSettings: manualTileSize: 0 tileSize: 256 accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &401042762 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 401042766} - - component: {fileID: 401042765} - - component: {fileID: 401042764} - m_Layer: 0 - m_Name: Battlefield - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!23 &401042764 -MeshRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 401042762} - 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: 2100000, guid: ea86c1b73dd97f04f9da616aff12971d, type: 2} - 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: 0 - 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!33 &401042765 -MeshFilter: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 401042762} - m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &401042766 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 401042762} - 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: [] - m_Father: {fileID: 0} - m_RootOrder: 3 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &826587778 GameObject: m_ObjectHideFlags: 0 @@ -199,7 +134,7 @@ GameObject: m_Component: - component: {fileID: 826587779} m_Layer: 0 - m_Name: Units + m_Name: Units parent m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -215,9 +150,10 @@ Transform: 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_RootOrder: 4 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1033359570 GameObject: @@ -244,12 +180,14 @@ Light: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1033359570} m_Enabled: 1 - serializedVersion: 8 + serializedVersion: 10 m_Type: 1 + m_Shape: 0 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 @@ -259,6 +197,24 @@ Light: 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} @@ -266,12 +222,16 @@ Light: 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_ShadowRadius: 0 m_ShadowAngle: 0 --- !u!4 &1033359572 @@ -284,6 +244,7 @@ Transform: m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 500, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 @@ -326,9 +287,10 @@ Camera: 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_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} - m_GateFitMode: 2 m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 @@ -366,6 +328,7 @@ Transform: m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} m_LocalPosition: {x: 25, y: 765, z: 25} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 0 @@ -397,6 +360,7 @@ Transform: 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_RootOrder: 2 @@ -413,7 +377,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: a5b106aed7d115048a91fdfcbb84005a, type: 3} m_Name: m_EditorClassIdentifier: - battlefieldObj: {fileID: 401042762} unitPrefab: {fileID: 6404582697255075593, guid: c2075d714081c9944b2ae26c74b36e85, type: 3} unitParentTrans: {fileID: 826587779} diff --git a/Assets/Patterns/19. Spatial Partition/Grid/grid spatial partitionSettings.lighting b/Assets/Patterns/19. Spatial Partition/Grid/grid spatial partitionSettings.lighting new file mode 100644 index 0000000..2d2c6a7 --- /dev/null +++ b/Assets/Patterns/19. Spatial Partition/Grid/grid spatial partitionSettings.lighting @@ -0,0 +1,64 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!850595691 &4890085278179872738 +LightingSettings: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: grid spatial partitionSettings + serializedVersion: 4 + m_GIWorkflowMode: 0 + m_EnableBakedLightmaps: 1 + m_EnableRealtimeLightmaps: 1 + m_RealtimeEnvironmentLighting: 1 + m_BounceScale: 1 + m_AlbedoBoost: 1 + m_IndirectOutputScale: 1 + m_UsingShadowmask: 1 + m_BakeBackend: 1 + m_LightmapMaxSize: 1024 + m_BakeResolution: 40 + m_Padding: 2 + m_LightmapCompression: 3 + m_AO: 0 + m_AOMaxDistance: 1 + m_CompAOExponent: 1 + m_CompAOExponentDirect: 0 + m_ExtractAO: 0 + m_MixedBakeMode: 2 + m_LightmapsBakeMode: 1 + m_FilterMode: 1 + m_LightmapParameters: {fileID: 15204, guid: 0000000000000000f000000000000000, type: 0} + m_ExportTrainingData: 0 + m_TrainingDataDestination: TrainingData + m_RealtimeResolution: 2 + m_ForceWhiteAlbedo: 0 + m_ForceUpdates: 0 + m_FinalGather: 0 + m_FinalGatherRayCount: 256 + m_FinalGatherFiltering: 1 + m_PVRCulling: 1 + m_PVRSampling: 1 + m_PVRDirectSampleCount: 32 + m_PVRSampleCount: 500 + m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentReferencePointCount: 2048 + m_LightProbeSampleCountMultiplier: 4 + m_PVRBounces: 2 + m_PVRMinBounces: 2 + m_PVREnvironmentMIS: 0 + m_PVRFilteringMode: 2 + m_PVRDenoiserTypeDirect: 0 + m_PVRDenoiserTypeIndirect: 0 + m_PVRDenoiserTypeAO: 0 + m_PVRFilterTypeDirect: 0 + m_PVRFilterTypeIndirect: 0 + m_PVRFilterTypeAO: 0 + m_PVRFilteringGaussRadiusDirect: 1 + m_PVRFilteringGaussRadiusIndirect: 5 + m_PVRFilteringGaussRadiusAO: 2 + m_PVRFilteringAtrousPositionSigmaDirect: 0.5 + m_PVRFilteringAtrousPositionSigmaIndirect: 2 + m_PVRFilteringAtrousPositionSigmaAO: 1 + m_PVRTiledBaking: 0 diff --git a/Assets/Patterns/19. Spatial Partition/Grid/grid spatial partitionSettings.lighting.meta b/Assets/Patterns/19. Spatial Partition/Grid/grid spatial partitionSettings.lighting.meta new file mode 100644 index 0000000..4875a10 --- /dev/null +++ b/Assets/Patterns/19. Spatial Partition/Grid/grid spatial partitionSettings.lighting.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e997a83e1f1b5d64baa705f6789eaa95 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 4890085278179872738 + userData: + assetBundleName: + assetBundleVariant: From f903eac63372dff1d57e7823d941cf649bd5dc65 Mon Sep 17 00:00:00 2001 From: habrador Date: Wed, 2 Nov 2022 19:35:32 +0100 Subject: [PATCH 37/68] Updated readme --- README.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index c2a0bd0..7f6c02c 100644 --- a/README.md +++ b/README.md @@ -424,21 +424,21 @@ A good Unity tutorial on the topic is: [Unity Memory Profiler: Where Are You Was ## 17. Dirty Flag -This pattern is useful if something has changed in your game, and if so you have to run a costly operation. A Dirty Flag is used to tell that something has changed but the costly operation hasn't been activated. +This pattern is useful if something has changed in your game and if so you have to run a costly operation. A Dirty Flag is used to tell that something has changed but the costly operation hasn't been activated yet. You can often postpone the costly operation until the result is actually needed. **How to implement?** -The dirty flag is just a simple boolean, which is set to true if something has changed. +The dirty flag is just a bool. **When is it useful?** -- Saving your game can be a costly operation. If something in your game has changed that also needs to be saved, you set a Dirty Flag in the save game object to true. Now if the player wants to quit the game, you can easily tell the player that there are unsaved changes. +- Saving your game can be a costly operation. If something in your game has changed that also needs to be saved, you set a Dirty Flag in the save game object to true. Now if the player wants to quit the game, you can easily tell the player that there are unsaved changes. -- If you ever done some editor scripting in Unity, you can use SetDirty() to mark an object as dirty or you can even mark the entire scene as dirty. Now Unity will understand that you have changed something and those changes should be saved when you save your scene. +- When doing editor scripting in Unity, you can use SetDirty() to mark an object as dirty or you can even mark the entire scene as dirty. Now Unity will understand that you have changed something and those changes should be saved when you save your scene. - Unity is using it in the physics system. A RigidBody doesn't have to be updated unless a force is applied to it. If the RigidBody is sleeping (not moving), a Dirty Flag is used so the physics system can ignore it. -- I used this pattern when experimenting with Genetic Algorithms (GA) and the Traveling Salesman Problem (TSP) where you find the shortest path between multiple cities. The GA generates multiple solutions, like 100, to the TSP and then each iteration you evolve 100 better solutions by calculating a cost function, which is the distance between all cities. You can use "tournament selection" to find good solutions from the previous iteration to the next, which is basically picking 3 solutions and returns the solution with the shortest distance between all cities. I realized I didn't have to calculate the cost fuction 100 times each iteration because it's a costly operation. To optimize I only calculate the cost function of the cities being picked by the tournament selection. I kept track of which solution has had its cost fuction calculated by using a boolean which is set to false each iteration and then to true if the cost function had been run. +- I used this pattern when experimenting with Genetic Algorithms (GA) and the Traveling Salesman Problem (TSP) where you find the shortest path between multiple cities. The GA generates multiple solutions, like 100, to the TSP and then each iteration you evolve 100 better solutions by calculating a cost function, which is the distance between all cities. You can use "tournament selection" to find good solutions from the previous iteration to the next, which is basically picking 3 solutions and returns the solution with the shortest distance between all cities. I realized I didn't have to calculate the cost fuction 100 times each iteration because it's a costly operation. To optimize I only calculate the cost function of the cities being picked by the tournament selection. I kept track of which solution has had its cost fuction calculated by using a bool which is set to false each iteration and then to true if the cost function has been run. @@ -588,6 +588,7 @@ Define a template method in the parent class which consists of calling several m # Sources - [Game Programming Patterns](http://gameprogrammingpatterns.com) +- [Game Development Patterns with Unity 2021](https://www.amazon.com/Game-Development-Patterns-Unity-2021/dp/1800200811) - [Game Programming Gems](https://www.amazon.com/Game-Programming-Gems-CD/dp/1584500492) From 9a95ce1a217e15295d057b9180360fd222dbb09f Mon Sep 17 00:00:00 2001 From: habrador Date: Thu, 3 Nov 2022 09:36:14 +0100 Subject: [PATCH 38/68] Added Sound Factory example from Game Programming Gems 2 --- .../Patterns/21. Factory/Sound Factory.meta | 8 + .../Sound Factory/Sound Factory.meta | 8 + .../Sound Factory/Sound Factory.unity | 347 ++++++++++++++++++ .../Sound Factory/Sound Factory.unity.meta | 7 + .../Sound Factory/SoundSystemFactory.cs | 41 +++ .../Sound Factory/SoundSystemFactory.cs.meta | 11 + .../Sound Factory/SoundSystemS.meta | 8 + .../SoundSystemS/ISoundSystem.cs | 14 + .../SoundSystemS/ISoundSystem.cs.meta | 11 + .../SoundSystemS/SoundSystemHardware.cs | 23 ++ .../SoundSystemS/SoundSystemHardware.cs.meta | 11 + .../SoundSystemS/SoundSystemOther.cs | 23 ++ .../SoundSystemS/SoundSystemOther.cs.meta | 11 + .../SoundSystemS/SoundSystemSoftware.cs | 23 ++ .../SoundSystemS/SoundSystemSoftware.cs.meta | 11 + .../Sound Factory/SoundFactoryController.cs | 28 ++ .../SoundFactoryController.cs.meta | 11 + README.md | 3 + 18 files changed, 599 insertions(+) create mode 100644 Assets/Patterns/21. Factory/Sound Factory.meta create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory.meta create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory.unity create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory.unity.meta create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemFactory.cs create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemFactory.cs.meta create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS.meta create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/ISoundSystem.cs create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/ISoundSystem.cs.meta create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemHardware.cs create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemHardware.cs.meta create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemOther.cs create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemOther.cs.meta create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemSoftware.cs create mode 100644 Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemSoftware.cs.meta create mode 100644 Assets/Patterns/21. Factory/Sound Factory/SoundFactoryController.cs create mode 100644 Assets/Patterns/21. Factory/Sound Factory/SoundFactoryController.cs.meta diff --git a/Assets/Patterns/21. Factory/Sound Factory.meta b/Assets/Patterns/21. Factory/Sound Factory.meta new file mode 100644 index 0000000..a3c1027 --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 74b5bebe48ff3b04bb892f299115cbd0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory.meta b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory.meta new file mode 100644 index 0000000..8d6c8fc --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8b7341156904afd459d215608bc29669 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory.unity b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory.unity new file mode 100644 index 0000000..2c0e560 --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory.unity @@ -0,0 +1,347 @@ +%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: 9 + 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_IndirectSpecularColor: {r: 0.44657844, g: 0.49641222, b: 0.57481694, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + 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_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + 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: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &342860415 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 342860418} + - component: {fileID: 342860417} + - component: {fileID: 342860416} + 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 &342860416 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 342860415} + m_Enabled: 1 +--- !u!20 &342860417 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 342860415} + 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_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &342860418 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 342860415} + 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_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &639523981 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 639523983} + - component: {fileID: 639523982} + 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 &639523982 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 639523981} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &639523983 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 639523981} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 500, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &668650341 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 668650343} + - component: {fileID: 668650342} + m_Layer: 0 + m_Name: Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &668650342 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 668650341} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: b3a1e2bdd8cc40047a19e88376287061, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &668650343 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 668650341} + 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_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory.unity.meta b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory.unity.meta new file mode 100644 index 0000000..bf20bf8 --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: bdc9e85ada39fc2488dc080ea5146a0b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemFactory.cs b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemFactory.cs new file mode 100644 index 0000000..e307d97 --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemFactory.cs @@ -0,0 +1,41 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Factory.SoundFactory +{ + public class SoundSystemFactory + { + public enum SoundSystemType + { + SoundSoftware, + SoundHardware, + SoundSomethingElse + }; + + + + public static ISoundSystem CreateSoundSystem(SoundSystemType type) + { + ISoundSystem soundSystem; + + switch (type) + { + case SoundSystemType.SoundSoftware: + soundSystem = new SoundSystemSoftware(); + break; + case SoundSystemType.SoundHardware: + soundSystem = new SoundSystemHardware(); + break; + case SoundSystemType.SoundSomethingElse: + soundSystem = new SoundSystemOther(); + break; + default: + soundSystem = null; + break; + } + + return soundSystem; + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemFactory.cs.meta b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemFactory.cs.meta new file mode 100644 index 0000000..8016a05 --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemFactory.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9ea46278d7b45a841a7eadfd61a7a8db +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS.meta b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS.meta new file mode 100644 index 0000000..e0450e2 --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c44bfa19f4ff4aa4191e769e0575e42b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/ISoundSystem.cs b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/ISoundSystem.cs new file mode 100644 index 0000000..8965c2c --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/ISoundSystem.cs @@ -0,0 +1,14 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Factory.SoundFactory +{ + public interface ISoundSystem + { + public bool PlaySound(int soundId); + + public bool StopSound(int soundId); + + } +} \ No newline at end of file diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/ISoundSystem.cs.meta b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/ISoundSystem.cs.meta new file mode 100644 index 0000000..958be2a --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/ISoundSystem.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4f9bb6afc44034d418456572cf8e3648 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemHardware.cs b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemHardware.cs new file mode 100644 index 0000000..7cf383f --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemHardware.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Factory.SoundFactory +{ + public class SoundSystemHardware : ISoundSystem + { + public bool PlaySound(int soundId) + { + Debug.Log($"Played the sound with id {soundId} on the hardware"); + + return true; + } + + public bool StopSound(int soundId) + { + Debug.Log($"Stopped the sound with id {soundId} on the hardware"); + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemHardware.cs.meta b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemHardware.cs.meta new file mode 100644 index 0000000..e5d10d8 --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemHardware.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: cee45bef4f0457c488e4637103cfeed2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemOther.cs b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemOther.cs new file mode 100644 index 0000000..3ae24f6 --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemOther.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Factory.SoundFactory +{ + public class SoundSystemOther : ISoundSystem + { + public bool PlaySound(int soundId) + { + Debug.Log($"Played the sound with id {soundId} on some other system"); + + return true; + } + + public bool StopSound(int soundId) + { + Debug.Log($"Stopped the sound with id {soundId} on some other system"); + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemOther.cs.meta b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemOther.cs.meta new file mode 100644 index 0000000..829efe4 --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemOther.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3f7e9f3a97b30194cafe32968f099bd5 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemSoftware.cs b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemSoftware.cs new file mode 100644 index 0000000..a6a15bd --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemSoftware.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Factory.SoundFactory +{ + public class SoundSystemSoftware : ISoundSystem + { + public bool PlaySound(int soundId) + { + Debug.Log($"Played the sound with id {soundId} on the software"); + + return true; + } + + public bool StopSound(int soundId) + { + Debug.Log($"Stopped the sound with id {soundId} on the software"); + + return true; + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemSoftware.cs.meta b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemSoftware.cs.meta new file mode 100644 index 0000000..d161f9e --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/Sound Factory/SoundSystemS/SoundSystemSoftware.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: ac71d05d035d3fe418df0b24bf9cc6d7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/21. Factory/Sound Factory/SoundFactoryController.cs b/Assets/Patterns/21. Factory/Sound Factory/SoundFactoryController.cs new file mode 100644 index 0000000..00cd461 --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/SoundFactoryController.cs @@ -0,0 +1,28 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Factory.SoundFactory; + + +//Example of Factory programming pattern from "Game Programming Gems 2" +public class SoundFactoryController : MonoBehaviour +{ + private void Start() + { + ISoundSystem soundSystemSoftware = SoundSystemFactory.CreateSoundSystem(SoundSystemFactory.SoundSystemType.SoundSoftware); + + soundSystemSoftware.PlaySound(1); + + ISoundSystem soundSystemHardware = SoundSystemFactory.CreateSoundSystem(SoundSystemFactory.SoundSystemType.SoundHardware); + + soundSystemHardware.PlaySound(2); + + ISoundSystem soundSystemOther = SoundSystemFactory.CreateSoundSystem(SoundSystemFactory.SoundSystemType.SoundSomethingElse); + + soundSystemOther.PlaySound(3); + + soundSystemSoftware.StopSound(1); + soundSystemHardware.StopSound(2); + soundSystemOther.StopSound(3); + } +} diff --git a/Assets/Patterns/21. Factory/Sound Factory/SoundFactoryController.cs.meta b/Assets/Patterns/21. Factory/Sound Factory/SoundFactoryController.cs.meta new file mode 100644 index 0000000..fdcbce3 --- /dev/null +++ b/Assets/Patterns/21. Factory/Sound Factory/SoundFactoryController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b3a1e2bdd8cc40047a19e88376287061 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/README.md b/README.md index 7f6c02c..f80ef09 100644 --- a/README.md +++ b/README.md @@ -539,6 +539,8 @@ If you are creating several different factories, then they should inherit from s - If you've implemented the [Decorator](#20-decorator) then you can decorate the objects in a procedural way by using the Factory pattern. An example of this is in the code where you manufacture the Tesla cars you ordered in the Decorator pattern example. +- To play sounds on different devices. An example of this can be found in the code section. + **Related patterns** - **[Prototype](#4-prototype).** The Prototype pattern is generally used if you want to make a copy of an existing object, while the Factory pattern is generating new objects. But some argue you can put the Prototype pattern inside of the Factory pattern. @@ -590,6 +592,7 @@ Define a template method in the parent class which consists of calling several m - [Game Programming Patterns](http://gameprogrammingpatterns.com) - [Game Development Patterns with Unity 2021](https://www.amazon.com/Game-Development-Patterns-Unity-2021/dp/1800200811) - [Game Programming Gems](https://www.amazon.com/Game-Programming-Gems-CD/dp/1584500492) +- [Game Programming Gems 2](https://www.amazon.com/Game-Programming-Gems-GAME-PROGRAMMING/dp/1584500549) From 9e3879bbc4b831f43097b0f98a2f1a066c0d3c68 Mon Sep 17 00:00:00 2001 From: habrador Date: Thu, 3 Nov 2022 09:51:53 +0100 Subject: [PATCH 39/68] Updated readme --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index f80ef09..686e4bc 100644 --- a/README.md +++ b/README.md @@ -529,7 +529,7 @@ You have a class and now you create several "decorator" classes that modifies so ## 21. Factory -Collect all methods on how to create new objects in their own class. For each object you make you have to allocate some memory, and by creating all objects in a central area it makes it easier to monitor these allocations. The factory can also be responsible for the destruction of objects. +Collect all methods on how to create new objects in their own class. The factory can also be responsible for the destruction of objects. **How to implement?** @@ -539,7 +539,9 @@ If you are creating several different factories, then they should inherit from s - If you've implemented the [Decorator](#20-decorator) then you can decorate the objects in a procedural way by using the Factory pattern. An example of this is in the code where you manufacture the Tesla cars you ordered in the Decorator pattern example. -- To play sounds on different devices. An example of this can be found in the code section. +- To play sounds on different devices. An example of this can be found in the code section. + +- For each object you make you have to allocate some memory. By creating all objects in a central area it makes it easier to monitor these allocations. **Related patterns** From 6ceeed7081d085aa5be3334231ed6403a3ca7368 Mon Sep 17 00:00:00 2001 From: habrador Date: Thu, 3 Nov 2022 10:35:00 +0100 Subject: [PATCH 40/68] Added simple example of Dirty Flag pattern --- Assets/Patterns/17. Dirty Flag.meta | 8 + .../17. Dirty Flag/Unsaved changes.meta | 8 + .../Unsaved changes/Unsaved Changes.unity | 445 ++++++++++++++++++ .../Unsaved Changes.unity.meta | 7 + .../UnsavedChangesController.cs | 60 +++ .../UnsavedChangesController.cs.meta | 11 + .../Gun/Object pools/ObjectPoolBase.cs | 1 + README.md | 2 +- 8 files changed, 541 insertions(+), 1 deletion(-) create mode 100644 Assets/Patterns/17. Dirty Flag.meta create mode 100644 Assets/Patterns/17. Dirty Flag/Unsaved changes.meta create mode 100644 Assets/Patterns/17. Dirty Flag/Unsaved changes/Unsaved Changes.unity create mode 100644 Assets/Patterns/17. Dirty Flag/Unsaved changes/Unsaved Changes.unity.meta create mode 100644 Assets/Patterns/17. Dirty Flag/Unsaved changes/UnsavedChangesController.cs create mode 100644 Assets/Patterns/17. Dirty Flag/Unsaved changes/UnsavedChangesController.cs.meta diff --git a/Assets/Patterns/17. Dirty Flag.meta b/Assets/Patterns/17. Dirty Flag.meta new file mode 100644 index 0000000..960a28c --- /dev/null +++ b/Assets/Patterns/17. Dirty Flag.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 77c9e989ac92a844bb175089b867aa1e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/17. Dirty Flag/Unsaved changes.meta b/Assets/Patterns/17. Dirty Flag/Unsaved changes.meta new file mode 100644 index 0000000..114ddaf --- /dev/null +++ b/Assets/Patterns/17. Dirty Flag/Unsaved changes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: a0788c2ac06d1164a805996f0c3b38be +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/17. Dirty Flag/Unsaved changes/Unsaved Changes.unity b/Assets/Patterns/17. Dirty Flag/Unsaved changes/Unsaved Changes.unity new file mode 100644 index 0000000..3d579ee --- /dev/null +++ b/Assets/Patterns/17. Dirty Flag/Unsaved changes/Unsaved Changes.unity @@ -0,0 +1,445 @@ +%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: 9 + 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_IndirectSpecularColor: {r: 0.44657844, g: 0.49641222, b: 0.57481694, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + 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_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + 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: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &862736635 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 862736639} + - component: {fileID: 862736638} + - component: {fileID: 862736637} + - component: {fileID: 862736636} + m_Layer: 0 + m_Name: Cube + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!65 &862736636 +BoxCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862736635} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 2 + m_Size: {x: 1, y: 1, z: 1} + m_Center: {x: 0, y: 0, z: 0} +--- !u!23 &862736637 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862736635} + 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_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_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 &862736638 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862736635} + m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!4 &862736639 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 862736635} + 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_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1039853144 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1039853147} + - component: {fileID: 1039853146} + - component: {fileID: 1039853145} + 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 &1039853145 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1039853144} + m_Enabled: 1 +--- !u!20 &1039853146 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1039853144} + 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_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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: 1 + 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 &1039853147 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1039853144} + m_LocalRotation: {x: 0.7071068, y: 0, z: 0, w: 0.7071068} + m_LocalPosition: {x: 0, y: 10, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 90, y: 0, z: 0} +--- !u!1 &1504779214 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1504779215} + - component: {fileID: 1504779216} + m_Layer: 0 + m_Name: Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &1504779215 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1504779214} + 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_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &1504779216 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1504779214} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 09fde5571358fce43bc9bd2341536d72, type: 3} + m_Name: + m_EditorClassIdentifier: + cubeGO: {fileID: 862736639} +--- !u!1 &1874221320 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1874221322} + - component: {fileID: 1874221321} + 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 &1874221321 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1874221320} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &1874221322 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1874221320} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 500, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/Assets/Patterns/17. Dirty Flag/Unsaved changes/Unsaved Changes.unity.meta b/Assets/Patterns/17. Dirty Flag/Unsaved changes/Unsaved Changes.unity.meta new file mode 100644 index 0000000..0b3ca32 --- /dev/null +++ b/Assets/Patterns/17. Dirty Flag/Unsaved changes/Unsaved Changes.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: a786ead6dd830e445ac8c90cd2f89db3 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/17. Dirty Flag/Unsaved changes/UnsavedChangesController.cs b/Assets/Patterns/17. Dirty Flag/Unsaved changes/UnsavedChangesController.cs new file mode 100644 index 0000000..870a232 --- /dev/null +++ b/Assets/Patterns/17. Dirty Flag/Unsaved changes/UnsavedChangesController.cs @@ -0,0 +1,60 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class UnsavedChangesController : MonoBehaviour +{ + public Transform cubeGO; + + //This is the Dirty Flag + private bool isSaved = true; + + private readonly float cubeSpeed = 5f; + + + + private void Update() + { + if (Input.GetKey(KeyCode.W)) + { + cubeGO.Translate(cubeSpeed * Time.deltaTime * Vector3.forward); + + isSaved = false; + } + if (Input.GetKey(KeyCode.S)) + { + cubeGO.Translate(cubeSpeed * Time.deltaTime * -Vector3.forward); + + isSaved = false; + } + if (Input.GetKey(KeyCode.A)) + { + cubeGO.Translate(cubeSpeed * Time.deltaTime * -Vector3.right); + + isSaved = false; + } + if (Input.GetKey(KeyCode.D)) + { + cubeGO.Translate(cubeSpeed * Time.deltaTime * Vector3.right); + + isSaved = false; + } + } + + + + private void OnGUI() + { + if (GUILayout.Button("Save")) + { + Debug.Log("Game was saved"); + + isSaved = true; + } + + if (!isSaved) + { + GUILayout.Box("Warning you have unsaved changes"); + } + } +} diff --git a/Assets/Patterns/17. Dirty Flag/Unsaved changes/UnsavedChangesController.cs.meta b/Assets/Patterns/17. Dirty Flag/Unsaved changes/UnsavedChangesController.cs.meta new file mode 100644 index 0000000..1285114 --- /dev/null +++ b/Assets/Patterns/17. Dirty Flag/Unsaved changes/UnsavedChangesController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 09fde5571358fce43bc9bd2341536d72 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/18. Object Pool/Gun/Object pools/ObjectPoolBase.cs b/Assets/Patterns/18. Object Pool/Gun/Object pools/ObjectPoolBase.cs index 5164f15..cd59bdd 100644 --- a/Assets/Patterns/18. Object Pool/Gun/Object pools/ObjectPoolBase.cs +++ b/Assets/Patterns/18. Object Pool/Gun/Object pools/ObjectPoolBase.cs @@ -5,6 +5,7 @@ namespace ObjectPool.Gun { //Parent object pool class to avoid code duplication + //You can make a reusable GameObject pool without MonoBehaviour because you can call Object.Instantiate - you just have to pass a prefab GameObject to it on creation. But that could be in a parent class or a pool manager MonoBehaviour. public class ObjectPoolBase : MonoBehaviour { //How many bullets do we start with when the game starts diff --git a/README.md b/README.md index 686e4bc..7270c1b 100644 --- a/README.md +++ b/README.md @@ -432,7 +432,7 @@ The dirty flag is just a bool. **When is it useful?** -- Saving your game can be a costly operation. If something in your game has changed that also needs to be saved, you set a Dirty Flag in the save game object to true. Now if the player wants to quit the game, you can easily tell the player that there are unsaved changes. +- Saving your game can be a costly operation. If something in your game has changed that also needs to be saved, you set a Dirty Flag in the save game object to true. Now if the player wants to quit the game, you can easily tell the player that there are unsaved changes. An example of this can be found in the code section. - When doing editor scripting in Unity, you can use SetDirty() to mark an object as dirty or you can even mark the entire scene as dirty. Now Unity will understand that you have changed something and those changes should be saved when you save your scene. From a0a16da59cf383981affbbbc943d4e8423043944 Mon Sep 17 00:00:00 2001 From: habrador Date: Thu, 3 Nov 2022 13:53:03 +0100 Subject: [PATCH 41/68] Updated readme and added which specific chapter the factory is from --- .../21. Factory/Sound Factory/SoundFactoryController.cs | 2 +- README.md | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Assets/Patterns/21. Factory/Sound Factory/SoundFactoryController.cs b/Assets/Patterns/21. Factory/Sound Factory/SoundFactoryController.cs index 00cd461..cc18043 100644 --- a/Assets/Patterns/21. Factory/Sound Factory/SoundFactoryController.cs +++ b/Assets/Patterns/21. Factory/Sound Factory/SoundFactoryController.cs @@ -4,7 +4,7 @@ using Factory.SoundFactory; -//Example of Factory programming pattern from "Game Programming Gems 2" +//Example of Factory programming pattern from "Game Programming Gems 2:" 1.3 Programming with abstract interfaces public class SoundFactoryController : MonoBehaviour { private void Start() diff --git a/README.md b/README.md index 7270c1b..bca4bc7 100644 --- a/README.md +++ b/README.md @@ -198,6 +198,8 @@ You could use an enum that keeps track of each state and then a switch statement - Enemy AI is often using the State pattern. The creepers in Minecraft have three states: move randomly when you are far away, move towards you if you are closer, blow up when you are very close. +- The game itself can be a number of states: intro video, main menu, main game, mini game, etc. + **Related patterns** - **[Type Object](#12-type-object).** In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the object in Type Object can be switched you get the State pattern. From 785977a3a061488db22c02ad43c5613f391ef6e7 Mon Sep 17 00:00:00 2001 From: habrador Date: Thu, 3 Nov 2022 22:28:53 +0100 Subject: [PATCH 42/68] Updated readme and renamed Template pattern folder to 23 to match the readme --- Assets/Patterns/{22. Template.meta => 23. Template.meta} | 0 .../{22. Template => 23. Template}/Assemble cars.meta | 0 .../Assemble cars/AssembleCarsController.cs | 0 .../Assemble cars/AssembleCarsController.cs.meta | 0 .../Assemble cars/Assembly line.meta | 0 .../Assemble cars/Assembly line/AssembleCybertruck.cs | 0 .../Assemble cars/Assembly line/AssembleCybertruck.cs.meta | 0 .../Assemble cars/Assembly line/AssembleModelS.cs | 0 .../Assemble cars/Assembly line/AssembleModelS.cs.meta | 0 .../Assemble cars/Assembly line/_AssemblyLine.cs | 0 .../Assemble cars/Assembly line/_AssemblyLine.cs.meta | 0 .../Assemble cars/assemble-cars.unity | 0 .../Assemble cars/assemble-cars.unity.meta | 0 README.md | 4 ++-- 14 files changed, 2 insertions(+), 2 deletions(-) rename Assets/Patterns/{22. Template.meta => 23. Template.meta} (100%) rename Assets/Patterns/{22. Template => 23. Template}/Assemble cars.meta (100%) rename Assets/Patterns/{22. Template => 23. Template}/Assemble cars/AssembleCarsController.cs (100%) rename Assets/Patterns/{22. Template => 23. Template}/Assemble cars/AssembleCarsController.cs.meta (100%) rename Assets/Patterns/{22. Template => 23. Template}/Assemble cars/Assembly line.meta (100%) rename Assets/Patterns/{22. Template => 23. Template}/Assemble cars/Assembly line/AssembleCybertruck.cs (100%) rename Assets/Patterns/{22. Template => 23. Template}/Assemble cars/Assembly line/AssembleCybertruck.cs.meta (100%) rename Assets/Patterns/{22. Template => 23. Template}/Assemble cars/Assembly line/AssembleModelS.cs (100%) rename Assets/Patterns/{22. Template => 23. Template}/Assemble cars/Assembly line/AssembleModelS.cs.meta (100%) rename Assets/Patterns/{22. Template => 23. Template}/Assemble cars/Assembly line/_AssemblyLine.cs (100%) rename Assets/Patterns/{22. Template => 23. Template}/Assemble cars/Assembly line/_AssemblyLine.cs.meta (100%) rename Assets/Patterns/{22. Template => 23. Template}/Assemble cars/assemble-cars.unity (100%) rename Assets/Patterns/{22. Template => 23. Template}/Assemble cars/assemble-cars.unity.meta (100%) diff --git a/Assets/Patterns/22. Template.meta b/Assets/Patterns/23. Template.meta similarity index 100% rename from Assets/Patterns/22. Template.meta rename to Assets/Patterns/23. Template.meta diff --git a/Assets/Patterns/22. Template/Assemble cars.meta b/Assets/Patterns/23. Template/Assemble cars.meta similarity index 100% rename from Assets/Patterns/22. Template/Assemble cars.meta rename to Assets/Patterns/23. Template/Assemble cars.meta diff --git a/Assets/Patterns/22. Template/Assemble cars/AssembleCarsController.cs b/Assets/Patterns/23. Template/Assemble cars/AssembleCarsController.cs similarity index 100% rename from Assets/Patterns/22. Template/Assemble cars/AssembleCarsController.cs rename to Assets/Patterns/23. Template/Assemble cars/AssembleCarsController.cs diff --git a/Assets/Patterns/22. Template/Assemble cars/AssembleCarsController.cs.meta b/Assets/Patterns/23. Template/Assemble cars/AssembleCarsController.cs.meta similarity index 100% rename from Assets/Patterns/22. Template/Assemble cars/AssembleCarsController.cs.meta rename to Assets/Patterns/23. Template/Assemble cars/AssembleCarsController.cs.meta diff --git a/Assets/Patterns/22. Template/Assemble cars/Assembly line.meta b/Assets/Patterns/23. Template/Assemble cars/Assembly line.meta similarity index 100% rename from Assets/Patterns/22. Template/Assemble cars/Assembly line.meta rename to Assets/Patterns/23. Template/Assemble cars/Assembly line.meta diff --git a/Assets/Patterns/22. Template/Assemble cars/Assembly line/AssembleCybertruck.cs b/Assets/Patterns/23. Template/Assemble cars/Assembly line/AssembleCybertruck.cs similarity index 100% rename from Assets/Patterns/22. Template/Assemble cars/Assembly line/AssembleCybertruck.cs rename to Assets/Patterns/23. Template/Assemble cars/Assembly line/AssembleCybertruck.cs diff --git a/Assets/Patterns/22. Template/Assemble cars/Assembly line/AssembleCybertruck.cs.meta b/Assets/Patterns/23. Template/Assemble cars/Assembly line/AssembleCybertruck.cs.meta similarity index 100% rename from Assets/Patterns/22. Template/Assemble cars/Assembly line/AssembleCybertruck.cs.meta rename to Assets/Patterns/23. Template/Assemble cars/Assembly line/AssembleCybertruck.cs.meta diff --git a/Assets/Patterns/22. Template/Assemble cars/Assembly line/AssembleModelS.cs b/Assets/Patterns/23. Template/Assemble cars/Assembly line/AssembleModelS.cs similarity index 100% rename from Assets/Patterns/22. Template/Assemble cars/Assembly line/AssembleModelS.cs rename to Assets/Patterns/23. Template/Assemble cars/Assembly line/AssembleModelS.cs diff --git a/Assets/Patterns/22. Template/Assemble cars/Assembly line/AssembleModelS.cs.meta b/Assets/Patterns/23. Template/Assemble cars/Assembly line/AssembleModelS.cs.meta similarity index 100% rename from Assets/Patterns/22. Template/Assemble cars/Assembly line/AssembleModelS.cs.meta rename to Assets/Patterns/23. Template/Assemble cars/Assembly line/AssembleModelS.cs.meta diff --git a/Assets/Patterns/22. Template/Assemble cars/Assembly line/_AssemblyLine.cs b/Assets/Patterns/23. Template/Assemble cars/Assembly line/_AssemblyLine.cs similarity index 100% rename from Assets/Patterns/22. Template/Assemble cars/Assembly line/_AssemblyLine.cs rename to Assets/Patterns/23. Template/Assemble cars/Assembly line/_AssemblyLine.cs diff --git a/Assets/Patterns/22. Template/Assemble cars/Assembly line/_AssemblyLine.cs.meta b/Assets/Patterns/23. Template/Assemble cars/Assembly line/_AssemblyLine.cs.meta similarity index 100% rename from Assets/Patterns/22. Template/Assemble cars/Assembly line/_AssemblyLine.cs.meta rename to Assets/Patterns/23. Template/Assemble cars/Assembly line/_AssemblyLine.cs.meta diff --git a/Assets/Patterns/22. Template/Assemble cars/assemble-cars.unity b/Assets/Patterns/23. Template/Assemble cars/assemble-cars.unity similarity index 100% rename from Assets/Patterns/22. Template/Assemble cars/assemble-cars.unity rename to Assets/Patterns/23. Template/Assemble cars/assemble-cars.unity diff --git a/Assets/Patterns/22. Template/Assemble cars/assemble-cars.unity.meta b/Assets/Patterns/23. Template/Assemble cars/assemble-cars.unity.meta similarity index 100% rename from Assets/Patterns/22. Template/Assemble cars/assemble-cars.unity.meta rename to Assets/Patterns/23. Template/Assemble cars/assemble-cars.unity.meta diff --git a/README.md b/README.md index bca4bc7..aa74101 100644 --- a/README.md +++ b/README.md @@ -553,11 +553,11 @@ If you are creating several different factories, then they should inherit from s ## 22. Facade -When you have several related classes, such as AI or audio, and want to make it simpler to access methods in those classes without creating spaghetti code. The name comes from [building facades](https://en.wikipedia.org/wiki/Fa%C3%A7ade) - you can only see the exterior of the building, but have no idea how the building looks like inside. The more classes you hide from other classes the better! +When you have several related classes, such as AI or audio, and want to make it simpler to access methods in those classes. The name comes from [building facades](https://en.wikipedia.org/wiki/Fa%C3%A7ade) - you can only see the exterior of the building, but have no idea how the building looks like inside. You can still access classes in the subsystem if you need to - the Facade is just making it simpler to access the more common classes. **How to implement?** -Create a manager class that provides a single interface to a large collection of related classes. +Create a manager class that provides a single interface to a large collection of related classes. **When is it useful?** From 2be8e640f562f0bdb88c5e4a2d1ee8f4ee017ca6 Mon Sep 17 00:00:00 2001 From: habrador Date: Fri, 4 Nov 2022 10:33:31 +0100 Subject: [PATCH 43/68] Added example of the Facade pattern --- Assets/Patterns/22. Facade.meta | 8 + .../Patterns/22. Facade/Random numbers.meta | 8 + .../22. Facade/Random numbers/Facade.meta | 8 + .../Facade/RandomNumberFacade.cs | 42 +++ .../Facade/RandomNumberFacade.cs.meta | 11 + .../Facade/RandomNumberGenerators.meta | 8 + .../IRandomNumberGenerator.cs | 17 + .../IRandomNumberGenerator.cs.meta | 11 + .../RandomNumbersNative.cs | 37 ++ .../RandomNumbersNative.cs.meta | 11 + .../RandomNumbersUnity.cs | 30 ++ .../RandomNumbersUnity.cs.meta | 11 + .../Random numbers/RandomNumbersController.cs | 37 ++ .../RandomNumbersController.cs.meta | 11 + .../Random numbers/random numbers.unity | 347 ++++++++++++++++++ .../Random numbers/random numbers.unity.meta | 7 + README.md | 11 +- 17 files changed, 611 insertions(+), 4 deletions(-) create mode 100644 Assets/Patterns/22. Facade.meta create mode 100644 Assets/Patterns/22. Facade/Random numbers.meta create mode 100644 Assets/Patterns/22. Facade/Random numbers/Facade.meta create mode 100644 Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberFacade.cs create mode 100644 Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberFacade.cs.meta create mode 100644 Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators.meta create mode 100644 Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/IRandomNumberGenerator.cs create mode 100644 Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/IRandomNumberGenerator.cs.meta create mode 100644 Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersNative.cs create mode 100644 Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersNative.cs.meta create mode 100644 Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersUnity.cs create mode 100644 Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersUnity.cs.meta create mode 100644 Assets/Patterns/22. Facade/Random numbers/RandomNumbersController.cs create mode 100644 Assets/Patterns/22. Facade/Random numbers/RandomNumbersController.cs.meta create mode 100644 Assets/Patterns/22. Facade/Random numbers/random numbers.unity create mode 100644 Assets/Patterns/22. Facade/Random numbers/random numbers.unity.meta diff --git a/Assets/Patterns/22. Facade.meta b/Assets/Patterns/22. Facade.meta new file mode 100644 index 0000000..bed15f4 --- /dev/null +++ b/Assets/Patterns/22. Facade.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 696fda268bb811f4da353a0398a362f8 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/22. Facade/Random numbers.meta b/Assets/Patterns/22. Facade/Random numbers.meta new file mode 100644 index 0000000..1fc342e --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 39e763d53a8a7144498854ba5348f936 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/22. Facade/Random numbers/Facade.meta b/Assets/Patterns/22. Facade/Random numbers/Facade.meta new file mode 100644 index 0000000..b03ca28 --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/Facade.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1e4db7356e2325a44900d6c52a8cfc4f +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberFacade.cs b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberFacade.cs new file mode 100644 index 0000000..4d1926c --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberFacade.cs @@ -0,0 +1,42 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Facade.RandomNumbers +{ + public class RandomNumberFacade + { + private static IRandomNumberGenerator rng; + + + static RandomNumberFacade() + { + //rng = new RandomNumbersNative(); + rng = new RandomNumbersUnity(); + } + + + public static void InitSeed(int seed) + { + rng.InitSeed(seed); + } + + + public static float GetRandom01() + { + return rng.GetRandom01(); + } + + + public static float GetRandom(float min, float max) + { + return rng.GetRandom(min, max); + } + + + public static int GetRandomInt(int min, int max) + { + return rng.GetRandomInt(min, max); + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberFacade.cs.meta b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberFacade.cs.meta new file mode 100644 index 0000000..66ab0da --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberFacade.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 50e552fc33acdef48a542838e1f7cebc +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators.meta b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators.meta new file mode 100644 index 0000000..f06d5ae --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f0ffc37fc25416f48bb81d8c9137f0d7 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/IRandomNumberGenerator.cs b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/IRandomNumberGenerator.cs new file mode 100644 index 0000000..21b1bc3 --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/IRandomNumberGenerator.cs @@ -0,0 +1,17 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Facade.RandomNumbers +{ + public interface IRandomNumberGenerator + { + public void InitSeed(int seed); + + public float GetRandom01(); + + public float GetRandom(float min, float max); + + public int GetRandomInt(int min, int max); + } +} \ No newline at end of file diff --git a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/IRandomNumberGenerator.cs.meta b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/IRandomNumberGenerator.cs.meta new file mode 100644 index 0000000..ffd9ae0 --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/IRandomNumberGenerator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 4ae23077a0a61a74989d92806d610a30 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersNative.cs b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersNative.cs new file mode 100644 index 0000000..aba027b --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersNative.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Facade.RandomNumbers +{ + //Generate random numbers by using C#'s System.Random + public class RandomNumbersNative : IRandomNumberGenerator + { + private System.Random rng; + + public RandomNumbersNative() + { + rng = new System.Random(); + } + + public float GetRandom(float min, float max) + { + return (float)((rng.NextDouble() * (max - min)) + min); + } + + public float GetRandom01() + { + return (float)rng.NextDouble(); + } + + public int GetRandomInt(int min, int max) + { + return rng.Next(min, max); + } + + public void InitSeed(int seed) + { + rng = new System.Random(seed); + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersNative.cs.meta b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersNative.cs.meta new file mode 100644 index 0000000..164da74 --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersNative.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 3c613d195d3b90748b9c797f521c32bd +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersUnity.cs b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersUnity.cs new file mode 100644 index 0000000..225def1 --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersUnity.cs @@ -0,0 +1,30 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +namespace Facade.RandomNumbers +{ + //Geerate random numbers by using Unity's Random.Range + public class RandomNumbersUnity : IRandomNumberGenerator + { + public float GetRandom(float min, float max) + { + return Random.Range(min, max); + } + + public float GetRandom01() + { + return Random.Range(0f, 1f); + } + + public int GetRandomInt(int min, int max) + { + return Random.Range(min, max); + } + + public void InitSeed(int seed) + { + Random.InitState(seed); + } + } +} \ No newline at end of file diff --git a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersUnity.cs.meta b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersUnity.cs.meta new file mode 100644 index 0000000..f664757 --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/RandomNumbersUnity.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 0180d38100d299a4bb2743d779b71ea7 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/22. Facade/Random numbers/RandomNumbersController.cs b/Assets/Patterns/22. Facade/Random numbers/RandomNumbersController.cs new file mode 100644 index 0000000..83893ba --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/RandomNumbersController.cs @@ -0,0 +1,37 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; +using Facade.RandomNumbers; + +//Example of the Facade programming pattern (and possibly Adapter because they are very similar) +public class RandomNumbersController : MonoBehaviour +{ + private void Start() + { + RandomNumberFacade.InitSeed(0); + + Debug.Log("Float: 0 -> 1"); + + for (int i = 0; i < 5; i++) + { + Debug.Log(RandomNumberFacade.GetRandom01()); + } + + Debug.Log("Float: -1 -> 2"); + + for (int i = 0; i < 10; i++) + { + Debug.Log(RandomNumberFacade.GetRandom(-1f, 2f)); + } + + Debug.Log("Integer: -10 -> 20"); + + for (int i = 0; i < 10; i++) + { + Debug.Log(RandomNumberFacade.GetRandomInt(-10, 21)); + } + } + + + +} diff --git a/Assets/Patterns/22. Facade/Random numbers/RandomNumbersController.cs.meta b/Assets/Patterns/22. Facade/Random numbers/RandomNumbersController.cs.meta new file mode 100644 index 0000000..90c07bb --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/RandomNumbersController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 798f9c44c3fda5f499346528b20608e8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/22. Facade/Random numbers/random numbers.unity b/Assets/Patterns/22. Facade/Random numbers/random numbers.unity new file mode 100644 index 0000000..a2d8245 --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/random numbers.unity @@ -0,0 +1,347 @@ +%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: 9 + 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_IndirectSpecularColor: {r: 0.44657844, g: 0.49641222, b: 0.57481694, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + 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_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + 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: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &714423619 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 714423621} + - component: {fileID: 714423620} + 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 &714423620 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 714423619} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &714423621 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 714423619} + m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} + m_LocalPosition: {x: 0, y: 500, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &1028895537 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1028895539} + - component: {fileID: 1028895538} + m_Layer: 0 + m_Name: Controller + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &1028895538 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028895537} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 798f9c44c3fda5f499346528b20608e8, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &1028895539 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1028895537} + 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_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &1728729388 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1728729391} + - component: {fileID: 1728729390} + - component: {fileID: 1728729389} + 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 &1728729389 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1728729388} + m_Enabled: 1 +--- !u!20 &1728729390 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1728729388} + 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_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &1728729391 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1728729388} + 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_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} diff --git a/Assets/Patterns/22. Facade/Random numbers/random numbers.unity.meta b/Assets/Patterns/22. Facade/Random numbers/random numbers.unity.meta new file mode 100644 index 0000000..67f0fce --- /dev/null +++ b/Assets/Patterns/22. Facade/Random numbers/random numbers.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 33f0b3673d073bc4286a0b6843d430e6 +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/README.md b/README.md index aa74101..ed6f2be 100644 --- a/README.md +++ b/README.md @@ -67,7 +67,7 @@ You have a base class called Command which has a method that a child can impleme ## 2. Flyweight -This pattern is useful if you have many game objects. Even though a single object takes up little memory – instantiating many of them can cause trouble. +Even though a single object uses little memory – instantiating many of them can cause trouble, so you need to make the objects lighter by sharing code. **How to implement?** @@ -553,7 +553,7 @@ If you are creating several different factories, then they should inherit from s ## 22. Facade -When you have several related classes, such as AI or audio, and want to make it simpler to access methods in those classes. The name comes from [building facades](https://en.wikipedia.org/wiki/Fa%C3%A7ade) - you can only see the exterior of the building, but have no idea how the building looks like inside. You can still access classes in the subsystem if you need to - the Facade is just making it simpler to access the more common classes. +When you have several related classes, such as AI or audio, and want to make it simpler to access methods in those classes. The name Facade comes from [building facades](https://en.wikipedia.org/wiki/Fa%C3%A7ade) - you can only see the exterior of the building, but have no idea how the building looks like inside. You can still access classes in the subsystem if you need to - the Facade is just making it simpler to access the more common classes. **How to implement?** @@ -561,7 +561,9 @@ Create a manager class that provides a single interface to a large collection of **When is it useful?** -- In games it's common to write standardized code libraries, such as a library for the AI, which includes pathfinding, etc. These tend to include massive amounts of classes. To make it easier for yourself you create a script that includes access to the most important methods you need, such as get a path. An example of this can't be found here but in another open source library I have: [Computational geometry](https://github.com/Habrador/Computational-geometry). For example, there are multiple methods on how to generate a Delaunay triangulation. To simplify the access to those methods I wrote a class called _Delaunay, which accesses each Delaunay method in a simple way. Otherwise you would have to first go into the Delaunay folder and figure out which class is doing what and which method you should use to generate the needed Delaunay triangulation. And if I decided to use another triangulation library I only need to change the facade script. +- In games it's common to write standardized code libraries, such as a library for the AI, which includes pathfinding, etc. These tend to include massive amounts of classes. To make it easier for yourself you create a script that includes access to the most important methods you need, such as get a short path. I made an open source library: [Computational geometry](https://github.com/Habrador/Computational-geometry). There are multiple methods on how to generate a Delaunay triangulation. To simplify the access to those methods I wrote a class called _Delaunay, which access each Delaunay method in a simple way. Otherwise you would have to first go into the Delaunay folder and figure out which class is doing what and which method you should use to generate the needed Delaunay triangulation. And if I decided to use another triangulation library I only need to change the facade script. Multiple Facades are allowed, so I also have another Facade for the intersection algorithms. + +- Random numbers are common in games. Should you use Unity's Random.Range or C#'s System.Random.Next? You can use the Facade pattern to easier switch between them. An example of this can be found in the code section. And if you find a third random number library, you can add it and you don't have to make a single change to the code that uses this Facade. **Related patterns** @@ -569,7 +571,7 @@ Create a manager class that provides a single interface to a large collection of - **[Singleton](#5-singleton).** The facade class is often a Singleton because you need only a single object to manage access to audio or to AI. -- **Adapter.** This pattern is dealing with legacy code that doesn't work directly with your system and you can't modify that code on your own. This legacy code could be a facade but doesn't have to be. So you add code to make the non-functioning facade work with your system. Facade creates a new interface while Adapter adapts an old interface. +- **Adapter.** This pattern is dealing with how to make code you can't modify work with your system. While Facade creates a new interface to simplify, Adapter adapts an old interface. These patterns are so similar that a book included both in the same chapter. @@ -595,6 +597,7 @@ Define a template method in the parent class which consists of calling several m - [Game Programming Patterns](http://gameprogrammingpatterns.com) - [Game Development Patterns with Unity 2021](https://www.amazon.com/Game-Development-Patterns-Unity-2021/dp/1800200811) +- [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124) - [Game Programming Gems](https://www.amazon.com/Game-Programming-Gems-CD/dp/1584500492) - [Game Programming Gems 2](https://www.amazon.com/Game-Programming-Gems-GAME-PROGRAMMING/dp/1584500549) From d429efa828e6479aff7483de648030ef1d0b747d Mon Sep 17 00:00:00 2001 From: habrador Date: Fri, 4 Nov 2022 10:44:01 +0100 Subject: [PATCH 44/68] Added a comment --- .../22. Facade/Random numbers/Facade/RandomNumberFacade.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberFacade.cs b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberFacade.cs index 4d1926c..83ad720 100644 --- a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberFacade.cs +++ b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberFacade.cs @@ -11,6 +11,7 @@ public class RandomNumberFacade static RandomNumberFacade() { + //The only line of code you need to change if you want to test different random number generators //rng = new RandomNumbersNative(); rng = new RandomNumbersUnity(); } From 33d43248bec871292fe31cd94d23c08140f4f0a0 Mon Sep 17 00:00:00 2001 From: habrador Date: Fri, 4 Nov 2022 15:11:08 +0100 Subject: [PATCH 45/68] Realized I accidentally also added the Adapter pattern in the Facade pattern example, so added comments to recognize that --- .../Facade/RandomNumberGenerators/IRandomNumberGenerator.cs | 1 + .../22. Facade/Random numbers/RandomNumbersController.cs | 3 ++- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/IRandomNumberGenerator.cs b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/IRandomNumberGenerator.cs index 21b1bc3..431a29c 100644 --- a/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/IRandomNumberGenerator.cs +++ b/Assets/Patterns/22. Facade/Random numbers/Facade/RandomNumberGenerators/IRandomNumberGenerator.cs @@ -4,6 +4,7 @@ namespace Facade.RandomNumbers { + //This is the Adapter pattern to easier work with the Facade public interface IRandomNumberGenerator { public void InitSeed(int seed); diff --git a/Assets/Patterns/22. Facade/Random numbers/RandomNumbersController.cs b/Assets/Patterns/22. Facade/Random numbers/RandomNumbersController.cs index 83893ba..00a0e20 100644 --- a/Assets/Patterns/22. Facade/Random numbers/RandomNumbersController.cs +++ b/Assets/Patterns/22. Facade/Random numbers/RandomNumbersController.cs @@ -3,7 +3,8 @@ using UnityEngine; using Facade.RandomNumbers; -//Example of the Facade programming pattern (and possibly Adapter because they are very similar) +//Example of the Facade programming pattern +//To implement the Facade I had to use the Adapter pattern, so you get that as well as a bonus public class RandomNumbersController : MonoBehaviour { private void Start() From deeefa643596d7ddce69fdadc1e1f409be7e8a49 Mon Sep 17 00:00:00 2001 From: habrador Date: Sat, 5 Nov 2022 22:25:26 +0100 Subject: [PATCH 46/68] Updated readme --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ed6f2be..a91ed7d 100644 --- a/README.md +++ b/README.md @@ -543,7 +543,9 @@ If you are creating several different factories, then they should inherit from s - To play sounds on different devices. An example of this can be found in the code section. -- For each object you make you have to allocate some memory. By creating all objects in a central area it makes it easier to monitor these allocations. +- For each object you make you have to allocate some memory. By creating all objects in a central area it makes it easier to monitor these allocations. + +- To keep track of all of your Singletons. **Related patterns** From ce6098d07929efed681f61f06f3ac748bc94c937 Mon Sep 17 00:00:00 2001 From: habrador Date: Mon, 7 Nov 2022 20:43:30 +0100 Subject: [PATCH 47/68] Updated readme --- README.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a91ed7d..7673077 100644 --- a/README.md +++ b/README.md @@ -551,6 +551,8 @@ If you are creating several different factories, then they should inherit from s - **[Prototype](#4-prototype).** The Prototype pattern is generally used if you want to make a copy of an existing object, while the Factory pattern is generating new objects. But some argue you can put the Prototype pattern inside of the Factory pattern. +- **[Object Pool](#18-object-pool).** The factory doesn't have to create new objects - it can be a recycling plant if you combine Factory with Object Pool. + ## 22. Facade @@ -595,17 +597,20 @@ Define a template method in the parent class which consists of calling several m -# Sources +# Sources and Read More - [Game Programming Patterns](http://gameprogrammingpatterns.com) - [Game Development Patterns with Unity 2021](https://www.amazon.com/Game-Development-Patterns-Unity-2021/dp/1800200811) - [Head First Design Patterns](https://www.amazon.com/Head-First-Design-Patterns-Brain-Friendly/dp/0596007124) - [Game Programming Gems](https://www.amazon.com/Game-Programming-Gems-CD/dp/1584500492) - [Game Programming Gems 2](https://www.amazon.com/Game-Programming-Gems-GAME-PROGRAMMING/dp/1584500549) +- [Refactoring Guru](https://refactoring.guru/design-patterns) +- [Design Patterns in C# With Real-Time Examples](https://dotnettutorials.net/course/dot-net-design-patterns/) +- [Level up your code with game programming patterns](https://resources.unity.com/games/level-up-your-code-with-game-programming-patterns) -# Special thanks +# Special Thanks - **[masoudarvishian](https://github.com/masoudarvishian)** for implementing Event Queue pattern, Service Locator pattern, and bug fixing. - **[VladimirMirMir](https://github.com/VladimirMirMir)** for bug fixing. From 20f38b76da2245399629f12f8f35d64c5e0595bb Mon Sep 17 00:00:00 2001 From: habrador Date: Sat, 12 Nov 2022 11:31:30 +0100 Subject: [PATCH 48/68] Updated readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 7673077..68e753f 100644 --- a/README.md +++ b/README.md @@ -484,7 +484,7 @@ If you have many objects in your game, store the objects in a data structure tha This is a common pattern, so you have several choices: -- **Grid.** Divide the area into a grid and store in the data structure in which cell each object is located. This is the example from the book, so you can find the code for it in the code section. +- **Grid.** Divide the area into a grid and store in the data structure in which cell each object is located. This is the example from the book, so you can find the code for it in the code section. An alternative implementation can be found here: [Find overlaps among thousands of objects blazing fast](https://github.com/Habrador/Ten-Minute-Physics-Unity) which is implementing "Spatial Hashing" meaning that you are no longer bounded to a fixed grid - you can use a grid of infinite size! - **Trie.** Is actually called [Trie](https://en.wikipedia.org/wiki/Trie) and not Tree! - [Quadtree (2d space)](https://en.wikipedia.org/wiki/Quadtree). Divide the square area into 4 cells. But if too many objects are in the same cell, divide that cell into 4 new cells. Continue until there are not "too many objects in the same cell." A good tutorial can be found here: [Coding Challenge #98.1: Quadtree - Part 1](https://www.youtube.com/watch?v=OJxEcs0w_kE). From 27f20162f96658ee21bf8b3a1a0a1272f4cf6e88 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 17 Jan 2023 11:49:07 +0100 Subject: [PATCH 49/68] Upgraded to latest Unity LTS version --- Packages/manifest.json | 2 +- Packages/packages-lock.json | 2 +- ProjectSettings/ProjectVersion.txt | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/Packages/manifest.json b/Packages/manifest.json index 9d62b9f..821e8e9 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -3,7 +3,7 @@ "com.unity.2d.sprite": "1.0.0", "com.unity.2d.tilemap": "1.0.0", "com.unity.ide.rider": "3.0.16", - "com.unity.ide.visualstudio": "2.0.16", + "com.unity.ide.visualstudio": "2.0.17", "com.unity.ide.vscode": "1.2.5", "com.unity.test-framework": "1.1.33", "com.unity.textmeshpro": "3.0.6", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 166612b..3309de0 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -29,7 +29,7 @@ "url": "https://packages.unity.com/" }, "com.unity.ide.visualstudio": { - "version": "2.0.16", + "version": "2.0.17", "depth": 0, "source": "registry", "dependencies": { diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 8d9054d..3643b02 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.3.9f1 -m_EditorVersionWithRevision: 2021.3.9f1 (ad3870b89536) +m_EditorVersion: 2021.3.16f1 +m_EditorVersionWithRevision: 2021.3.16f1 (4016570cf34f) From 626b03a34130b62a0c09e848453f1d74be5d28b8 Mon Sep 17 00:00:00 2001 From: Jayadev Haddadi Date: Thu, 19 Jan 2023 10:37:04 +0530 Subject: [PATCH 50/68] 3.Observer - DifferentEventAlternatives updated, was not functioning properly before, reference names were inconsistent. --- .../DifferentEventAlternatives.cs | 35 +++++++++++-------- 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/Assets/Patterns/3. Observer/Different events/DifferentEventAlternatives.cs b/Assets/Patterns/3. Observer/Different events/DifferentEventAlternatives.cs index ef5a861..bd86d6f 100644 --- a/Assets/Patterns/3. Observer/Different events/DifferentEventAlternatives.cs +++ b/Assets/Patterns/3. Observer/Different events/DifferentEventAlternatives.cs @@ -15,19 +15,19 @@ public class DifferentEventAlternatives : MonoBehaviour //C# built-in EventHandler //Requires "using System;" - public event EventHandler myCoolEvent; + public event EventHandler MyCoolEvent; //With parameters - public event EventHandler myCoolEventWithParameters; + public event EventHandler MyCoolEventWithParameters; //C# built-in Action //If we have more parameters we can use Action. Compared with EventHandler, the parameters dont have to inherit from EventArgs - public event Action myCoolEventAction; + public event Action MyCoolEventAction; //Unity built-in UnityEvent //Requires that we are "using UnityEngine.Events;" - public UnityEvent coolUnityEvent = new UnityEvent(); + public UnityEvent CoolUnityEvent = new UnityEvent(); //If you have parameters you have to create a new event class that inherits from UnityEvent public MyCustomUnityEvent coolCustomUnityEvent = new MyCustomUnityEvent(); //There's also something called UnityAction @@ -49,6 +49,9 @@ public class DifferentEventAlternatives : MonoBehaviour //Custom delegate with the same parameters as built-in EventHandler public delegate void MyEventHandler(object sender, EventArgs e); //Custom delegate with no parameters + + public MyEventHandler myEventHandler; + public delegate void MyEventHandlerEmpty(); //The event belonging to the custom delegate @@ -58,17 +61,19 @@ public class DifferentEventAlternatives : MonoBehaviour void Start() { - //MyCoolEvent += DisplayStuff; + MyCoolEvent += DisplayStuff; - //MyCoolEventWithParameters += DisplayStuffCustom; + MyCoolEventWithParameters += DisplayStuffCustomArgs; - //MyCoolEventAction += DisplayStuffCustomBig; + MyCoolEventAction += DisplayStuffCustomParameters; - //CoolUnityEvent.AddListener(DisplayStuffEmpty); + CoolUnityEvent.AddListener(DisplayStuffEmpty); coolCustomUnityEvent.AddListener(DisplayStuffCustomParameters); - //MyCoolCustomEvent += DisplayStuffEmpty; + MyCoolCustomEvent += DisplayStuffEmpty; + + myEventHandler += DisplayStuff; } @@ -78,20 +83,20 @@ void Update() if (Input.GetKeyDown(KeyCode.Space)) { //Built-in - //myCoolEvent?.Invoke(this, null); + MyCoolEvent?.Invoke(this, null); - //MyCoolEventWithParameters?.Invoke(this, new MyName("InsertFunnyName")); + MyCoolEventWithParameters?.Invoke(this, new MyName("InsertFunnyName")); - //MyCoolEventAction?.Invoke(new MyName("InsertFunnyName"), new MyAge(5)); + MyCoolEventAction?.Invoke(new MyName("InsertFunnyName"), new MyAge(5)); - //CoolUnityEvent?.Invoke(); + CoolUnityEvent?.Invoke(); coolCustomUnityEvent?.Invoke(new MyName("InsertFunnyName"), new MyAge(5)); //Custom - //MyCoolCustomEvent?.Invoke(this, null); + myEventHandler?.Invoke(this, null); - //MyCoolCustomEvent?.Invoke(); + MyCoolCustomEvent?.Invoke(); } } From 7558d81179ae97b72c4d400be93a716f92643511 Mon Sep 17 00:00:00 2001 From: Jayadev Haddadi Date: Thu, 19 Jan 2023 10:41:27 +0530 Subject: [PATCH 51/68] renamed all field variables to camel case for consistency with existing names --- .../DifferentEventAlternatives.cs | 31 ++++++++++--------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/Assets/Patterns/3. Observer/Different events/DifferentEventAlternatives.cs b/Assets/Patterns/3. Observer/Different events/DifferentEventAlternatives.cs index bd86d6f..c62077c 100644 --- a/Assets/Patterns/3. Observer/Different events/DifferentEventAlternatives.cs +++ b/Assets/Patterns/3. Observer/Different events/DifferentEventAlternatives.cs @@ -3,6 +3,7 @@ using System.Collections.Generic; using UnityEngine; using UnityEngine.Events; +using UnityEngine.Serialization; namespace Observer.DifferentEvents { @@ -15,19 +16,19 @@ public class DifferentEventAlternatives : MonoBehaviour //C# built-in EventHandler //Requires "using System;" - public event EventHandler MyCoolEvent; + public event EventHandler myCoolEvent; //With parameters - public event EventHandler MyCoolEventWithParameters; + public event EventHandler myCoolEventWithParameters; //C# built-in Action //If we have more parameters we can use Action. Compared with EventHandler, the parameters dont have to inherit from EventArgs - public event Action MyCoolEventAction; + public event Action myCoolEventAction; //Unity built-in UnityEvent //Requires that we are "using UnityEngine.Events;" - public UnityEvent CoolUnityEvent = new UnityEvent(); + [FormerlySerializedAs("CoolUnityEvent")] public UnityEvent coolUnityEvent = new UnityEvent(); //If you have parameters you have to create a new event class that inherits from UnityEvent public MyCustomUnityEvent coolCustomUnityEvent = new MyCustomUnityEvent(); //There's also something called UnityAction @@ -55,23 +56,23 @@ public class DifferentEventAlternatives : MonoBehaviour public delegate void MyEventHandlerEmpty(); //The event belonging to the custom delegate - public event MyEventHandlerEmpty MyCoolCustomEvent; + public event MyEventHandlerEmpty myCoolCustomEvent; void Start() { - MyCoolEvent += DisplayStuff; + myCoolEvent += DisplayStuff; - MyCoolEventWithParameters += DisplayStuffCustomArgs; + myCoolEventWithParameters += DisplayStuffCustomArgs; - MyCoolEventAction += DisplayStuffCustomParameters; + myCoolEventAction += DisplayStuffCustomParameters; - CoolUnityEvent.AddListener(DisplayStuffEmpty); + coolUnityEvent.AddListener(DisplayStuffEmpty); coolCustomUnityEvent.AddListener(DisplayStuffCustomParameters); - MyCoolCustomEvent += DisplayStuffEmpty; + myCoolCustomEvent += DisplayStuffEmpty; myEventHandler += DisplayStuff; } @@ -83,20 +84,20 @@ void Update() if (Input.GetKeyDown(KeyCode.Space)) { //Built-in - MyCoolEvent?.Invoke(this, null); + myCoolEvent?.Invoke(this, null); - MyCoolEventWithParameters?.Invoke(this, new MyName("InsertFunnyName")); + myCoolEventWithParameters?.Invoke(this, new MyName("InsertFunnyName")); - MyCoolEventAction?.Invoke(new MyName("InsertFunnyName"), new MyAge(5)); + myCoolEventAction?.Invoke(new MyName("InsertFunnyName"), new MyAge(5)); - CoolUnityEvent?.Invoke(); + coolUnityEvent?.Invoke(); coolCustomUnityEvent?.Invoke(new MyName("InsertFunnyName"), new MyAge(5)); //Custom myEventHandler?.Invoke(this, null); - MyCoolCustomEvent?.Invoke(); + myCoolCustomEvent?.Invoke(); } } From f5cf251dbbd085066833d9e561a1da2e026895f7 Mon Sep 17 00:00:00 2001 From: Jayadev Haddadi Date: Mon, 6 Feb 2023 14:05:06 +0530 Subject: [PATCH 52/68] testing adding my stuff --- .../.idea/.gitignore | 13 + .../.idea/indexLayout.xml | 8 + .../.idea/vcs.xml | 6 + Assets/MonoBehaviourLifeCycle.cs | 70 ++++ Assets/MonoBehaviourLifeCycle.cs.meta | 11 + Assets/New Scene.unity | 303 ++++++++++++++++++ Assets/New Scene.unity.meta | 7 + .../Scripts/SpawnController.cs | 6 +- .../5. Singleton/Scripts/GameController.cs | 2 +- .../5. Singleton/Scripts/SingletonUnity.cs | 8 +- ProjectSettings/ProjectSettings.asset | 294 +++++++++++++---- ProjectSettings/ProjectVersion.txt | 4 +- 12 files changed, 657 insertions(+), 75 deletions(-) create mode 100644 .idea/.idea.Unity-Programming-Patterns/.idea/.gitignore create mode 100644 .idea/.idea.Unity-Programming-Patterns/.idea/indexLayout.xml create mode 100644 .idea/.idea.Unity-Programming-Patterns/.idea/vcs.xml create mode 100644 Assets/MonoBehaviourLifeCycle.cs create mode 100644 Assets/MonoBehaviourLifeCycle.cs.meta create mode 100644 Assets/New Scene.unity create mode 100644 Assets/New Scene.unity.meta diff --git a/.idea/.idea.Unity-Programming-Patterns/.idea/.gitignore b/.idea/.idea.Unity-Programming-Patterns/.idea/.gitignore new file mode 100644 index 0000000..74baff2 --- /dev/null +++ b/.idea/.idea.Unity-Programming-Patterns/.idea/.gitignore @@ -0,0 +1,13 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Rider ignored files +/contentModel.xml +/.idea.Unity-Programming-Patterns.iml +/projectSettingsUpdater.xml +/modules.xml +# Editor-based HTTP Client requests +/httpRequests/ +# Datasource local storage ignored files +/dataSources/ +/dataSources.local.xml diff --git a/.idea/.idea.Unity-Programming-Patterns/.idea/indexLayout.xml b/.idea/.idea.Unity-Programming-Patterns/.idea/indexLayout.xml new file mode 100644 index 0000000..7b08163 --- /dev/null +++ b/.idea/.idea.Unity-Programming-Patterns/.idea/indexLayout.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/.idea.Unity-Programming-Patterns/.idea/vcs.xml b/.idea/.idea.Unity-Programming-Patterns/.idea/vcs.xml new file mode 100644 index 0000000..35eb1dd --- /dev/null +++ b/.idea/.idea.Unity-Programming-Patterns/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/Assets/MonoBehaviourLifeCycle.cs b/Assets/MonoBehaviourLifeCycle.cs new file mode 100644 index 0000000..feea69c --- /dev/null +++ b/Assets/MonoBehaviourLifeCycle.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +public class MonoBehaviourLifeCycle : MonoBehaviour +{ + + private void Awake() + { + print("Awake"); + } + + // Start is called before the first frame update + void Start() + { + print("Start"); + } + + public int count = 0; + + // Update is called once per frame + void Update() + { + count++; + // if (count % 500 == 0) + print("Update"); + } + + private void FixedUpdate() + { + // if (count % 500 == 0) + print("FixedUpdate"); + } + + private void LateUpdate() + { + // if (count % 500 == 0) + print("LateUpdate"); + } + + + private void OnEnable() + { + print("OnEnable"); + } + + private void OnDisable() + { + print("OnDisable"); + } + + private void OnDestroy() + { + print("OnDestroy"); + } + + private void OnValidate() + { + print("OnValidate"); + } + + private void Reset() + { + print("Reset"); + } + + + +} \ No newline at end of file diff --git a/Assets/MonoBehaviourLifeCycle.cs.meta b/Assets/MonoBehaviourLifeCycle.cs.meta new file mode 100644 index 0000000..fc3d759 --- /dev/null +++ b/Assets/MonoBehaviourLifeCycle.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 563221c015a0b1b4e9b7790e022efa73 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/New Scene.unity b/Assets/New Scene.unity new file mode 100644 index 0000000..863fbab --- /dev/null +++ b/Assets/New Scene.unity @@ -0,0 +1,303 @@ +%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: 9 + 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_IndirectSpecularColor: {r: 0, g: 0, b: 0, a: 1} + m_UseRadianceAmbientProbe: 0 +--- !u!157 &3 +LightmapSettings: + m_ObjectHideFlags: 0 + serializedVersion: 12 + m_GIWorkflowMode: 1 + 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_FinalGather: 0 + m_FinalGatherFiltering: 1 + m_FinalGatherRayCount: 256 + 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: 0} + m_LightingSettings: {fileID: 0} +--- !u!196 &4 +NavMeshSettings: + serializedVersion: 2 + m_ObjectHideFlags: 0 + m_BuildSettings: + serializedVersion: 2 + 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 + accuratePlacement: 0 + maxJobWorkers: 0 + preserveTilesOutsideBounds: 0 + debug: + m_Flags: 0 + m_NavMeshData: {fileID: 0} +--- !u!1 &1716421094 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1716421097} + - component: {fileID: 1716421096} + - component: {fileID: 1716421095} + 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 &1716421095 +AudioListener: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716421094} + m_Enabled: 1 +--- !u!20 &1716421096 +Camera: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716421094} + 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_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + 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 &1716421097 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1716421094} + 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_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2141136459 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2141136461} + - component: {fileID: 2141136460} + 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 &2141136460 +Light: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141136459} + m_Enabled: 1 + serializedVersion: 10 + m_Type: 1 + m_Shape: 0 + 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_ShadowRadius: 0 + m_ShadowAngle: 0 +--- !u!4 &2141136461 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2141136459} + 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_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} diff --git a/Assets/New Scene.unity.meta b/Assets/New Scene.unity.meta new file mode 100644 index 0000000..fed7286 --- /dev/null +++ b/Assets/New Scene.unity.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 83b6987a24424d643825f4b5163a119b +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Patterns/4. Prototype/Monster spawner/Scripts/SpawnController.cs b/Assets/Patterns/4. Prototype/Monster spawner/Scripts/SpawnController.cs index bad4652..55b036b 100644 --- a/Assets/Patterns/4. Prototype/Monster spawner/Scripts/SpawnController.cs +++ b/Assets/Patterns/4. Prototype/Monster spawner/Scripts/SpawnController.cs @@ -42,11 +42,11 @@ void Update() newGhost.Talk(); - //Spawner randomSpawner = monsterSpawners[Random.Range(0, monsterSpawners.Length)]; + Spawner randomSpawner = monsterSpawners[Random.Range(0, monsterSpawners.Length)]; - //_Monster randomMonster = randomSpawner.SpawnMonster(); + _Monster randomMonster = randomSpawner.SpawnMonster(); - //randomMonster.Talk(); + randomMonster.Talk(); //We can't use Unity's built-in Instantiate method because those objects have to inherit from Object diff --git a/Assets/Patterns/5. Singleton/Scripts/GameController.cs b/Assets/Patterns/5. Singleton/Scripts/GameController.cs index f6215d9..e6aab30 100644 --- a/Assets/Patterns/5. Singleton/Scripts/GameController.cs +++ b/Assets/Patterns/5. Singleton/Scripts/GameController.cs @@ -11,7 +11,7 @@ void Start() { TestCSharpSingleton(); - //TestUnitySingleton(); + TestUnitySingleton(); } diff --git a/Assets/Patterns/5. Singleton/Scripts/SingletonUnity.cs b/Assets/Patterns/5. Singleton/Scripts/SingletonUnity.cs index 00c9292..aca0501 100644 --- a/Assets/Patterns/5. Singleton/Scripts/SingletonUnity.cs +++ b/Assets/Patterns/5. Singleton/Scripts/SingletonUnity.cs @@ -11,14 +11,10 @@ public class SingletonUnity : MonoBehaviour { //A static variable which holds a reference to the single created instance private static SingletonUnity instance = null; - - - + //For testing that we only call the constructor once private float randomNumber; - - - + //A public static means of getting the reference to the single created instance, creating one if necessary public static SingletonUnity Instance { diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index c014d9a..c77cc84 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -3,7 +3,7 @@ --- !u!129 &1 PlayerSettings: m_ObjectHideFlags: 0 - serializedVersion: 18 + serializedVersion: 23 productGUID: 187355f5b086cdd42a3be6ad96be1b27 AndroidProfiler: 0 AndroidFilterTouchesWhenObscured: 0 @@ -49,10 +49,11 @@ PlayerSettings: m_StereoRenderingPath: 0 m_ActiveColorSpace: 0 m_MTRendering: 1 + mipStripping: 0 + numberOfMipsStripped: 0 m_StackTraceTypes: 010000000100000001000000010000000100000001000000 iosShowActivityIndicatorOnLoading: -1 androidShowActivityIndicatorOnLoading: -1 - displayResolutionDialog: 1 iosUseCustomAppBackgroundBehavior: 0 iosAllowHTTPDownload: 1 allowedAutorotateToPortrait: 1 @@ -65,7 +66,14 @@ PlayerSettings: disableDepthAndStencilBuffers: 0 androidStartInFullscreen: 1 androidRenderOutsideSafeArea: 0 + androidUseSwappy: 0 androidBlitType: 0 + androidResizableWindow: 0 + androidDefaultWindowWidth: 1920 + androidDefaultWindowHeight: 1080 + androidMinimumWindowWidth: 400 + androidMinimumWindowHeight: 300 + androidFullscreenMode: 1 defaultIsNativeResolution: 1 macRetinaSupport: 1 runInBackground: 1 @@ -79,11 +87,11 @@ PlayerSettings: usePlayerLog: 1 bakeCollisionMeshes: 0 forceSingleInstance: 0 + useFlipModelSwapchain: 1 resizableWindow: 0 useMacAppStoreValidation: 0 macAppStoreCategory: public.app-category.games gpuSkinning: 1 - graphicsJobs: 0 xboxPIXTextureCapture: 0 xboxEnableAvatar: 0 xboxEnableKinect: 0 @@ -91,7 +99,6 @@ PlayerSettings: xboxEnableFitness: 0 visibleInBackground: 1 allowFullscreenSwitch: 1 - graphicsJobMode: 0 fullscreenMode: 1 xboxSpeechDB: 0 xboxEnableHeadOrientation: 0 @@ -104,6 +111,7 @@ PlayerSettings: xboxOneMonoLoggingLevel: 0 xboxOneLoggingLevel: 1 xboxOneDisableEsram: 0 + xboxOneEnableTypeOptimization: 0 xboxOnePresentImmediateThreshold: 0 switchQueueCommandMemory: 0 switchQueueControlMemory: 16384 @@ -111,7 +119,15 @@ PlayerSettings: switchNVNShaderPoolsGranularity: 33554432 switchNVNDefaultPoolsGranularity: 16777216 switchNVNOtherPoolsGranularity: 16777216 + switchNVNMaxPublicTextureIDCount: 0 + switchNVNMaxPublicSamplerIDCount: 0 + stadiaPresentMode: 0 + stadiaTargetFramerate: 0 + vulkanNumSwapchainBuffers: 3 vulkanEnableSetSRGBWrite: 0 + vulkanEnablePreTransform: 0 + vulkanEnableLateAcquireNextImage: 0 + vulkanEnableCommandBufferRecycling: 1 m_SupportedAspectRatios: 4:3: 1 5:4: 1 @@ -125,40 +141,27 @@ PlayerSettings: m_HolographicPauseOnTrackingLoss: 1 xboxOneDisableKinectGpuReservation: 1 xboxOneEnable7thCore: 1 - isWsaHolographicRemotingEnabled: 0 vrSettings: - cardboard: - depthFormat: 0 - enableTransitionView: 0 - daydream: - depthFormat: 0 - useSustainedPerformanceMode: 0 - enableVideoLayer: 0 - useProtectedVideoMemory: 0 - minimumSupportedHeadTracking: 0 - maximumSupportedHeadTracking: 1 - hololens: - depthFormat: 1 - depthBufferSharingEnabled: 1 - oculus: - sharedDepthBuffer: 1 - dashSupport: 1 - lowOverheadMode: 0 - protectedContext: 0 - v2Signing: 0 enable360StereoCapture: 0 - protectGraphicsMemory: 0 + isWsaHolographicRemotingEnabled: 0 enableFrameTimingStats: 0 + enableOpenGLProfilerGPURecorders: 1 useHDRDisplay: 0 + D3DHDRBitDepth: 0 m_ColorGamuts: 00000000 targetPixelDensity: 30 resolutionScalingMode: 0 + resetResolutionOnWindowResize: 0 androidSupportedAspectRatio: 1 androidMaxAspectRatio: 2.1 applicationIdentifier: {} - buildNumber: {} + buildNumber: + Standalone: 0 + iPhone: 0 + tvOS: 0 + overrideDefaultApplicationIdentifier: 0 AndroidBundleVersionCode: 1 - AndroidMinSdkVersion: 16 + AndroidMinSdkVersion: 22 AndroidTargetSdkVersion: 0 AndroidPreferredInstallLocation: 1 aotOptions: @@ -173,28 +176,16 @@ PlayerSettings: StripUnusedMeshComponents: 1 VertexChannelCompressionMask: 4054 iPhoneSdkVersion: 988 - iOSTargetOSVersionString: 9.0 + iOSTargetOSVersionString: 11.0 tvOSSdkVersion: 0 tvOSRequireExtendedGameController: 0 - tvOSTargetOSVersionString: 9.0 + tvOSTargetOSVersionString: 11.0 uIPrerenderedIcon: 0 uIRequiresPersistentWiFi: 0 uIRequiresFullScreen: 1 uIStatusBarHidden: 1 uIExitOnSuspend: 0 uIStatusBarStyle: 0 - iPhoneSplashScreen: {fileID: 0} - iPhoneHighResSplashScreen: {fileID: 0} - iPhoneTallHighResSplashScreen: {fileID: 0} - iPhone47inSplashScreen: {fileID: 0} - iPhone55inPortraitSplashScreen: {fileID: 0} - iPhone55inLandscapeSplashScreen: {fileID: 0} - iPhone58inPortraitSplashScreen: {fileID: 0} - iPhone58inLandscapeSplashScreen: {fileID: 0} - iPadPortraitSplashScreen: {fileID: 0} - iPadHighResPortraitSplashScreen: {fileID: 0} - iPadLandscapeSplashScreen: {fileID: 0} - iPadHighResLandscapeSplashScreen: {fileID: 0} appleTVSplashScreen: {fileID: 0} appleTVSplashScreen2x: {fileID: 0} tvOSSmallIconLayers: [] @@ -222,15 +213,17 @@ PlayerSettings: iOSLaunchScreeniPadFillPct: 100 iOSLaunchScreeniPadSize: 100 iOSLaunchScreeniPadCustomXibPath: - iOSUseLaunchScreenStoryboard: 0 iOSLaunchScreenCustomStoryboardPath: + iOSLaunchScreeniPadCustomStoryboardPath: iOSDeviceRequirements: [] iOSURLSchemes: [] + macOSURLSchemes: [] iOSBackgroundModes: 0 iOSMetalForceHardShadows: 0 metalEditorSupport: 1 metalAPIValidation: 1 iOSRenderExtraFrameOnPause: 0 + iosCopyPluginsCodeInsteadOfSymlink: 0 appleDeveloperTeamID: iOSManualSigningProvisioningProfileID: tvOSManualSigningProvisioningProfileID: @@ -240,10 +233,19 @@ PlayerSettings: iOSRequireARKit: 0 iOSAutomaticallyDetectAndAddCapabilities: 1 appleEnableProMotion: 0 + shaderPrecisionModel: 0 clonedFromGUID: c0afd0d1d80e3634a9dac47e8a0426ea templatePackageId: com.unity.template.3d@1.3.0 templateDefaultScene: Assets/Scenes/SampleScene.unity + useCustomMainManifest: 0 + useCustomLauncherManifest: 0 + useCustomMainGradleTemplate: 0 + useCustomLauncherGradleManifest: 0 + useCustomBaseGradleTemplate: 0 + useCustomGradlePropertiesTemplate: 0 + useCustomProguardFile: 0 AndroidTargetArchitectures: 5 + AndroidTargetDevices: 0 AndroidSplashScreenScale: 0 androidSplashScreen: {fileID: 0} AndroidKeystoreName: @@ -254,14 +256,112 @@ PlayerSettings: AndroidEnableTango: 0 androidEnableBanner: 1 androidUseLowAccuracyLocation: 0 + androidUseCustomKeystore: 0 m_AndroidBanners: - width: 320 height: 180 banner: {fileID: 0} androidGamepadSupportLevel: 0 - resolutionDialogBanner: {fileID: 0} + chromeosInputEmulation: 1 + AndroidMinifyWithR8: 0 + AndroidMinifyRelease: 0 + AndroidMinifyDebug: 0 + AndroidValidateAppBundleSize: 1 + AndroidAppBundleSizeToValidate: 150 m_BuildTargetIcons: [] - m_BuildTargetPlatformIcons: [] + m_BuildTargetPlatformIcons: + - m_BuildTarget: Android + m_Icons: + - m_Textures: [] + m_Width: 432 + m_Height: 432 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 324 + m_Height: 324 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 216 + m_Height: 216 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 162 + m_Height: 162 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 108 + m_Height: 108 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 81 + m_Height: 81 + m_Kind: 2 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 1 + m_SubKind: + - m_Textures: [] + m_Width: 192 + m_Height: 192 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 144 + m_Height: 144 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 96 + m_Height: 96 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 72 + m_Height: 72 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 48 + m_Height: 48 + m_Kind: 0 + m_SubKind: + - m_Textures: [] + m_Width: 36 + m_Height: 36 + m_Kind: 0 + m_SubKind: m_BuildTargetBatching: - m_BuildTarget: Standalone m_StaticBatching: 1 @@ -278,16 +378,58 @@ PlayerSettings: - m_BuildTarget: WebGL m_StaticBatching: 0 m_DynamicBatching: 0 + m_BuildTargetGraphicsJobs: + - m_BuildTarget: WindowsStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: MacStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: LinuxStandaloneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: AndroidPlayer + m_GraphicsJobs: 0 + - m_BuildTarget: iOSSupport + m_GraphicsJobs: 0 + - m_BuildTarget: PS4Player + m_GraphicsJobs: 0 + - m_BuildTarget: PS5Player + m_GraphicsJobs: 0 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobs: 0 + - m_BuildTarget: GameCoreXboxOneSupport + m_GraphicsJobs: 0 + - m_BuildTarget: GameCoreScarlettSupport + m_GraphicsJobs: 0 + - m_BuildTarget: Switch + m_GraphicsJobs: 0 + - m_BuildTarget: WebGLSupport + m_GraphicsJobs: 0 + - m_BuildTarget: MetroSupport + m_GraphicsJobs: 0 + - m_BuildTarget: AppleTVSupport + m_GraphicsJobs: 0 + - m_BuildTarget: BJMSupport + m_GraphicsJobs: 0 + - m_BuildTarget: LuminSupport + m_GraphicsJobs: 0 + - m_BuildTarget: CloudRendering + m_GraphicsJobs: 0 + - m_BuildTarget: EmbeddedLinux + m_GraphicsJobs: 0 + m_BuildTargetGraphicsJobMode: + - m_BuildTarget: PS4Player + m_GraphicsJobMode: 0 + - m_BuildTarget: XboxOnePlayer + m_GraphicsJobMode: 0 m_BuildTargetGraphicsAPIs: - m_BuildTarget: AndroidPlayer m_APIs: 0b00000008000000 - m_Automatic: 1 + m_Automatic: 0 - m_BuildTarget: iOSSupport m_APIs: 10000000 m_Automatic: 1 - m_BuildTarget: AppleTVSupport m_APIs: 10000000 - m_Automatic: 0 + m_Automatic: 1 - m_BuildTarget: WebGLSupport m_APIs: 0b000000 m_Automatic: 1 @@ -297,9 +439,9 @@ PlayerSettings: m_Devices: - Oculus - OpenVR - m_BuildTargetEnableVuforiaSettings: [] openGLRequireES31: 0 openGLRequireES31AEP: 0 + openGLRequireES32: 0 m_TemplateCustomTags: {} mobileMTRendering: Android: 1 @@ -307,6 +449,8 @@ PlayerSettings: tvOS: 1 m_BuildTargetGroupLightmapEncodingQuality: [] m_BuildTargetGroupLightmapSettings: [] + m_BuildTargetNormalMapEncoding: [] + m_BuildTargetDefaultTextureCompressionFormat: [] playModeTestRunnerEnabled: 0 runPlayModeTestAsEditModeTest: 0 actionOnDotNetUnhandledException: 1 @@ -316,12 +460,16 @@ PlayerSettings: cameraUsageDescription: locationUsageDescription: microphoneUsageDescription: + bluetoothUsageDescription: + switchNMETAOverride: switchNetLibKey: switchSocketMemoryPoolSize: 6144 switchSocketAllocatorPoolSize: 128 switchSocketConcurrencyLimit: 14 switchScreenResolutionBehavior: 2 switchUseCPUProfiler: 0 + switchUseGOLDLinker: 0 + switchLTOSetting: 0 switchApplicationID: 0x01004b9000490000 switchNSODependencies: switchTitleNames_0: @@ -339,6 +487,7 @@ PlayerSettings: switchTitleNames_12: switchTitleNames_13: switchTitleNames_14: + switchTitleNames_15: switchPublisherNames_0: switchPublisherNames_1: switchPublisherNames_2: @@ -354,6 +503,7 @@ PlayerSettings: switchPublisherNames_12: switchPublisherNames_13: switchPublisherNames_14: + switchPublisherNames_15: switchIcons_0: {fileID: 0} switchIcons_1: {fileID: 0} switchIcons_2: {fileID: 0} @@ -369,6 +519,7 @@ PlayerSettings: switchIcons_12: {fileID: 0} switchIcons_13: {fileID: 0} switchIcons_14: {fileID: 0} + switchIcons_15: {fileID: 0} switchSmallIcons_0: {fileID: 0} switchSmallIcons_1: {fileID: 0} switchSmallIcons_2: {fileID: 0} @@ -384,6 +535,7 @@ PlayerSettings: switchSmallIcons_12: {fileID: 0} switchSmallIcons_13: {fileID: 0} switchSmallIcons_14: {fileID: 0} + switchSmallIcons_15: {fileID: 0} switchManualHTML: switchAccessibleURLs: switchLegalInformation: @@ -446,6 +598,11 @@ PlayerSettings: switchSocketInitializeEnabled: 1 switchNetworkInterfaceManagerInitializeEnabled: 1 switchPlayerConnectionEnabled: 1 + switchUseNewStyleFilepaths: 0 + switchUseMicroSleepForYield: 1 + switchEnableRamDiskSupport: 0 + switchMicroSleepForYieldTime: 25 + switchRamDiskSpaceSize: 12 ps4NPAgeRating: 12 ps4NPTitleSecret: ps4NPTrophyPackPath: @@ -472,6 +629,7 @@ PlayerSettings: ps4ShareFilePath: ps4ShareOverlayImagePath: ps4PrivacyGuardImagePath: + ps4ExtraSceSysFile: ps4NPtitleDatPath: ps4RemotePlayKeyAssignment: -1 ps4RemotePlayKeyMappingDir: @@ -484,6 +642,7 @@ PlayerSettings: ps4DownloadDataSize: 0 ps4GarlicHeapSize: 2048 ps4ProGarlicHeapSize: 2560 + playerPrefsMaxSize: 32768 ps4Passcode: frAQBc8Wsa1xVPfvJcrgRYwTiizs2trQ ps4pnSessions: 1 ps4pnPresence: 1 @@ -496,6 +655,7 @@ PlayerSettings: ps4UseResolutionFallback: 0 ps4ReprojectionSupport: 0 ps4UseAudio3dBackend: 0 + ps4UseLowGarlicFragmentationMode: 1 ps4SocialScreenEnabled: 0 ps4ScriptOptimizationLevel: 0 ps4Audio3dVirtualSpeakerCount: 14 @@ -512,11 +672,16 @@ PlayerSettings: ps4disableAutoHideSplash: 0 ps4videoRecordingFeaturesUsed: 0 ps4contentSearchFeaturesUsed: 0 + ps4CompatibilityPS5: 0 + ps4AllowPS5Detection: 0 + ps4GPU800MHz: 1 ps4attribEyeToEyeDistanceSettingVR: 0 ps4IncludedModules: [] + ps4attribVROutputEnabled: 0 monoEnv: splashScreenBackgroundSourceLandscape: {fileID: 0} splashScreenBackgroundSourcePortrait: {fileID: 0} + blurSplashScreenBackground: 1 spritePackerPolicy: webGLMemorySize: 256 webGLExceptionSupport: 1 @@ -529,17 +694,26 @@ PlayerSettings: webGLAnalyzeBuildSize: 0 webGLUseEmbeddedResources: 0 webGLCompressionFormat: 1 + webGLWasmArithmeticExceptions: 0 webGLLinkerTarget: 1 webGLThreadsSupport: 0 + webGLDecompressionFallback: 0 scriptingDefineSymbols: {} + additionalCompilerArguments: {} platformArchitecture: {} scriptingBackend: {} il2cppCompilerConfiguration: {} managedStrippingLevel: {} incrementalIl2cppBuild: {} + suppressCommonWarnings: 1 allowUnsafeCode: 0 + useDeterministicCompilation: 1 + enableRoslynAnalyzers: 1 additionalIl2CppArgs: scriptingRuntimeVersion: 1 + gcIncremental: 1 + assemblyVersionValidation: 1 + gcWBarrierValidation: 0 apiCompatibilityLevelPerPlatform: {} m_RenderingPath: 1 m_MobileRenderingPath: 1 @@ -570,7 +744,7 @@ PlayerSettings: metroFTAName: metroFTAFileTypes: [] metroProtocolName: - metroCompilationOverrides: 1 + vcxProjDefaultLanguage: XboxOneProductId: XboxOneUpdateKey: XboxOneSandboxId: @@ -589,18 +763,16 @@ PlayerSettings: XboxOneCapability: [] XboxOneGameRating: {} XboxOneIsContentPackage: 0 + XboxOneEnhancedXboxCompatibilityMode: 0 XboxOneEnableGPUVariability: 1 XboxOneSockets: {} XboxOneSplashScreen: {fileID: 0} XboxOneAllowedProductIds: [] XboxOnePersistentLocalStorageSize: 0 XboxOneXTitleMemory: 8 - xboxOneScriptCompiler: 1 XboxOneOverrideIdentityName: - vrEditorSettings: - daydream: - daydreamIconForeground: {fileID: 0} - daydreamIconBackground: {fileID: 0} + XboxOneOverrideIdentityPublisher: + vrEditorSettings: {} cloudServicesEnabled: UNet: 1 luminIcon: @@ -609,24 +781,20 @@ PlayerSettings: m_PortalFolderPath: luminCert: m_CertPath: - m_PrivateKeyPath: + m_SignPackage: 1 luminIsChannelApp: 0 luminVersion: m_VersionCode: 1 m_VersionName: - facebookSdkVersion: 7.9.4 - facebookAppId: - facebookCookies: 1 - facebookLogging: 1 - facebookStatus: 1 - facebookXfbml: 0 - facebookFrictionlessRequests: 1 apiCompatibilityLevel: 6 + activeInputHandler: 0 cloudProjectId: framebufferDepthMemorylessMode: 0 + qualitySettingsNames: [] projectName: organizationId: cloudEnabled: 0 - enableNativePlatformBackendsForNewInputSystem: 0 - disableOldInputManagerSupport: 0 legacyClampBlendShapeWeights: 0 + playerDataPath: + forceSRGBBlit: 1 + virtualTexturingSupportEnabled: 0 diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 3643b02..8ea1b85 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.3.16f1 -m_EditorVersionWithRevision: 2021.3.16f1 (4016570cf34f) +m_EditorVersion: 2021.3.11f1 +m_EditorVersionWithRevision: 2021.3.11f1 (0a5ca18544bf) From 69fd9bb46f8965fd6ade9d9a409afefe9d374fc0 Mon Sep 17 00:00:00 2001 From: habrador Date: Thu, 18 May 2023 08:14:40 +0200 Subject: [PATCH 53/68] Added new social preview image --- _images/programming-patterns-logo.jpg | Bin 0 -> 124250 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 _images/programming-patterns-logo.jpg diff --git a/_images/programming-patterns-logo.jpg b/_images/programming-patterns-logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5fbef6927f45767c5464ea16db1ef2f1361f319f GIT binary patch literal 124250 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 Date: Tue, 8 Aug 2023 13:36:19 +0200 Subject: [PATCH 54/68] Upgraded to latest Unity LTS version --- Packages/manifest.json | 7 ++++--- Packages/packages-lock.json | 31 +++++++++++++++--------------- ProjectSettings/ProjectVersion.txt | 4 ++-- ProjectSettings/boot.config | 0 4 files changed, 22 insertions(+), 20 deletions(-) delete mode 100644 ProjectSettings/boot.config diff --git a/Packages/manifest.json b/Packages/manifest.json index 821e8e9..3daf840 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -2,12 +2,13 @@ "dependencies": { "com.unity.2d.sprite": "1.0.0", "com.unity.2d.tilemap": "1.0.0", - "com.unity.ide.rider": "3.0.16", - "com.unity.ide.visualstudio": "2.0.17", + "com.unity.ai.navigation": "1.1.4", + "com.unity.ide.rider": "3.0.24", + "com.unity.ide.visualstudio": "2.0.20", "com.unity.ide.vscode": "1.2.5", "com.unity.test-framework": "1.1.33", "com.unity.textmeshpro": "3.0.6", - "com.unity.timeline": "1.6.4", + "com.unity.timeline": "1.7.5", "com.unity.ugui": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 3309de0..87cf5ea 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -10,7 +10,19 @@ "version": "1.0.0", "depth": 0, "source": "builtin", - "dependencies": {} + "dependencies": { + "com.unity.modules.tilemap": "1.0.0", + "com.unity.modules.uielements": "1.0.0" + } + }, + "com.unity.ai.navigation": { + "version": "1.1.4", + "depth": 0, + "source": "registry", + "dependencies": { + "com.unity.modules.ai": "1.0.0" + }, + "url": "https://packages.unity.com/" }, "com.unity.ext.nunit": { "version": "1.0.6", @@ -20,7 +32,7 @@ "url": "https://packages.unity.com/" }, "com.unity.ide.rider": { - "version": "3.0.16", + "version": "3.0.24", "depth": 0, "source": "registry", "dependencies": { @@ -29,7 +41,7 @@ "url": "https://packages.unity.com/" }, "com.unity.ide.visualstudio": { - "version": "2.0.17", + "version": "2.0.20", "depth": 0, "source": "registry", "dependencies": { @@ -65,7 +77,7 @@ "url": "https://packages.unity.com/" }, "com.unity.timeline": { - "version": "1.6.4", + "version": "1.7.5", "depth": 0, "source": "registry", "dependencies": { @@ -217,17 +229,6 @@ "version": "1.0.0", "depth": 0, "source": "builtin", - "dependencies": { - "com.unity.modules.ui": "1.0.0", - "com.unity.modules.imgui": "1.0.0", - "com.unity.modules.jsonserialize": "1.0.0", - "com.unity.modules.uielementsnative": "1.0.0" - } - }, - "com.unity.modules.uielementsnative": { - "version": "1.0.0", - "depth": 1, - "source": "builtin", "dependencies": { "com.unity.modules.ui": "1.0.0", "com.unity.modules.imgui": "1.0.0", diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 3643b02..0a60761 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2021.3.16f1 -m_EditorVersionWithRevision: 2021.3.16f1 (4016570cf34f) +m_EditorVersion: 2022.3.5f1 +m_EditorVersionWithRevision: 2022.3.5f1 (9674261d40ee) diff --git a/ProjectSettings/boot.config b/ProjectSettings/boot.config deleted file mode 100644 index e69de29..0000000 From 16f649a1b78d8016f17b7c6e43004bc93777352f Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 8 Aug 2023 13:49:58 +0200 Subject: [PATCH 55/68] Updated readme --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 68e753f..f2bd65f 100644 --- a/README.md +++ b/README.md @@ -614,3 +614,4 @@ Define a template method in the parent class which consists of calling several m - **[masoudarvishian](https://github.com/masoudarvishian)** for implementing Event Queue pattern, Service Locator pattern, and bug fixing. - **[VladimirMirMir](https://github.com/VladimirMirMir)** for bug fixing. +- **[JayadevHaddadi](https://github.com/JayadevHaddadi)** for fixing event code. From 73d3b6a5eeef1fbfdf7870a88ffc5b15a463b761 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 8 Aug 2023 14:41:31 +0200 Subject: [PATCH 56/68] Updated readme --- README.md | 11 +++++++++++ _text/command.md | 34 ++++++++++++++++++++++++++++++++++ 2 files changed, 45 insertions(+) create mode 100644 _text/command.md diff --git a/README.md b/README.md index f2bd65f..3ecbd8c 100644 --- a/README.md +++ b/README.md @@ -57,12 +57,23 @@ You have a base class called Command which has a method that a child can impleme - To make an undo and redo system. Is similar to the replay system, but in each command you also have a method called Undo() where you do the opposite of what the command is doing. Example of this is available in the code section. +- To encapsulate AI behaviors and actions. Each AI behavior can be represented as a command, making it easier to control and update AI actions during gameplay. + +- To define the sequence of actions to be executed during events or cutscenes in games. + +- To manage and apply different abilities, power-ups, or effects during gameplay. + +- To manage event handling by encapsulating event-specific actions as commands and executing them when the corresponding events occur. + +- To simplify network communication In multiplayer games. Game commands can be serialized and sent over the network to synchronize actions among different players. + **Related patterns** - **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-command-classes. To easier handle the code, you can define high-level methods in the parent. - **Memento.** With this pattern you can also return to a previous state. +[Command](_text/command.md) ## 2. Flyweight diff --git a/_text/command.md b/_text/command.md new file mode 100644 index 0000000..9af8098 --- /dev/null +++ b/_text/command.md @@ -0,0 +1,34 @@ +# 1. Command + +In you game you have many commands, such as play sound, throw cake, etc. It can be useful to wrap them in a command object. Now the command object doesn't have to care about how the command is executed. + +**How to implement?** + +You have a base class called Command which has a method that a child can implement called Execute. In each child class, you put in the Execute method what will actually happen when you run (execute) that command. + +**When is it useful?** + +- To rebind keys. Example of this is available in the code section. + +- To make a replay system. When you play the game, you store in some data structure which button you pressed each update. When you want to replay what has happened, you just iterate through each command while running the game. Example of this is available in the code section. + +- To make an undo and redo system. Is similar to the replay system, but in each command you also have a method called Undo() where you do the opposite of what the command is doing. Example of this is available in the code section. + +- To encapsulate AI behaviors and actions. Each AI behavior can be represented as a command, making it easier to control and update AI actions during gameplay. + +- To define the sequence of actions to be executed during events or cutscenes in games. + +- To manage and apply different abilities, power-ups, or effects during gameplay. + +- To manage event handling by encapsulating event-specific actions as commands and executing them when the corresponding events occur. + +- To simplify network communication In multiplayer games. Game commands can be serialized and sent over the network to synchronize actions among different players. + +**Related patterns** + +- **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-command-classes. To easier handle the code, you can define high-level methods in the parent. + +- **Memento.** With this pattern you can also return to a previous state. + + +## [Back](https://github.com/Habrador/Unity-Programming-Patterns) \ No newline at end of file From 46b6d5104c4c1bdd65c4768a3d05728e61328a3e Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 8 Aug 2023 14:47:35 +0200 Subject: [PATCH 57/68] Updated readme --- _text/command.md | 2 +- _text/flyweight.md | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 _text/flyweight.md diff --git a/_text/command.md b/_text/command.md index 9af8098..84299ee 100644 --- a/_text/command.md +++ b/_text/command.md @@ -31,4 +31,4 @@ You have a base class called Command which has a method that a child can impleme - **Memento.** With this pattern you can also return to a previous state. -## [Back](https://github.com/Habrador/Unity-Programming-Patterns) \ No newline at end of file +## [Back](../) \ No newline at end of file diff --git a/_text/flyweight.md b/_text/flyweight.md new file mode 100644 index 0000000..ef1e8fc --- /dev/null +++ b/_text/flyweight.md @@ -0,0 +1,22 @@ +# 2. Flyweight + +Even though a single object uses little memory – instantiating many of them can cause trouble, so you need to make the objects lighter by sharing code. + +**How to implement?** + +Separate the data that’s not specific to a single instance of that object and can be shared across all of them. You can do that by creating a new class and put the shared data in it. Then each object that should share data gets a reference to a single instance of that "storage" class. + +**When is it useful?** + +- If you make Minecraft and have a million cubes in the scene. All cubes can share the same texture if you put all textures that belongs to each cube type (grass, stone, sand, etc) into a [texture atlas](https://en.wikipedia.org/wiki/Texture_atlas). + +- If you make a strategy game, all infantry units share the same mesh, texture, maxHealth settings, etc. You only need to create one object with this data and then all infantry units can share that object. Each individual infantry unit only need to keep track of its own position and health. + +- This is implemented in Unity as [sharedMesh](https://docs.unity3d.com/ScriptReference/MeshFilter-sharedMesh.html) and [sharedMaterial](https://docs.unity3d.com/ScriptReference/Renderer-sharedMaterial.html). If you make a change to a sharedMesh then all objects using that mesh will get a new mesh. + +**Related patterns** + +- **[Type Object](#12-type-object).** The main difference is that in Type Object you don't need to have the exact same data and you can also have behavior. + + +## [Back](https://github.com/Habrador/Unity-Programming-Patterns) \ No newline at end of file From edd684cd55fb2a2615282c922ad7153c82919196 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 8 Aug 2023 15:31:24 +0200 Subject: [PATCH 58/68] Updated readme --- README.md | 614 ++----------------------------------- _text/bytecode.md | 16 + _text/command.md | 2 +- _text/component.md | 20 ++ _text/data-locality.md | 20 ++ _text/decorator.md | 20 ++ _text/dirty-flag.md | 20 ++ _text/double-buffer.md | 24 ++ _text/event-queue.md | 26 ++ _text/facade.md | 24 ++ _text/factory.md | 26 ++ _text/flyweight.md | 4 +- _text/game-loop.md | 24 ++ _text/object-pool.md | 32 ++ _text/observer.md | 31 ++ _text/prototype.md | 22 ++ _text/service-locator.md | 26 ++ _text/singleton.md | 38 +++ _text/spatial-partition.md | 29 ++ _text/state.md | 34 ++ _text/subclass-sandbox.md | 22 ++ _text/template.md | 18 ++ _text/type-object.md | 22 ++ _text/update-method.md | 12 + 24 files changed, 532 insertions(+), 594 deletions(-) create mode 100644 _text/bytecode.md create mode 100644 _text/component.md create mode 100644 _text/data-locality.md create mode 100644 _text/decorator.md create mode 100644 _text/dirty-flag.md create mode 100644 _text/double-buffer.md create mode 100644 _text/event-queue.md create mode 100644 _text/facade.md create mode 100644 _text/factory.md create mode 100644 _text/game-loop.md create mode 100644 _text/object-pool.md create mode 100644 _text/observer.md create mode 100644 _text/prototype.md create mode 100644 _text/service-locator.md create mode 100644 _text/singleton.md create mode 100644 _text/spatial-partition.md create mode 100644 _text/state.md create mode 100644 _text/subclass-sandbox.md create mode 100644 _text/template.md create mode 100644 _text/type-object.md create mode 100644 _text/update-method.md diff --git a/README.md b/README.md index 3ecbd8c..cd366ca 100644 --- a/README.md +++ b/README.md @@ -9,604 +9,36 @@ Programming patterns can be divided into the following groups: Patterns from the book Game Programming Patterns: -1. [Command](#1-command) -2. [Flyweight](#2-flyweight) -3. [Observer](#3-observer) -4. [Prototype](#4-prototype) -5. [Singleton](#5-singleton) -6. [State](#6-state) -7. [Double Buffer](#7-double-buffer) -8. [Game Loop](#8-game-loop) -9. [Update Method](#9-update-method) -10. [Bytecode](#10-bytecode) -11. [Subclass Sandbox](#11-subclass-sandbox) -12. [Type Object](#12-type-object) -13. [Component](#13-component) -14. [Event Queue](#14-event-queue) -15. [Service Locator](#15-service-locator) -16. [Data Locality](#16-data-locality) -17. [Dirty Flag](#17-dirty-flag) -18. [Object Pool](#18-object-pool) -19. [Spatial Partition](#19-spatial-partition) +1. [Command](_text/command.md) +2. [Flyweight](_text/flyweight.md) +3. [Observer](_text/observer.md) +4. [Prototype](_text/prototype.md) +5. [Singleton](_text/singleton.md) +6. [State](_text/state.md) +7. [Double Buffer](_text/double-buffer) +8. [Game Loop](_text/game-loop) +9. [Update Method](_text/update-method) +10. [Bytecode](_text/bytecode) +11. [Subclass Sandbox](_text/subclass-sandbox) +12. [Type Object](_text/type-object) +13. [Component](_text/component) +14. [Event Queue](_text/event-queue) +15. [Service Locator](_text/service-locator) +16. [Data Locality](_text/data-locality) +17. [Dirty Flag](_text/dirty-flag) +18. [Object Pool](_text/object-pool) +19. [Spatial Partition](_text/spatial-partition) Other patterns: -20. [Decorator](#20-decorator) -21. [Factory](#21-factory) -22. [Facade](#22-facade) -23. [Template](#23-template) +20. [Decorator](_text/decorator) +21. [Factory](_text/factory) +22. [Facade](_text/facade) +23. [Template](_text/template) Note that these are not all patterns out there. I recently read a book called "Machine Learning Design Patterns" which includes even more design patterns with a focus on machine learning problems. But I will continue adding patterns as I find them and if they are related to game development. -# Patterns from the book Game Programming Patterns - -## 1. Command - -In you game you have many commands, such as play sound, throw cake, etc. It can be useful to wrap them in a command object. Now the command object doesn't have to care about how the command is executed. - -**How to implement?** - -You have a base class called Command which has a method that a child can implement called Execute. In each child class, you put in the Execute method what will actually happen when you run (execute) that command. - -**When is it useful?** - -- To rebind keys. Example of this is available in the code section. - -- To make a replay system. When you play the game, you store in some data structure which button you pressed each update. When you want to replay what has happened, you just iterate through each command while running the game. Example of this is available in the code section. - -- To make an undo and redo system. Is similar to the replay system, but in each command you also have a method called Undo() where you do the opposite of what the command is doing. Example of this is available in the code section. - -- To encapsulate AI behaviors and actions. Each AI behavior can be represented as a command, making it easier to control and update AI actions during gameplay. - -- To define the sequence of actions to be executed during events or cutscenes in games. - -- To manage and apply different abilities, power-ups, or effects during gameplay. - -- To manage event handling by encapsulating event-specific actions as commands and executing them when the corresponding events occur. - -- To simplify network communication In multiplayer games. Game commands can be serialized and sent over the network to synchronize actions among different players. - -**Related patterns** - -- **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-command-classes. To easier handle the code, you can define high-level methods in the parent. - -- **Memento.** With this pattern you can also return to a previous state. - -[Command](_text/command.md) - - -## 2. Flyweight - -Even though a single object uses little memory – instantiating many of them can cause trouble, so you need to make the objects lighter by sharing code. - -**How to implement?** - -Separate the data that’s not specific to a single instance of that object and can be shared across all of them. You can do that by creating a new class and put the shared data in it. Then each object that should share data gets a reference to a single instance of that "storage" class. - -**When is it useful?** - -- If you make Minecraft and have a million cubes in the scene. All cubes can share the same texture if you put all textures that belongs to each cube type (grass, stone, sand, etc) into a [texture atlas](https://en.wikipedia.org/wiki/Texture_atlas). - -- If you make a strategy game, all infantry units share the same mesh, texture, maxHealth settings, etc. You only need to create one object with this data and then all infantry units can share that object. Each individual infantry unit only need to keep track of its own position and health. - -- This is implemented in Unity as [sharedMesh](https://docs.unity3d.com/ScriptReference/MeshFilter-sharedMesh.html) and [sharedMaterial](https://docs.unity3d.com/ScriptReference/Renderer-sharedMaterial.html). If you make a change to a sharedMesh then all objects using that mesh will get a new mesh. - -**Related patterns** - -- **[Type Object](#12-type-object).** The main difference is that in Type Object you don't need to have the exact same data and you can also have behavior. - - - -## 3. Observer - -Many things are constantly happening in your game. These things are called events (or messages). The difference between event and message is that an event has happened while a message is something that will happen. So this pattern is all about what will happen after an event has happened. Which methods should be called after you killed an enemy to update score, show death animation, etc? These methods should subscribe to the event. - -**How to implement?** - -This pattern is so popular that C# has implemented it for you. Unity also has its own implementation. Your alternatives are: - -- EventHandler -- Action -- UnityEvent -- Your own implementation by using a delegate - -I've implemented all these in the code, so if you don't understand the difference take a look there. - -**When is it useful?** - -- This pattern is really useful if you want to avoid spaghetti code by making classes independent of each other, also known as decoupling. The best part of events is the part that's triggering the event doesn't care which methods are attached to the event. There might be zero methods. So if an event is triggered but nothing is happening you can easier find where the bug might be. - -- If you really want to decouple your code, then you still have a problem. To subscribe to the event you need a reference to the script where the event is defined. Another way is to create an Event Manager, which is a global class that takes care of all events. Unity has its own tutorial on how to implement that: [Creating a Simple Messaging System](https://www.youtube.com/watch?v=0AqG1fDhPT8). - -- Another way to decouple the code is to make the event static. An example of a static event is available in the code. - -**Related patterns** - -- **[Event Queue](#14-event-queue).** The biggest problem with Observer is that it will trigger all methods subscribing to the event. If five methods subscribe, then five methods will be triggered. But what if 10 enemies are killed at the same time? Then 50 methods will be triggered and it can freeze the game. This is when you should use the Event Queue, which is basically the same as the Observer, but you put the events in a queue and you trigger as many as you can each Update without freezing the game. - -- **Model-View-Controller (MVC).** The MVC is an architectural pattern, and to implement it you can use the Observer pattern. - - - -## 4. Prototype - -In your game you have a game object. Now you want to duplicate that object. This pattern allows you to create as many duplicates of an object as you want. - -**How to implement?** - -This is a pattern that already exists in Unity in the form of the [Instantiate-method](https://docs.unity3d.com/ScriptReference/Object.Instantiate.html). But it assumes that the object you want to duplicate inherits from Object, which is a class in UnityEngine. - -You can also make you own implementation. But then you have to ask yourself: do you do a deep clone (a copy of the structure and the elements in the structure) or a shallow clone (a copy of the structure not the elements in the structure)? Maybe the Flyweight pattern can give you the answer? - -**When is it useful?** - -- If you have a gun that fires bullets. You add one bullet prefab to the script. Each time you fire the gun you need a new bullet because you don't want to use the original bullet, so you call Unity's Instantiate-method and you get a duplicate of the original bullet. - -**Related patterns** - -- **[Factory](#21-factory).** In the Factory you are generally generating new objects - not copies of already existing objects (which may include position and other states). You can put the Prototype inside of the Factory so you have one class where you create all objects instead of having the creation in multiple classes which might be troublesome if you want to change something. - -- **[Object Pool](#18-object-pool).** If you Instantiate and destroy many game objects it will affect the performance of the game. To solve that problem you can use the Object Pool pattern. - - - -## 5. Singleton - -In your game you might have a class that saves the game for you. It's really important that you have just one instance of this class or you might save different versions of the game if each instance includes different data. It should also be easy to access this save game class from where you need it. You can use the Singleton pattern to accomplish this. - -**How to implement?** - -In C#. Make the instance static and provide a public static means of getting the reference to the single created instance. If the instance hasn't been created yet, create it. The constructor should be private and have no parameters. You can find this implemented in the code section. - -If your Singleton has to be thread safe, things will get more complicated. This is a good tutorial on the topic of more advanced Singleton patterns: [Implementing the Singleton Pattern in C#](https://csharpindepth.com/articles/singleton). - -In C# but the class also inherits from MonoBehaviour. If you want the Singleton to also inherit from MonoBehaviour (because you need some of that functionality) things will get more complicated. The problem now is that you can accidentally add several Singletons to the project. So you have to make sure you destroy all except one of the objects. Neither can you use a constructor, because MonoBehaviour doesn't allow it, so you have to implement your own constructor. You can find this implemented in the code section. - -**When is it not useful?** - -- According to the book "Game Programming Patterns," you should avoid this pattern because global objects can cause trouble. If you need to use this pattern, then it should be for manager classes, such as GameController, SaveGame, etc. The fewer Singletons the better! - -- If you use the MonoBehaviour version, a problem is that if you call the Singleton object from another object's OnDestroy method when you quit the game, the Singleton might have already been destroyed. - -**What are some alternatives?** - -You tend to use the Singleton pattern because you want an easy access to that script. But if Singletons are so bad, what are some alternatives? - -- **No class at all.** Most Singeltons are helpers, and in many cases you can remove the manager and put the help-code in the class the manager manages. - -- **Static class.** This is basically the [Service Locator pattern](#15-service-locator). - -- **Unity's built-in Find() and SendMessage().** But these are so slow they should be avoided. If you have to use them, use them only once to get a reference to the script in the Start method. - -- **Assign references to pre-existing objects.** This means dragging the object (on which the script that used to be a Singleton is attached) to public variables exposed in the Editor. The problem now is that this may become very complicated, and if you change a reference you often have to again drag them to wherever it's needed, which may be many locations if you have many objects. - -- **A global event system.** This is the [Observer pattern](#3-observer). You still need a Singleton for this global system, but you can remove all other Singletons. - -- **Dependency Injection.** You inject the reference to the object (that used to be a Singleton) in for example the constructor belonging to the class that need a reference to that object. There's also [Dependency Injection frameworks](https://www.youtube.com/watch?v=6tn8pMQuxEk) to make this process easier. - -- **One Singleton.** Have just one Singleton class and all managers that used to be Singletons are collected in this class. If you need the SaveGame object, you type GameController.Instance.getSaveGameManager(). - - - -## 6. State - -Your game can be in a number of states. The main character can have the following states: jump, walk, run, etc. Now you want an easy way to switch between the states. This pattern is also known as a **state machine,** and if you have a finite amount of states you get a **finite state machine (FSM).** - -**How to implement?** - -You could use an enum that keeps track of each state and then a switch statement. The problem with the switch statement is that it becomes complicated the more states you add. A better way is to define an object for each state and then you switch between the objects as you switch states. - -**When is it useful?** - -- When you have too many nested if-statements, such as in a menu system. In the code, you can see an example of a menu system using the State pattern. - -- Unity is using this pattern in the animation engine. - -- When you make a turn-based combat system: [How to Code a Simple State Machine](https://www.youtube.com/watch?v=G1bd75R10m4). - -- If you are making a GTA-style game. You have one state for driving, one for when the character is not in a vehicle, another state for flying, etc. Then you can also add state-of-states. For example, in the state class where the character is not in a vehicle, you can have several sub-states, such as holding nothing, holding grenade, holding pistol, etc. - -- Enemy AI is often using the State pattern. The creepers in Minecraft have three states: move randomly when you are far away, move towards you if you are closer, blow up when you are very close. - -- The game itself can be a number of states: intro video, main menu, main game, mini game, etc. - -**Related patterns** - -- **[Type Object](#12-type-object).** In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the object in Type Object can be switched you get the State pattern. - -- **Strategy.** With this pattern you can give an object a new behavior (a new strategy to follow) without taking into account its current state or states coming after the current behavior. - -- **Memento.** Same as state but you can roll back to a previous state. - -- **Behavior Tree.** Is useful if you have many states and want a more complex behavior. - - - -## 7. Double Buffer - -You have two buffers: you update #1 with new data while you are not allowed to modify #2 because #2 is holding old data from previous update, which you might want to display on the screen or use when updating #1. When you have finished updating #1, you swap them, so #2 is now including fresh data and you can start updating #1 which is now including old data. - -**How to implement?** - -You can have two arrays. You write to one of them, and when the calculations are finished you swap the pointer to the arrays. - -**When is it useful?** - -- To display stuff on the screen. This is already built-in into you computer which uses two buffers to display stuff on the screen. It reads from #2 while #1 is being updated with new data. When #1 is finished updating, the buffers are switched, so now you will see the newly updated data on the screen. It would look strange if you used just one buffer because then one part of the screen would display old data and one new data in some kind of horrible mix. - -- To generate motion blur. The current buffer is blended with a bit of the previous buffer. - -- Cellular Automata (CA). In games it's common to store data in a grid (which is a 2d array). To calculate new data you combine data from the cells, such as the maximum value of the current cell and surrounding cells. But where are you storing the data for the cell you just calculated? You can't store it in the cell because that will screw up the calculations for neighboring cells because you always want to use old data when doing the calculations. So you use two grids: #2 holds the old data and #1 is using #2 to update itself. When the calculations are finished, you swap them. - - - Cave-generation. This is the example I've included in the code. - - - [Water](http://www.jgallant.com/2d-liquid-simulator-with-cellular-automaton-in-unity/). You simulate movement of water on a grid. - - - [Forest fire](https://www.youtube.com/watch?v=JtGp9eUugFs). You store in each cell the amount of burning material in that cell, then you simulate heat to ignite the material. When there's no more material to burn, the heat disappears. - - - -## 8. Game Loop - -The game loop is the core of all games. It's basically an infinite while loop that keeps updating until you stop it. But the problem with such a while loop is that it updates faster on faster computers than it is on slower computers. This will be very problematic if you have some object that travels with some speed, then it will travel faster on the faster computer. To solve this problem you need to take time into account by using the following: - -- Fixed time step. You determine you want the game to run at 30 frames-per-second (FPS). Now you know how long one while loop should take (1/30 = 0.03333 seconds). If the while loop is faster than that, you simply pause it at the end until 0.03333 seconds has passed. If it's slower, you should optimize your game. - -- Variable (fluid) time step. You measure how many seconds has passed since the last frame. You then pass this time to the update method, so the game world can take bigger steps if the computer is slow and smaller steps if the computer is fast. - -**How to implement?** - -This pattern has already been implemented in Unity, which is actually using both versions of the while loop: - -- Fixed time step: Time.fixedDeltaTime. This version is used for physics calculations where you should use a constant step to make more accurate calculations. - -- Variable time step: [Time.deltaTime](https://docs.unity3d.com/ScriptReference/Time-deltaTime.html), which Unity defines as "The completion time in seconds since the last frame." - -The game loop is also checking for input before anything else. This is why in Unity you can type "if (Input.GetKey(KeyCode.A))" because the game loop has already checked (before the update method) if the A key has been pressed and stored that information in some data structure. - -**When is it useful?** - -- When you have a bullet that should move with a constant speed. So you determine a bulletSpeed and in the update method you multiply the speed with Time.deltaTime so the bullet travels with the same speed no matter how fast the computer is. - - - -## 9. Update Method - -The update method will process one frame of behavior. Each object that needs it should have its own update method because it would be difficult to combine everything in the game loop's update method. So each object that has a update method should be stored in some data structure, such as a list, and then you iterate over each one in the main update method. - -**How to implement?** - -This pattern has already been implemented in Unity, in the form of the Update() method, which you can use if your script inherits from MonoBehaviour. Then Unity processes each Update one-by-one in the main Update method. - -You could instead of using Unity's update method, implement your custom update method. You store all the scripts that uses this custom update method in a list. Then in some script, like a GameController, you iterate through this list in Unity's update method while calling each custom update method one-by-one. This may make it easier to for example pause your game by simply not iterating through that list when the game is paused. I've given an example of this in the code section. - - - -## 10. Bytecode - -What if other people want to help you with your game, but these people have no coding skillz. A solution is to invent a simpler programming language everyone can learn, and then you integrate it with your game. - -**How to implement?** - -The programmers with no skillz write their code in a .txt-file. You read that file, loop through each row, and then use a switch statement to translate the code from your programming language to C#. - -**When is it useful?** - -- If you want to add modding support. - -- If you don't want to hard-code behaviour. - - - -## 11. Subclass Sandbox - -You have similar objects but they have different behavior. Create those behaviors in the child class by combining methods defined in the parent class. - -**How to implement?** - -Define several protected methods in the parent class and how they are implemented. In the child class, you call the methods you need to get the behavior you want. - -**When is it useful?** - -- When your child classes share behavior and the parent class can provide these behaviors. For example if you are using superpowers and the child class can combine these superpowers. This is an example from the book so you can find the code in the code section. - -**Related patterns** - -- **[Update Method](#9-update-method).** The Update Method is often implemented as a Sandbox method. - -- **[Type Object](#12-type-object).** Instead of defining all methods in the parent you could give the child a reference to an object that defines these methods. - -- **[Template](#23-template).** Is the opposite of the Subclass sandbox pattern. In the Subclass Sandbox you implement the methods in the parent class while in Template you implement the methods in the child class. - - - -## 12. Type Object - -You have an object and now you want to change its type (such as behavior or some data) by giving it a reference to an object that defines the type, thus the name Type Object. Another way could be to use class inheritance to define a child class which includes to code for the type, but that's not always possible because different children may be of the same type. - -**How to implement?** - -The Type Objects should share the same interface (or parent) to make it easier for the main class to reference the object. - -**When is it useful?** - -- When you can't (or don't want to) use class inehritance. Let's say you make a game with animals. You have a base class which is parent to all animals, and then as children to that class you add birds, fish, and mammals. In the bird class you define a flying behavior, which is all fine until you add an ostrich, which can't fly. In that case you have to inherit from the bird class and create new children that can fly and can't fly. But what about bats, which is a mammal that can fly? You don't want to add flying behavior in two separate classes! A better way is to define a flying and a non-flying type in a separate class, so both ostriches remain on the ground and bats can fly. - -**Related patterns** - -- **[State](#6-state).** In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the type can be switched you get the State pattern. - -- **[Subclass Sandbox](#11-subclass-sandbox).** You could define all types in the parent class and then combine them in the child class. - -- **[Component](#13-component).** The difference is that the Component is not always coupled with something else on the game object – it’s living its own life. In Unity you can add colliders, scripts, mesh renderers and they don’t need to know about each other to function. Type Object, however, is about adding a behavior to an existing class, so the type can't live on its own. - - - -## 13. Component - -When making a big game you should start thinking in components. A component is similar to your computer mouse, which you can attach to whatever computer you want through a USB port and it works fine. So a component is an object that's independent of other objects, making it reusable, and you can attach the component to several other objects if you want those objects to get the behavior described by the component. But in reality, some components have to communicate with each other, so they can't be entirely independent of each other: The mouse is communicating with the computer, but it's not communicating with the printer. - -**How to implement?** - -In Unity you can attach components to GameObjects, such as colliders, mesh renderers, your own scripts, so it's already built-in. It's up to you to make the custom scripts you attach as reusable as possible. - -**When is it useful?** - -- Because Unity's FPS counter is not to be trusted, you can have a custom FPS counter that you re-use throughout all projects. Just add the script to the project and attach it to some GameObject and it works fine independently of everything else going on in the game. - -- When making a car game you can put physics in one script, such as drag and rolling resistance, becuse physics will always affect the car and the physics calculations are the same for all cars. This component will not be completely independent because it will need some data from the car, such as current speed, but as said before that's fine. - -**Related patterns** - -- **[Type Object](#12-type-object).** The difference is that the Component is not always coupled with something else on the game object – it’s living its own life. In Unity you can add colliders, scripts, mesh renderers and they don’t need to know about each other to function. Type Object, however, is about adding a behavior to an existing class, so the type can't live on its own. - - - -## 14. Event Queue - -You have some events but you can wait until later to process each event. This may be useful if you have many events that may be activated at the same time which will freeze the game because this pattern will spread them out over some time period. - -**How to implement?** - -Combine the [Command](#1-command) pattern with C#'s built-in queue, which is why this pattern is sometimes known as a **Command Queue**. In the Update method you pick the first Command in the queue and run it while measuring time. To measure time you can use System.Diagnostics.Stopwatch. If you have time to spare, you run the next Command, and so on until you are out of time. How much time you can spend on the Event Queue each update depends on the game, so you have to experiment. - -**When is it useful?** - -- When you after an event will load an asset. This may take time, so if you want to play a sound when clicking a button, the game may freeze because it has to load the sound. A better way is to play the sound some frames after the click. - -- When you after an event will play a sound effect. What if 100 enemies die at the same time and each time an enemy dies you play a death-sound. Now 100 sounds will play at the same time. If you put the events in a queue, you can check if a sound is already playing and then ignore the event. You can also merge the events that are the same, so you have only one of each event type in the queue. - -- If you are making a strategy game, you can put orders in the queue that the player wants a certain unit to do: 1. build wall, 2. collect food, 3. attack creature. Now the player doesn't have to wait for a unit to finish one task. You can also put waypoints in the queue to make a unit patrol between waypoints. The AI can also put commands in a queue to for example determine which units should attack. - -- When making a speech system. Each character has its own queue with audio it wants to say. To know which character should speak, you can go through all queues. If the player presses Escape because the player doesn't want to listen to the talk, you simply clear all queues. - -**Related patterns** - -- **Event Bus.** Similar to Event Queue but there's no delay. - -- **[Observer](#3-observer).** You use the Observer pattern to implement the Event Queue. - - - -## 15. Service Locator - -When making your game you use many standardized methods to for example generate random numbers. These are called services and should be accessible from everywhere (globally) but still be independet from your game's main code. - -**How to implement?** - -Put each service in a static class. The static class should be in its own folder and have its own namespace to make sure you are not mixing the services with your main code. - -Use a Service Locator that provides access to a service provider. To make sure no other methods than the ones you need are exposed to the outside world, the service provider should limit which methods it can provide access to. - -Unity has implemented this pattern in the form of the GetComponent() method. - -**When is it useful?** - -- Several services are already built-in into Unity, such as Random.Range() to get a random number, Mathf.PI to get pi, and Debug.Log() to display something in the console. - -- In the game you may have different audio objects depending on if the game is running on a console or PC. This is the same example as in the book so you can find the code for it in the code section. - -**Related patterns** - -- **[Singleton](#5-singleton).** Both provide a global access to an object. So the problems with the Singleton also applies to this pattern. - -- **[Facade](#22-facade).** You can use Facade in combination with Service Locator. - - - -## 16. Data Locality - -Have you done all optimizations you can possible do? Is the game still too slow? Then this pattern may help you. It can make your game faster by accelerating memory access. - -**How to implement?** - -You have to arrange data to take advantage of CPU caching. The basic idea is that you should organize your data structures so that the things you're processing are next to each other in memory. This is a big topic and can't be summarized here, so you should read about it in the book "Game Programming Patterns." - -This Unity article suggest that you should use struct instead of class because they are more cache friendly [How to Write Faster Code Than 90% of Programmers](https://jacksondunstan.com/articles/3860). - -Unity has implemented this pattern in their [Data-Oriented Technology Stack (DOTS)](https://unity.com/dots). - -A good Unity tutorial on the topic is: [Unity Memory Profiler: Where Are You Wasting Your Game's Memory?](https://thegamedev.guru/unity-memory/profiler-part-1/) and [Part 2](https://thegamedev.guru/unity-memory/profiler-part-2/). - -**When is it useful?** - -- According to the book "Game Programming Patterns," this pattern should be used when everything else has failed. It's a waste of time to optimize code that doesn't need to be optimized - and it may also make the code more complicated to understand. You also have to make sure that cache misses is the reason your code is slow, so you first have to measure it. - - - -## 17. Dirty Flag - -This pattern is useful if something has changed in your game and if so you have to run a costly operation. A Dirty Flag is used to tell that something has changed but the costly operation hasn't been activated yet. You can often postpone the costly operation until the result is actually needed. - -**How to implement?** - -The dirty flag is just a bool. - -**When is it useful?** - -- Saving your game can be a costly operation. If something in your game has changed that also needs to be saved, you set a Dirty Flag in the save game object to true. Now if the player wants to quit the game, you can easily tell the player that there are unsaved changes. An example of this can be found in the code section. - -- When doing editor scripting in Unity, you can use SetDirty() to mark an object as dirty or you can even mark the entire scene as dirty. Now Unity will understand that you have changed something and those changes should be saved when you save your scene. - -- Unity is using it in the physics system. A RigidBody doesn't have to be updated unless a force is applied to it. If the RigidBody is sleeping (not moving), a Dirty Flag is used so the physics system can ignore it. - -- I used this pattern when experimenting with Genetic Algorithms (GA) and the Traveling Salesman Problem (TSP) where you find the shortest path between multiple cities. The GA generates multiple solutions, like 100, to the TSP and then each iteration you evolve 100 better solutions by calculating a cost function, which is the distance between all cities. You can use "tournament selection" to find good solutions from the previous iteration to the next, which is basically picking 3 solutions and returns the solution with the shortest distance between all cities. I realized I didn't have to calculate the cost fuction 100 times each iteration because it's a costly operation. To optimize I only calculate the cost function of the cities being picked by the tournament selection. I kept track of which solution has had its cost fuction calculated by using a bool which is set to false each iteration and then to true if the cost function has been run. - - - -## 18. Object Pool - -If you constantly create and destroy objects, the performance of your game will suffer. A better way is to create the objects once when you start the game and deactivate them. When you need an object, you pick one of the deactivate objects and activate it. When you don't need the object anymore, you deactivate it instead of destroying it. - -**How to implement?** - -Create a class called object pool. Give it an object prefab and instantiate the number of objects you think you will need. Store them in a list. When you need an object you search through the list for a deactivated object and returns the first you find. If you realize you need more objects than the objects you started with, you have a few choises: - - - You can instantiate more objects during gameplay. But make sure you don't instantiate too many objects because it will be a waste of memory. You could later remove the "extra" objects you added. - - - Pick one of the objects that's active but the player will not notice if it suddeny disappears so you can use it. - - - Ignore that you have no more objects, which may be fine. If the screen is filled with explosions, the player will not notice a new explosion is missing. - -If you search the list to find an avilable object, and the list is very long because you have many pooled objects, you waste time. A better way is to store the objects in the pool in a linked-list. - -This pattern is so popular Unity has implemented their own version of it called [ObjectPool](https://docs.unity3d.com/ScriptReference/Pool.ObjectPool_1.html). Is only available in later versions of Unity. - -**When is it useful?** - -- When you fire bullets from a gun then you will need many bullets. I've given an example of this in the code section. You can find three versions: the optimized version which uses a linked-list, the slow ut simple version which has to search a list, and Unity's native object pool. - -- Unity is using this pattern in their particle system. In the particle settings you can set max number of particles, which can be useful so you don't accidentally instantiate millions of particles. - -**Related patterns** - -- **[Data Locality](#16-data-locality).** In this pattern you pack objects of the same type together in memory. It will help the CPU cache to be full as the game iterates over those objects, which is what the Data Locality patterns is about. - -- **[Prototype](#4-prototype).** - - - -## 19. Spatial Partition - -If you have many objects in your game, store the objects in a data structure that organizes the objects by their positions. This should make it faster to for example find which objects are colliding. - -**How to implement?** - -This is a common pattern, so you have several choices: - -- **Grid.** Divide the area into a grid and store in the data structure in which cell each object is located. This is the example from the book, so you can find the code for it in the code section. An alternative implementation can be found here: [Find overlaps among thousands of objects blazing fast](https://github.com/Habrador/Ten-Minute-Physics-Unity) which is implementing "Spatial Hashing" meaning that you are no longer bounded to a fixed grid - you can use a grid of infinite size! - -- **Trie.** Is actually called [Trie](https://en.wikipedia.org/wiki/Trie) and not Tree! - - [Quadtree (2d space)](https://en.wikipedia.org/wiki/Quadtree). Divide the square area into 4 cells. But if too many objects are in the same cell, divide that cell into 4 new cells. Continue until there are not "too many objects in the same cell." A good tutorial can be found here: [Coding Challenge #98.1: Quadtree - Part 1](https://www.youtube.com/watch?v=OJxEcs0w_kE). - - [Octree (3d space)](https://en.wikipedia.org/wiki/Octree). Is similar to Quadtree, but instead of cells you use cubes, so divide a cube volume into 8 cubes, and then split each cube into 8 new cubes and so on. - -- **Binary search trees.** The name is binary, so the difference between Tree is that you split the groups into 2 smaller groups, and then you split one of the smaller groups into 2 smaller groups, and so on. - - [Binary space partition (BSP)](https://en.wikipedia.org/wiki/Binary_space_partitioning). You use a plane to split a group into 2 new groups. And then you use another plane to split the new group into 2 new groups, and so on until you are finished. - - [k-d trees](https://en.wikipedia.org/wiki/K-d_tree). In this case it has to be points that you split into smaller, and smaller groups. - - [Bounding volume hierarchy](https://en.wikipedia.org/wiki/Bounding_volume_hierarchy). You pick a bounding volume (or area in 2d space), such as a rectangle. The size of the first rectangle is determined so all objects fit within it. Then you split the rectangle into two new rectangles, and so on. - -If the objects move you have to update the data structure. These data stuctures are also using more memory meaning you have to measure that putting the objects in a data structure is faster than just searching for the closest object. - -**When is it useful?** - -- Find the closest object to a character. This can be a really slow process if you have hundreds of objects around the character. And if you have soldiers fighting soldiers, you have to make that seach for each soldier. A better way is to divide the search-area so you don't have to search thorough all objects - just the ones closest to you. - -- To increase the performance of collision detection and raytracing. - - - -# Other patterns - - - -## 20. Decorator - -You have a class you want to add some behaviors to in a flexible way without modifying the original class. - -**How to implement?** - -You have a class and now you create several "decorator" classes that modifies some of the behaviors in the class you want to modify. The decorator class should wrap the class it wants to modify. The decorator class can in turn wrap itself to add other behaviors. This might be easier than the alternative to create child classes. - -**When is it useful?** - -- If you have an order system where people order several products at the same time but pay at a later time. An example of this can be found in the code section where you order Tesla cars with modifications. Yes you could store each order in a list, but a better way is to store them in objects linked to each other. Instead of iterating through each object to find the price, you can just ask the "last" object to get the price of the entire chain. - -- If you ever played Pubg you know you have weapons to which you can attach various attachments you find while playing the game. You can find magazines, sights, silenzers, etc, modifying the weapon's properties. You can use the Decorator pattern to implement this in your game. - -**Related patterns** - -- **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-classes. To easier handle the code, you can define high-level methods in the parent. - - - -## 21. Factory - -Collect all methods on how to create new objects in their own class. The factory can also be responsible for the destruction of objects. - -**How to implement?** - -If you are creating several different factories, then they should inherit from some parent abstract class. And the products you create should also inherit from some parent abstract class, so you can handle them as their parent without caring which child product that actually came out from the factory. - -**When is it useful?** - -- If you've implemented the [Decorator](#20-decorator) then you can decorate the objects in a procedural way by using the Factory pattern. An example of this is in the code where you manufacture the Tesla cars you ordered in the Decorator pattern example. - -- To play sounds on different devices. An example of this can be found in the code section. - -- For each object you make you have to allocate some memory. By creating all objects in a central area it makes it easier to monitor these allocations. - -- To keep track of all of your Singletons. - -**Related patterns** - -- **[Prototype](#4-prototype).** The Prototype pattern is generally used if you want to make a copy of an existing object, while the Factory pattern is generating new objects. But some argue you can put the Prototype pattern inside of the Factory pattern. - -- **[Object Pool](#18-object-pool).** The factory doesn't have to create new objects - it can be a recycling plant if you combine Factory with Object Pool. - - - -## 22. Facade - -When you have several related classes, such as AI or audio, and want to make it simpler to access methods in those classes. The name Facade comes from [building facades](https://en.wikipedia.org/wiki/Fa%C3%A7ade) - you can only see the exterior of the building, but have no idea how the building looks like inside. You can still access classes in the subsystem if you need to - the Facade is just making it simpler to access the more common classes. - -**How to implement?** - -Create a manager class that provides a single interface to a large collection of related classes. - -**When is it useful?** - -- In games it's common to write standardized code libraries, such as a library for the AI, which includes pathfinding, etc. These tend to include massive amounts of classes. To make it easier for yourself you create a script that includes access to the most important methods you need, such as get a short path. I made an open source library: [Computational geometry](https://github.com/Habrador/Computational-geometry). There are multiple methods on how to generate a Delaunay triangulation. To simplify the access to those methods I wrote a class called _Delaunay, which access each Delaunay method in a simple way. Otherwise you would have to first go into the Delaunay folder and figure out which class is doing what and which method you should use to generate the needed Delaunay triangulation. And if I decided to use another triangulation library I only need to change the facade script. Multiple Facades are allowed, so I also have another Facade for the intersection algorithms. - -- Random numbers are common in games. Should you use Unity's Random.Range or C#'s System.Random.Next? You can use the Facade pattern to easier switch between them. An example of this can be found in the code section. And if you find a third random number library, you can add it and you don't have to make a single change to the code that uses this Facade. - -**Related patterns** - -- **[Service Locator](#15-service-locator).** The Service Locator is not necessarily consisting of several classes - the service we want to get might consist of a single class. But the Service Locator can use the Facade Pattern. - -- **[Singleton](#5-singleton).** The facade class is often a Singleton because you need only a single object to manage access to audio or to AI. - -- **Adapter.** This pattern is dealing with how to make code you can't modify work with your system. While Facade creates a new interface to simplify, Adapter adapts an old interface. These patterns are so similar that a book included both in the same chapter. - - - -## 23. Template - -You have objects that uses the same overall algorithm, but the objects implement some steps in the algorithm in a different way. - -**How to implement?** - -Define a template method in the parent class which consists of calling several methods. In the child class, you override the methods that are specific for the child class. - -**When is it useful?** - -- When your child classes share behavior and the parent class can provide these behaviors. The example in the code shows how to assemble Tesla cars. While each car consists of different parts the process of assembling a car is the same. - -**Related patterns** - -- **[Subclass Sandbox](#11-subclass-sandbox).** Is the opposite of the Template pattern. In the Subclass Sandbox you implement the methods in the parent class, while in Template you implement the methods in the child class. - - # Sources and Read More diff --git a/_text/bytecode.md b/_text/bytecode.md new file mode 100644 index 0000000..fa02681 --- /dev/null +++ b/_text/bytecode.md @@ -0,0 +1,16 @@ +# 10. Bytecode + +What if other people want to help you with your game, but these people have no coding skillz. A solution is to invent a simpler programming language everyone can learn, and then you integrate it with your game. + +**How to implement?** + +The programmers with no skillz write their code in a .txt-file. You read that file, loop through each row, and then use a switch statement to translate the code from your programming language to C#. + +**When is it useful?** + +- If you want to add modding support. + +- If you don't want to hard-code behaviour. + + +## [Back](../) \ No newline at end of file diff --git a/_text/command.md b/_text/command.md index 84299ee..cca9c46 100644 --- a/_text/command.md +++ b/_text/command.md @@ -26,7 +26,7 @@ You have a base class called Command which has a method that a child can impleme **Related patterns** -- **[Subclass Sandbox](#11-subclass-sandbox).** You may end up with many child-command-classes. To easier handle the code, you can define high-level methods in the parent. +- **Subclass Sandbox.** You may end up with many child-command-classes. To easier handle the code, you can define high-level methods in the parent. - **Memento.** With this pattern you can also return to a previous state. diff --git a/_text/component.md b/_text/component.md new file mode 100644 index 0000000..09bff6a --- /dev/null +++ b/_text/component.md @@ -0,0 +1,20 @@ +# 13. Component + +When making a big game you should start thinking in components. A component is similar to your computer mouse, which you can attach to whatever computer you want through a USB port and it works fine. So a component is an object that's independent of other objects, making it reusable, and you can attach the component to several other objects if you want those objects to get the behavior described by the component. But in reality, some components have to communicate with each other, so they can't be entirely independent of each other: The mouse is communicating with the computer, but it's not communicating with the printer. + +**How to implement?** + +In Unity you can attach components to GameObjects, such as colliders, mesh renderers, your own scripts, so it's already built-in. It's up to you to make the custom scripts you attach as reusable as possible. + +**When is it useful?** + +- Because Unity's FPS counter is not to be trusted, you can have a custom FPS counter that you re-use throughout all projects. Just add the script to the project and attach it to some GameObject and it works fine independently of everything else going on in the game. + +- When making a car game you can put physics in one script, such as drag and rolling resistance, becuse physics will always affect the car and the physics calculations are the same for all cars. This component will not be completely independent because it will need some data from the car, such as current speed, but as said before that's fine. + +**Related patterns** + +- **Type Object.** The difference is that the Component is not always coupled with something else on the game object – it’s living its own life. In Unity you can add colliders, scripts, mesh renderers and they don’t need to know about each other to function. Type Object, however, is about adding a behavior to an existing class, so the type can't live on its own. + + +## [Back](../) \ No newline at end of file diff --git a/_text/data-locality.md b/_text/data-locality.md new file mode 100644 index 0000000..071efe1 --- /dev/null +++ b/_text/data-locality.md @@ -0,0 +1,20 @@ +# 16. Data Locality + +Have you done all optimizations you can possible do? Is the game still too slow? Then this pattern may help you. It can make your game faster by accelerating memory access. + +**How to implement?** + +You have to arrange data to take advantage of CPU caching. The basic idea is that you should organize your data structures so that the things you're processing are next to each other in memory. This is a big topic and can't be summarized here, so you should read about it in the book "Game Programming Patterns." + +This Unity article suggest that you should use struct instead of class because they are more cache friendly [How to Write Faster Code Than 90% of Programmers](https://jacksondunstan.com/articles/3860). + +Unity has implemented this pattern in their [Data-Oriented Technology Stack (DOTS)](https://unity.com/dots). + +A good Unity tutorial on the topic is: [Unity Memory Profiler: Where Are You Wasting Your Game's Memory?](https://thegamedev.guru/unity-memory/profiler-part-1/) and [Part 2](https://thegamedev.guru/unity-memory/profiler-part-2/). + +**When is it useful?** + +- According to the book "Game Programming Patterns," this pattern should be used when everything else has failed. It's a waste of time to optimize code that doesn't need to be optimized - and it may also make the code more complicated to understand. You also have to make sure that cache misses is the reason your code is slow, so you first have to measure it. + + +## [Back](../) \ No newline at end of file diff --git a/_text/decorator.md b/_text/decorator.md new file mode 100644 index 0000000..3831028 --- /dev/null +++ b/_text/decorator.md @@ -0,0 +1,20 @@ +# 20. Decorator + +You have a class you want to add some behaviors to in a flexible way without modifying the original class. + +**How to implement?** + +You have a class and now you create several "decorator" classes that modifies some of the behaviors in the class you want to modify. The decorator class should wrap the class it wants to modify. The decorator class can in turn wrap itself to add other behaviors. This might be easier than the alternative to create child classes. + +**When is it useful?** + +- If you have an order system where people order several products at the same time but pay at a later time. An example of this can be found in the code section where you order Tesla cars with modifications. Yes you could store each order in a list, but a better way is to store them in objects linked to each other. Instead of iterating through each object to find the price, you can just ask the "last" object to get the price of the entire chain. + +- If you ever played Pubg you know you have weapons to which you can attach various attachments you find while playing the game. You can find magazines, sights, silenzers, etc, modifying the weapon's properties. You can use the Decorator pattern to implement this in your game. + +**Related patterns** + +- **Subclass Sandbox.** You may end up with many child-classes. To easier handle the code, you can define high-level methods in the parent. + + +## [Back](../) \ No newline at end of file diff --git a/_text/dirty-flag.md b/_text/dirty-flag.md new file mode 100644 index 0000000..831cb36 --- /dev/null +++ b/_text/dirty-flag.md @@ -0,0 +1,20 @@ +# 17. Dirty Flag + +This pattern is useful if something has changed in your game and if so you have to run a costly operation. A Dirty Flag is used to tell that something has changed but the costly operation hasn't been activated yet. You can often postpone the costly operation until the result is actually needed. + +**How to implement?** + +The dirty flag is just a bool. + +**When is it useful?** + +- Saving your game can be a costly operation. If something in your game has changed that also needs to be saved, you set a Dirty Flag in the save game object to true. Now if the player wants to quit the game, you can easily tell the player that there are unsaved changes. An example of this can be found in the code section. + +- When doing editor scripting in Unity, you can use SetDirty() to mark an object as dirty or you can even mark the entire scene as dirty. Now Unity will understand that you have changed something and those changes should be saved when you save your scene. + +- Unity is using it in the physics system. A RigidBody doesn't have to be updated unless a force is applied to it. If the RigidBody is sleeping (not moving), a Dirty Flag is used so the physics system can ignore it. + +- I used this pattern when experimenting with Genetic Algorithms (GA) and the Traveling Salesman Problem (TSP) where you find the shortest path between multiple cities. The GA generates multiple solutions, like 100, to the TSP and then each iteration you evolve 100 better solutions by calculating a cost function, which is the distance between all cities. You can use "tournament selection" to find good solutions from the previous iteration to the next, which is basically picking 3 solutions and returns the solution with the shortest distance between all cities. I realized I didn't have to calculate the cost fuction 100 times each iteration because it's a costly operation. To optimize I only calculate the cost function of the cities being picked by the tournament selection. I kept track of which solution has had its cost fuction calculated by using a bool which is set to false each iteration and then to true if the cost function has been run. + + +## [Back](../) \ No newline at end of file diff --git a/_text/double-buffer.md b/_text/double-buffer.md new file mode 100644 index 0000000..8dfcdb6 --- /dev/null +++ b/_text/double-buffer.md @@ -0,0 +1,24 @@ +# 7. Double Buffer + +You have two buffers: you update #1 with new data while you are not allowed to modify #2 because #2 is holding old data from previous update, which you might want to display on the screen or use when updating #1. When you have finished updating #1, you swap them, so #2 is now including fresh data and you can start updating #1 which is now including old data. + +**How to implement?** + +You can have two arrays. You write to one of them, and when the calculations are finished you swap the pointer to the arrays. + +**When is it useful?** + +- To display stuff on the screen. This is already built-in into you computer which uses two buffers to display stuff on the screen. It reads from #2 while #1 is being updated with new data. When #1 is finished updating, the buffers are switched, so now you will see the newly updated data on the screen. It would look strange if you used just one buffer because then one part of the screen would display old data and one new data in some kind of horrible mix. + +- To generate motion blur. The current buffer is blended with a bit of the previous buffer. + +- Cellular Automata (CA). In games it's common to store data in a grid (which is a 2d array). To calculate new data you combine data from the cells, such as the maximum value of the current cell and surrounding cells. But where are you storing the data for the cell you just calculated? You can't store it in the cell because that will screw up the calculations for neighboring cells because you always want to use old data when doing the calculations. So you use two grids: #2 holds the old data and #1 is using #2 to update itself. When the calculations are finished, you swap them. + + - Cave-generation. This is the example I've included in the code. + + - [Water](http://www.jgallant.com/2d-liquid-simulator-with-cellular-automaton-in-unity/). You simulate movement of water on a grid. + + - [Forest fire](https://www.youtube.com/watch?v=JtGp9eUugFs). You store in each cell the amount of burning material in that cell, then you simulate heat to ignite the material. When there's no more material to burn, the heat disappears. + + +## [Back](../) \ No newline at end of file diff --git a/_text/event-queue.md b/_text/event-queue.md new file mode 100644 index 0000000..832d95b --- /dev/null +++ b/_text/event-queue.md @@ -0,0 +1,26 @@ +# 14. Event Queue + +You have some events but you can wait until later to process each event. This may be useful if you have many events that may be activated at the same time which will freeze the game because this pattern will spread them out over some time period. + +**How to implement?** + +Combine the Command pattern with C#'s built-in queue, which is why this pattern is sometimes known as a **Command Queue**. In the Update method you pick the first Command in the queue and run it while measuring time. To measure time you can use System.Diagnostics.Stopwatch. If you have time to spare, you run the next Command, and so on until you are out of time. How much time you can spend on the Event Queue each update depends on the game, so you have to experiment. + +**When is it useful?** + +- When you after an event will load an asset. This may take time, so if you want to play a sound when clicking a button, the game may freeze because it has to load the sound. A better way is to play the sound some frames after the click. + +- When you after an event will play a sound effect. What if 100 enemies die at the same time and each time an enemy dies you play a death-sound. Now 100 sounds will play at the same time. If you put the events in a queue, you can check if a sound is already playing and then ignore the event. You can also merge the events that are the same, so you have only one of each event type in the queue. + +- If you are making a strategy game, you can put orders in the queue that the player wants a certain unit to do: 1. build wall, 2. collect food, 3. attack creature. Now the player doesn't have to wait for a unit to finish one task. You can also put waypoints in the queue to make a unit patrol between waypoints. The AI can also put commands in a queue to for example determine which units should attack. + +- When making a speech system. Each character has its own queue with audio it wants to say. To know which character should speak, you can go through all queues. If the player presses Escape because the player doesn't want to listen to the talk, you simply clear all queues. + +**Related patterns** + +- **Event Bus.** Similar to Event Queue but there's no delay. + +- **Observer.** You use the Observer pattern to implement the Event Queue. + + +## [Back](../) \ No newline at end of file diff --git a/_text/facade.md b/_text/facade.md new file mode 100644 index 0000000..05523b7 --- /dev/null +++ b/_text/facade.md @@ -0,0 +1,24 @@ +# 22. Facade + +When you have several related classes, such as AI or audio, and want to make it simpler to access methods in those classes. The name Facade comes from [building facades](https://en.wikipedia.org/wiki/Fa%C3%A7ade) - you can only see the exterior of the building, but have no idea how the building looks like inside. You can still access classes in the subsystem if you need to - the Facade is just making it simpler to access the more common classes. + +**How to implement?** + +Create a manager class that provides a single interface to a large collection of related classes. + +**When is it useful?** + +- In games it's common to write standardized code libraries, such as a library for the AI, which includes pathfinding, etc. These tend to include massive amounts of classes. To make it easier for yourself you create a script that includes access to the most important methods you need, such as get a short path. I made an open source library: [Computational geometry](https://github.com/Habrador/Computational-geometry). There are multiple methods on how to generate a Delaunay triangulation. To simplify the access to those methods I wrote a class called _Delaunay, which access each Delaunay method in a simple way. Otherwise you would have to first go into the Delaunay folder and figure out which class is doing what and which method you should use to generate the needed Delaunay triangulation. And if I decided to use another triangulation library I only need to change the facade script. Multiple Facades are allowed, so I also have another Facade for the intersection algorithms. + +- Random numbers are common in games. Should you use Unity's Random.Range or C#'s System.Random.Next? You can use the Facade pattern to easier switch between them. An example of this can be found in the code section. And if you find a third random number library, you can add it and you don't have to make a single change to the code that uses this Facade. + +**Related patterns** + +- **Service Locator.** The Service Locator is not necessarily consisting of several classes - the service we want to get might consist of a single class. But the Service Locator can use the Facade Pattern. + +- **Singleton.** The facade class is often a Singleton because you need only a single object to manage access to audio or to AI. + +- **Adapter.** This pattern is dealing with how to make code you can't modify work with your system. While Facade creates a new interface to simplify, Adapter adapts an old interface. These patterns are so similar that a book included both in the same chapter. + + +## [Back](../) \ No newline at end of file diff --git a/_text/factory.md b/_text/factory.md new file mode 100644 index 0000000..ca3f26a --- /dev/null +++ b/_text/factory.md @@ -0,0 +1,26 @@ +# 21. Factory + +Collect all methods on how to create new objects in their own class. The factory can also be responsible for the destruction of objects. + +**How to implement?** + +If you are creating several different factories, then they should inherit from some parent abstract class. And the products you create should also inherit from some parent abstract class, so you can handle them as their parent without caring which child product that actually came out from the factory. + +**When is it useful?** + +- If you've implemented the **Decorator** then you can decorate the objects in a procedural way by using the Factory pattern. An example of this is in the code where you manufacture the Tesla cars you ordered in the Decorator pattern example. + +- To play sounds on different devices. An example of this can be found in the code section. + +- For each object you make you have to allocate some memory. By creating all objects in a central area it makes it easier to monitor these allocations. + +- To keep track of all of your Singletons. + +**Related patterns** + +- **Prototype.** The Prototype pattern is generally used if you want to make a copy of an existing object, while the Factory pattern is generating new objects. But some argue you can put the Prototype pattern inside of the Factory pattern. + +- **Object Pool.** The factory doesn't have to create new objects - it can be a recycling plant if you combine Factory with Object Pool. + + +## [Back](../) \ No newline at end of file diff --git a/_text/flyweight.md b/_text/flyweight.md index ef1e8fc..b0daa2c 100644 --- a/_text/flyweight.md +++ b/_text/flyweight.md @@ -16,7 +16,7 @@ Separate the data that’s not specific to a single instance of that object and **Related patterns** -- **[Type Object](#12-type-object).** The main difference is that in Type Object you don't need to have the exact same data and you can also have behavior. +- **Type Object.** The main difference is that in Type Object you don't need to have the exact same data and you can also have behavior. -## [Back](https://github.com/Habrador/Unity-Programming-Patterns) \ No newline at end of file +## [Back](../) \ No newline at end of file diff --git a/_text/game-loop.md b/_text/game-loop.md new file mode 100644 index 0000000..134cd3e --- /dev/null +++ b/_text/game-loop.md @@ -0,0 +1,24 @@ +# 8. Game Loop + +The game loop is the core of all games. It's basically an infinite while loop that keeps updating until you stop it. But the problem with such a while loop is that it updates faster on faster computers than it is on slower computers. This will be very problematic if you have some object that travels with some speed, then it will travel faster on the faster computer. To solve this problem you need to take time into account by using the following: + +- Fixed time step. You determine you want the game to run at 30 frames-per-second (FPS). Now you know how long one while loop should take (1/30 = 0.03333 seconds). If the while loop is faster than that, you simply pause it at the end until 0.03333 seconds has passed. If it's slower, you should optimize your game. + +- Variable (fluid) time step. You measure how many seconds has passed since the last frame. You then pass this time to the update method, so the game world can take bigger steps if the computer is slow and smaller steps if the computer is fast. + +**How to implement?** + +This pattern has already been implemented in Unity, which is actually using both versions of the while loop: + +- Fixed time step: Time.fixedDeltaTime. This version is used for physics calculations where you should use a constant step to make more accurate calculations. + +- Variable time step: [Time.deltaTime](https://docs.unity3d.com/ScriptReference/Time-deltaTime.html), which Unity defines as "The completion time in seconds since the last frame." + +The game loop is also checking for input before anything else. This is why in Unity you can type "if (Input.GetKey(KeyCode.A))" because the game loop has already checked (before the update method) if the A key has been pressed and stored that information in some data structure. + +**When is it useful?** + +- When you have a bullet that should move with a constant speed. So you determine a bulletSpeed and in the update method you multiply the speed with Time.deltaTime so the bullet travels with the same speed no matter how fast the computer is. + + +## [Back](../) \ No newline at end of file diff --git a/_text/object-pool.md b/_text/object-pool.md new file mode 100644 index 0000000..bdc25c8 --- /dev/null +++ b/_text/object-pool.md @@ -0,0 +1,32 @@ +# 18. Object Pool + +If you constantly create and destroy objects, the performance of your game will suffer. A better way is to create the objects once when you start the game and deactivate them. When you need an object, you pick one of the deactivate objects and activate it. When you don't need the object anymore, you deactivate it instead of destroying it. + +**How to implement?** + +Create a class called object pool. Give it an object prefab and instantiate the number of objects you think you will need. Store them in a list. When you need an object you search through the list for a deactivated object and returns the first you find. If you realize you need more objects than the objects you started with, you have a few choises: + + - You can instantiate more objects during gameplay. But make sure you don't instantiate too many objects because it will be a waste of memory. You could later remove the "extra" objects you added. + + - Pick one of the objects that's active but the player will not notice if it suddeny disappears so you can use it. + + - Ignore that you have no more objects, which may be fine. If the screen is filled with explosions, the player will not notice a new explosion is missing. + +If you search the list to find an avilable object, and the list is very long because you have many pooled objects, you waste time. A better way is to store the objects in the pool in a linked-list. + +This pattern is so popular Unity has implemented their own version of it called [ObjectPool](https://docs.unity3d.com/ScriptReference/Pool.ObjectPool_1.html). Is only available in later versions of Unity. + +**When is it useful?** + +- When you fire bullets from a gun then you will need many bullets. I've given an example of this in the code section. You can find three versions: the optimized version which uses a linked-list, the slow ut simple version which has to search a list, and Unity's native object pool. + +- Unity is using this pattern in their particle system. In the particle settings you can set max number of particles, which can be useful so you don't accidentally instantiate millions of particles. + +**Related patterns** + +- **Data Locality.** In this pattern you pack objects of the same type together in memory. It will help the CPU cache to be full as the game iterates over those objects, which is what the Data Locality patterns is about. + +- **Prototype.** + + +## [Back](../) \ No newline at end of file diff --git a/_text/observer.md b/_text/observer.md new file mode 100644 index 0000000..d3749f9 --- /dev/null +++ b/_text/observer.md @@ -0,0 +1,31 @@ +# 3. Observer + +Many things are constantly happening in your game. These things are called events (or messages). The difference between event and message is that an event has happened while a message is something that will happen. So this pattern is all about what will happen after an event has happened. Which methods should be called after you killed an enemy to update score, show death animation, etc? These methods should subscribe to the event. + +**How to implement?** + +This pattern is so popular that C# has implemented it for you. Unity also has its own implementation. Your alternatives are: + +- EventHandler +- Action +- UnityEvent +- Your own implementation by using a delegate + +I've implemented all these in the code, so if you don't understand the difference take a look there. + +**When is it useful?** + +- This pattern is really useful if you want to avoid spaghetti code by making classes independent of each other, also known as decoupling. The best part of events is the part that's triggering the event doesn't care which methods are attached to the event. There might be zero methods. So if an event is triggered but nothing is happening you can easier find where the bug might be. + +- If you really want to decouple your code, then you still have a problem. To subscribe to the event you need a reference to the script where the event is defined. Another way is to create an Event Manager, which is a global class that takes care of all events. Unity has its own tutorial on how to implement that: [Creating a Simple Messaging System](https://www.youtube.com/watch?v=0AqG1fDhPT8). + +- Another way to decouple the code is to make the event static. An example of a static event is available in the code. + +**Related patterns** + +- **Event Queue.** The biggest problem with Observer is that it will trigger all methods subscribing to the event. If five methods subscribe, then five methods will be triggered. But what if 10 enemies are killed at the same time? Then 50 methods will be triggered and it can freeze the game. This is when you should use the Event Queue, which is basically the same as the Observer, but you put the events in a queue and you trigger as many as you can each Update without freezing the game. + +- **Model-View-Controller (MVC).** The MVC is an architectural pattern, and to implement it you can use the Observer pattern. + + +## [Back](../) \ No newline at end of file diff --git a/_text/prototype.md b/_text/prototype.md new file mode 100644 index 0000000..05afc02 --- /dev/null +++ b/_text/prototype.md @@ -0,0 +1,22 @@ +# 4. Prototype + +In your game you have a game object. Now you want to duplicate that object. This pattern allows you to create as many duplicates of an object as you want. + +**How to implement?** + +This is a pattern that already exists in Unity in the form of the [Instantiate-method](https://docs.unity3d.com/ScriptReference/Object.Instantiate.html). But it assumes that the object you want to duplicate inherits from Object, which is a class in UnityEngine. + +You can also make you own implementation. But then you have to ask yourself: do you do a deep clone (a copy of the structure and the elements in the structure) or a shallow clone (a copy of the structure not the elements in the structure)? Maybe the Flyweight pattern can give you the answer? + +**When is it useful?** + +- If you have a gun that fires bullets. You add one bullet prefab to the script. Each time you fire the gun you need a new bullet because you don't want to use the original bullet, so you call Unity's Instantiate-method and you get a duplicate of the original bullet. + +**Related patterns** + +- **Factory.** In the Factory you are generally generating new objects - not copies of already existing objects (which may include position and other states). You can put the Prototype inside of the Factory so you have one class where you create all objects instead of having the creation in multiple classes which might be troublesome if you want to change something. + +- **Object Pool.** If you Instantiate and destroy many game objects it will affect the performance of the game. To solve that problem you can use the Object Pool pattern. + + +## [Back](../) \ No newline at end of file diff --git a/_text/service-locator.md b/_text/service-locator.md new file mode 100644 index 0000000..fb7ee62 --- /dev/null +++ b/_text/service-locator.md @@ -0,0 +1,26 @@ +# 15. Service Locator + +When making your game you use many standardized methods to for example generate random numbers. These are called services and should be accessible from everywhere (globally) but still be independet from your game's main code. + +**How to implement?** + +Put each service in a static class. The static class should be in its own folder and have its own namespace to make sure you are not mixing the services with your main code. + +Use a Service Locator that provides access to a service provider. To make sure no other methods than the ones you need are exposed to the outside world, the service provider should limit which methods it can provide access to. + +Unity has implemented this pattern in the form of the GetComponent() method. + +**When is it useful?** + +- Several services are already built-in into Unity, such as Random.Range() to get a random number, Mathf.PI to get pi, and Debug.Log() to display something in the console. + +- In the game you may have different audio objects depending on if the game is running on a console or PC. This is the same example as in the book so you can find the code for it in the code section. + +**Related patterns** + +- **Singleton.** Both provide a global access to an object. So the problems with the Singleton also applies to this pattern. + +- **Facade.** You can use Facade in combination with Service Locator. + + +## [Back](../) \ No newline at end of file diff --git a/_text/singleton.md b/_text/singleton.md new file mode 100644 index 0000000..245f0d5 --- /dev/null +++ b/_text/singleton.md @@ -0,0 +1,38 @@ +# 5. Singleton + +In your game you might have a class that saves the game for you. It's really important that you have just one instance of this class or you might save different versions of the game if each instance includes different data. It should also be easy to access this save game class from where you need it. You can use the Singleton pattern to accomplish this. + +**How to implement?** + +In C#. Make the instance static and provide a public static means of getting the reference to the single created instance. If the instance hasn't been created yet, create it. The constructor should be private and have no parameters. You can find this implemented in the code section. + +If your Singleton has to be thread safe, things will get more complicated. This is a good tutorial on the topic of more advanced Singleton patterns: [Implementing the Singleton Pattern in C#](https://csharpindepth.com/articles/singleton). + +In C# but the class also inherits from MonoBehaviour. If you want the Singleton to also inherit from MonoBehaviour (because you need some of that functionality) things will get more complicated. The problem now is that you can accidentally add several Singletons to the project. So you have to make sure you destroy all except one of the objects. Neither can you use a constructor, because MonoBehaviour doesn't allow it, so you have to implement your own constructor. You can find this implemented in the code section. + +**When is it not useful?** + +- According to the book "Game Programming Patterns," you should avoid this pattern because global objects can cause trouble. If you need to use this pattern, then it should be for manager classes, such as GameController, SaveGame, etc. The fewer Singletons the better! + +- If you use the MonoBehaviour version, a problem is that if you call the Singleton object from another object's OnDestroy method when you quit the game, the Singleton might have already been destroyed. + +**What are some alternatives?** + +You tend to use the Singleton pattern because you want an easy access to that script. But if Singletons are so bad, what are some alternatives? + +- **No class at all.** Most Singeltons are helpers, and in many cases you can remove the manager and put the help-code in the class the manager manages. + +- **Static class.** This is basically the Service Locator pattern. + +- **Unity's built-in Find() and SendMessage().** But these are so slow they should be avoided. If you have to use them, use them only once to get a reference to the script in the Start method. + +- **Assign references to pre-existing objects.** This means dragging the object (on which the script that used to be a Singleton is attached) to public variables exposed in the Editor. The problem now is that this may become very complicated, and if you change a reference you often have to again drag them to wherever it's needed, which may be many locations if you have many objects. + +- **A global event system.** This is the Observer pattern. You still need a Singleton for this global system, but you can remove all other Singletons. + +- **Dependency Injection.** You inject the reference to the object (that used to be a Singleton) in for example the constructor belonging to the class that need a reference to that object. There's also [Dependency Injection frameworks](https://www.youtube.com/watch?v=6tn8pMQuxEk) to make this process easier. + +- **One Singleton.** Have just one Singleton class and all managers that used to be Singletons are collected in this class. If you need the SaveGame object, you type GameController.Instance.getSaveGameManager(). + + +## [Back](../) \ No newline at end of file diff --git a/_text/spatial-partition.md b/_text/spatial-partition.md new file mode 100644 index 0000000..28d5468 --- /dev/null +++ b/_text/spatial-partition.md @@ -0,0 +1,29 @@ +# 19. Spatial Partition + +If you have many objects in your game, store the objects in a data structure that organizes the objects by their positions. This should make it faster to for example find which objects are colliding. + +**How to implement?** + +This is a common pattern, so you have several choices: + +- **Grid.** Divide the area into a grid and store in the data structure in which cell each object is located. This is the example from the book, so you can find the code for it in the code section. An alternative implementation can be found here: [Find overlaps among thousands of objects blazing fast](https://github.com/Habrador/Ten-Minute-Physics-Unity) which is implementing "Spatial Hashing" meaning that you are no longer bounded to a fixed grid - you can use a grid of infinite size! + +- **Trie.** Is actually called [Trie](https://en.wikipedia.org/wiki/Trie) and not Tree! + - [Quadtree (2d space)](https://en.wikipedia.org/wiki/Quadtree). Divide the square area into 4 cells. But if too many objects are in the same cell, divide that cell into 4 new cells. Continue until there are not "too many objects in the same cell." A good tutorial can be found here: [Coding Challenge #98.1: Quadtree - Part 1](https://www.youtube.com/watch?v=OJxEcs0w_kE). + - [Octree (3d space)](https://en.wikipedia.org/wiki/Octree). Is similar to Quadtree, but instead of cells you use cubes, so divide a cube volume into 8 cubes, and then split each cube into 8 new cubes and so on. + +- **Binary search trees.** The name is binary, so the difference between Tree is that you split the groups into 2 smaller groups, and then you split one of the smaller groups into 2 smaller groups, and so on. + - [Binary space partition (BSP)](https://en.wikipedia.org/wiki/Binary_space_partitioning). You use a plane to split a group into 2 new groups. And then you use another plane to split the new group into 2 new groups, and so on until you are finished. + - [k-d trees](https://en.wikipedia.org/wiki/K-d_tree). In this case it has to be points that you split into smaller, and smaller groups. + - [Bounding volume hierarchy](https://en.wikipedia.org/wiki/Bounding_volume_hierarchy). You pick a bounding volume (or area in 2d space), such as a rectangle. The size of the first rectangle is determined so all objects fit within it. Then you split the rectangle into two new rectangles, and so on. + +If the objects move you have to update the data structure. These data stuctures are also using more memory meaning you have to measure that putting the objects in a data structure is faster than just searching for the closest object. + +**When is it useful?** + +- Find the closest object to a character. This can be a really slow process if you have hundreds of objects around the character. And if you have soldiers fighting soldiers, you have to make that seach for each soldier. A better way is to divide the search-area so you don't have to search thorough all objects - just the ones closest to you. + +- To increase the performance of collision detection and raytracing. + + +## [Back](../) \ No newline at end of file diff --git a/_text/state.md b/_text/state.md new file mode 100644 index 0000000..b68a9f0 --- /dev/null +++ b/_text/state.md @@ -0,0 +1,34 @@ +# 6. State + +Your game can be in a number of states. The main character can have the following states: jump, walk, run, etc. Now you want an easy way to switch between the states. This pattern is also known as a **state machine,** and if you have a finite amount of states you get a **finite state machine (FSM).** + +**How to implement?** + +You could use an enum that keeps track of each state and then a switch statement. The problem with the switch statement is that it becomes complicated the more states you add. A better way is to define an object for each state and then you switch between the objects as you switch states. + +**When is it useful?** + +- When you have too many nested if-statements, such as in a menu system. In the code, you can see an example of a menu system using the State pattern. + +- Unity is using this pattern in the animation engine. + +- When you make a turn-based combat system: [How to Code a Simple State Machine](https://www.youtube.com/watch?v=G1bd75R10m4). + +- If you are making a GTA-style game. You have one state for driving, one for when the character is not in a vehicle, another state for flying, etc. Then you can also add state-of-states. For example, in the state class where the character is not in a vehicle, you can have several sub-states, such as holding nothing, holding grenade, holding pistol, etc. + +- Enemy AI is often using the State pattern. The creepers in Minecraft have three states: move randomly when you are far away, move towards you if you are closer, blow up when you are very close. + +- The game itself can be a number of states: intro video, main menu, main game, mini game, etc. + +**Related patterns** + +- **Type Object.** In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the object in Type Object can be switched you get the State pattern. + +- **Strategy.** With this pattern you can give an object a new behavior (a new strategy to follow) without taking into account its current state or states coming after the current behavior. + +- **Memento.** Same as state but you can roll back to a previous state. + +- **Behavior Tree.** Is useful if you have many states and want a more complex behavior. + + +## [Back](../) \ No newline at end of file diff --git a/_text/subclass-sandbox.md b/_text/subclass-sandbox.md new file mode 100644 index 0000000..bf0aab3 --- /dev/null +++ b/_text/subclass-sandbox.md @@ -0,0 +1,22 @@ +# 11. Subclass Sandbox + +You have similar objects but they have different behavior. Create those behaviors in the child class by combining methods defined in the parent class. + +**How to implement?** + +Define several protected methods in the parent class and how they are implemented. In the child class, you call the methods you need to get the behavior you want. + +**When is it useful?** + +- When your child classes share behavior and the parent class can provide these behaviors. For example if you are using superpowers and the child class can combine these superpowers. This is an example from the book so you can find the code in the code section. + +**Related patterns** + +- **Update Method.** The Update Method is often implemented as a Sandbox method. + +- **Type Object.** Instead of defining all methods in the parent you could give the child a reference to an object that defines these methods. + +- **Template.** Is the opposite of the Subclass sandbox pattern. In the Subclass Sandbox you implement the methods in the parent class while in Template you implement the methods in the child class. + + +## [Back](../) \ No newline at end of file diff --git a/_text/template.md b/_text/template.md new file mode 100644 index 0000000..dc42782 --- /dev/null +++ b/_text/template.md @@ -0,0 +1,18 @@ +# 23. Template + +You have objects that uses the same overall algorithm, but the objects implement some steps in the algorithm in a different way. + +**How to implement?** + +Define a template method in the parent class which consists of calling several methods. In the child class, you override the methods that are specific for the child class. + +**When is it useful?** + +- When your child classes share behavior and the parent class can provide these behaviors. The example in the code shows how to assemble Tesla cars. While each car consists of different parts the process of assembling a car is the same. + +**Related patterns** + +- **Subclass Sandbox.** Is the opposite of the Template pattern. In the Subclass Sandbox you implement the methods in the parent class, while in Template you implement the methods in the child class. + + +## [Back](../) \ No newline at end of file diff --git a/_text/type-object.md b/_text/type-object.md new file mode 100644 index 0000000..e27b209 --- /dev/null +++ b/_text/type-object.md @@ -0,0 +1,22 @@ +# 12. Type Object + +You have an object and now you want to change its type (such as behavior or some data) by giving it a reference to an object that defines the type, thus the name Type Object. Another way could be to use class inheritance to define a child class which includes to code for the type, but that's not always possible because different children may be of the same type. + +**How to implement?** + +The Type Objects should share the same interface (or parent) to make it easier for the main class to reference the object. + +**When is it useful?** + +- When you can't (or don't want to) use class inehritance. Let's say you make a game with animals. You have a base class which is parent to all animals, and then as children to that class you add birds, fish, and mammals. In the bird class you define a flying behavior, which is all fine until you add an ostrich, which can't fly. In that case you have to inherit from the bird class and create new children that can fly and can't fly. But what about bats, which is a mammal that can fly? You don't want to add flying behavior in two separate classes! A better way is to define a flying and a non-flying type in a separate class, so both ostriches remain on the ground and bats can fly. + +**Related patterns** + +- **State.** In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the type can be switched you get the State pattern. + +- **Subclass Sandbox.** You could define all types in the parent class and then combine them in the child class. + +- **Component.** The difference is that the Component is not always coupled with something else on the game object – it’s living its own life. In Unity you can add colliders, scripts, mesh renderers and they don’t need to know about each other to function. Type Object, however, is about adding a behavior to an existing class, so the type can't live on its own. + + +## [Back](../) \ No newline at end of file diff --git a/_text/update-method.md b/_text/update-method.md new file mode 100644 index 0000000..c0521b0 --- /dev/null +++ b/_text/update-method.md @@ -0,0 +1,12 @@ +# 9. Update Method + +The update method will process one frame of behavior. Each object that needs it should have its own update method because it would be difficult to combine everything in the game loop's update method. So each object that has a update method should be stored in some data structure, such as a list, and then you iterate over each one in the main update method. + +**How to implement?** + +This pattern has already been implemented in Unity, in the form of the Update() method, which you can use if your script inherits from MonoBehaviour. Then Unity processes each Update one-by-one in the main Update method. + +You could instead of using Unity's update method, implement your custom update method. You store all the scripts that uses this custom update method in a list. Then in some script, like a GameController, you iterate through this list in Unity's update method while calling each custom update method one-by-one. This may make it easier to for example pause your game by simply not iterating through that list when the game is paused. I've given an example of this in the code section. + + +## [Back](../) \ No newline at end of file From a851a5b98d9a947a428f66ed436883748461bfec Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 8 Aug 2023 15:38:40 +0200 Subject: [PATCH 59/68] Updated readme --- README.md | 46 +++++++++---------- _text/{command.md => 1-command.md} | 0 _text/{bytecode.md => 10-bytecode.md} | 0 ...lass-sandbox.md => 11-subclass-sandbox.md} | 0 _text/{type-object.md => 12-type-object.md} | 0 _text/{component.md => 13-component.md} | 0 _text/{event-queue.md => 14-event-queue.md} | 0 ...rvice-locator.md => 15-service-locator.md} | 0 .../{data-locality.md => 16-data-locality.md} | 0 _text/{dirty-flag.md => 17-dirty-flag.md} | 0 _text/{object-pool.md => 18-object-pool.md} | 0 ...l-partition.md => 19-spatial-partition.md} | 0 _text/{flyweight.md => 2-flyweight.md} | 0 _text/{decorator.md => 20-decorator.md} | 0 _text/{factory.md => 21-factory.md} | 0 _text/{facade.md => 22-facade.md} | 0 _text/{template.md => 23-template.md} | 0 _text/{observer.md => 3-observer.md} | 0 _text/{prototype.md => 4-prototype.md} | 0 _text/{singleton.md => 5-singleton.md} | 0 _text/{state.md => 6-state.md} | 0 .../{double-buffer.md => 7-double-buffer.md} | 0 _text/{game-loop.md => 8-game-loop.md} | 0 .../{update-method.md => 9-update-method.md} | 0 24 files changed, 23 insertions(+), 23 deletions(-) rename _text/{command.md => 1-command.md} (100%) rename _text/{bytecode.md => 10-bytecode.md} (100%) rename _text/{subclass-sandbox.md => 11-subclass-sandbox.md} (100%) rename _text/{type-object.md => 12-type-object.md} (100%) rename _text/{component.md => 13-component.md} (100%) rename _text/{event-queue.md => 14-event-queue.md} (100%) rename _text/{service-locator.md => 15-service-locator.md} (100%) rename _text/{data-locality.md => 16-data-locality.md} (100%) rename _text/{dirty-flag.md => 17-dirty-flag.md} (100%) rename _text/{object-pool.md => 18-object-pool.md} (100%) rename _text/{spatial-partition.md => 19-spatial-partition.md} (100%) rename _text/{flyweight.md => 2-flyweight.md} (100%) rename _text/{decorator.md => 20-decorator.md} (100%) rename _text/{factory.md => 21-factory.md} (100%) rename _text/{facade.md => 22-facade.md} (100%) rename _text/{template.md => 23-template.md} (100%) rename _text/{observer.md => 3-observer.md} (100%) rename _text/{prototype.md => 4-prototype.md} (100%) rename _text/{singleton.md => 5-singleton.md} (100%) rename _text/{state.md => 6-state.md} (100%) rename _text/{double-buffer.md => 7-double-buffer.md} (100%) rename _text/{game-loop.md => 8-game-loop.md} (100%) rename _text/{update-method.md => 9-update-method.md} (100%) diff --git a/README.md b/README.md index cd366ca..5e1b0b4 100644 --- a/README.md +++ b/README.md @@ -9,32 +9,32 @@ Programming patterns can be divided into the following groups: Patterns from the book Game Programming Patterns: -1. [Command](_text/command.md) -2. [Flyweight](_text/flyweight.md) -3. [Observer](_text/observer.md) -4. [Prototype](_text/prototype.md) -5. [Singleton](_text/singleton.md) -6. [State](_text/state.md) -7. [Double Buffer](_text/double-buffer) -8. [Game Loop](_text/game-loop) -9. [Update Method](_text/update-method) -10. [Bytecode](_text/bytecode) -11. [Subclass Sandbox](_text/subclass-sandbox) -12. [Type Object](_text/type-object) -13. [Component](_text/component) -14. [Event Queue](_text/event-queue) -15. [Service Locator](_text/service-locator) -16. [Data Locality](_text/data-locality) -17. [Dirty Flag](_text/dirty-flag) -18. [Object Pool](_text/object-pool) -19. [Spatial Partition](_text/spatial-partition) +1. [Command](_text/1-command.md) +2. [Flyweight](_text/2-flyweight.md) +3. [Observer](_text/3-observer.md) +4. [Prototype](_text/4-prototype.md) +5. [Singleton](_text/5-singleton.md) +6. [State](_text/6-state.md) +7. [Double Buffer](_text/7-double-buffer) +8. [Game Loop](_text/8-game-loop) +9. [Update Method](_text/9-update-method) +10. [Bytecode](_text/10-bytecode) +11. [Subclass Sandbox](_text/11-subclass-sandbox) +12. [Type Object](_text/12-type-object) +13. [Component](_text/13-component) +14. [Event Queue](_text/14-event-queue) +15. [Service Locator](_text/15-service-locator) +16. [Data Locality](_text/16-data-locality) +17. [Dirty Flag](_text/17-dirty-flag) +18. [Object Pool](_text/18-object-pool) +19. [Spatial Partition](_text/19-spatial-partition) Other patterns: -20. [Decorator](_text/decorator) -21. [Factory](_text/factory) -22. [Facade](_text/facade) -23. [Template](_text/template) +20. [Decorator](_text/20-decorator) +21. [Factory](_text/21-factory) +22. [Facade](_text/22-facade) +23. [Template](_text/23-template) Note that these are not all patterns out there. I recently read a book called "Machine Learning Design Patterns" which includes even more design patterns with a focus on machine learning problems. But I will continue adding patterns as I find them and if they are related to game development. diff --git a/_text/command.md b/_text/1-command.md similarity index 100% rename from _text/command.md rename to _text/1-command.md diff --git a/_text/bytecode.md b/_text/10-bytecode.md similarity index 100% rename from _text/bytecode.md rename to _text/10-bytecode.md diff --git a/_text/subclass-sandbox.md b/_text/11-subclass-sandbox.md similarity index 100% rename from _text/subclass-sandbox.md rename to _text/11-subclass-sandbox.md diff --git a/_text/type-object.md b/_text/12-type-object.md similarity index 100% rename from _text/type-object.md rename to _text/12-type-object.md diff --git a/_text/component.md b/_text/13-component.md similarity index 100% rename from _text/component.md rename to _text/13-component.md diff --git a/_text/event-queue.md b/_text/14-event-queue.md similarity index 100% rename from _text/event-queue.md rename to _text/14-event-queue.md diff --git a/_text/service-locator.md b/_text/15-service-locator.md similarity index 100% rename from _text/service-locator.md rename to _text/15-service-locator.md diff --git a/_text/data-locality.md b/_text/16-data-locality.md similarity index 100% rename from _text/data-locality.md rename to _text/16-data-locality.md diff --git a/_text/dirty-flag.md b/_text/17-dirty-flag.md similarity index 100% rename from _text/dirty-flag.md rename to _text/17-dirty-flag.md diff --git a/_text/object-pool.md b/_text/18-object-pool.md similarity index 100% rename from _text/object-pool.md rename to _text/18-object-pool.md diff --git a/_text/spatial-partition.md b/_text/19-spatial-partition.md similarity index 100% rename from _text/spatial-partition.md rename to _text/19-spatial-partition.md diff --git a/_text/flyweight.md b/_text/2-flyweight.md similarity index 100% rename from _text/flyweight.md rename to _text/2-flyweight.md diff --git a/_text/decorator.md b/_text/20-decorator.md similarity index 100% rename from _text/decorator.md rename to _text/20-decorator.md diff --git a/_text/factory.md b/_text/21-factory.md similarity index 100% rename from _text/factory.md rename to _text/21-factory.md diff --git a/_text/facade.md b/_text/22-facade.md similarity index 100% rename from _text/facade.md rename to _text/22-facade.md diff --git a/_text/template.md b/_text/23-template.md similarity index 100% rename from _text/template.md rename to _text/23-template.md diff --git a/_text/observer.md b/_text/3-observer.md similarity index 100% rename from _text/observer.md rename to _text/3-observer.md diff --git a/_text/prototype.md b/_text/4-prototype.md similarity index 100% rename from _text/prototype.md rename to _text/4-prototype.md diff --git a/_text/singleton.md b/_text/5-singleton.md similarity index 100% rename from _text/singleton.md rename to _text/5-singleton.md diff --git a/_text/state.md b/_text/6-state.md similarity index 100% rename from _text/state.md rename to _text/6-state.md diff --git a/_text/double-buffer.md b/_text/7-double-buffer.md similarity index 100% rename from _text/double-buffer.md rename to _text/7-double-buffer.md diff --git a/_text/game-loop.md b/_text/8-game-loop.md similarity index 100% rename from _text/game-loop.md rename to _text/8-game-loop.md diff --git a/_text/update-method.md b/_text/9-update-method.md similarity index 100% rename from _text/update-method.md rename to _text/9-update-method.md From 294f7e27a033951b92c881d92267b9fd4ddc8bab Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 8 Aug 2023 15:42:03 +0200 Subject: [PATCH 60/68] Updated readme --- README.md | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/README.md b/README.md index 5e1b0b4..1ce9be7 100644 --- a/README.md +++ b/README.md @@ -15,26 +15,26 @@ Patterns from the book Game Programming Patterns: 4. [Prototype](_text/4-prototype.md) 5. [Singleton](_text/5-singleton.md) 6. [State](_text/6-state.md) -7. [Double Buffer](_text/7-double-buffer) -8. [Game Loop](_text/8-game-loop) -9. [Update Method](_text/9-update-method) -10. [Bytecode](_text/10-bytecode) -11. [Subclass Sandbox](_text/11-subclass-sandbox) -12. [Type Object](_text/12-type-object) -13. [Component](_text/13-component) -14. [Event Queue](_text/14-event-queue) -15. [Service Locator](_text/15-service-locator) -16. [Data Locality](_text/16-data-locality) -17. [Dirty Flag](_text/17-dirty-flag) -18. [Object Pool](_text/18-object-pool) -19. [Spatial Partition](_text/19-spatial-partition) +7. [Double Buffer](_text/7-double-buffer.md) +8. [Game Loop](_text/8-game-loop.md) +9. [Update Method](_text/9-update-method.md) +10. [Bytecode](_text/10-bytecode.md) +11. [Subclass Sandbox](_text/11-subclass-sandbox.md) +12. [Type Object](_text/12-type-object.md) +13. [Component](_text/13-component.md) +14. [Event Queue](_text/14-event-queue.md) +15. [Service Locator](_text/15-service-locator.md) +16. [Data Locality](_text/16-data-locality.md) +17. [Dirty Flag](_text/17-dirty-flag.md) +18. [Object Pool](_text/18-object-pool.md) +19. [Spatial Partition](_text/19-spatial-partition.md) Other patterns: -20. [Decorator](_text/20-decorator) -21. [Factory](_text/21-factory) -22. [Facade](_text/22-facade) -23. [Template](_text/23-template) +20. [Decorator](_text/20-decorator.md) +21. [Factory](_text/21-factory.md) +22. [Facade](_text/22-facade.md) +23. [Template](_text/23-template.md) Note that these are not all patterns out there. I recently read a book called "Machine Learning Design Patterns" which includes even more design patterns with a focus on machine learning problems. But I will continue adding patterns as I find them and if they are related to game development. From ad82a2d98c66b9ba66845090c7a83d9b043ea3c8 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 8 Aug 2023 16:28:11 +0200 Subject: [PATCH 61/68] Updated readme --- _text/2-flyweight.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/_text/2-flyweight.md b/_text/2-flyweight.md index b0daa2c..77b0556 100644 --- a/_text/2-flyweight.md +++ b/_text/2-flyweight.md @@ -1,6 +1,6 @@ # 2. Flyweight -Even though a single object uses little memory – instantiating many of them can cause trouble, so you need to make the objects lighter by sharing code. +Even though a single object uses little memory – using many of them can cause trouble, so you need to make the objects lighter by sharing code. **How to implement?** @@ -10,9 +10,13 @@ Separate the data that’s not specific to a single instance of that object and - If you make Minecraft and have a million cubes in the scene. All cubes can share the same texture if you put all textures that belongs to each cube type (grass, stone, sand, etc) into a [texture atlas](https://en.wikipedia.org/wiki/Texture_atlas). -- If you make a strategy game, all infantry units share the same mesh, texture, maxHealth settings, etc. You only need to create one object with this data and then all infantry units can share that object. Each individual infantry unit only need to keep track of its own position and health. +- If you make a strategy game, all infantry units share the same mesh, texture, animation, maxHealth settings, etc. You only need to create one object with this data and then all infantry units can share that object. Each individual infantry unit only need to keep track of its own position and health. -- This is implemented in Unity as [sharedMesh](https://docs.unity3d.com/ScriptReference/MeshFilter-sharedMesh.html) and [sharedMaterial](https://docs.unity3d.com/ScriptReference/Renderer-sharedMaterial.html). If you make a change to a sharedMesh then all objects using that mesh will get a new mesh. +- This is implemented in Unity as [sharedMesh](https://docs.unity3d.com/ScriptReference/MeshFilter-sharedMesh.html) and [sharedMaterial](https://docs.unity3d.com/ScriptReference/Renderer-sharedMaterial.html). If you make a change to a sharedMesh then all objects using that mesh will get a new mesh. + +- In an open world game you can use the trees and rocks multiple times by rotating and scaling them - and no-one will see they are the same model. + +- If you make a car game it is enough to use one crash sound - and then change the settings of that sound, such as pitch, to create different crash sounds every time the car crashes. **Related patterns** From 56cfac7abc83378ff24da8d6bf72952b987a89e0 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 8 Aug 2023 19:35:03 +0200 Subject: [PATCH 62/68] Updated readme --- _text/10-bytecode.md | 8 ++++++-- _text/15-service-locator.md | 10 +++++++++- _text/17-dirty-flag.md | 6 +++++- _text/19-spatial-partition.md | 6 +++++- _text/20-decorator.md | 8 +++++++- _text/21-factory.md | 2 ++ _text/6-state.md | 2 ++ 7 files changed, 36 insertions(+), 6 deletions(-) diff --git a/_text/10-bytecode.md b/_text/10-bytecode.md index fa02681..c09ab7b 100644 --- a/_text/10-bytecode.md +++ b/_text/10-bytecode.md @@ -8,9 +8,13 @@ The programmers with no skillz write their code in a .txt-file. You read that fi **When is it useful?** -- If you want to add modding support. +- To add modding support. -- If you don't want to hard-code behaviour. +- To avoid hard-coded behaviour. + +- To handle cutscenes and dialogue systems. Scripted sequences or dialogue interactions can be expressed in bytecode, allowing for easier management and execution of these sequences during gameplay. + +- To manage and execute the conditions and actions required to unlock achievements or track player progress. ## [Back](../) \ No newline at end of file diff --git a/_text/15-service-locator.md b/_text/15-service-locator.md index fb7ee62..6116446 100644 --- a/_text/15-service-locator.md +++ b/_text/15-service-locator.md @@ -1,6 +1,6 @@ # 15. Service Locator -When making your game you use many standardized methods to for example generate random numbers. These are called services and should be accessible from everywhere (globally) but still be independet from your game's main code. +When making your game you use many standardized methods to for example generate random numbers. These are called services and should be accessible from everywhere (globally) but still be independet from your game's main code. The pattern allows services to be easily replaced or extended without affecting the existing code that relies on them. **How to implement?** @@ -16,6 +16,14 @@ Unity has implemented this pattern in the form of the GetComponent() method. - In the game you may have different audio objects depending on if the game is running on a console or PC. This is the same example as in the book so you can find the code for it in the code section. +- To inject dependencies into game objects or systems - aka dependency injection. Instead of hardcoding the references to specific services, game objects can use the service locator to request and retrieve the required services at runtime. + +- To obtain the input service, abstracting away the underlying input device handling. + +- Objects or systems that need to display localized text can use the service locator to retrieve the appropriate localization service. + +- Objects that need AI functionality can use the service locator to access AI-related services, such as pathfinding or decision-making algorithms. + **Related patterns** - **Singleton.** Both provide a global access to an object. So the problems with the Singleton also applies to this pattern. diff --git a/_text/17-dirty-flag.md b/_text/17-dirty-flag.md index 831cb36..de555ee 100644 --- a/_text/17-dirty-flag.md +++ b/_text/17-dirty-flag.md @@ -1,6 +1,6 @@ # 17. Dirty Flag -This pattern is useful if something has changed in your game and if so you have to run a costly operation. A Dirty Flag is used to tell that something has changed but the costly operation hasn't been activated yet. You can often postpone the costly operation until the result is actually needed. +This pattern is useful if something has changed in your game and if so you have to run a costly operation. A Dirty Flag is used to tell that something has changed but the costly operation hasn't been activated yet. You can often postpone the costly operation until the result is actually needed. So this pattern allows games to avoid unnecessary computations, updates, and data processing. **How to implement?** @@ -16,5 +16,9 @@ The dirty flag is just a bool. - I used this pattern when experimenting with Genetic Algorithms (GA) and the Traveling Salesman Problem (TSP) where you find the shortest path between multiple cities. The GA generates multiple solutions, like 100, to the TSP and then each iteration you evolve 100 better solutions by calculating a cost function, which is the distance between all cities. You can use "tournament selection" to find good solutions from the previous iteration to the next, which is basically picking 3 solutions and returns the solution with the shortest distance between all cities. I realized I didn't have to calculate the cost fuction 100 times each iteration because it's a costly operation. To optimize I only calculate the cost function of the cities being picked by the tournament selection. I kept track of which solution has had its cost fuction calculated by using a bool which is set to false each iteration and then to true if the cost function has been run. +- In multiplayer games, the Dirty Flag Pattern can be used to track changes in game state for network synchronization. Only data that has been marked as "dirty" needs to be sent across the network, reducing bandwidth usage and improving network performance. + +- Can be used to track changes in the game environment or AI state. The AI system can then prioritize updates and decision-making for objects or AI agents with "dirty" data. + ## [Back](../) \ No newline at end of file diff --git a/_text/19-spatial-partition.md b/_text/19-spatial-partition.md index 28d5468..9305442 100644 --- a/_text/19-spatial-partition.md +++ b/_text/19-spatial-partition.md @@ -21,9 +21,13 @@ If the objects move you have to update the data structure. These data stuctures **When is it useful?** -- Find the closest object to a character. This can be a really slow process if you have hundreds of objects around the character. And if you have soldiers fighting soldiers, you have to make that seach for each soldier. A better way is to divide the search-area so you don't have to search thorough all objects - just the ones closest to you. +- Find the closest object to a character. This can be a really slow process if you have hundreds of objects around the character. And if you have soldiers fighting soldiers, you have to make that search for each soldier. A better way is to divide the search-area so you don't have to search thorough all objects - just the ones closest to you. - To increase the performance of collision detection and raytracing. +- To deactivate objects if they are far away from your character to improve performance. This is called culling. You can hide for example trees and AI far away don't have to update themselves. + +- In games with pathfinding, spatial partitioning can help optimize the search for valid paths. By organizing the game world into a navigation grid or spatial data structure, pathfinding algorithms can be restricted to search only within relevant partitions, reducing computation time. + ## [Back](../) \ No newline at end of file diff --git a/_text/20-decorator.md b/_text/20-decorator.md index 3831028..3aa2f0b 100644 --- a/_text/20-decorator.md +++ b/_text/20-decorator.md @@ -1,6 +1,6 @@ # 20. Decorator -You have a class you want to add some behaviors to in a flexible way without modifying the original class. +You have a class you want to add some behaviors to in a flexible to an object way without modifying the original class. Other objects of the same class are uneffected, so it is used to dynamically extend the functionality of objects at runtime. Overall, the Decorator Pattern is a versatile and flexible design pattern that enables game developers to enhance and customize game objects or systems without modifying their core implementation. **How to implement?** @@ -12,6 +12,12 @@ You have a class and now you create several "decorator" classes that modifies so - If you ever played Pubg you know you have weapons to which you can attach various attachments you find while playing the game. You can find magazines, sights, silenzers, etc, modifying the weapon's properties. You can use the Decorator pattern to implement this in your game. +- To implement power-ups that temporarily modify the behavior of game objects. Each power-up can be represented as a decorator that wraps around the original object, adding specific enhancements, such as increased speed, damage boost, or invincibility. + +- To add special effects or animations to UI buttons, panels, or icons. + +- To dynamically adjust the difficulty level of a game. Decorators can be added or removed based on player performance or preferences, altering the game's challenges accordingly. + **Related patterns** - **Subclass Sandbox.** You may end up with many child-classes. To easier handle the code, you can define high-level methods in the parent. diff --git a/_text/21-factory.md b/_text/21-factory.md index ca3f26a..5c1fc50 100644 --- a/_text/21-factory.md +++ b/_text/21-factory.md @@ -16,6 +16,8 @@ If you are creating several different factories, then they should inherit from s - To keep track of all of your Singletons. +- The Factory Pattern can be used to create game objects, such as characters, enemies, items, obstacles, terrain features, structures, power-ups, collectibles, buttons, particles, etc. + **Related patterns** - **Prototype.** The Prototype pattern is generally used if you want to make a copy of an existing object, while the Factory pattern is generating new objects. But some argue you can put the Prototype pattern inside of the Factory pattern. diff --git a/_text/6-state.md b/_text/6-state.md index b68a9f0..e12f310 100644 --- a/_text/6-state.md +++ b/_text/6-state.md @@ -20,6 +20,8 @@ You could use an enum that keeps track of each state and then a switch statement - The game itself can be a number of states: intro video, main menu, main game, mini game, etc. +- Can be used to manage interactions between different game objects. For example, a door object can have states like open, closed, locked, and unlocked, and its behavior changes depending on its current state. + **Related patterns** - **Type Object.** In both cases you have a main object and then you add another object to define something. The difference is that in State you switch the other object, while in Type Object that object remains the same. So if the object in Type Object can be switched you get the State pattern. From 80a10bfb96880cdd47d49a64dee90c2eff20c2b4 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 8 Aug 2023 21:58:48 +0200 Subject: [PATCH 63/68] Updated readme --- _text/11-subclass-sandbox.md | 2 +- _text/22-facade.md | 10 +++++++++- _text/23-template.md | 10 +++++++++- 3 files changed, 19 insertions(+), 3 deletions(-) diff --git a/_text/11-subclass-sandbox.md b/_text/11-subclass-sandbox.md index bf0aab3..f4ab9d3 100644 --- a/_text/11-subclass-sandbox.md +++ b/_text/11-subclass-sandbox.md @@ -16,7 +16,7 @@ Define several protected methods in the parent class and how they are implemente - **Type Object.** Instead of defining all methods in the parent you could give the child a reference to an object that defines these methods. -- **Template.** Is the opposite of the Subclass sandbox pattern. In the Subclass Sandbox you implement the methods in the parent class while in Template you implement the methods in the child class. +- **Template.** Here you override the methods in the parent class. ## [Back](../) \ No newline at end of file diff --git a/_text/22-facade.md b/_text/22-facade.md index 05523b7..ebc39a8 100644 --- a/_text/22-facade.md +++ b/_text/22-facade.md @@ -10,7 +10,15 @@ Create a manager class that provides a single interface to a large collection of - In games it's common to write standardized code libraries, such as a library for the AI, which includes pathfinding, etc. These tend to include massive amounts of classes. To make it easier for yourself you create a script that includes access to the most important methods you need, such as get a short path. I made an open source library: [Computational geometry](https://github.com/Habrador/Computational-geometry). There are multiple methods on how to generate a Delaunay triangulation. To simplify the access to those methods I wrote a class called _Delaunay, which access each Delaunay method in a simple way. Otherwise you would have to first go into the Delaunay folder and figure out which class is doing what and which method you should use to generate the needed Delaunay triangulation. And if I decided to use another triangulation library I only need to change the facade script. Multiple Facades are allowed, so I also have another Facade for the intersection algorithms. -- Random numbers are common in games. Should you use Unity's Random.Range or C#'s System.Random.Next? You can use the Facade pattern to easier switch between them. An example of this can be found in the code section. And if you find a third random number library, you can add it and you don't have to make a single change to the code that uses this Facade. +- Random numbers are common in games. Should you use Unity's Random.Range or C#'s System.Random.Next? You can use the Facade pattern to easier switch between them. An example of this can be found in the code section. And if you find a third random number library, you can add it and you don't have to make a single change to the code that uses this Facade. + +- Can simplify audio interactions by providing methods for playing, pausing, stopping, and managing different audio sources. + +- Can provide a unified interface to handle keyboard, mouse, and controller inputs, abstracting the complexities of different input devices. + +- Can be used to create a simplified interface for managing game save and load operations. It encapsulates the details of serialization, deserialization, and data storage. + +- For games with physics simulation, a facade can provide a simplified interface for applying forces, detecting collisions, and managing physical interactions. It abstracts away the underlying physics engine complexities. **Related patterns** diff --git a/_text/23-template.md b/_text/23-template.md index dc42782..1a45987 100644 --- a/_text/23-template.md +++ b/_text/23-template.md @@ -10,9 +10,17 @@ Define a template method in the parent class which consists of calling several m - When your child classes share behavior and the parent class can provide these behaviors. The example in the code shows how to assemble Tesla cars. While each car consists of different parts the process of assembling a car is the same. +- To define the behavior of game characters. The common algorithm structure could include actions like movement, attacking, and interacting with the environment. Subclasses representing different character types (e.g., warrior, mage, rogue) can then override specific steps to implement their unique abilities and attributes. + +- In games that involve procedural level generation, the template algorithm can outline the general layout and components of a level, while subclasses can customize the details, such as terrain features, obstacles, and enemy placement. + +- For AI systems, the template algorithm could include steps like evaluating threats, considering objectives, and choosing actions. Different AI agents or enemy types can then provide their own implementations for specific decision-making criteria. + +- The Template Method Pattern can be applied to define the behavior of different game states (e.g., menu, gameplay, cutscene). The template algorithm could specify the transitions and behavior common to all states, while individual state subclasses can implement state-specific logic. + **Related patterns** -- **Subclass Sandbox.** Is the opposite of the Template pattern. In the Subclass Sandbox you implement the methods in the parent class, while in Template you implement the methods in the child class. +- **Subclass Sandbox.** Here you combine methods defined in the parent class. ## [Back](../) \ No newline at end of file From c79d8daf2b3eeed7b852990d86f80de2dd217da7 Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 8 Aug 2023 22:47:07 +0200 Subject: [PATCH 64/68] Updated readme --- _text/12-type-object.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/_text/12-type-object.md b/_text/12-type-object.md index e27b209..f6d4f0f 100644 --- a/_text/12-type-object.md +++ b/_text/12-type-object.md @@ -8,7 +8,13 @@ The Type Objects should share the same interface (or parent) to make it easier f **When is it useful?** -- When you can't (or don't want to) use class inehritance. Let's say you make a game with animals. You have a base class which is parent to all animals, and then as children to that class you add birds, fish, and mammals. In the bird class you define a flying behavior, which is all fine until you add an ostrich, which can't fly. In that case you have to inherit from the bird class and create new children that can fly and can't fly. But what about bats, which is a mammal that can fly? You don't want to add flying behavior in two separate classes! A better way is to define a flying and a non-flying type in a separate class, so both ostriches remain on the ground and bats can fly. +- When you can't (or don't want to) use class inehritance. Let's say you make a game with animals. You have a base class which is parent to all animals, and then as children to that class you add birds, fish, and mammals. In the bird class you define a flying behavior, which is all fine until you add an ostrich, which can't fly. In that case you have to inherit from the bird class and create new children that can fly and can't fly. But what about bats, which is a mammal that can fly? You don't want to add flying behavior in two separate classes! A better way is to define a flying and a non-flying type in a separate class, so both ostriches remain on the ground and bats can fly. + +- In game event systems, the Type Object can be used to define event types as objects. This allows for dynamic registration and handling of different event types during runtime, making the event system more versatile and adaptable. + +- Can be used to manage game configuration and settings. By representing different configuration options or settings as objects, you can dynamically switch between different configurations. + +- If you need to switching type at runtime. **Related patterns** From 2a147b28f5951d8265f13addbb4276288805d9bd Mon Sep 17 00:00:00 2001 From: habrador Date: Tue, 15 Aug 2023 12:15:05 +0200 Subject: [PATCH 65/68] Removed odd folder --- .../.idea/.gitignore | 13 ------------- .../.idea/indexLayout.xml | 8 -------- .../.idea.Unity-Programming-Patterns/.idea/vcs.xml | 6 ------ 3 files changed, 27 deletions(-) delete mode 100644 .idea/.idea.Unity-Programming-Patterns/.idea/.gitignore delete mode 100644 .idea/.idea.Unity-Programming-Patterns/.idea/indexLayout.xml delete mode 100644 .idea/.idea.Unity-Programming-Patterns/.idea/vcs.xml diff --git a/.idea/.idea.Unity-Programming-Patterns/.idea/.gitignore b/.idea/.idea.Unity-Programming-Patterns/.idea/.gitignore deleted file mode 100644 index 74baff2..0000000 --- a/.idea/.idea.Unity-Programming-Patterns/.idea/.gitignore +++ /dev/null @@ -1,13 +0,0 @@ -# Default ignored files -/shelf/ -/workspace.xml -# Rider ignored files -/contentModel.xml -/.idea.Unity-Programming-Patterns.iml -/projectSettingsUpdater.xml -/modules.xml -# Editor-based HTTP Client requests -/httpRequests/ -# Datasource local storage ignored files -/dataSources/ -/dataSources.local.xml diff --git a/.idea/.idea.Unity-Programming-Patterns/.idea/indexLayout.xml b/.idea/.idea.Unity-Programming-Patterns/.idea/indexLayout.xml deleted file mode 100644 index 7b08163..0000000 --- a/.idea/.idea.Unity-Programming-Patterns/.idea/indexLayout.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/.idea.Unity-Programming-Patterns/.idea/vcs.xml b/.idea/.idea.Unity-Programming-Patterns/.idea/vcs.xml deleted file mode 100644 index 35eb1dd..0000000 --- a/.idea/.idea.Unity-Programming-Patterns/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file From 1409a94a3ffe5b57424f56a826446f45797f903a Mon Sep 17 00:00:00 2001 From: habrador Date: Mon, 10 Jun 2024 13:31:36 +0200 Subject: [PATCH 66/68] Upgraded to latest Unity LTS version --- Packages/manifest.json | 8 ++++---- Packages/packages-lock.json | 8 ++++---- ProjectSettings/ProjectVersion.txt | 4 ++-- 3 files changed, 10 insertions(+), 10 deletions(-) diff --git a/Packages/manifest.json b/Packages/manifest.json index 3daf840..a498c9e 100644 --- a/Packages/manifest.json +++ b/Packages/manifest.json @@ -2,13 +2,13 @@ "dependencies": { "com.unity.2d.sprite": "1.0.0", "com.unity.2d.tilemap": "1.0.0", - "com.unity.ai.navigation": "1.1.4", - "com.unity.ide.rider": "3.0.24", - "com.unity.ide.visualstudio": "2.0.20", + "com.unity.ai.navigation": "1.1.5", + "com.unity.ide.rider": "3.0.28", + "com.unity.ide.visualstudio": "2.0.22", "com.unity.ide.vscode": "1.2.5", "com.unity.test-framework": "1.1.33", "com.unity.textmeshpro": "3.0.6", - "com.unity.timeline": "1.7.5", + "com.unity.timeline": "1.7.6", "com.unity.ugui": "1.0.0", "com.unity.modules.ai": "1.0.0", "com.unity.modules.androidjni": "1.0.0", diff --git a/Packages/packages-lock.json b/Packages/packages-lock.json index 87cf5ea..ed57cc3 100644 --- a/Packages/packages-lock.json +++ b/Packages/packages-lock.json @@ -16,7 +16,7 @@ } }, "com.unity.ai.navigation": { - "version": "1.1.4", + "version": "1.1.5", "depth": 0, "source": "registry", "dependencies": { @@ -32,7 +32,7 @@ "url": "https://packages.unity.com/" }, "com.unity.ide.rider": { - "version": "3.0.24", + "version": "3.0.28", "depth": 0, "source": "registry", "dependencies": { @@ -41,7 +41,7 @@ "url": "https://packages.unity.com/" }, "com.unity.ide.visualstudio": { - "version": "2.0.20", + "version": "2.0.22", "depth": 0, "source": "registry", "dependencies": { @@ -77,7 +77,7 @@ "url": "https://packages.unity.com/" }, "com.unity.timeline": { - "version": "1.7.5", + "version": "1.7.6", "depth": 0, "source": "registry", "dependencies": { diff --git a/ProjectSettings/ProjectVersion.txt b/ProjectSettings/ProjectVersion.txt index 0a60761..e08682f 100644 --- a/ProjectSettings/ProjectVersion.txt +++ b/ProjectSettings/ProjectVersion.txt @@ -1,2 +1,2 @@ -m_EditorVersion: 2022.3.5f1 -m_EditorVersionWithRevision: 2022.3.5f1 (9674261d40ee) +m_EditorVersion: 2022.3.32f1 +m_EditorVersionWithRevision: 2022.3.32f1 (c8300dc0a3fa) From b12fb3520be62d716aff5e1736b286f3decfab72 Mon Sep 17 00:00:00 2001 From: habrador Date: Mon, 12 Aug 2024 14:46:22 +0200 Subject: [PATCH 67/68] Added new social preview image --- ...=> programming-patterns-logo-original.jpg} | Bin _images/programming-patterns-logo.png | Bin 0 -> 1003885 bytes 2 files changed, 0 insertions(+), 0 deletions(-) rename _images/{programming-patterns-logo.jpg => programming-patterns-logo-original.jpg} (100%) create mode 100644 _images/programming-patterns-logo.png diff --git a/_images/programming-patterns-logo.jpg b/_images/programming-patterns-logo-original.jpg similarity index 100% rename from _images/programming-patterns-logo.jpg rename to _images/programming-patterns-logo-original.jpg diff --git a/_images/programming-patterns-logo.png b/_images/programming-patterns-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..7005c7477817f00e72d9834e0f8cde3f30be12b3 GIT binary patch literal 1003885 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

(tZFa4g&ReA_g0mVMQgzXW3_7$}y5 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

1&nBbgjXcHZiw6g>>)cKv1*nm8F@PXye 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.R5b`A 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
tIDy1d!3=RAEBvA1 zfkAP+6*|7uM@@dTVvja3j#|y*tPh{lhq)aYIE=u1QJhf~nSMXy5wgPf6i2Oqdl3 zj9f@QdQ?%Re&Cz7b=Em&HAZWqLZSueZl*@V`v4F4W16_0X&yAdi}TE z3+G#&C>c4eff0uR^)ctNl;}J5Rse*9ZI#3ynq8s9O9BXB^&-|s3urtNB4DNPf=&=o z&$FTi0VcszBCpJ1OPOOoNNQMG{2-r**uXUh`vEZlpkYsB0I72J-YsQ^6ik~!JYgf# zk}EHT<;XKFi!7xB$=G<{G2j&VgM28GxnFwDFRfj>`v1K0<<(l1IJrpE2M&6D@1yVe z;J)2^yk3v01&JVN#e7mFOcF@msWH61oTvtjsQ#>4NKF+aEJO9+2@v23dBh-(Lz%H_ z_e&4uC18wf*Bqy*Fbl;Zw&_#AKqIkcTBV}RcY2cQ1W~3NX20jHUA^X(TW_*#>B46` zQN%ndi%F6)bwnIvdKG*h4h_~5!)85Nh-xz6Ir;&0WFvzjDVAvX60oZ35GqYpOsUNK z?ce#;=Z$KC8t#*#9a6ZxZYq34!iwM^YIbHzXx4p{Q6CCuB>f-TM4NFcQw zxm8u#j?!|ZmMeE$sfidzM1lpYoT*6usG(I|2kP>QYkmS$9;>Av_wum)jB~fV?3w3{ z>m8xLRmpdR3-@eZ<&HYpn4OL|Dg3&fj9N*nC;FmM7M(Y5C%}e!T5qHxsI=S=Y;`TUWCuZJ9V{oiV8| ztTvi}Z0g2!Seun$Xv?8KYRxil&+^XgU0*UbOVGqoxZ|GA|_yayGA| z^D13h(6Xk`-Iuhc>sC!uE1&<;H}<#trDGOKdSL6dQxoFzp0K_qPS=%bSK42|blQ%a zZq%!&rKHH;`2P30vJ~sOV!Bh~=2&sxFP+^m%2^|y8?{m`X*JATE89h~UoK`eX&UWy zrJyQjHCc4ExZ?C0cF?fWh8e*hv0@5a@kCV^bJ9^KAI8IQ8mSbk$L+C(y?*_=J8r*s z@2+{TpZ7YE-%H{!eae%b{H$L(7rF=*N-oi{vY8N*0dZo-%l&1}MgaW5h=#sBqzz9L zp+M552pv`ya0Y6?W-dY@NgBDXyYZwAKq?axl{oQNuNj-0Y5&vz{nVZv_f;*2UQUeD zGRZJM;$A4)I8M8sj~}pXY}>9>Duzw(M22zH>-7L)khh9auF^^;kP5AK>qZ=e3-j|; z+X8<1-gmxt>&^5zUYN;_>vTNdi-c27JM}T=J{ETK^vr?L(b2_Omb3MNeN0)H18CO; zhet_TtJU%>1HUn)L#<{BZCRpuh-Ul;K~TZR>hPZvgbxlx{m%#{)0Qn;4({LA@AgjK zv}yOwT~9p!g7>`pU6JoOhHjexjT&q#Q4xRdkNz+bi%gPI;6;(vHsH{g+_4Tk(Zn8= zP>TkBDe|*627V4BTOyye5i{^1hu=rkaKIcm+zY=DkK$OOAuZ;!ESiY3cew+5*isMz zm`CYh5_<_4*)S{v8sx+OAO#50A*%`?5F~eEVyeuO%K5gLtC?U3i)|nuhVHoQBcxZZ7If77ze5*873WHf?H6EqMC}T7xYHD z)TS><(J4U4P*+r8utkj%agwhtF!Tjtu!zO5Hc||8i!I?kqeV%l#Dg>g{}CYG0u)DG z!m7{z@JL3apN7efMh{rw0cvDe z7W9Mq7f={6q(EQ`5|*J91aPQGTp19LKk>9eAw25v3Q%*Hv`~YHF@tOL2i7C$fBc|B zu|QCbg!Mt(*uN{li)+Tm#W<4E&{0KA7Ah4N)8F{i>VN(0MP4YV8oekcN;$pmC=`L; zhgD1(wNPk>2wlI((@UsTrkUdM`#n`hXEipaY;?5jeOQ9X3S#FEN889&MIcsRMHU*7`JW79jR!0 z-I+9rAXin#R)th9dWF9?YHmX&r>u5PowDV4Mh<7iXcoSJIxt@fX7r+M=Ixp5mx~|l9#GWhl;5$Oc7ML%=DnRp_cG0r)UR4YlD(owm5OZU$KhY30F%U3o z!qO|VH21o5dzH8iCcse9&?8FIlG{o$TT`N%6j#c~DFdVEQS*yAwS+xDjiPo5UEXB! z#jdM)w$d}irY-?}ov5gFS8G%%BlXcneT3~D;cKlRsCa0r zB9~~Lj}ucj7@!0XR&e)o365XoIj{`54`K^g+@Yv}L%gQZR_!FoV>-iDfV!l&skFt7 zWhaob5{QHj*h&jPaG)wEdqhJe(T;^~*Rrg}NNv}yopjt`o~Bt0;cV1umL}YH@4dV4 zy?3Hg*8uvH(kOvS)FKn;F@U6t8ZBc0YNtic9kVDz)-;u`{m|GhO8Sf+^dFKY0OCc} zaWqjjBxU=Z_g?q(D4A9EON0$VrAEWhK9JJ95Q;L}$LSho$q!BU6G zekDg>500sJa(oh^d1x`_Fo*U7KNcB)9X*_+gEJ6AS?GqbZ{I%Ka;i>cerC?K-7+sX zOs;v;>s~8o;b_&$(-1H*mqo=g{_L;+TC%KOl4^E^4x}ta$8u9IRB4ftVDzy&HW*fL zRJ|iyN#E6n%LV3BB&`r;xPaj;8)~l5HolhMsf^Z3Luz_Gh?$r}$w_5Kdz5JVimX8- z3{6*LfO=TtrD5u}V_^)$NkCiVfx4N?MB4O;2@?+HBa8}E7?uF4M{gMp`UM@f*cMta zM1Z;h!p9uN!b~DdNs{Tq3j)B2+3t8*A;M&Zr3(4ah!Xme8Y&8l5e5vctbwQJV~LEw2F zhMVJ9sC*oUz)f`SqAbWte)<`w?%A_P)6G(llU(wn+_W8VYyb3qw{H4DH;O&XQqVM( zVM4+MQHIc<6G-f-##B`ZBlrQU9QX_7MVzFDZs4jcs~CBzijfXOmzJ)x4E+JnK%%~c zNQWH}`LGej2?&4r(BMIYn8Jh&hTnjE)PGb7G>F@K_)i0zJ02eRys}IL$X|>ni5Lh4 zWr=*q8l`OkgeY0|46iarp*+tN7-5PP#*z=M2t=hQq@+ZWR|5PcAU-W{;AcTkPjkRq zuoAy@_C7e3$J&EJQQtv`D!?Ai4C;0SEmmT=J3c}aIGkQoNGun|79QZ0S(-bq9cKd( z>lxUqhr%FuEX*|;Esk&#p2Kq#$S;F%53=MF9~@}~$Qk_^Bw;1;;DGk--VOJq&;L8z zrI-9C+{K^02=1+K`fIoY`}V^jJKVU&+AJV7CL|;V=4d^v(}+5H0R-Nh?bukJLQMfu|sTxgy1i8Y)UCVnTyeUR!X{{=z?khGzqFHX@-PJMWMrYa#hLIp|2LDBZiLPnPR9z9~QP+R3*Wd z0Qu}Jg4w3f0eWdrx>^;Mt>2nAWJf9upaNAZgS0K{X&iS=Lo32k0~=uSbVNfi01gT< z5ar0wB^WJm2Cb3-JSeI}$B9N!q}WD3=;mc?S70=!W(C8mKVqp?nRjPr98>KF{S4A0 z#C{e?MiImv43V4=N3Kd5prPy?(z2^5dK6HbL znm%sQX~kg#&aItXU8dR9Ke;*ylN7cQ;0%PAzLjln*>V~ZFCGKRi&(*Dnrmr{kg{FI z=n`ClEJESc>vcn=0NM!4B=CGR9AUH_GX}rw*okR&$i^}G7_=bhrp3rZj<2N+eP|Qr zq%%)B^&NlvH+S7~t0sw-ZU9GidVSkY%o?SK*VK$l|)f-nrMbDDrlC~@AfH+5*$#`mBeUR zwP`}~qhh8|AZ*|Seb63VO<^^QlYYOCFk}ynpp`#ZOeim>Gn|kZ98+|qT5}=lUgJ6NH|#Mv)m5lxkw}q@WDV@E7s-~x=_doY*|VQ z(I5rK5<;thY2YWz5Vv7Ku>nhuX&6I!*}Mo|Bm*{s_!CNpkMeTPQ5fVCvK&I77NSP)NS2bEikQ`b=tVsf>_RY0K}FjDIAOcU zWlqlvmJkXBQ9F5eT1H(c}GqJI;As5FVH)WIn30Q zSR@&uWU^PXp(7JnO3*Z=$m>?MYE90lN-)_Z@$B=?g%AA1>$xKF40&MqlUp^Y z8v@82F%uIL0Ha8Nco;eDb{k@Z_M)Z3yN;QlacFoRqYn#7A)l-!_8LD%#o#A*_&IcJ z;j$=_bgbU^(EC3S_I=o07?8GZ3R!vD=F^^V-sAS|-czL6^z<|=W1#9dj-jdsVtcq_ z6Y$ z(Ja7};9~gjOUnZ2bBHwmc{o8B0Lo(s3B&`&$^62CqL65bv_3&MV^FZso*R%YMS^^i zN}|D1!oG)?;im^y(7=*$5sqFBkhLN&6QKN*h7#n^bzP)HR!k111Vb)~kRz8&F2JZH z@*h;~2*Q9yn#E@E1`dB5YA+{53__0rI^H37{{$VrsK!B@37i+hCgUmz2b&?;BrmIZ zAvBvUvb*VS$U1>WEL+k=4F|!~*R@tE)Ddh1Y=pKq0`2TZ>v2nROCc6FRTjAdE z=D&k`%b)%Q+&lj2Z{dFQ-#>sGBzl;L_3;Ys=S5`wGol56B?MJqn^vP%Gc`I!ugFqG z5>-0zOFOW0$K{v*h5KW=)SrBBV#AMr01&|(&HEnTq?6?TIAx|oivM!5)mgLY_ zT~`St3jjz^dO0}E3Oa707A;{2ZzeAegfJ4IIPyhF)T~0aMHyy*N|!}U?S&%balaGw z+Ibv^d6I@<68RFn<%lUB_K}iFN+!wxg3Qqa9?f*pLI&0_>{>~=S&~YhEFgHoZ68L! z7??wO=^(_AL=A`xMdPw5JxL_*Ck`O*NjXVB$D5CRZXXRS7Piwli446)g4 zA{ogdYdgPm>?9LT1u|alO9ir{eJ6+c1xM28W?EX{VFtMQ6Yhfhw7(|9900XcI+pEs z{gc*h{NzVIv2)u_TeDyQv=^E|-+Rf6UV7^0)B1f6uyWJplUuD$wNj^M(Q3qUA7EOh zrSIkbktw;)j1UH}m-whEMi=KSVmKjy7+7)at};y$SR?ouhtay#Yo7J|XFur~Pdel5 z)5j*qOBt4~p9#5DaYa>0l5AkK5J_>AblP31kl{r51p48V<|oNwqmj$mp&`6TxPKVn zLx|-$h~&h7qQdBC1RxCXd6*0QiiGsQ_D~}5JDnaG0Q3sMKxrU=OUM~lq0BIC$1!1a zOea}}TXeun#1NBG467VGgq}ydM0@Ax#Yn?2!331T^C5;Zg6@C?jsSAzF(6*sqY*V2 z+*;Jeq+G$V!%5&SINC769LtjV4Azs_ zEU^thxJYs>Dtf2aPtuGwzAG?tiIqGBs{np{rs+hnfgkL3{r5;?y(Ge*0VBj$1Q2h(!Th zlvNAkdx%Y#f`kTR81WaJ2qgkW&ASWag<^v z#RRI#dJ<-l7sFW2lG5t~ODIt3xJ!~%+WNung^$~ZW&zc0F@71*96^q)?~%{8RI!mo zkB?~J0_Wt5jwKK>q@gd9@E4!xpG+Sq(G5k@?dpi>)-~IebSsh6Fca-J%UdN=G zu0XutBLh@n^gWY87!ok?VOemng?L>T+U+)9P#NBG+{B+H9qwa{gJ;Wq<{0|tmH;^t zA(+O(@_4!gdpAsUMUBF+;yCYn_j~s3-a}iFOR3-WfU|%7*MA+Aw{6?=eG)_J0ak${ z+_3azj`p0a_Fu?HKaO$S#zwCuC{FN7< zaqeS`sukt27yH$E&9rS<)nV5GB1chz${U6y6^fiI^h}nvbq@HzY!cQG_!Kxqs1H?% z5vB|tgPQReeicKS%_cOqhmq)R5D(nX$~vS4a>Cc<0m^w~hKZS=Hr-1cq!%VpHa%Yk z@pm0@35pjC$>OZt?$Q@a6%%@j&g{%ZMN~}9Hg!vtwdv_;1YJ0 z24##O-b}*(=TnJxLui(ez!p&80}mORX6uFy0F-A%5({~5>6TQg+wb0b^;NeOx#IOB zNj3d`Fc7kVsIfWuK`jqI+6W>6AIj>GHe&-3Vg7T`Upln-NIQJ60U?q)#?(*uQpCXL z3SlsbVBAt45I7{{Lx*V&&_a&?G{$){bkGu?2Ob>pd!f}q6b1|_>777X7FC)^P)Tqg z6Gb}yfmNPb!5rqB2i3&``+;&GpZ&~>)U*sL8u*)5J%IXH%Ht%ki&}9wXNC;tfnmHP zE16>Cic=20w1{pfRq$C9R9z!DEop*kCb{IrWsr!yAkq}oR3%%LZB21B)iHE9*D{4X zqc0LGdg_Ntq14abcIBKGT$FmQ-}q~kUKd^W{H zFgWgqBLqO=iFkUsF6;Y2tJ~}OL6l~gN+d<~Q^CswFBc+#K1U{Kf}{(wA^hN)yS{Vf z?U!9~!?(V7&9yh(zGr$NlXRysF{sK3r6CuF9RnX7Im91^VF3MiIvunMKdY6>++5GH zppFQm01RoGMk8m4DnJ8^fPNkiNv3I~Q4;!5#c?%7@qJHKX<*FE9z=)9D(%d%U5DPR zP!y8?!|~scSW^aV8OFfJ?Wiy+hPJ@Kn4Fwsa}DjRK!>TSfJopfG?Pd2dyk!H10hDT zL^}zW`j8G}cZ3gSk%5nzas5OuC$cb&b-t-sR(Kdbc(+hbqaU4{ zT^Ji1Gi__W)!w*i(~DmA(t`^Ny(ofdl!|30z|lv7kI`qlY?LE?Y6Y!D9PXoCY&Ro! zte%LZ$9RgS%BpHu7DJP}mEZaC{VZ+ha>p8V8jT)5%nO<9r8H5bA- z(oLgQs~MI9#4JmyWmeFB+WA8t?L$4tr;mZslchsl16(}_EfNzwl09w%umFo>vcNCV z&&2?IE*?A#Nr1m1L4Gh6n3@yQH1|RQ;2(q=Q%ur=fWZQy#~^tI1x{}((E(QmI7@H& zh;#(!{yqEAeZcx~Nt{JtB9!=Hs*2HScJ}W(h^weFv_ED75(lU;MM1wqCQ%mmQDIiu zqY%^(8;_)nDJ8ubO7Yaf!EF>IpZ|K~h?mQWv;B~FI30??9o#LU!+ue-mOFk2l>H#h z-~uESaXbuSWz$9CnPOOenDqTbmNn=;N=&qvU{Qj|!yi)jB>1#WhfDM>Hpx3(8fNR$H#BKS*tPskzy z$^hOOJ^`S0Jh}_5qhl~weU}r@>qr_}v-mrRVni`RwzDwWD=KP9FTKzaFsw!NZAG#J z(2=>&4>LcN3&o9;N~SkTXFSvD&3+Eo_VZ3q^dixZ6)#nTMD-#ylPalL^& zX1Z>*X4npW`nC`{aVe@op$MI@yl-Fgnwz&@{{8DOzVwHmyX3nE7rJvDukA%%k_TBC z!%VCD6jHUjiWii|}3UJ&nNVl(=2 zC7#|t(W9J#zJVG=kqK+SFy`jw*ps*dKiMED4PEg(0`Uo*lD;zW+<0K=PxL+CumnWq z`~I3WYf|=#GYD;jU;y6nz1oQ9Z8>&=2Fd9Okd%Q@hx@STb4fnZ&-nY}GQGY8O#>e> ziCD&E9+f%#u*kR{A&_HE5P~#@4oC~2&!Aeb{r%hDwr}PjFi2&z(TV)CpYXT{cD$kH znk<<*a$C_M&lO#mr^oMbSMC?&csR;1;uJ56>2>&0@Z$u^#tWmF)`I33xm}Ps|w&cgb`OQ%Q9%&Zd#^^ zu999yb6^9&{7;e$mH@)j2WR%~+7t8xMby~lA5tt)5I5(V+qdtSpKrp1Kv}2;#1ayl zW^uI!P2xg0F(h$GW{3GC$^8#7YS*FAVjDT}OWc3-5atc?@4s0@NO25~@D)@ONe{b= zbP{|DE&0I{B!NWu9yLx3wfgZpZ?^^+a23zw>(kN27Hn-j{aFL{}Tv!v?vG5F^oNE7s1w{8|X0%)?t$m zwViW?r)0Vgml%K9jU-j3yCGY6U@09L$)`5_MRu%P=l~_MYA}IIs#qD# z^=fL33AOcQb)8UOFElo!&KhU!Irf^f&8f4^$+PuUXR2eTYa?eUV`rF?XBn%`(#9WS ztvb(MbABMNn+->$jTgi@Kx~ntxx{Z`E^Suuj z&3PVEsn7{YZ2eW}(g7?4t&Wj~twR$4^bvsYAuu{RiZ&vQcmyCAkQRFM!Cn?YB){tz z3Dv>4$~7I{XMe>DbJP4jm07nizEGh8hL4Sq>rKl zR)M8H9BRcKYRF>{fa}D;bZdUW>vltbw%49%H_0u`FLaxlsf|yrGF&q$GQ-jzbM{#; ze9?>k;MK2w!V@2_sA{+0$6&2it8T5jxW$DF5%+1!8N>P%Ug8sB0CRhs)9?Zx*!T(C zfJGdYxEAKCGAj}UDb7+z2vS0Sbb4Nf(N8a@&|Qc$bj^S!r2|rPmCga6PhYcJNx*d7 zgfIs|w0-;bcB>xr{Bw0{Y8g#Dfz_g&z$KJUo z3j{TZp+AmFNCx6#dk}Sq4&wtQ`yWZH-2~nFU*-?uh!{L28ZNKNQCiL|bXCnvv%&BO zb6|J#bV!crfzJ@|Sk9O?M1{@YT*;7a$^Q+A0=!h70S_Gu9Y@j!MaP>zZ}|Vx!$*Xr zNbVMiW=wJtbOLZ794r9`Is<4aPvx?x+HUCi^Ro*Z*Pr~ifAe;9;n;Yi+YRVe>K$YV zkg}NPKu`Vx6O<~36^$$!LKLQ0hUVCH5L!B9;L`9h5OIku{F5U*hoAfk#yKSsi$Sr8KD3L!d$aWlj(u(7(tK7T8`OI3!?opix>Z#>SD`F+f&03l~u zu#o6cGvPhf5EMYmtcxu@K7O(r86D1(L-C7Y)C46{n9LkHtCY?&#TDA@UW_AweovrqGl4BM@0&@q_~`j z0JlI$zu_GEbG65w)qx;+;2DGda7rdB9Pz`Y@C8Er@G&6w&c{E!b?2r3ef`B>zw$r7 z`GfENH&Lka-0VHlzU+|q#015~laH;|SQ*f>mykqM%o5`-?%HO;aew_2~(8&0im z*{;G)F^ZD}jq3HgUa#+YJ(QTIaTcabZPK2up$|faC}qf*BLgT7#A84_J-?UJ;3rHT zf=`Etw+Ji+2V}+sK;H53@eLa`tXe%$3W=_R+4L<4$R4VSQ8v~XfyPrLVSc7{?azMp z)2ptTo0)MOXQDBl`3WH^WSC`9PN!kg0s%ALYPDM6_hB(sY$r?8C4po*w~(-UK(&w18`qL{iBtrXHYj%?e$<<>iHyx}(69ceYYf(Ry% z;fe}?P%g5=PgF@aR16SwG%6CtVc-RE9LRD8zC~ft^8?dxY9oy(31;UG{PM57XwBO3 zA}918_hVHx$7{8_@7;gRb=M&)4efw<6vD1;H?uFS^4(?NTM2IEQQ{ib);sT-o1U&$ zsyX{k2l7c14ANrn-fe&Xwl|;sm`%`mpZwTIP(wzGt6jwV!T5a`2~CDi^`ocWN*v_Z z-*_|aD5I&JJ;Om8M44WfR-mQRBKA(699va0VH%61V+U2b|C&L4vn3@IMk*VQGlgba zSaF7)#SwY}!!j4dIL(~K#69=!?FU5+U9Om-q@}b}mLW}%=c=M%vM6#w{6GtZkV4i_ zV@uPSFw-=~9-gB-%xQey7!cY(jXgY)(*rbN@b{SMXxSZiM#o1>44%ViXk(oqI>F6) zU^;Vr!yxpaXiH-~1eCT-5^AT`;6Da3RGs5g;v|g(Dbv+G^Rs(rXC>R2ZF*}rp5%M| zzTatg7XIVn&p!VJ7f7lQ2C?aAMIHx1zv5Qf-6p1oD9$w1q_O5x@#Vk#?Dr zHm7xNx&*|5F(*r5B5c_B7*Wv;!%5Rv6H_UgmwS7!_~J)KifJ>S)ylp=-)*He>Qtn! zo*{_Qrxk=W$fCmFWa@>oMPLB$xTGv+1=Gwh`&DaV%U7?w?}K0XUQ1qAXtgwKnZe%g z{OjM03482xuO@VoGEo$*NC8@Du0J-SYG8s)1sjS;FJie&0YXw)i4_})r79)97pwN_ zgTneh_~`fdrq!s7P=@36HrMkvzv_a`vfAWD{er2H?acY(Jp4;E@2haVj3r4ERPA6+h zQW`-g(pQ*~!*Zs9h8za*Fe^^TL|K7KBn>Uck{#3eqL^i(no@Q=RjNPv5C8rPH?`cn zx*A&F%)3utTmRcXdQsNB#x8bM_z_szfive!QUl==O;LUZHSf4bwp zuHGGL6P<`Y5izstj#vHu%m4Ks-zN&Oq^e;U7?wjLku{6W8bbpBZK2cuG}DH>&>?>G zm1+ZM0BLESWrQ2%yTzWp`*!c!ztC(es!67mtkTnAMPoRQ77c;wk(l#}{u7b)Mc<7e zBGIMYXp8K9gbV=9f&p-$BsohB0148X#xf9pmNllPCf2S0wcmbuZKN_eIZh{_3&O;R zd&9N2{^O@Ub>``3EX>XU`hb7HzUUjEUbGk}4NMwVi3hk(;t<28O0v-vf zyz}6`leV1t+rR(&nr%j5oF&Q0tLy*v$&0VQ>e{+n5wexv*IZi4uq=!{QB?r8oQfMo z(VqSL-v0KtPpw`Jb46v3J5Jp+^7=pd`+m0z4p_PYJZ->ATZzyw1TNXPUGWo*MTt?7 zIg=AlefG1~OszI;wiN{9K$KdYcD-7IC=oZ7`OGXKCB=MNhG1d(uG8T$@FgHrRff{U z)f6Lzp5f86H)uW7ftpEgoQoRaUIZjSYG_5e1YxBeGX!HHu|uENVQH9_9*`MIWB1Tz z9N4>J5d|@+R^)+SEQb4(6k)(xR!`EsBD4}006=gdPRlq3B6w~3vva$Vhfn@rVlpnxZ{rNuDfpAU0WT)R4_n6u!z`cn;Cm5g{~PJ8;hf$ z*Xtn-_@Ad4BnMn!wIU*I2clkIlmXHdAj*egsM+dmcihSifTBzv&;W>OdnkQzMN>?_ z=b46n!TINHK4~nWrFnmBtcqOkyko~Lx8B)W=$Td}h*2NfPKt_9!L(C^gcGT$I$$9p zP)8)7$CQPx5#%j$1wAW5Dac@897f$&yz>8m6J?R3jegsgC1bQ&y=UvbYj3y#Ilusb zj#o-?*S4FW7192s1_1D^tDE;S1EA(sxB&nf7y$dWzx8czKI_blkb|G20dU<7H<##N zw3>tr7zkbSFd6{Jk2u1F8-M7-X+Rsq3R%g4u}VR=oG26T-nu_Z(O<9|b%EXkhW^db zYk8Jq`iD}40U*$fl%_*##8C_=VgTiy9ExK#ir)@;cv76P9Ff%yhKu z9!y@xLFlbP=x~Ct4?-t~PH?jxn2yx|I0_q19a#@KVF$g_PY4$DC{(^rXVO-E=yIOd?pNicVm8B|415ivb|lOrm3Vjx+!&Qr`77x$zWk02H+~q8zzJ|EX)- zzkBtIitf+MVy7!FDA4uUNUE;0Ha+>DF24Md@BHAPpUbAuYQZEHGX5z22pTE@TUCNI zt6OdoXMP^O;@MAn*Q=hsFarZ%)7O8p{j#6#3ia{czyP@O|NEU^{p`PfNGfAdlcOls zO`FgRwT8XpOUQ>Yl%`WEBcf#?Rnbj|EK;SV(DL$ayZ3jzu-RA1p#33 zFbwax>n;FUz)Ap2z7^;E^Uro1r|)~Ukwy?l?QREy7-@7>%My%V^caMX>!3jZ{xD{l zBg7`kz*#$X?eqeF!>08Mt@-`?_rC09FQG>cY)^%4T1a~Lo%iUHW-8jCu16uxMDBA! zi|`Yu9qmFGz>>f+Tk2+wr34()BN;BiKN|5gL*hT5{oLoAb?#Y>(Rz|6UeFJd5U5es z7XlnR2kgc>v=uqce`E}tsp}M%%d(60L!R)swB`SI%q`EpdqUfT8LEA z^z6*+{6Y(ZBMxbIpjbvp*zNW6G&MAHv@vFCrtj02I~>~EVpVHy6o>owx0;>)_^OfT zKL5hkzV0<|{=2_=@`X=2^^B9OiqY}g2j=!4oIlX&EuckUZxDL?tRaTcW$>uaJ_SNs zu?cF^r^KTm1+fMK(M77Xy!MHF}_hJMo8DM^ggT z5dn-#I+Ycm1>Mj1$xUzesXj!rM>!>9wx&NgHM@+8{`G>y% z1aOL^(sQW1R3WNG-mvZQT208HJmokF3Ob`!tyV^UcH@oTy!={rys&`z7kC15O`K$g zMXQyMD)fIWgmJ^%p%FwN>M$bw#D_4W6-O1)aK{KaP$ozTH@q~s%AX1n*V*JCfR7R_ z_As?dWMO{hZlX|ii)V z+iBqj=myo}0x{q@Xdowo1iMD!=>LvwyD$6hm0$nPPri5M&+gi>|3J$x^h#rL>2oZ4ey#kU=TDZUsE@Du4jNMAkaML{t(1PS5~AU8p$=7r07wT8UVGE6~P`>tUz>z}bf0 zXfzOp;Uo)mvLwJi%0&z^r%xNQlOQXu?ZQ>eO2w&EErj7CoaGTUuLP@e8Wb2_bi9z1 z!4fEOA;nd~k7<%-VV*@r&iC*qm@U|0y7Wj1mKL(Ay0+sQj%668VrYt{OS&o}Y#AE& zbwfrxd=qw?E+LF~+th7GuQ(R!Q>!>Aos0`9r-#+_JwK>LnEABoNe>~|P6;|Wi7J)> z;8v>@!_=TubHctkz%Jp=BI~reF<@&3gFXv=%vljEn}ohJC+aBOghiLbX23`oAFrJ8 znA2YQs^9*D*S-36Z+hM9{^Irj-yiw^nv8v0S} z!?vPLP>>TYD%67*_llzHx+c?$nxu1BM-O@t^1wubM-O7|*8t$X3?TvE$p%v7g9i^z z&-#KaVT`m|L94aUs8&zjv|(~`RTy|^HMoTQV4I;6VF`das2B*j@w%Cst}FC>5IJWV zJ;y-)y>5SDVGap4ZrphGIgdpflQcpavV{3Y`U|8HI)>jn=A;p=C*6>QK~1)(Mzr4bmf$20quAi;G8OrZE-0 zBJmrKop|OvFqoKzlMaFDL69Rr;C>df7%n*AelQ~!?ck0O5U?jKO+v=V8M(n9IuMIF z3cg|qR-h#{Ka4O@!(i_z=?L$v)${A*12n>C!gZ{#)YT7{@0)O(x;s%7Lg#y zimIcTXf@?e`kKy=3`3u4#wx?E(l172^%0MTBFCN{BNlDwM#8pT`}WUuGR2hbn$wuD zYomr;kqt*wjY8E0MMoe`3fSQQ2?^j3%?u1+(548$3*dfg{=grUL1nRDG%HaA0j)t# zoJeAm9M}&=Q*D;?F2^W{gn$Cs1B*19&6}>j&9OAE*Q-=2Kwk?B-Df@b!pA@1348YJ zL4vWdF{E#|+fYWjsseN3C$eYRkk13d@G=J$i?R}B=_zMy0cQN(kA86anP1fta77Ypl31~zv?W84;Y?Mr7SFGRE7Mp=Qn)fs;D!M?FSvu@ z38x7noGKNLrQ4=z>WZd_vY3lyDrQI@$$1W^mIa(9mbx@>QLhvB`a!n`A1>;9+|Q#J z4noQULx+@0o!{wlCuTW!Ws>rgSs0}eHE@|L6SOF?REz^rDGMpf#4H{7X+F^yRRqQB z`H=Imk@1mQ19Fx`akt$@Cyb0ZqZ2jV(!DTTXm_R;X4^qGlhcu@#+m1BdCm);{yTs0 z8-MvXuX)$|{^Ixl@Fl06z6ITs(Was_3}HgZu2aQNK;#70Ju?Gg%Q9Wdy0WQLJ z1WLCo6{b$J*`|6gsqOgclgHPP8-rVW@+iVt`Z(r~BaFA%1| zE-9MfEHt}e1Y;W}C}u>YpgY-ogP^J6wB)nDRNSH?VzuDG z|D{I{8R-0n;5Jkz9<*CuonU~KgohC=yRwy30(?OKIuJuy%u*gkhlV4+#7dzpowOxjaXLUGlqxTs60ilV!+UBuA@On1;5K$6%EH9N zBZq7JOH>77NT0Av!-e@}4+M^bAR*9R>`6Jb9Y1NmF|vYgBcByVdX9%59s(QT^TzU) z5@Q7@Q2Iy?&0!M2F+GbYne#fmg}HgDNYy-Q$Vpx3jTi0phF44X){@=zY!7q0YU$2u zvZIo0TcsbEQuo*L`|9})C*11BTgS@XdFviAi)0xVF$@3+y-0Iu+Z&Gy1VwIQ^(hzEE%q#XlYS;LD=f_+TDH_4BmsqoJ?(# zB@Lrkr3F?vQ`4AHfw==&4uC#4=D4FrOz`tk?cTR%Z@=BESQYBFqY&!6 zG%)lJdmUua#Tj!?_Rvl-<)Re9$SrFKUF*#DJSDX>o zt+{U9wq47r7>1?mwyGMcIyG9K9ILMyt-(!Z#FnQ)3%fk8NBtx@pbGx>eP6$E%YQRrph@YHL^3S5G$9u4=$PW#g)oH?2B({ltcK z?wT z;jUhBVu|8+?IubK3<{^}x+o4qa_bb%Wx1&uOjjlFyK?%%&3w)A=DowsSzCO+;^7Rsf~=y}fHuUMFG za$^9s%2wQaehB;@derQs>b z!Tf@nXKMh0qF|ti?XJ)Eg~^Cv%VR(yNPT!!c&?0Z;5#fjO2n$mi+~E}KNzvNL73vX z`(OGWMMGh`e|K~m$jlOA5TsP0IB+2^6hP24gHVo+)Em`m9C>+`D2f85(Ol@R8ejXd zk9}g#{uX8xQZMvfLRu3+ft--4VGAho|}0Du-T4gL-tlJaQ&lK?tH{|NB- zVt?t|ppg6wK_9+k5R`f3+AoR0nP7peV7AUeO zTA88I5*u(hJrjeOcZlc(PI_X7cA#89SlSuR6*-s!Za^a7v9ydZuGp)*K=A{&sz|CLka2^y0h$yUoItOQ4KigsTwLrQ(7-UD&prtB z@dsMr#nyr>JNtqQqEhHb z2*!W>npdBC>Zzz0AU<-4f^f~6iPn7gOP5@7(+xMSom#zWe4;r&@Adk%Mm>z_Wk+7C zVcn?nSE^?&3f(m6hkYo!lQ(Su`d_=Y^0OQ7I_b2{X<6!;-d^Zl^7$|B+qO&a^AWq2 zMsX}A^fJ*A#Pc8Wmj~!|P*n+{z;bMK|K0=p-}SC{ty{kySRbYUq-1KW^3f0f(;c_n zW}8;%`L63`$;$l4Es!B(3!RIfB(G(e=82!h&wS1^*G#R|P5R7JR-}-GcDLo)l>+T6 zQP-U6!NO4N%}x^n2V;->kRBfPJxC|T6eULLqAzA)=H+EZdw^0p<0l8COzB%t>GzjyQLqCH+ zqt?)4^Z*ZN6t%#A)B(j)X|yjWM{N`Em}I$BMn}hhT(gV-`p%s@H*Q@2M}PE3C!Mk$ zJx1&2X@Z(VAHp>ABR?r3NtIwXH5wI1r31F+4#v&-)+HBx>CRj34Ey1#kx6l}rF>Tau(0cinr}$3O9rk;zIF`?{l5EAG~9 zd#}3s#uZ-zF3>JTNn%*)Fat^jhL*0(FC17iHS*ZAwrt+C7UQp#3fx)@+hfW?k(3| zzkkne*K&X!=&Ne7oWud-ciXnxzHrgMJnboGLNfm5&3_55LH^h@K+L1yQbl;bbl|{& zLFj=96@yQC6L00nPp`Y-7Ex0nAhhomEJEMi-%G#)y8oJCCLz5pK#xi&hArb$Kl0aA zs1h_DHN~iQgZ#eT(@CKeq6V`Ll0)bK_fw~{mp5pwK`LSK(UMJBjj%8p>prR5R z1e{g8VI=9S2JjHVrA3&>8hzr37jh&Wwb-=m zjD;D)3(E}~Pm?v%wySv_t70OBvvU976&HVSq?|FcIj!tLB|=@Ymuu-=EX3z#M8)bNiuCT5G=gll%VVYd`C#8-h|Zg;?$Hy8NHs zIGXLW6FLPbmoil|vQ(vm6^H1b)U%#&J4F9AalL23Ikek2xZlFKplKF6z^3brar>*!EZJen3Oh=~27 z6bn{bHd1@jE8h5tmb_+8XyAGySyXje4q1s7Ieb_E_zjK4 zEl0itY-C}aSIkwV(bRiUlL;<*gVgUl-GbpW7>#6}i4pX`0U&u+NQU!{Z zN-Ib!(&*_IedmV%`0lN#vC4z`m&$H)@9C#ZU4Qj=$ij|e$+WUmpf~$4FF@h5j-xP$ ze#kS;US(vo!1PlJ_wES~&bLE4y#lknP_R7*04|uyY2lw4IecxJi8sk7g{eD$H)y0E zVj6q#fC5YT3_ju>q!Um469B@NtQa_qO?pWLvI9h`knO=INvI)Op@a=2$&PJ*?lYeq z9~I{3=YgLpwTh&vbFH3LufFhQzxPpI!Gbf^m%4Z|3j*Z$<1fBUC@ z{_H=0`rY6LBzV;_Sz4oe~UH{W-uD|-a z8?U+c#;dQp`&Lx%vGw zLDvsEzTfG2&0eqB?##AYv-9nlCSroN$Niw&N1Cwb!JpZ8U~b>c+=1zZ19M1;^qu); zZ@x3VcmM3(>Dm1U=l9RfADn3(oL`upU6@&z-g97j_x_o^2WR#iAb;OMB%9ke4IlCQ z$?cojbFe+T5Osqx%3?Q?6#d}3_Np~& ztx7%4i&i__H<#Rg+rA%u|3_c_%GdVn+EZi@2^XeMyWL9D*s?Uk)cLpJ(0v$(AOs-A z7@1K7V=>Nw+-YMhy?8^<{Lo_}O&d_8=sp_mWYyp@`kk(l?IW^dg%&4KTK+HT{UO~l zQAij^mg~x@>4nLyx7`V5=diD2$*fuZB-Cv6th2UkT)(#B+M25Bm_T%u9#-T_$Pe*FqI9yznW%`Wr9XuyHLAf3;@UYZc$?kztmVFo=YVJ`vw-_YNLB z2s?sQI-AfirxI~dT!cB)e1>Ep?}GrPrthKPDw`zGPEs}lNype2+&U2H6HinjRv4L) z><`6I1P>BX3{%PvqEM{QoWu`tKK?hO+a3{_zn_yG*?3T~m;k7eo)L zQYVUdUAU&A(Q-H;W-x9Jv67}~@(1xOdP$2|R;29sayYGFv1s-aJ`b}f?vu9|CT>G1 z0_|mF(~~O11-?u`NP*NoX-9faNKx$Ecc^!^nt<`23Q{CUfa8%U#)My}2dP{nr37ML zNQodOxFpe<6y}zSx$r~~>s%hWPaOM1HwMIa63K(ED8ktl~{%UXomWmF|f zfRreO%}N8sb`%=$gotX0NsG8iH_{p(nF;jr9x|hiK@7kw?V9_~dl?N&!d+yDiR?p1 zWya3FD}5&^mdXe%r*8mDVy@(wk|#=$(MM6moERHNbc|=K^fO!1F@1x}G<8h4pxsQ^n+Gx&&5 z*xr0rTT+2t!uiB z870RY&zzvJcW8-pP1AIqBhAM=-$g>dkk6UVyOsHeI`0G#z<{C>EUGxgJG!z*K ztk>&RYA%E#P7-=e)v$tIpN<>P%3iDeUzh&$w9_V_o@UyuRVOt%X}qtsFtTCdSAX|c ze(z6Sv-Y&jcWmEw_kG({(@Zg}M2U`l*9|yPffXwyMQKzjqOK=`(2Jr2&4pdl2j}~} zOcr1JhS&f3U;OzCU-IIvpM*&|HonU1M`Ed*yw>{14_|cK^|zd|X%pX-p>}HX5Vbx8J9l7AhzxYM7=`BGl^*j8qCi#E_T~ z=M@A5M0OE71C)n(0zgcVEGmYo12Hz-njvdhnCKFn;R|Of`jO63Ej5?bLeooK7YtK0 zE!lPy$5tG~XozI-2ApW(swvr8VyKa>#<~gj@s3M;v$=BkpZ zaw^NI0$I{U_M7g6brJOf8;BZuD^Fcpmz5%jdy+zHXy|+(IXWX1(>Q+nPm0C^155@nfD{3;m-Npz8Ko0Iz;E}(@%ZgGoN|x znP-k-96@fN=!=ZDJV|0d=+Cz2_cv#JAz6Fcrsurmxi9<8m!9>w)10bOih-(Uureg{ zj32O1N$a*zpBkS!xUYHB^*2GvO)wjlc}~Y*L)QSZLc$5uW7?1)`XYcpMsL;2hGPY3 zgc9jAqC!lv5(0<;k(Yv|8+|XpG%-*|5Nnztm@Yh|piT%4MkDkiaKwN?7>L5r>;0|pVWI;1B?W*JxDyAV!?=bddOvD($ir(td$qksAbDEM- zG#$W*@l7)aJwd{>NU#B&K^CJxdx9&LQ)2!h*n#Y6836?|MMLTol|jQ6brG-IVRbxF z#0xpnJzTUb+Xr-9s#f&Dw=i)2EwwkTYmqFjxg4ue-xrqnU8QVAZd1l z%L+)IT;vjc3kial7pmYxn`@GwNnX&W?GPBSK{&3Mql!9e>#9tFxR)qA==I+C5Pyz{(skFZD4A5QausR6N7y0-bPa;C~)i z8tpi7T{lfJZ^?9qGJE%~km=!q2oNW$RFhl^bE)ZvW=$9MNHaa%_5y#GkS{1@EJJ7H zLXnC|p2bBJi(Vr1RU=E2j$JiGIc`Ti%#c}HsCGciStB`}Ye$n(8vH}QOmMU>gq6v;^nk9}@`I0af(Sc(J0A(hZA+)5+eP_2sHzTQEA%JDh7%Wnnh-S|DsulMz7c2 zw0<=84`@;-$$BKn{oId~AT^>;i9E4L6fxDpOzs*^ROaixfrG;j@7!$>2AufP!~Dm9_dB~gcV zCniC#Y&}VQMFWqiz4$X!NX*JY09YbIT1OR(QfR2cW7b#BT03HwA!Y^DFcno#*~qm_ zLzAT}^kDWd+mfUmhDHpVrch%VeYYx=WqCjkACboe(RMZ;}cPubiMw;x!Ik2c5mBp-?rU5ckbJ>XXe25x7>8s zecL*LH@ar>slW7$SN{I*z3z>F_J+Uwi%ln=RIAlcTt+W<#<0?AHS6?KD*yC}OYgev zP8iifng^bTfu@?eW*^frphM#GG1-FDy|j2b-)ut_r^uGZ7uqMd6)N2{ZB;&eLcK5daSK%U5k5LdX6T$gGtC`S4Tm`lbJ{;PaED!b*qvOk z(}|Y&EdFRd?2W95Y10dYO%W9g!F6jlSf+!%4#N;*pk5!Txs@`@ecwmqDVtZtk?`Xm zZ@cts|8>W$ccxLEh3W45c0*7hinPi=N^0N+D;Zc&@cnMP-OQoaM#g6j&bU^!>NwK}JG*!6MxmBvc|LuPV@2X4mrV~uoDak;C~Nw{ zWPy=IJCA5|)0Qiq3^crj%@-%0hUM|U^piXK!Tt_^g3yX1I`r6xR4nZX;vGlkfJlo# zrKXwubIvdaNbM4VS-c=h$|9)_kO=m$kZev}RUyMKRRD3Lu9rl={E@^A|9}^N1>A7)C$n0yHtj_^2b!BhE5}53vk`hiR%IAHWFW0Q(8^ znrYzy(Mrc4C3G@FYEWiumSHj6rA1w8ZFf`TLFNL z7|7~?tFr6XblvoVsOR~;u#Y>;s;iBThD8~bQX*)nY!s>^>8@-zidhXqNt7yqmwK^~ zsj5<|`)S%faFEVV#Dvar&Sa_tszirTviS@J!RDY<3f_IxD3TERXaQ}2q^7ZoJz(c9 z;TOA&N}-vULNw8l34v)LCw{?aOC&5?I0lEQ<;P0MocAf%3R{*uAtf^k{4W$L8MT%( zSOvfVfJHE4U}i}$cEQ_1mI^~E6p28_^u}QmG1pDG8&7uwksaW&IkdNCD&0BvQ~-Md9_jc^X$L6?Q+}&IAcvhvswk z5L%$Q zFUX-hioQT)3{ArvoFzcYMaqu`UNBhdko`}glx6xxSPF|;jP7#$tW zvP{!7Sitm}$RaJvhtsl11dc{L!I6aetVn~~j-bJ9zpwne|B7#YdtrLENU{Ta_U_xWR|8Dv*&(09Su*6( zkXOT>prK%+i(y^B=0LyaQChWK*cF}4d8wCD*zWJT=e|8#cNakc^^aR@+Y;m~7jwgrC#FVDI(gk=9(&po&Ohg=PrKl} zC!BT4X`9wnR5e*l3psNPst&M7{VrGlY-`n!O27S5#cxS7t;Z)cL9LG2kQn`|Cj!k z9xM%|hzH;w8N+`9AVMx3)2cYGuF^ATwjqK(_~@9%kFNaj&#vAsn@C8jdAepS;;~-< z8nzKcgOe%krIE`B<8Y}l@KA`C#qkf1L10*irGyk|&o>L%5G>0Wjq+M2vS%W5#*^~K znyj%ZtBj^*Es?5m=7v$l_v>-C)^HzFs_TvVrd+S3z!wN0u4ucB~qy zHZ`>gT6Wirzt7i&sdKjG<97+G`xEDNs;9P%HQRg2){fx2ljZpO7(B0!^cBNXv{2Dv zMTH;AYAkE1BxfQ$MWMe^hCnIAWeFcf6hJ?1=%F_#2#~Pnx)eDe>TE^;>@dst!~h4Y zoX-=ZHT9(Rqw80V*>af&eTg;{z?>>ldY45hB$cg>60QW`XQ-d-QDiu1I|~edayl~d zkr=?#<+T1q?=CQ57)S#!0*?Vc17PAQi!>9nVtiz*Ik#~6e_h^P5VoAM+V^0EWpS9q zbm&SP1d$&^u#&wn>iR*L#-$2;XIV9vZdKj2HOmy(DWQr@N6<@#rdy`vI;QKyLAdp< zeVu0eF=vc#ni6ikt@-t@e(jcjYukjaV!9xI%r803GYpGWQ&Vx4E1Iq-avWuyc3%{gM%_vi;f~wy{_=lZa@|j^j(c9!w6iGQ zziW@*?X8|zMNk(5?Fc>%yKLz50Jo_SMqh9NKn#STh{+j>0nLl?DzXn0NTsAoDy_$` z2lP}BfoKFUn)x;oIJWH1>OhZ}3&}BU+pznc{=Ii@z2}atUMC!>*DPBB&hGZxy(;KF9G_^o71Odb+o7*6n3le7-G!e zg`GPVuD|}qx!DCpq45aol;j7K2<<;5pDMEGlir~Q6FX=zjJ6e!HYsy@|ACey7%OOB zR9+-;d?Y7N9Py5L=yd$KFn(~AL7y?n6cspL=ydzE9>Y{LOSS@$ZYW5T7m!t1R@f0M zOxFH~5}0&c?tdylR!^kE806*fz|xhrShl6Ei+T+5DY0~EtjoKwNk;%OL}!<2{%B;&V*wp##$nT(K<|p z9RBeb9?AWq5l?pPgjO!ZwrhCqy}BQobwH(S@^4sc&4> zuvMW*d`Zl0+m=+#3uE@K2wN~@;2*iL9YKT~hD_#!pF`q5hd$_$8@=col*(}u0_dk9 zRtC-h;GpR46Ru2o~YO+$&QD=!s$Bf<|F(ErFfQAg=zM*QN@3)&BO&NUr3#m|V z)zE_=CQ%W@e0uv?cC2axX zaBh(IU_l5S!TVyV4_YeNAjkj_^hFdw4}`q{CTgA*Nswk?n#GwSD*r!w-vMw*Qk7es z)6MsflXqt`EU@GxSrHIH1)fMWp%2uDJ`pj1B1jZaKtKr!$O8$2goOnJl(3oIot>SX zod5arjh(xy-*>9-f9L*Tc4rm_m-jeRbN;&3)fG;iI-$C{T5c7?oW~qcI;QPfhWr{yCZZ_zqqwJP+;L6EF%1)9 z5u8IUUs!6z30RK=g;%L;*)}#gQG(t1^{?IX&2RqazWoPPU5Afq7*>>KX(k}sr1ei2 z%miGt2*MU6(6%w!Qcov6Q(Q_ST~T$~gRB^+7E_*c`0SEM|1Scj%wX0OoB#|yfQ_W4 z8Q19jhcHP%HeK%Sp^>B=&Mm_vpYX?gGX4baJx~btAub}L@nMP( zWJWlKUbZY(*EP-+TCm7?nl&1=uYC2IJNC@jo&^gehY3QPkbgX2*i#aMD?V&%An81e!myU2aQshlHCDA$E=tj( z>0B_8no8m?&DG0vRO6Tb<3Atts3-rzi+<7smDI&2|x3K$35}a zuDJ5q_j}OGpZolGz4!h9OxuA6dw(?A?hlWKTlCg1%2c@AsZ5b#`JbKu(6%3Xb}sGy zLh8$gArz9I+Pey*P7pfuiJ;Xq3Ms2-?4m7|i#CsWhLQw*a-~d@>vU8o{1>4bOrdkh z(LdTiwo>YFSc}LIhUo=)g?WmfZ~zc5a>7o6CDd#8VD8ks z>VZ4=e(L{x^6Ovyu47r#6P2AiYGVyM3X}QyPOleInY7a*kCM38@Am-xejratUszad zb-Pg%fn>V;(r~?AZq!Qf7s?LXzi0M6@BI6Zf8<|+zVA8ii6cjYZVzMWn3iYRx~BR4 zK7whQvb|@7Vef_!bY!^hP7_|_hYlSgQ&7%%Sc$f6Pft(NwhQF62JaZ)(h%RpPkM1K*+BYJ(7Gq{Zq1lEX3>sRGapP#E=s@xafP<;={? zmYfn2VR`GiNpI@HBE+l(OOQN(c!K;uS;c&mQlpR^0|`Rl`##(lc^E*Y--{0HKYHse zyL<3e482mRz^kN8v_nV9=o1sfetAyE69s_}{SCJCJP#JV>$uHEX{=c%XqM?Y7&4Aaq?XOGUTa=UHx<4w?$9m7Y?d5fYR2Pjn&vAv+gy8Ey>H={YARA}-TH zH!k8Dl8EtfnN~djgN~eUK-&hf9}Lc_6!Z+@UH+3XIgI#&pY-N~(&}^(0bxi1NZOr- z)4$|mEs;%tvTy)$j8jqMk3AGazZM1y)Mp(AxBb5d7-Jggvk&K%zW}Od1Q#%j4=)kq zFpx5sIThQfSe79d-srI;6R?(S$NBI_KLSRsRO^WlrtTDG&Ak)Qn?Y;@3Rzv?4Kv&| z6w5#boYn0lC#fz{Lo2o^k$D7UJ^~cJ*zL0VIJ2sUjjA9Uzw`^#VZ{&#QKZtnB z1u0w=p&t826dGxy#X?UR9RZXu7JE|_k#-kP9X9iL{^XIP`%WI;e`xklKkcyDqkR4( zTb^fri@`pdZn91FhWrp}rV9ZwniN!nt0tTQ+S>_(7IlJ{&~t)buN(p?bOfmQVojfd zoS6lNs-)#J1iBSIH9Z6-QsElv_aJr2UKT7kC&s)6XB>>@5aHGQ+@%g=vmN{6vq34geyq<)R}=l-4TsX03VZ_{DW_DTp6IG(!*F-qvRA5<%jHt3T=K@6&BC@8gzrhd-tC_a?CZY$>un`$s`ED5`%^A0o4aEYQKTzLkt*YZ;-KwfKe^m zRW#%F-FtE{0Ij^MhGWV@*mQ;oT&%C-Qn9`+-xrf_1k(%00FXd$zbg@>&WwY-OqTAZU%9JtG4Yrjt8&9G{MeroNYJ^wOYAeb82O4`<6O5 z{OHl8Yp=cK>MwljGoSp*HDCVfEjQm{7-pqhb8QdvuHWg4RG4tZIL>Nz)acC8`ir+pa?&V)ADxW-lhSVd`F` z{H1HYdixzm;oD{@L;!76`|*I0zC$hpqszlyp9|2V*s~0yLx#FYG_KSxwZn??SOI8( z#?A{N<3IP!Z@>SepZUx;=DHpBgrB<4AO7w$-}>6$e#5JO^-o^${NMep7d-!0e*Wiv z?g>wL+#?_P$g7_Cq^q9r#H*hD>|eU@!uuXM5`6yi*M~`Idi#A~9j0_#ALlSMWJ`wq z9by@gBI%yc;f%0S@@arVEcD|beWdHCehty?Iuv(p2q+x2j1rlvJg~bRXQ|_KdQQ-@ zLuQ3=j<_B((TRgomu;`T`}Kd=y7T&j-}=}spZ)Njt3P<-XFl+qPrUE@pMC#GFEYL+SR<_ua|8qk&A zFr$J-2DHF;@e@GAIGtZ>Cuc#-FpWta~>N?GXjE;2OymgCi7+DSvU@b!r%PC;Z zPXNj|C!m&W1cS@#U{KAECtwDFmkfiBax0i>Y-}uwB3vq$SrD*q|JMzl{6C*Mu>au2 z7hZbd1s5;QFWzz6E*>XU$BX*G(%igAQj9zN$$=FiVK8qbpv*yRHJ~~SJt74eG4zBn z;JNUVX!o6aI{jWR2*Nah5g)~L2pfWQ0OZU6h^tygTm5qZ^-CT-u=D}wCk4|r4aZ7_ z2$Pgte^m!JU3=ZlM-HD1e0ZvwrkaLsqakU^OSVxhEA^UItI*L0r%trL^Iy9^^Qr%M z*Wdli-@o%8KmITOdhK_vzw^$0M-LzA_x(z#oO9N}#Ow57uQ%#rmSrVzTzrXd)a?Nb z$b#M$>-r!y(TY}S5uqoTpaC2J9>WRN6b0r#C@Syye-Q>!wICAhye%wH+96?keh`OI z3J;JANIAJPQ06Y+G$$cO$5m(`n@Oi8lbZ$pS;cujfuFz+2?|Ly8W{qK&5VN^9n&aV zw#|f|Wl&vN8jX*SFDxw{J9_*Z-}(*&gCdL!Qis+BegYcd9|G;wuYUC)x*C2+qm{z~g@vHx`ggv4+*aa6T=(${^G*?fqi%0 zdB+{QZn^d58*aS*d)Fe|bnSIFU3dMp-~P_^-~HZ=-@EqK8*kow`yD3^9|<}=lhIQ! z5IcuLMgtTTo(4>R*ySh?R-2(}reWYxmddq%7(M6yB)ThQLCpw)Dx<~JD%a;cLxT>w}7b5bF;39&n z$g>`b+SfyI<9Zm}who4M{aAv0u7(ktoSd4SpNpdS^84QB(T~1wnz3U?+t+^Y+VA}5 zx4Yf`j%_LV zSR@0F<^ni{YXJ*Wp4*n?uoun6h1Rj7Cnm?IZNuT2s8>|K$HtoKyWaV)|M{((zW&wk z+e@=~dkCJ7AvisxFYcIx1uBmWGQ9r(W}#SGf+l zk$?SbUzM~2DuVof)-V)&>!Be2I*_BKur$t2o}7Up4#LVB>7)g@Q(vbA7uw;#Yo1kd z&|BIAJ#69NPf^tH=im>;Pys|4J<6pGS0vYH)abZlkhOI9=*g5$8P{~(%`(sp+3~Mv zs%)G5L-JA6(l~NV69FZnO_=ClIhpgUplH#L3(&BfhEbAk9DvRZR^NU){Kx?_YY@9T zAVREzosCTejS2vZfj8C%TpHZ48lcgJmx{<}&h@h<p)h>Cx9yoC{5EK2%y2wFdxr1&_V?LAq43)1zN& z067cV7Nn3s#$ZmLL$R1uKd~&ncJ1yib92oM{dV2TUi8ezSm}~2`Wj2nI`eIDg*%~z}6y8h&Rl=ny-<#x=*T>hx5#_CR_@kFDC<|ewv z)rg)INTCm-1bF=@5)}y#;zPhsNH(5jhV4aM*DF&W|I)V?0wuQ_WYUD~r~cFfE^4S+ zIB%%*@iMMiimvCJENL`p4anj*gaP%5wp2TsNDD54>6vOPR_*%Thi}<8!`$&i^O%xc zI4K_g&>c#2(#|6bo@{PFAPb{nR=0onV^_nE)${bpkG|B2=cX;;rae6kG#;pV&o<+d zD|8TCbWJ_9%{0$K)iq$06K5ED7)B8KLe)cV{IQrFjZCBK_FnYUVhPK zH{W#g_r87Okt3(Rc=dNroM_#)YxkXd_n$a6-|vSCZGN})LOkRwiG+bc)zzry$6;W4 zp0w>#Mt(MWYgC%0V<(p^w-hCr++Ru)A1q8y>Op#1bwj!wH=@sgP@^y;>@ady-op%As9NMYA=-H7!%sY(=w} zYUWCDTB3>(PQlKqL7&~Ht#2Aq60XDU9EH1R zl4uo$2>_@K$h1haC_{3?2(l zAtf)o@IvG%s3GC(X4H=WqzqUEXF1zf1Bwwj1~S1PcvHpeVy5NxdO?)HK*F4cn@=^7 zoixg9l!pKEqFj$aD6S4fxi!bheBU

^Tt@&cVNkNi;-_4|F8oRD>uN(CBlP~N=~hK9%4Q)a`Q!^AUQ zEyBvr(QJjwL=pKDaZ1t6J5Mg`I@VW8?7@$GEWpfq2}GF-}Q9YQkOIVtlJ=BApJIvOvttj6L8B9r01voAoD{WL z(3fE{`MLr`2YK=I5Wuq0a#M%vVrrUYXr|6g%=I*q0Y?4l0ADi>vn0x3Yu9OY#c?Dt&4!Whz%qaHXQdk?yqH2#C;%AG~b8XQDAV5Bt5vx!EI!5AM0+ z_Fdn<`PQ3mjQu{;f9m@p4D&RhoxkvJ1+P`go@--*F3g@fdiW6f1#jK9EtF#D8cL+c z6`cG1?o|)CpS^~isiUi=|9>x#EW)6j9&}=eL39vb|8tNiB^k|G47aM1M+O}Ww^6ga zrB*kFSf(d@I;1l#RTZm}5Yz?3jey_+o)vsLS*~me{TVjt#~KP+tqDUIq!3xo9ERD} zhJvVP8SbSp+8ywr45w3y{lqfh_ZdKz^Mit1hEU=(R@B_0UCFFgahtVDmV_o92t?ae zN~KDcvX6cA6NmTtj-l&1J+X(>g1pUE?0%@TB62T+bs~KzsP6)bJj0xbkOeKkkZOTP zBg6RVOZn+1>ct}hM2f+pMR8hH85qYD2k7SR11I(#V)ZfhsGoY|w#|*GH^ZU@$AU}N zV`0k(dnJWetlZHP(}-L*OVVY>$;*y@%T3q0mfmkIUU}&SNxwy(;-?KN^eqR$G_Glx z&QqOE2&LAXh9ABKNJNr=_}y|QsxN4DmSJ$)IvA~}ASSTE)k0{>h2-y;(Y1`LyIOKhs;!|xhIG#)v0c-O6WxUP#D;TRx& z=gyrwcI@c)`^XRJiNq+1eBU4bEDHS5gY3bNFDP`}jjEAG(hc}kp!|tr$2GyWZ{AdP z?75kln{K?}&O2_8qoCrs<&sCNNbjvUm3#yKlXvv$WVKS83A-cmzgr8jB=`Z4FtT#354XmgU;V;k5oFa$8)ZqpcZ|{~%q#x*YAqLr|ikK&UyfizHS<_o?r$K}n z;TTrQcFT@OtJauyJVQ(18YO`r_PTJqzx%Ck-tgV;?!NW=M-Lt9EX<3PmLkfI6Nmlz z+1Ug8_Z~WM08o>gHcC}P6KT7GfU`6pNRi93=kIN>zc*o|%UsmEk%VIrGp!=zIA|!b8tQ2iQr2@{o z0{|fe3?3K^$q2_6Q2YeQW(g29qkUlmIzkMgUs^6~U9&V5Mi0GbK|TU(dXDT#2Ja`M z#YXu;Efu)3jUE%q&~yqCOpR7mC6mb4H&7w8>`Ew7C=^#EzFSyn_Gy};URo8ADNzun zX$rd^@h^SpOSVm?{yPr6TMVP~v5$W|IXsM2DiwM1Iz2HcqyszzDr+M^3Fj3C)%@53 zx}dADMPZJqBF*OK=8hgYw6r)sKX>Zd?|$co>%IdwvQa5PalwRjJre^a=)^SosyI4N z1{#L`-02{RM|X{4avosNCyA@7CDRN$ojZ5kcH50N9^JREWEd6Ou6w15?RbV+GU?Q9 z`mhDd>GggYbRj>)1E&$Jn#L5eNQPt>RF-L~&~ol~+B}Io%g9q9c$_B8(iFe5oM(xl zDvqHkJVD=Eiwkg)^Avss=j3q&X&CYt9!RR9B2BeT!!=DPenZy`CEqqRIZ>;bjKOc& zzvqq{zx$o9e);Opf9|t4TzBoR+ip2_^ia3g2G2SU+#Dr_hY?5MU?>6kT7|B$oILQ1 z6z6%DHRl3S?wlUxV$h2CIYG{ZkkW$qO@P=OQU~-~TJHKm43WcBjTTO&e3p+Gi7O}! z3K(z>Jtinzh?PdI|9tXK;3oiiwQ=}i0O>)npU!lhRu*9NGw3hN7;n_0z=r|_lc!Pa zSl;HztzZ1|7x&$|oW%m_tav#Gim%wb3Y90zyLSO*8D<^X91;d8cL~D`qmd%MKBb5c zaS<8Dq1=nzzeUx+g#%FhEONp~pW8oQ7wpnaJ4?Fa_hxk`wCj00nirPB9FG|_CY&(P zeP4+~*p6Pg`hew5{YziIAgkpHS2SA{X@*79ge2S()@jJ9$#SFgcWIVv3~VS?%R{sQdc#ro~thwJp;R zd7^vePic({^|77K#3hyK`!u&bcTU2g8WaMH38Tx2GSP2IL_H=ARO>v?7f4v$(5L&f)b5C{a_DAnuJ znpK*Z-uAce`NtRk)+@NiOxIfM1`Bh`P$Ct0-L!$6U9e@!)r6Az2pXqdNOWwRuH}lB z60e<`nmzvxfSdpri&2-iaD|I_fs1UwWR`H4^+|%idSnPGpU~V6MqHTr)adG|ti}O^S*NDB4f}e&RxLZHP~2Jp&Az zU0?u;LQe}hhZz&C-3N5|Et4}JKrm zNcP{ihf)&b#~8q57)uzPj0@Lx-~${#a&-4?yKcGZ=B2q=CO8aX7{n#p0QP%bL5GXc zh>-F_1PoV<DP17K-~$W099lGY`V7@0WC|YFXX6`J2Cc-B5`D8>p;rgVs2W)PlGg_J5)|trKpL%D(0kJOhXJ6)TL=^KrDVRJ zz)#?=0Zg-DI7i5oTr&(vLe4XI?~nsZ&fx%6No zxSA&{olhooWmBnP4rh0vQrF_9syZLXQzw@>| zi^pc?p8nJaUV5MU*kqDKN0q#1@LWl4JuQ<1kQ-W_s7g%w?fe7vMN**X;E)>U4+=6C zP*e&!bA^RE3rrCjS)#-FiJ1}@tZ%X|%e!H3_W02QU;6UZzwxsF^^|A5?1?}3+($m* zInRFKA3XbczyGY~z5LnF``<5k@vC0?JFkD$AOGF!{^B3s@#c?S^Y1q-90_<&kC)PL zwr5A`RJ92u2#cT5M}IT<2{6PH`ecrh?%sWq$g`!T1-O3Yav3xU{3r_LUY^`EbSToY z>ov=jiCSZdDb}fl7A!%b7!P^)qrU!)|9tSnemaGJGCrw0UJzm6n60Zx7*1C7>3Z2w zbAzRfM~tWFsjiv13SC2c8SWNFX?5NmfPxiJBU(usPI5yr6V?FINjGXrP9LzK*8ph2 zjPxNbo{21hUm$pjfFHC)Ur>MsF1B#c{^ufKOkkA=o`LZBAY}BDUM@!OQH$h|6@UVV z@}}wuP|h&i1q>R!Zo(H3hoPZqrBVr^Fv~L6bgdhrvmh8DE{XAr$BC}>zDPwC9%HcixJyYwvBh@7uL|-|f37?AkSR z`0&i(BNCquCyyLFe&paW;1h?JTMI{z9MI@_2JCWS=y@3qK-!POPHTC7X<=r0akkfP zY3QE}no5Uj!R~i$%dyRVuM_mUQP9ugNDpjPRq22tam5gl<0kulbJ? z{j@f=Y5TK&`Dv}*KG$u<@e!8$BziK(OiMa&rWs5aETO#)=NV+Dsn@cvKUCJdOBk)U zplYh;T{~TN6u z%`0lAs43!_&gU0qrZ!Ff+h_mvHGlDE7hSw#X6D$zLwhY7Vjixvqbe5sYd_%KZm_)E zU0mvRd(nOG`yjVcn_q12J$S^cHZ0G(@&S+9d+2Dn+UWSSj7MrhBa?mmmdQrh_MnXE zXs(1wor_L`#Uv%p0Z|#cx*t;v zxC@5)fdI5hlEl&tjI;_LJWjaW1YdI8dZpTJwU-taVUm_Bp6~npez#gG<1Wc9a#=>U z5Q8Xv06L|o!1UP;i6z%jkZ&Wc!u0rHgLFFGl}^{xO*#}O;f`)sy>i_vM{Pd~B8}6A zA3Cc_C|0hTs%F4pfC>gy!04K(>J&6x@)oh(XwcwBT9#|*MlMVhthJ08%5w@mzl*BF zFbMs=-)YBwfVw=xvQ0-g= zzNDvwei3N&RfCS7_@R+&^>U?Jt|=mKFSUpi_^)CLMDS+Ov_nS@5@|=_oW;}+4y&rf zP_2eDOtP~8o`IRsbz*7B)?gHMX|XGW1~w#}PfSDy)=Aw&#G%>?XHsIRk_9A}Op*DC z&N4a>k3WI`_d!Y<3I&4{fS-_G^qmkWDiTcK)bk}g3Fs|CMbF^?(4;qA2f8;&16@@v z+`2_eGc}AWrfq9RrQSF(KdU(IKY#R-{l0MQ;*-FFix?sZ+D#S*JPZRqm+9vnis`&T zW#lXoc}ZFm=z?LA+Fa5((FAa+SQ&G8?&b(WhZxtO)FCC6M5QwpXj-D64KdB$k(7~& zASs|DG&=8>TQZocFev1706cC?K|G#ZI6daDBxuiPabID)+wXOQ(5=@JRTGAt>n>N^ zT&ZMf`P9kemhYeZ+BLVTtekY0e*O7Rovg&J)>&RSQLdC^HW5pX#rCMhH+%6YbMWo#$*5VWzTu_OP}}d*Zlqm-}=gTyy1`j z;jOQF|Jz>uFMt2$FMRmDU;p?&f8%2x{`yBg^!1PY!_^;s_w}EB@9X~TPcPoO16D-T z_ch1!92aa&8wyaR$_*tml@!xOr#PRUYR=9av25*Up8U9veEjWS`_|Pz_lrM!a_&%+ zbh5O^@>J7u2fEuSm&&zDxlwP7?cTiyR^{~6X28N?L=eXoRb1Vi#i z@v4Bx(kzM7I6|N|iD@r_E^-5bi(+L~gDaNN8}l%tFmS5^CO&=NVWWV?2s#>=0v9Sm z#uW|;nZT9T4XYIRX=|aY<))dNyazYjLHNM?{$cx;F^GX63NQWRrnIL%^f0$rv(S!=?|xlEJ?GPelw7<@Qq8-(J_#5Dl`6E@*=uu=+^P~jGuCy|d^Te`U({fNTvvZjM?_`Q?Vh&rSGRo-pBl>iSpV`7J8KorRS%&Vw z(6=yMh-p!wqNf?iPmljK2rbK2O$!VuRAP1bCPG1hM$Ght>9K$%ph2L!da0y(N~C6e zuEwe=%$$^*5@$S0va#{WZnqyqk*V6p4j%(8G?L)bj-e5hk%16DUjSK$iljLp6*t1* z2mRLMp8H~j9)`h+WhDjVIwP#jD}D09S$4AjU?jx_3cArMtyNnsD{ z9#XWpc?3iC5G&k01`kkF;=#SJL1m!-^4cIfU8M|2S0QZ-n*N2WubrP0oi=k_Cx<0uDJm2vo%)4_N+XfbGhnw{(-{F8>TmH9&b#?K5BQW^o#|fJ8`_SS8BGF#kaq`|KlI~>YYc9ZEaew z{H>pU$o8ll9js(sTk-n76>}poHRfcw=Bo^*jHUCs64$gC4KSb?`+j7WHie=R>u#c2 zoD677%UqpXroga=OpuALkP3qV4Oaoiw2?A3%PG)0m9$8p)JUB}ih&J@?1D3%YkJ>L zU9XnLkYXi=Rn4qqrY_pVpnU`bABSoZ(FfBdnF=*GPp zq^SYBjn2|znNTulCDlk(H(_qf?KrbUW~^){6E@`!Frv%z&gI_nC6)P|rG;trXf@bf>fBiF-%tr}c7t1We^+<@CN54S>Vi_{ zv6FR0H*j-bgUlB!@(mu_Fq@OEk@9Mah+bSoQBo?ENL9p%saUS&d3wd*r9=B>f9oZGf~mw4##7O(*RrUu z@aX>c-I+!m*HRq}S_XH*=!FrPrjQr>1>qGn$mxX@ zQf#zsXQV9XCRNd*n9lw6-~~z7A0@~_Xo5*ti9j}iJ|Xiw_V&O1r@wjo-!_|L81t0p zG$S+<+ykyDS8BCp6S}V-gtbZ?MbYk_JR4%P%`zch$Y7(Hg&wS6I8wla>PA3pw95#$ zOD_U3v=ABY7Ow!23Y|HP>CwUJ6ksATTvb?U;A!~#a<7Ff1u=43kDfgGd$0KYpZWQR z-Em;4>-Q(7CK*?2W%Ku5_D83V9NW2d`&gwGb^7h)McXh7nvzY$=sgEif|9}X(&AqW zkne-oYLI1Y0B6z!&=P~#YAD`pUJu3F4(s6z<%2Hp!G=vborgw~fV33;NL-8ppulGZ zxN+F!B2wU@*wK_CBH4r(xcDiPDRL%yLgvvQ$%ms@BU^b@N`Z%E4q<)DD6FR2u;YWb z!>QPnJV0PNjh-qqcmrI`w(Q*gia+^7c)F%-z!kdlj=gVt<2&+1saka<(~>AlQm(nS zfbV=7WMinwch^GgzE0!AxTA0!BU%#UX=ow?N&SpfZ5oQuPG#zlPS z&>i3Y&Q~A$(92Nr@e_xrFk)q7qF$gl(g0@%pZ@fx2eEaqAyq*kmF6j1nq7L=d*4ql z06}S?{Q@$XUdWSPne0#8y9f$-vaB#)fqGhjkwWP^t$eBj@(%?x0Fp-jh1b3@L#~4j z8VS(pT&N9THNTyPGjeIstaF42>gxvqwB?>uI{;G~9;$}XAes(-t%5UEpj6BaUTHl8 zbvA(ejO`f2MyOpxX#T?ShG_|FM`{&VRc1y_Nd@nVbS~;tOV#buo6^PBrPayaa$9(M zc9x7F;Y{N@gh5M&4daj~^kqB9lZ>8!Q%41fWxdtzpIq!N!lzfv#ISrti4qa_{FnXq zi(mKGzwU>kS`je}P~GbJzUMS(0T_4F{6e{83={9<1{o*k2dKGn`cSLU1Cm(yFU1R; z4WS{&fy46;f5hW*)u`9UgFbiFdLGZE{&zp~e_mTtkC&CeiVZD+ZRXI^e8tz4zRLP^ zLOhv9m_(S@bd(4cIWk8!wl^R&c;B?DB5y>>mT&Ef|LVP0ckCSre2nE|55CC#z-yl; z=B}Nv+j+VaideBGyxIdk`hULgrK@iqpJdPZACG&?V;>5+a(w1E*dPjd$!nI}@dNu# zec|7~e&Y?h`T=|5lOBKR1@TzBx+w+bxZwsy^C5^U)#tJ+jb(uC(bDJ?MQ>~Pop3|MB<*OBY z1Br#j2>u}!f&~Okpm`lp<+aQH*Bd{v>jcZ}Z93Prr9*Fd`E#Cl0X&{NbgLaGy}s)* z)pR0eQh5bPCWPK3Si$sjz?>RAmk4Ob3)}=%l^@R6plXETaJ}qjCFbt<;HSR*ssFgc zXkO7{jXVh-b#d)4{^ygm_SehlemA45T?%bq9G)%#rNL73@0DrovDOc{` zzEO>ZZh{$y-oXr`ai(-RAuuICpj`D+wX*#|U%KJQpS|Pbd3Afp%1n1q?x~sMckI5o zIZ-hjEn>8kPV3K|@VU=^{;8AgT4Qs!n>QynA3At+YSVNW`wBV)FM`gzkwgV88E^F# zC#M?!`}be=OV9kNUMHy3Y`6%Dt|U3TWB<{;$L3PKl<4IscZA_Zeo!)DW}+H7G({KW zz!l~dln(tVuF44Lt1C>tNvznk)~>lLp=@XsUG+c{Fuf2~mcjLc+NM{k!+^U^&9TdH z6Am6cEJtfJQ1fLVKuu^$v)MFFD@{1=ierd7S`QN(vy99M+O7{ zq|JzO$uvnL#M3OMuOzKtq(m_UQn)_ExUxPZVHo*Q=tsfX;b91av%zr~Br&QEQ4wK^ z6jg_|Z5}ytXv>yOuX@!V&&{TddUf;k!l0hXejM0>)aJA?S|$Sx7(eC%T%J8>e0%;!R}bPvM9(CJm+0i2#v zDCWNntdg}WSr@p>+vTk5@~$oVhKN)V%U27FQXt{D z#$krisrrV<3}6{7K`YN|g27TKL)^z%nyHB}e6F{JvCOPxVJ+rXJJ&l*_n8thme7`c zk)Jqm;-?<_#Q*W!Ck6rgyTASB2mbMzrTOv&m;8KV;xP)l@Zf>;ny=pa(T{!p>T7oO zLU#WL?)cfKUwPF-8uezJvlh<+I>wnZvaeJ)avA)AT$dcyTI(eu<`9MsXF3sU-qt_TZE5p<2G1*S+&!4e6DoYR@dv|N>` zTB;eSz0I{{ZZ2fTe5NmOqb>A+sj$0g>6c7IEk&h+pvf@&S)@>_27wzHk={^ZBTqDr ztGN~_YK+FK3?1p~TG!CKs?t%=Q?<*~zEFFq*30x>W(1iY$`Ge|oT&X&@iWaAnx7l! zdjO|N)#;sKOZY`ksk1ynaCk^TBsPy79=jrQC?p0QO`|269qCS}S+VX$suNSNqTEPn zt+}w{5X&(oY$b0toKJk>V>>R`(rz!hp1F7Lp2^7x*sDWpnc%bzVAX2<*s&8I`p`ee zF?5TbWvQ}q$mEV4JETAmrcPgxcTJe_BZZtDsGSz;wpqW+f<8+kI@XuoD8RUoDL@<# z1AuG*de((GZomrab(4CnYUuXSBQqet&I@<8mV4x=t;mbhAeEluP;}?coe*R~z&f;a z&B-&J9x#wgO=q`@G&6OjTrQD;MHVE4oo1RU>}JO?T-Qe2H1&<}xq)MuDARWIHQ2Od zX=|{h+YT}mx2(cwoDJl$;6FWz~<8(#NUlTCU- z_29l4*I}EcC&tIDkN)#tOihj*KX#b&1lFD;-vG!kkp=~VDt~F`4G*eZ2ee0PBN$x% zA;F569&i#OX98;LIYLq9Ffs}#aEM1EYXDjhcCg%r1_`?gi#(yHRqJq3^%{U>JcykG zP?yn$;>QqLogN%zOi;I66L3RRqtftP&ofM=)|{N)w58e{Qy_^GIMed9T={`s&SSzN z<^q`PcywCIAo&Cv7QYPWELr^I5}aYNy{wcpAGJ*$ENCUuMu2A2O5z4gaaK_5+{eF6FbE63ANWy>IZu<73a2pe4~W8)M%+aV zO!wgzd|CLjlu8%mI8cF0cfog#MOg*z%YeSD^&GSs?`6sRV@}0()!c1sCkuef#!pTW+}ad+&YEM>bD7u>4OQ zp9}lTOLNP+Zkzv`xBT@(9&~^7H%%e-VXq+&aQYM!EvnMGs(i^4R@@JWX%9lN?S2g| zuC5Ch$PL4qY{Rf7+gXO<#?jk{1+EEb>V_fbpg)Eq9fsl04boRCDk7sl*A!a>a3q~_ z19N#@z%1M_fJJH8R)SpSK_dr|^UKrWHLY}9DI6Yor42{fT)C_H%bw%$A7uChbTsN z11=!3SpKJ7N-J=hNAmDz;lsSL0S5#$V}{qD9L_!LyR84XUDKLy!+^h@L;D(WBmt9=SvVC!Q;K5gIebEb^@ubH+QfK1MT{9o~ z_?N%)?Hk+e<;f}bn8$5<<}W?;s)yEe=XkChR+Kqa>+2+tJzZ&7#(2q^fPF=4dSruT zD%skQJVbxFAT3|@M!odnBWzgexIuf3F+y67hNxzu*@@;Qn#&96k9Nai2d4ct@D3r_ ziWFGz&@2{u3e0GiqfKuc=cWafLr=1yl4GGnnGz*x0{Rjc(7TML!Cj5x7TRZ46iAqK z2Q8h9q@YG>nV^+6EmN#ibu-1`R4K}#k4(}#!CXGH03|_aWT(-V1D?kjg9AWYcS!i6 zgA`CQI0AAT^g&kATx8Yj^J=63|u@l8g zR4Y=*6G)gP&-Ji~=%|uZC+ue47^@sPa`=+VCV%gL{kCr8o@Z66Uf*v^Z8YlJQ;QJ7 zAl|%b3s~?opZ+YhlsJu%PM2`O1=~H_;&JR4dcVEwT4u55d^q=3=s?sgV3oL8E z0V8HD=2;RYX_Uolah{RUvj#)>;Re`JbYf{5!9=4^8gTlIbFEt0zjqIOo0CV6Tz=`r zAAH|Ge&MtKQL>G)Ydz@lv8`Jgo2MtXZD#L#-)qt|1`)_HmZOD1BI$xIOQ8Z+5kXgf zP)szW($-_hM#``T!xsar$7jkfH>ecbRL%<1XHWrT4$;0Bz#zRyA+!n?dw|wsbU{uX zT4FCSQs}B|6-paoq-eTg$O?dpx=z=)5vHm!QRzM5wV1j=M)(>GqLKulHlZbF0aVil zP!zBpXlI>Qf;{5O3-cI`6Gx9hC66^~Tc)Zd&y54W-CBZwZD@>+E%4}kDar%kZin>%UNbERGN9Gz<*E*GKrR85J1AZL zKwl*tiki_fLCgPODw6kfVLcEfsSax8`GH~iYr+{}V?qC8149LPw(ukEFN`o*BkhT$ z1I#h+-TmeI1c&I7L8^75BH{~zD`$FF_mFaP-;zwobK z^O85b?)P5y(q}&8p_`h`s9f&pYDZ(C0t+mG*Qhb>7;4Qn>l(9YFFTpj)F1p*a$DgZ zV@{qs3Zu^h>%xQ?rNgupw8T&6U64Jdu^c3FII}skQbkXp{fR^h%v_Kt(~L}~0J3D7 z2|S39z3b2$H$vCAZZXS}aiSp8>4XV*3oyRP^`IkqG=xmo==eHQV{pXa!T=LBR1k!W z`vPk#nD(6sR@mP*2#c1Zd>vzuV;EE#5@zTM8S8LuI9wa#r{@Z}0!$TIia;dyzu&{|*nQxF9hbcN&)?~J zYQHDtMNt9amD({%HvBD+CD(QKh(|mEUD9kWLreQ<7#xpad1)~TgEWp{ z(7<_gEW@=e&#{1EI-9y?8L$gsz6`MRF^N0Q0ZX%HJ(e4+>C0kkFwA9xl(e!2(^cA; zy&B^#ba@b{ItXkEDr+q-_IsW2=Ge9^TSb&iHJYz@>C0aGXRpbEfcF1pERDimhkf)T z*F5@BkC>Y~1!E2hfK2QapqCKgO~65dhmfqra@Dq2yIqCX=PWQ!X?1x$rW@q~`5Nrn zremAyF)azx!pT}p3&!#(;c84=2#zd#n?ZbtCEu*Qig_MF9N$bq;Mxl18<#KHv5va8==%!&m&yuj;sW|4$(L=4dQ%S!c_qb;m z(_@XXN(piy=(WQBQWAA@4&OBvJkIGkK!K@i=t52p1X7WrWHf^wGUOb|iHH;W9uVgs z3#?cbv zisMy1SMJ=+pthl-vn(5Hj(_Tt|90f?a=8RUV#NBVX*GyS>5fal{|!(WRlu-AfHD7| zD`0g8n%yG#4sR>b5I1Ahh&6Zxgoi0> za7u@*>GXg>7$$Q~wXEf(JS(%btPn22B3HSi&_cMalZC?5{){0OT&?9Qi)Fpl^n$wA zx7GOvTv5MZi&FP`YIdSMcl*rY>soWSv1A^$yatsEVH~L}aaiW&v5|zR)l?<5l^o&; zMp#MXbtS9kydm-`7Zo8&Oq4a@(K0*&y%1p<+%yCn1KSWLu)?fNp^ZQwLZTxAtjC%` zy#^h0qQ)R74m~uWQ)o05E>Uh+xob05&s;S{2TLp~=b4x19upoq3v=AeV7u#7Bb^Xx zoCVf(LHXf1=-f1^wRB10bV`$!qQS17dkQGbN||tEA3Pu`ooY}erom;BS_6KF?C|LNdlVL_@6@&)8_&-7AIkn20Jd;dfTlxZr(B}t$*55D|4ToBaY`TEiHLo`Q*t{ zv$KnEapbyyO^bz!3e$1Zc!9DG^WC31crAJUjxHDt3edSo(q63r^jOmXDFYcOTf6Hpf5&L5*^l5W01 zTMb~*A~MP(z$=WsHXZKhFg|*zSTR}ym|gT}NTE4~_KsqB8f#Jr!&z5NVDt(t7-Cd| z)@+F3)xt73oieD4Jb|K2QpoaZQI7BXwR**I-4mxyfUl08I65{yF0ZMVUV7>Ny$74M zW)}0v58<2w;19`C0O%mbsK5gNl_ZdY1R$lL4~-@|AwO4JTnd7~v23t)r`3iFK<}pu z2EPZaYMLf|9D2g8(sPDgw_o>(kN@+tp8aIB{KRoO1qj8%^d%ahdWrD=Y~UW80+iE{ zbXs?*`>yxCKY%2GM#K<6Op6o|t{R+%hq1W7bE>j!s+{xQ$|*op;IL3MbE8v$;10o( zU@=#n>iF%qAM_I?V-}}rtI6ExB)OEdcec2jz6(cBGHD|a=dMlf6J=Sd7o&Z;!a)pD zUjAj!Cq?A0ftYS1FwS5*f(V1yYFI11aq^{j)3PK?!>S8l&# zEI0k7WgYH39i(=)aHjDc!k{I?hH+{St#L|EPo|SFfgFg!glU#At(kUb--+Wro>|oz z)67=4<+#?-V+Y>(w{Q8)m;7SCC%n>tSBpYXp8PwYnVk3M1;|^W0xoRkp zmJ>6tQ5hTR3stC2s%0@OzM9s&_}hoVSG@gWGs;+I*m38?!*-TF^qS`zr@lXB_E^{= zsRP^9ZYSJN6ID}6re0GNFHMakgB_`9ma1x8C;?ML%}AJ@(tgw&wy&xOuqZ92HknZq zLhU5&a!sW1oMYutsOt5rvhr1b@YkRJ{;{M(Ytnfs?oS&FZ+YcYr|lUpKS>)lGuY)Q zfpMK@TF6xu1~iS7+RK$lx^1*QpLjy1stV)@QCqI@kWd8}T(|48w=5jT~3M}8Dd1oRg@mQwG!`&2_jUyfc67$e!;`*2%HUs(dgZbsyRC-!uc>Riw{;nlr)RMP!(W5gT6B#_Lx=|3Q6AEZqtUQ2fyL=qU2h@DwSgNpH)7 z19EzJt!wgK)y1WSZ+-LHXFTKSXumuFn1x{o-vDLx{hokOGpsO7OvBi|W7GB5?LM&o zaJgKQRsx+#ZkmR!=DmJ5i6hVRs8HMr8k4wy0HWna!_aAwjBH<-I1CUin8EUEzx1hJ zvN|$~$oTLl&*(Kr1OO$`=IQk80^ORyDOnc=HLeSC9T%6VwX`fMn@z@>qGTLBjvd>E ze?ud{MahBWG%KZ&4p%E@Ww%^%L4$G>1k#ZsBY|8oLA4dVlriuN)iH{5YA!9`q86Sc zh)bNnJmIw2otC>tF|ML>MSi3pF3XXZB(2s26p!8^LggVMNs7djd^QTQe%kCL>6Ru5 zyt(xOgB&Gsj6e@KB#>u`#ti6;JB#uXi76)n9pFSbDh_jsLYSJ!KtX0ev4fmNGpMMQ zmY|sk)IvFMYtk`NGA_ePXVF278qs}SfW0S8I^x4otjmc5OdKoOmo^KLtx4l3mz&7o zD@JO~Sd3zr)My+>-(j{(`XG*fG97XBHAzAcB8Y<^4#PZ);(n*oUJ_Xp`Mzyv0=g~^ z@;F{Rbt+Gzu-i$4exAlTQP3|)Mq`miX^d(lPGTB3s)yoKhord-Q6xX~kN;8NV@A^_ z)cQT7V$O!X5As2yKmn3#3QYq2W9X)Cf;r+eHcfqg{^avs@Z3u;*@3H_Zi@tj6s9Cw ziB13z@T_3Zo;`!u*#RmbDMsfRsNedp@6hg2k{OU{^xT%_7wz~grdcvpcFLZ?pj1}u zl~KT5d?gu0tOS$<$;~vwRaN`o(HY$;#aXUuhRjRdqkckZ6u%^W3|%KdA%th!mT5p- zz#kYAfpW^fMGb>r^!s%D9>AIWhjT6Vbl1-=6nCN5MdTjC57K$5$?h>I(D8%l2%O2$ z8g_XI<6aH8P`E2wvfcf$t9PHcydZm`(2YE|e>!(xsf%mhu#QYeHVY67?#TUf?gbmUTLoozv4Vo4$U1 z@W7#8{nh8uXGm-o#b_k%26w0QOcj=%5RfadG&UsM+4N-;h8D~y$azM~3q`xp6`Ff; zq(EIwCjw(I-}I)xvmFmE4Lo}J>5V7}Pd)cpk59TYmPo3OhlaucSIAt8nVPEfR;W<9 zCL_6e*S8lK8cHS|~gx;}6r)XCZ27m-Jee8y$Gcajb zN+C;Cc3eSYGOCUaW<`h5655wU)_*SF0u^u#tT59PtG4IZ@;7cipj4)o5^b#E)bg2M zdcu9O_Wrt&!F!0hv0IrWCsBzFmMU~Fgt8`0d?=C-z+)wFo^^(y`=%hgrbcr zm9Z>S-~axP=FABEm{!jQ{7i--^3jAK%(@}W{StI(5cKYU<$bQY|K)N?4#p$B+6R*b z_crTpk|-yRABXV>;eq)`f=12|TDb#*ayWEUcTtC&ByxgF^@PCzzY?Ymz7&^FA_lHA z0`3B@7ZF$&Deb<|9hh4fsfmdx_ysrKc=Nt}$1&|;j-uh7=M?i9W{+*!DNl7nsvm{@ z;VWLgY4iBf(#+!0sd~LKJw1{0ls+k7I~A`I`t&9{WxS^t_1?u*xM0Ly@->iiz!<%= z!^1!u3CR%ybIGcuU?n$L|W{_C7^5OnbTAr#->+uoSWqq>zJ%EJPKMhu94P zV+Q6xjCKan02UW0QvpS`pTPe=Ai0EOmt0LP#vl4tVCHc7=sOj8r{A|=nEnWPqfk`{ za(2_Y2km?(jwR{gS$fHac|@NC?e%)F0ZOIH(qi}DKlj~Anf1ENGF8KX*-zj5p#?=U zDm3*+v4!az0MrhnZkG74ydk41m7498(PO!2Drj#w%S;xVN@_9gDw)fKqp7x@ySnNa z3>c=mXK0?K>LSzVXi8d^F5V zA!|6!)+TFKnObGa7-7w0nytckG;)Q$C&@LP9zekQl9IlvDs{$cLR1pP74#WN1ttZz zcxEP<6?d~vW^!+;ZkK3_Ma0vkZaZb7ANSi)rxW$UJP9Dm4SHpl&Kie>Mgfsrr#Hly zZO~32*VJv3-V?Jh#+pi-^r0*mH#KI`UTCJnF@lGXCkQ!9tZ_GYvQ&+7Evr>a6&F8} zu-6ZQAjuLq5IR}T3Ukp3CQN!(N+&@U0ks30IRaM_p{6K=w*8y5gM`8MhHg_6#sVgy zTttjVG$G)ZSZJ;tt9c5|=$c;5tu#wkNo{rK>J3-Zvy6vvM(1cc)haXXFr`lhbNKaC z7lTQU!WGA`Y}a+0o;Bf_4Og#ON?8}KN_&J1mY8|0i9pNxdEDbsCyQEX(27{X{cbPn zv@jRYS&++7^D+$N;x&Pl=~^5Y2&pfv7)*Gw^T2Y2(j>h;q5_5>6IHUs$yQRM80`kv z;&yr(qcfGh7A0-=$wpZv%P>yp8^~k_lP`Ui7?u!eV30>*^pI?$f!G?vhbc1L zO@XU16}$RPl)J*nOckv-uNVxJfZC~%vOokKnF&j~pEe3WjMB@{I=%Y>t{7x1Xoz8? zP_&$eo#Jx*H^4=8h*N(h9;TcdmerjlCcY2@TX2{%nrC1&u3+kz#KWA!5~%i~vnyQ& zhMk076n(jS3{p$8xNxWL9^;mkcAgDJ!!YsW*lrNyyAPx|hFC^u7OoHI?1q8vp$}`p z8h{Z%kB?9S{QV-}lB|rz8r-I<=r8p}O3u9aobbv=g(*O|8TsI^v2R!QV{7@ zcXq)4MWAC&5oC`9J>MeP0E0lbQ99JXC>~=->lX?=Ge}}IovCV+CYEEHmPHhjEDZot zQ1)V#@m>co#foMX1A-re$lxbk9R}(o9qyr-^NTIe8{!i5lbK}y1_Mn50Ok&Q%RC%70;`c zODs=|*MVRIRLYHhFZ!ns{Yw%vV(poT9Ad^TL1)}t~m{d)hwpOu_1Rp z@dP3dQWK+wxyjL4GV4XEWnAM~>UWdApZ5EyAMhZ^f)JR8ks*XG=;c}9A`YzPA~i%O z_m#4i8L3;fO*gkawNy2mlhsnaq&liucl%1}i>S-P*>*cNtBFxh^hRP-63a?#Ewd0* zZqsIUxf$NdbvM^axl-Y3joV|~MX0c{%POX*sCh*d6|I}c^Zl+LCnsC&1a3pg;(A(Y zT3%CkstTM7vt}d)Pdz=h^uER-$ZD0vDhm}6DOtqgl)l%RFv01aRxo4Al{ll2WVmRl zilr#FLS2TIAw`2xSF�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

TgTSxfGstOX< z30hP8n+cv19YVz8K>u(Q$Zc^m0#4z2neF-qiRK<1IrDSQA&u)P%SNuNs%7f@1elVW zT2(}uXDNGk&0M%^?%ejSuaVX>QKlu0)2AI2@~%M6G`&*IVHlys&=f_*eICVYvJYkk zfL~y-_|hiQz%k4LvaBg-66IM^A!AkhMI~GdJJP_VQED*ot&#bq4I$%%6`9} zCJA?cH`(V{djc0xZXpIpBHPmm4`at`)H!(EZaY8n!@uyEPk$a2-L-R%>og3#UT`-f z6eS9}hlAb`y&BkhasKq&ul&kywpx2;<}TTP;8 zEMo@`G&RuGVX3FH7hM!8-Uq&L$KSvI%fqZ`nv?h3y059Jzy8V}y?DxuPTn#E+7V_-R;q5T*=$Xrqj99?bb_o! z@la9I{$P1#W&)i?_P98Vc$VTQt^@s-N(~Byg2}Rhq@skH96JDljiZ!6S4JF_U%l}z z-6r}^3(N5uV0RP^VD_l*nStOnT7iyGK~Gxk(o3x$;VgrN{ z>RS9bMO6%%aR7o|q;mGx&jJ7 zbyO;K^b^nL&g@m?nuc1@Ru*MGJG0~6|McEtM^EON5)5;6luMa;7E};S492@ zEkNWTNSfnOdaWEJZfC+Hq2oa@W{wUL0iqcn0|qf>P}2Za1( zEJ+?b^~AL!8%Q4A1k4@+TGzg!VBj+!BRFiDS)7z{js?V51vK%;~5o8dBnvp`Wq=TIJE_#Y?=mlC6^dcD!S{>Gbu$%D8s4HLJd z89!i3DLiY^rS}JrCU+L9Dh`lahH3DC`~h6GZ2=SS8#8ZaRE}NGsG1y`OcSr;R|1S_`|QV zEk6vBD9Gc;vb9!~7mLRa?3grO^$Rb1(qk_zlD=LUY397@*ZiM`-E&kqnjTJF_Wbda-}J{4dabpyyS$oqkN)m2|M+7soJdaWo6-7u|44A+&Ygbx z{HI)X;jEVq7g{w4W0j<-W_rV1%gu&jH@n>sBJ>MC|4VrE^wi8?0ILo5n`k}?NCCd( zD9EU8Fyn@=aGyU&gV>Z_Q{b$-rZP3*|MZW2$235(t0z%bM3!XxgtD(^HVQv(4;Bs#(&b<=O%(`?f@Z)iIov3?DB_52!5pvU!nyhp zAtCRQBr}n@L8r@~W0D7vvuWyiLHOZvQqYpah&UyUCa%nLSb9|);jrKa!UZzkl0+MG z^pNu|qm9i-$PKx01n7nEzCf@T@dKzPKKBx^0R1<8wX1aX#<$;eYO76~?`c!dTD zTr+wc3NNl7Ww9pSxJF(kiC3<>M*iHABpgK!NFYv<1g$Keg$!{k(mG6!$PyRAB1=mo z&W>7P^i)B-PCOd9;itR+t%jdMddVDl&1OPD5pV$uEeIJ=p%jW+uR|;Vm)p%cI%b|E zGt-mI`o9H@`66lbQ+T(cV~$A7g`qz{-x#X{U~KLM#BU?>V`7{<9c$Zd61&!EPu@uK z*<436}WY7j+H=5co0Kf5*VYZP!C?+ zGc9$HC?~t+{Nl=B7)MDF1KlMV9G*t4R=}kxidM~K$LFd8fvKeXu|{}ez19S{4T1=o zY<6bHEw|hTFm&kPv39HWhky9SFMs(fGt;wil=ixP2*2mH(nv8XGadBIV(`o-TxJ$a z-~Ie2J@T>(^rG5(-sKLz|o^KyLVc3ryO<^-&3+G>1(^Lc+Rm!^Jjkk4RO)lv-c7EZo4fQ9{!_W z|Jg^L=T)l*{A_v3N?Jy2B&&MT**jN%{?i`w>?dA*WZ(6ZH4Vy8U^>l#KH1Vs|VmS#~L4u?q)atVrI zx%Gx-yJ@8k<9HZF(3OxM+cKLq8xrT3ilOF4K_37$;jBGM!H+A5&F0_?v)Ej3039b) zJTF+&p}@PXrayoD@Z%qIHGBz_+yIC%X-mib?lj4e!{_Iebo3IX-|wTQXnm=dp`)d4 z1mPc!OTj=49575G!#0#KbR5?-y-IPt$vrpTe4sPTqf(0?;AkBD6{=-8u(`+|cWXM7 zYN}NwKNkYNaILMFb`fnkYR}W8@0;`>Y1DG3)0PMSn-Is#(aoetZV(cFK1ht`qVI9P zFpjJe?a_7Dv`keX${~DybWF$^*MQ@nZfY<+Bk1t8lk6S$Pr~j}M;uy%!>x-ne%vNL;Cein0H7=hSlN!kfr1xgT72nIvH}-? zfEMK0v!yNhkAsqsM&|1e%JhSvE$G6YoXdIHLH}Q z5TR1KaneiEq|{8ywQSD->gO^LrJpDVPjvU)bL5`;4ll3tIIm$jx?$yMjK*u!eCSiP z%687on8=$?lAl#V0x=6Fu^Jo(&##AZlJbKF+9j7h3=G+G;qEVd>88Ja)0-{Z1#-dJ zMym-IB??0y#VFO_X2m_L8xyKcVWKxxku z_DooqiQL=7G@;~19Uf0z8w+81M7%z6_9XcHH3wl%P9+edacXrlN;`(9YBf6z3uWqI z_Rc3Ay+?oD@BW+TUbMWB3>KI2_}Fj1@&}*s=ou$H=q4xKtY;U2Q^kPD$*`kkgI$x( z3!eU%$6s-NuyFUBug*5?qel*ErV+$>rJ9c8S*HE3|N6dv{^t*$fBtk7mF;$ORI?F* zX)=h01a0acC~?CzW+rNm0sE1)>c$J6|McJfjbC~58~^N=Uis6Hd*qdR9?l=U=h%U} zmQEZQc9xo+Gu^E3nw{D?H966!*)Yg?T4nLV!oq5=TNIh&*mZbq!0A<%$AjaC?(Hov zlu6*3Y7-7b1z&S0K1?VZk?(S?v5uWu*C2Nzegf(Xut74_Djas6_v~l77O}R@ZOI{^ zr`1RH71D#2h_fMxWT(@S4gf3=3LnRG03fUD6%h)LO2Em9lGrfKAc|BCE|qOsQ%dT7 z<%a!Hrj@#yRH!UR6!cwYapo zfwx&$@e(MA!%h%&p>j{vWjjIC7i~R`M@8Kz2{PaglGN=Z6~T9ds1Pi;{zZi{PqkZ) zp{LQ%vG}$cfS;!76Yc5y4jg{RKfEW;P*ogceMM#*yUjtFV#0o(;?OxElpG*Qcvz?2 z0YF2b31p=}YqcZcp8x<<6ytat#y{7_N~l!;_knwHuW6bk2LMSTV?1en`^#{8bF78+ zeQg|A9_E1}iB2F~7aqkkg%Gi@;3v+YL>xC4!XvL)Bm5j6k%{q#LpL}Z|Avf#Xi7vz*T+_fpJujZ*Bia9FPT4GE%LLI(#oLm;;>+6qD z&Nk&B6No{ub9{;@0AeQalbvE+5XTWD$s5Nc+mz2*qj6fIqjOB$g#z*Dml&-RMIH$l z#S$HqyLgjW*8eU<=B~w(L|V*}2o5753DpBGJ$if|;t5S6uH{DT=z%i5ePRb1nV3@w znyegk-4R>I!6ZzVZ$PP(@d6sV%-HY6$GwpunJ)kxzyGZOf|-^DF^v^vSSSm<;LZcb zuDfO5Ew}Hx=fL6l#g!mTE8TQF-*$Z}bq(-Cv2-OG_H0etH9Ns&8x_&NSo1k*c%gmR z*ti`(J-1O7S{&!DYlk5aj`HePzZw|kvdb=8TwKHjrfCO3;QOwYMuWwpKk(w`UC?qb zo2m^D-nF>zrVCr{Q?I_V0XIs~FS+Q7SN`H_!lG_9_w*AtP1Q6_3qUG4oUC!qLyoh8 z*cR)WY@FCW(FmRmjc(gS8_FPKbd{ac?Ih}V2CI>(m(5va=OdO^>wo#yPhNN3iM_iX zVW;_lJHGV#pL@l3KKrV4<-T%fUFt6#ZEE2Uzxe5o*j01l zg}ItiMJq`#fCWsFM5&C4i7B`Nul|kS>UJ|U;hBpm2t|`&l!n|DX%^;rROLxoq)MKe zRRw3U;hMW9m8U*_*U$dw3xDS~f92PI_2<6*+n%*+wt*(xf5-Lr+k+p1gV@0yvJthtt2WEQhZUOxdQd<|hoeQHN-k^u=3 zc5VveQyZ>CIE@v?*8Eu?9K%}o)1_ayDTooBEyDT>WJ1d4840~-oi;%4*gz70z*~h; zaV)#yXQ}Dnz|O-vhf^EnML!%$d4`h!R{`A(eHQ%+#%Gkvwn;!B7GiyTKZFZF>#M-u zVyxM*?FuEx_}%oWR+HP1bGy0%-uTX)J9XWjoY?UnANc4Uw;#%&A^5g@9!A47OJKD@ z&@Cdr2T!v5Z=emwpcN3~;0T-%_noTpI4$ZVlN))$8`kk^{ZHH?H{XPM#7~>wK_gt* z_`2~aH(;do&w>Q#2aO)OPTYj*#(y9{g)>5UtoS4gPi?}=GBG-`b{s#U`Q^d&v7~XD zSBwb=gdzyLPzY~_34wj!28agbPa&gXqToyn#np&AeZ2AFQ(91+W~PF}vT zX~fpGSkl@NIyp$7Z!rkg1DUL>bTa%9JFcL2L!khBA-#P<2QE2ePu(B`jsR6NQ0bi( z_|7E)6bcw!saej!8ty?vL!gFfo`{dC$|gafk%oGX6lF0k_8nWke&2x`?%2Qo;F0;| zZa+wZB(HScsn-!;lF(GhDlKxywt)Wga9Cw=tL`;j#WA?U3rh;UB0SVl;pzM-wMIQF z6w|hV0pNL@Tqw- za_q<++q}TB)A_^Cf6}9_x@32M~77(Jls^(Gv*AI3x7aV~xA-ABSdd&j50aO1*77d-MypZkQq za`5NB{TVN~X7B2~H+AO^&$cI(G(}@)5DUWrII;W|dcJFvy%TrOnZuv??x#^Fc4TX%6r)ylTH0}o~yV%Of`R6|S88s87q8CV`lV((Z@=65p*$X5#d_wD7 zQKc9rU*ETFTRJT;67n<5n+g2|?z(PUah?F@r%6$kwo<>~!yox-ntOJ=k?UEZ4-Gq4 zwZg1iC9$9s&?x-KJiKUK^K8pO2jC}|*>o~j)|y(F-;9@szDeJt`zIQ2p+)Hc5IdEI z3h8nPt{|s0b5f#|q|Cz@wgtuCut3Ui zR4jrejeZSdOO;hKJARB&klw?Vo^TihK z3RhWLl>~#jYt2oykvDSXY%tgVtZ}ts1GAib0Y!;p^aNlaXjpZ6y79pee(K-;_5ICe z6R2o;c^L_CrdIPB&DuTtZ+qm!c74ZlAG>t#?R)C3x!Rd7l{w&=?(%T{zVCVQGcMXQ z9fduVbABOw!yEtEZ(L~E{Jxb`aFBjx5V3aSs?C-0;1+rWx&a8=Qap z+uze}%a>x&WE+TE&db0h!79wUm>}o)RBph+8z!{q>QWa$SM6rK1~&i#fB?6!?kJN@ zWyg%ZYlrdFC+z+H?|u5~U;EQ<`oDkhhrj>oA9(2t=4SoQ;*tK!;lbjO?!tlPqj#S? zwEyV6w;#Oc_WSnVp;vjc;kmAZC&6bnUBA+eBoh!s<=!JQpokLJN>2~XEma1T#dWr(!kthczU&OVMUt#@feMQL@=y`Vxh3&=IvoIje$j#Ws=5?cN%HoQ zR;tt>N#QN$Rj!+wX?d3QDL(h_`?;UJ!znEl`fKYYtAx4}Fi z8wrug1A&_#6ihfpTNZx9F_u)C_^|`9b_I^h92l>I{-+ME9odkOH2TS%z%sNUexi1G ziZqep5<%;i5+J>9HefyBmNO7a#*r4e#}0nW>p?>C5FkP68bUC}@*r*;kvt-4^i#z0 zEQm+ePK|$p)}I=a{Hf`D8+}w!G&x<-3^IuXq*53Gz&5U-7P7nr$(*;O@mYDLB>X@? zXOaB{e3m4S-~y!OU8Hq6$XF)EG(Ik4nK%>43qbNgl8`3$BZ)4Ie{14&u8GD7btNzs z3o$A&_Ajxk#?dzfBFi5x->k=6m=0W^4Vnk#Xt#JMtvmDPSSf3kP%#Qd=nCyt+3 zm|s}TN2ai(;w9uL%6L_&y!JJ}1tf|*aRF3PtyT-dL8H+CDsmn3Tc7)Q ztL#iWO8>~=$6a#y;$8RpS=y+w;lhD%_3$fy`up2$+jZT%bUya68$S7|o8pN1n1EMs zFGM#3tv5WfU1a=qAUtSG8lN4~H_$6Cb?sjuq2B8KSM0e)I*; ze9ce4=+O25vA3mJNz!z7ubfoV0^qn&S^gl``5jabPfJV-v zFpk1VSIo)DsmY0nDpSI4q#K1&^oz8Y#honeS4F4-lPVQl#w1GeH1izg(u*d(^My}* z-D`g8@BjAq{^cEi{>DG~?O*)qAO6m7efqPW{HSkz)|0;PyI%C;ulT_~`Q!inOTYB; z$35a!}#4!15v@b49zS9KB1vvhM=(*!=B=!}ABfJuaFr=Ipr`X+6QD565CA_1>k z$}Nubdrz=*NNeytmBBE`GMWiP6E73(7ctPZTu%dH=NGV)+xD0-X-lvR3!1 zB1dS{yoqKDT@2n&9f_Kq zRwJ2^x{ogXS}YS=rg00hmF63_f+xrUY5CBHl1?uw2+!ruwc~go&^DMatBE7)N!&4_ z(a&`U#}~*1ZxA$2i<2V~%bZI<6~GmctT>dTth8`LMx)Y9oPO_m5*cqzf?uHxxOFpGEoZl9OijtsfKUab=`CdZqZmpDV}WrceN&FG{aJLQ#HiLeg#3mDmVjS*QsK& zjAvTDZ!1X<@bhG{B;?pyVFiIzz<iogM z{Nb0s84U1xM%;Bk9hdv!tsf^wX^Lm-FtiI(7r!@^{dL^uvM$~gY+-o z`mW=>YBhB-y;hkvRC-w@m69l0QNk=~TCSS8W`HelJB=zq5Um4}jr)MHOq>Pri}PAu z!X|R%jBLKq$|w;aC-Oqk(3+lg0`rQ;ulAL>MSgDmzEZO@Y|mM6W{-W zXz^aHchX7*O;y`>{jHZ@e0iD`aZyAml$u_zwWlU#ealgjWU#zc*Q*QXCJ*ns`J$P| z%f9_vi|%4WEo&NDQ9E|**mAemXipiY+gTa>$?yG%UZ{ErK_SVa@eOfGzLdcALPkDV zmg{=H>oGs-*h0}Qg)6{tF>X}~-B7tP54=OQEYi?6)w*jneABadzuaztQ&4#^H(7ti zHCMgtr7wKtPrmGDf8zVU|GQuK!sk7s=__qd*}Y?W2EN6_1l+d2X#60A>-N+`NswAI@n_w*4~E1eqd4Kp zQ^+9{gqCGhN_3&=I8teFia9QY&d===GSyTpbi0*aU-Nv$u6^)RUsjBksx|o`Mb&QD zHJzXPOQ>RkU&+zGU&cW$yR5mTT7-IRB&Zty!sBbOs5)p3>yg**R zomeK$hQ_*U!-L1C=o#IzLa$RW_st`K8w2zS3s3$4mDzF8?mUDLVQbSXXpG78{> zjQPCH#7FZKy1YDa|Aev$nbx4~nGhutA01H)OOKKe^=bGXO-vNJrZL%UpsS(Ib>Azp zbaJu@`{Q}u$3FJ4LkEvUF|>tQ7CL7UNZdAunsHs&L}P)KfrQIsLRJ!Kgi(c0uNKM= zx13|5Xb4`%wR_NK6#^X*4QFv9N2=KjwCmzqE2n6UQMif$I$;DM#25T!%feMFbyTL{ zmV_#xFrf(ZVOBaU5?EKMd7-5h0!K|q4-l^tW5F3@HL4pMUlxm(@-wJB$kAYwj&((y z*j7Rwa51mpWD>PJN~M;Dcx~9wN{dsNqSJ3r9(WCxJOf_9I;p0m+E!&6g{~EqC3Zg7 zAlFAy7kT zdm2j>&$27UVh%W>2s8!j0)B2CghXIJ$pii~Ul17SH) zP$p#4&>cf=Op2zLv@UV#AV{XSV$K85T1!!3jFLFC-Y;N9#ZSZ!;sIwzBQIzZ0UT^W z6dsBP#dVDxC@KQj1Mw}yzUi{~xV+%r$9AD`L7`TbR+(E>0q~(~fX;qpwQk&hWRNQv zw?|XbY-m|%Gc-IK50Z+5kd6%MNs&sE?LE?FDgb>5p1yyyT)4%!d!`Iz<_x>aE3%z)dsA2A8YF#lWRBIBkqBM%au1W)P zO0CCj9!voBywnqDa@_(*2NUu41Y@q|V4xl=;Jo<)w zt3x{1Xk!RJTQ^Ng*I}8{Xo!Y?(_j5%5QG4)nqh}=R^(M41{ck>qWJ^g{me)1^{S~L zwpWH#5c*BOYP*Mm6=$|FNc(y=xMFTfpFa`Yd-rQ!`BQu5CI?Z!@|!>WD{oyjFI>** zg;_UTJs6>3fo{jDg$C1r{>z?G4ov7Oj#3#MS>_ZK%E%ypZVplg?uUf5 zkRVjJJOeaE(9=@SN-aYh358J^=npB{kvp>jx}rb;(!C-IXD5`|9q<0s&Hwy?>*8J` zKB)A!&YMO%@ zl~o!i@CTf-x@^bX3!m^rFAR;rplRBEt#0}CZj|d*bGo+U!~guz>puP!sGq^=5bj%{ zT8q5^7Q4s+C1K*BD10w-V9e=(tm2>a!tc z*qX%j#zvz1!f(w{oq|thr6O>xml(~Wv4n4982Am%Tf&K?=&`Ia2t5is2Q4hL%~pYc zTSB7k#0*=L?Bk;!Liw)|kQ)~nkMm){XQGGwWn|PH z)i%QzCJgEh`Zia&k}$1Gm?pF~?xOzSV`U5C5|txOoXa8@h2mhN7FCXrm+#pmWQDv4A15uj3`Qys8CyK`NCET*C;)s(>M(^&rRUzs9sfgEIe3B z5f>XX$VwVeedx~&K-Mgm3?=yOYARexS659N3KnexjRd=AmHm7W2K`yz_oAc)?(@6T zgb@;E7RHluq2r_U7cP&+yT zY$t=Ii$O284^3T_I5o4@c2hMQrUNv(;}~dzoij5w)FqGzycO{Z1Y}Rp7A9|IABn4Ks*c>LI6w`&6T&CC|MacsGp zYG$snNC?8Tn+3`XaGcX!v@O^3YOdJl2ko6CSrBkj9mg_Sjas|mdp5ddnuooI?cHv_-Uj+F!79$wsWsc^96$1e zD=xlbS8GCzy*#rhB4wtPiLS(^lHkc&33tTI(n-s7!>C+cx#o(8J>vUESBzmWs_ zC>1||CR(dZb;nR_H7nvMPgP(uuMz8h^D$3<)ocIc?f>%0$3EscNA5h5FLr<6S0S8HIE@QV(}GBOIp(8a=u0K7LvvXhzo9FcZ$*8LIlxk1A@z~2Qa?3m& zbc#GPZ3~Jg$)HSJ*KptVroRi0uQn&zSy3fL?$?@-Ke0^$VeuL=hMEU@UQ06wu1dQt z19>ZktVCFUC8UEv$gm7_DOBjwOjWWZ4&epVT)tflM0sHU!F%qweR+P~(bSgbn1Fi; zJcLS&YMbPM0IN{WK+L}HHyVw5@4c5s#Q=x1yYIT~s)t|n-7kDP2WOyJP)77Y3V@Kw zQI|SZ5?MA`&a)z6`UHQr6C;1VM}hmO`lw7f*pDtpzJa$83;>-9xP>5z1u_+_QLA@W zRtwE4Oz#WV-_nbfAi=$^Qra*mdT9a?;MzjZE7;L0GgZEsZ9%^v3$YKQ^lgwem%I|1 z!j!^AQ25ecVS}x1x-dC_PREd0dA56hh&?O4A zHJdxl;~YLelm$OFY`Tt9tGo3Yun|BeVovRHYPI6>!~&qEN~!8%|^O8g+XEz(80A)9`$=>3UPG`mEwi*t%~TzM;8l zX_mQ`M`{)T-$DJG0wNnFlzq-`fRq_m{JB=mwtPdkfhf^4@~lcz=vZOi>HhGIDa$f! zM|UiMTxbJ$0lc`#6>gbXWML9SX^?`FJjuDKtyIWx;1qC3v-T(=lDoaeUA9JzRm@(CGZCo?Ht_BL6%l& zhI>U8dI1P#IH(w0NhJeRFVZ+8Du|1$G1+PWZ#8@aUX@nCp8-$cOGIgeYZACtMTUbo zLL;K7!+t*q0tk4VCJ-|N#?my=oA4y5OQ|r|=Gu#rYcXDbq> z1hhUw7T}cG-4wQXz&9pQRS6ddG&;0K>wZgt84=Z-rd@yIjo><@n^REmg-Qr7lppbo z7|tNH69GsRfnP7J5Le@{HH)A~DP!%l42KZF6F6{!M2XHwX$EsZ81&}1ycHr+Z?*wQAe_`nh^sQ}Etonv~q3W7{8S%qKYL{Z|IE@~UCbS{~m{kA7O;o_OO!D_t!?u9@3v$wXVE?QVd zN3wvEcFpdzi_$F$yC_Uxa@ELHJJXw)UN6z@L<^4FadU%ipEhR&qFpR)t@O2`u2wa$ z6a9g6fa*YT6LZQ^d~+o!60OnN{m6Iz{U^V4!wFTJxcRF$`g!#5Y44AIWgzrWe&Y5SXJbO<28VTqd{`# z?fdWEf3UmK^(}Xz(X>&|G=*$H>51>p!Jy?hQbC@hI1Pg)oB&9Ep3NUS91Z(VfASMv z_^sa}ow;*K0K`J0Z4ub1HwC_fC~l<7L5H17r_uL;v1nGw1pyCK4c)YW8=zZ7qg4x{ zxY3*)4wUPz-LGk!T>-szu?R23K0{*2tk=Z_MCV? zCK)uf=W32qnMST@aS7;@_2Z};hKT!d+zkVy5w8x1tHZ$xAZZW|fbloQQ4Bnrgi#D+ zG>&0Ght6TzlMCE786~qUyH@wvk;ZgNDkaff9676-Pi~K( z2Ykz)tWC9?daxR4}Khjl|hM_hbeZsS5Ja>mv+i5m-o2?5JXIir-G_z&s zEkkLjg|FmZmD*8XiHBMqTUuGO^>)pfsn>Qko98KsQ*xHUC{y@G+yV)BvESKvs5@zX_2A@2qh9~0_BPu zf%oxL2ofL-NB!UuBVYK)1*e}4u~!yM8Jt!z3P3dr7a7W$D@x$)@TCQA4QJc-fSy(u zg$dj+5QGHBJrc)fZObt@3nRvopy#u))ts7W&ovuUaQ{rxv27P(1v!@jb{c&R0}xUt zuhYyAjZpyow{ZYK>n#&V{zOYiQej->Xa{2a2Dq_3i082r^8v)kginadN?%f1Ug4h! z7K{U}Eib@fs7?eqq`Cz`2++0gAD#o8U$N7JXgG zQ2I<)5(czFnnLzH#M6yM43J(!jxm;x5B- zRMTm+CqMMjPxJ?gW^hObT&wZ~MHfo&+!56u*Squ65H;ZyX}zW4tvBskSsG?xrdPJ5 znP}p=>(p#+#b+z3tJ`(kZo6*7@jSzTPpoEXf9d2*v)(y5Z&t;wsi_}-`H#%Ct>tAH z&T~u1Uv$!K#c=Z39FPj$hF%K&00z+F(V)PxvhzY;s-$omKGhWsUiSy1oZ{MA_|IOe0jpr#Voyc`* zCZdR2g0d&G8?ft20LNG+)|qEY@R}4$dcY>Y zeC5;EeeT~r{+WOK)MwxKsn7rWr@!(apTGV?U%36lU%KNXU*7k{oA18%uETd8T{+fI z1J%$ctmb*{%*Ec0hxxM?yX^~1cSciNO6nAWk@c#2ePlA!F#7S?1fYpKbg2X=@fif35{7G#NrnMeFl-|_!Q6LCj_=obb2nD&h=SvA#e)n3nhcT$8~gji807JWCv!O z76E~{m@D5zT?pTy_;G<;JV`l1`3l8#d;ooZyVK&hAzXl%<6ZC{0Ml?EM1~_kyq=HH zJMe?y9EW)rWJ!#wL1lW#fgtZ}h~?jkXcyMuoYNuCLqKO&%Kt(-oeLwTtUtJcpi{V< z1`Jg6!$-O>r7?}NsIO2a5I=2gu`NYWDj9iJ1`_h$`VlbAkRh37LbUf_Pz-}~r5i1G z20@hTh6f~JS}w((n30l02SqOs#A_>XA`?JA$I|PrU2`p4S2*Yz^jA)v$m4Lb;azgU z?kg|Zd+CL{c1~FhzR}AuIRH(>sJxni3R z`pR&5@oA5JR87sZJ#Tt^>vwa&@MT)5|Z zU-%tuf7WyCcfI@LpZx6Ydmi?b`K5f}L?7zJELE#0Y-Ga`P%F`EiQ$*fYwOzXep*lx zF4&URpOp!D1f8C$qkszy6cxzU$|zrKw`6tp%PAEkiFTR?1LQQXpR#RW%pu;ejGmm{(Xd$s#b8 z?4l$TrdrraYL!E)46eL*=WN5)@-T~sTvc0DVy&n;x#Rq=-gHa17g(kq1OcSO_iVmD zBCB!Es8Hl62$eOvf2AC__sG3>AFUGIwOXF(KfQ9c|N zL7+sTo@H^jqa<UX2w0(Sw9fnnx`nZgaAz@Ru1yNHpmEdxu-81*{WH10tl zF@-rglIA%)eb;q$Yc$yijS3PM{y#*L8{4PRZRduNd(EyG$YvcOyt&DG{eD!d`=e^hE+Z7zIMAZfxe&`31mk6wKMSg~iN@4yYj%gd zqh{2bPOD)wXZ#&)d%CW){jzT5H9c|4z%2S&(o@1tu{s}~INCk1@Ayq$-S_E_edWXd z^3e~z{a^p%Z{GdEx4h@0Z+rh|-uua~e*D@yuD$2rT?-4xhMlFfcPtn#ME%9MzZ}Lv zg7R8~oNB+@%hEKDvMem%0GLYCESsJ_rQ~KcvM?qW3FLB7zSgKu)N3u@tvgoD)LmV* zHN_I6i2yn92LUO#3?a{yG^>)VisBrx!c_`Te1=Vbz&Bk#k6=v;wjx1%jUOv!fg*L7_PnA!7uo!eH&>WaTKqhJmwJW+ie!mM9wEi>Q!~ zA*4Xu0&T)KInnx~CD|hqx{<`J)=@44ZmQ7SuwMvpA;jAO$U;oZW+QhJtc4Q;foCTG zIuZ}esxsx!tJK+IjK%UBuHW$eM$NCgmTwvklsQV&?GAz-09an8a3gF>a}i9<4F_o) z6fdxGEiOp5g@};_f`CFItThw= zbCMKc6N^UAhq%$-MVvz&Yf!by^3qDdeZk>Ewk)%jqbouyi+4{c)VxJ%F)~&W9o#i|nI)>J6xEJi2y>R#J#pmz5aQEbnNxKb?9iDXtUzSr{l2A>QL)vCp zrp;th;(M$#C;`spB z52ywM2(Uge0f#vn4kvtj#|Oq?x^?~)0`&`e_ZpUZGiZyu)U;S^_On8Pf0CuT3W z;<15N|Mw4n`5hnl?45^u_uRMKT?r>m?{EM7kE)f!M(^;9Ike(sS4+_@u$sAQrm!>6 zGg@xwg-#7E-!q{A5Pb4|BLlFWpb&?Y($*@^RDJkBML5@VW?PO~C22TNO1NM}oTN~= zE8Si{4E<&kw*=vUD%4PwG!jB`?uf<`B2-jG5XEx;*yG2Ra{$}|P9op_&B7#)5`c`h z=PC>q!D}9xdg2v7UOT5 z0XBu@0od08i8#K*K`X;lOts=XJ7k8=Gq>gdMp8;Whh;Q8OKZ>VyLaKveapHrofU4u z_hZp%p+DpjAT+Z;>9C)sW1`2y0pL_L3@%?ONULfP#X~@-G>c1^63C5S8J23AxL;Id zBcUWC;n7-L!Z(G{oD=;E)L*5`(VcrbO9j5+QnmjID>ocKP+@(DW2{HadQDLu&i zB|pD*+K`WLJHYbP+fZ!iZyf9A9xfTmscS(J4~L$*- zSx#Cg!2M!{PuvZ|)nOpQFwXNhFA})2C2$j!b_vs_bCOdiaJe#rN8n#Tp2f?u^ocjb zau4GTF^~~N$TD;fwGi(iphk!x?{N^%&d#o`uKwz;{IAIgXLU7!#IeG>1Wf?Di3GZ; zzTjk;$ve6wA*T6L#g zx7!V8La#ha@qDA*bSI};J9bQ6aQ==-+$}j z+i$%0&YSML>y`ue-gR*P$ikpE%%T2^Y<7Bb*W8YY=0weESpKZi*zMHMvnMZ7&6a94 zRjZ|WlSXaEZ0$1JJFUs{6tkfiO;xXJFf1Zyif5=^&1rgW%W<2g-E!=fXEzXhyMa@t z>T&#w#tQBPdcT702a^NI@Ygxqif7L1!IGC-RNppJMPY>zvA`0ZAV9PjF@Ze>UNIE<6O1(g69RD)wprNHje$F(aB~y} zzJtg#j1)u&T9-9qrMNWBgn?_-oMf4Gr+-TNjJh$yyP1|id{*2q4wQIAcH`zS@vc~R9>N_v;=Pqz2&$C)P z%=(N`pH?(KOSCkGsM(O~B3H%dBO#7wN9+Y>rqM;bY?OGYNdK+h`t4D2yL8rdI~!VG zTVh2tT&`-lrhN6ry9!QeB0$JserX(WZNcmLejon9Y>69rRyWNc24K zYPt{#LtH`P4ZI%z@h9P;4B~I}L#P`(;naQdtO{Q_&uqQ`pvFn=ICh>Z_uO}^IkCfa z;8R+oKnw*s1}ij@Oz+_;ksx@ie6_~Hb=0P3irY8lxdu1DSYrLc)`1N?7Qcl zm0|SxFW+#@Q?8kwp2@QmER*}FqDRA@U=LLai#?UPTNYo&_Y-iznZo#jag0Blp=Kfe zholsWmX=1A8@b}zL819m7wWb1Kl_z~Z~li5f90m5raQB`GH4jeC*J+HM(4=l9bbIJ zo{6P{cX&282}@No*6mE=CaoMrp|UBgEJZzNTY>xeg>9W)r3yDHDT^E$2=K;e);pan7W7NK|2*0lqCnKz)Xm!X_z!op4af*cB4MkZp=U~J*Ka>?G-K02I<3U~qaKcevut9GV!`?FGK>NQNWbs8ruedo zSiT`xdpey-1))A$Hq04`h1gimGY8zTb@pfX(EA}UTC~SD0~eW%%eFCbKVkF5TO`mz zmgO!iE_0o{ZWac2AxZPpfb^9G;TBAis!aM#$FP+ISlx)Be#HU^=-j+i)1m~{h3g+B z04ha-be1FL>r1$xQY_mMUk^Z=6E^Y1(7eh^^dp^^5Ee{7Q=wZ zn0JX7$5DRhID>l%==`!tfn%^vIIH+I53*Kk)IRg+&%E@dKiH_(n+-FHp@P=rK@j@_ zNiZ3Vp|}X*RZNmwvh_z-uHDP`O~DE3wm*Nvn_*J9UR>2I!>rl5kp@qF^p)qeYGv4K z*cQCrEH5%RRZxjQ7~GeMwijkaH!WR*4u|O`)Jvl*7{=i+0=zELlKaES^;pm|T*Plz zTovyWT;cBIcH>Jo-c@;%w%3aKgL2q;#IC86ci(pK=If8$di$-{-g;!;eaG)RcKF^S z#||JIJ#pW$`TLG99AJF>-lOmzmX5D-AxO(-?LIyzM}gL*^&XVgvBjUz7Sj&zWR(C%hIXTwq4u%?grW&|U7I*nep8$o%4cCyt|C z?m2q+p2J7?A3k*V(c_1fZ{2tJ&_eLV8}C|)^wO?Zn&oYgh_wV2PPj7qgb)UOdPs>Yo zwJzMzZUQNxTX3(c(yq9zfK}#3Sr}C@SY6i2bjS4MRS&!P(N|x3#bvwC+tHkAKyh%` z8GsGA5OBjX6w8EW#xJ_GAh{3-2^8agm;)`GrLk_PaU5HYZJ9QpYzC!Z&~<@d(X2Ou zUN4WMhVMtc9t&B>z}0}xaz`f9&=Tee|ZK4$Pr*@Zf!y%r)NomOq`}f4!A0?VL1Mj^E>Zrd#ue zxf)hhR@Mp?KBNP+Y8IK5XTqz2=LQ=0G;|^@%OE_uYUp(4BJL=l0AiO}77abus=3gQ zFy0o_9T?(rMP_YcdMb>oI4?ZQgWX70J5U9qEYBIib|Z#&!q-9s^?Cs;y=A%u&_OP? z{eh>K@a-~JSK~pyN)lJs+ckf(UT?dO0|zTl^Dr1LFCE-}XK!ioeeZqm@uSDlby|(O z%<~+QD*Eg;!|25_>Ru2EE|!vV!cgE|CID)LcMc>&j6O^=!2Kf&{m*{sw&uh|-CmiO zy6t%aAd419U&jxjIpNGZ1{&4k2p6mxojy|$FR$5tO}Cv~)zH2{l7?9tL4^}Bagn`v ze?VY-iqU!{EPKZ|=IEwKpDQ9O))6YlrvjFlMv`T{0ST%GIEgOcn$e(CMfIs@JXns?-xTu2T101vG;8Ud<77p8+W6`0w;B6e^ z2#N~t60+pl{B$H74Q|t+0Z?;U5Ug3V(Z2YSOJDrr?`X9Q;BVKVZy^`JSeJV zSarv5)tl3;$(i*^@DVGwX&v{H6^bpnOmk#5nFj|=b=$$ULKjlUb#FU96qqJ|Mnxd-gxg# z*WUHj&)#_LXK%Xxb2r}f`CD%M{H-^9@s1n6c-zfiy8Z5(4j#JoNO#|f#Y3I$!cggE zRiG)6;sQjVHMm7irY4G!n@Uwv^p>kldg_#`PU-5jqRuGlw5?6K+LYtYTK=5n&sg5H z?a$fXtW%qD{5ivH8Aj7IT9(-Inx7kEn(*|ArkdS(| zvlTFxqtw?%Y@e5Q>Sdw${AS~dtFL&( z)faYpscxyg&Z=z#80bkH1i|3^J-cV8h?!)=;*m&5aKSo2qsb+9e5!mhhyG4S4EImK z|Aod`1mnkk@)!Q|y4!WL)#+!=#&jOUZCg*~4@@e(-}%|^i;v!Zaa%72OIn^HcP`)K zoG)Xst+CX9_)QVjc_l{)%iS@$0;q3j8ylZ?f5^AaEMPk`7HCdR2o_6e*X@Dtf9piDD&{9dSDWusL@P1y~<{7A>Zp6{T)ksyjKTS~neAed|X) zY3|+|=&cl@QgG2%x3m0`?|s4Vzu{FWn>+Qu-5^vrd~Wi^sIQr}kYqr z*?F2}Eua7JtN-ecKltXq{rueS=S0Qiee>PP9kYs)4Z@{3AAk>@0V8LsIb2|E*5{U~ zC?tm-;OL5YGz_!0T!9EhumwJUT~#QX+(nzM%+2qBxpG(%R)h<1L{=p9G@%c+?C(G% zqtxjHj*U`hAml$zpj3ENSrjO#sdHqOtd`rwtJUP}%!fYop+>F#sE1!!1o2F3V*c21 zzg43u5EUG^={T{0WUaS6ccxp|8@8fxu{RJWg4bw6sU9MF2s+~flC0hOI<9Y~aRR0- zE43p_tMkJ!vAo!E2EaIK~ zE#p!(vWWs9vX{byb8ueQarA)+`5+Sj;&BXlh3_yPuEME{ohofK)Y`Hci-}!LH+z8 zbZx1gU(f_ME)W!b1g;L%-ja7FZC$X zi_AbTHr3dy8Cn%B7DgV}cGSN3-Je^yW4=gCy8tGtl(rIn?==_fD3{tr$56_|sNuM! zW{w*9Y6R{K%{pJBG*ZhzHK-Z#j4Qa1HVp0!Ae1wY%TY)Gech-$*L3SG)0^q36Yu@p zUGM(PEnT&(*k--z{M-*b`;m>_E~B3=9RnkWxoJ3l67*3cREOP`(-*8GV5)F?f(DEvCdwcX9x^2M6TFo%hzZtlO%-q`N${Tzw&@KN z=U8CA`%~Ai=X7=FNVnMLj(kJrBXP4D}_$J(vA z6mS75m~Tt6(n7WfOHm-s;HZ2NBnrA0Uwqzs-}4qU2g{3xuNfB<7%?h>C#|=FWa(Ng zX`CJ>MpgO-r1j+ntu@BR<72{U@?_0g+BWPg*I=M0*BkA74<5Ph_Ty7iwXjg2F}bdc z+k;d(@S25N`A&%lIntcBM*{p6qPZnOD3AlEGI15>m6W4LPG(8jvTHTC{*}Q`RAg1! z?H#@A-kZLBhn<%PZo9+Pl*yXcw(UK$(@%TM<-4cqXfU)J0{0&k36vjU3-muuoDBi} zA31siw>|Z#Pc7lDRAsx-7c7d-}dZhJo=H3?DV3gUixD{_ZqW#{&JvXny*=I zyWO;E_R{f#0&<*28yfUX?YlkFpfk|)x}(J9Fev(!Q&z4WtIo~~AM=S%-tn4Ozw!9t zOijJ0pYEBcz5gHn+8!KnhKH?W(I~r$n&euQXhx#Bxlt=MKQA3_0-9@DS{P|=z+eci z2R#92MnX3z;i|~PaELAowFo7t8D^u^hHM>MSWKX{6usV_II(b&-_4;Nq}Z&kE?;xa zHK;1QSY0t909-=YbKM{Dbk%cwowJbSvu-OhbJM``rTYJ|_a1XrQ75)Mhcta-O76fTp2= zA(L?E_qtKPn}z}R5Y1AaLM_T64x(TXp*-r({O|;Ui=@Cx?)7>cyb=T%iL%x$!)vv? zRzslw0ycb@gu!6o`~ArGqsY&b1gZj7z3$iuX>8`lmkmHL#mM%$kih zw7RC7L*LhR({q|)O42bxGKhc9fa(IS%b7e+Ee2ec=G^tJfb@l2hh77qLV%5zd)L$h z@p-|mY&fXM4f>!GIL0V+v~X+rBhS|k-$B#mKnfkMaGjBm@Vp}Y`X>y2RV@HRRUWrf znsRBXg)JABT3B*vGhFgmu2Hx+&Mz%3x8d~K&s-ySjm*(=*Ogk1Jm#uxPvaVfw$U0h zJ1whas~V)gt0|7Ad8*;4wj;Za>=|Xt%9~o&RMUnWH>Aju1GfyUxG(#?a9WIiV+g~K!osx(xJ3}x%+ zO2blHme!Fgms^C>cVx-IE$$iuzp$msR!Unc*L_Z@QW37N)5jHtQBz_G1Z#86k*`4D zhnme!rkYP`|Iwq*UrQf;X zmXO=g0Q5Mj;c~LIq{+-dk^z)AYGddEBMjrzbq8DSvhM1lQsw@z3%p|3R-6}|$&H`B_A688UevABp=4w- z%xj%P%`jjpg$HZ1{{qQlpNOaouIlBAdYQ05lai=E*VYTG7)Hy7o^tu6uXxdm`m1S> zN^krRZyThx=5Da3w)J|Uf8^-qEt^G(>MH%A98kD0#04B*yMm~pQOFyH?snR;ZLUOd zB$@4*bH8}~9q;_34@HrymrYnin?2{+kAG0<@7H_#tl)@|tf*xSt0q&_P%&cF%r(2@ zA%iN{!9nuFVgkCQQs6pJBL6%u@*LW>DpQ%blxkOul%ovQppc^y^4yVa@Amt4R;FV% z#uQZt=!B{Rzcw86InR1pnv$6jVVdWXZgGa<4^qQtN~pl9kPI2PncKRvS6!C2Zr=o! zmDCL2v)*(r$zoJ4bS+dHV41`OFxopqD=Ca1q~-wBDms-k8< zFa_vDa~9Kzgp5Dg=Oi~#8pr$VgotYY_`s>C>P2^=>yWp^@>pIuj!>Lz zWQZ3`hjLxJPfo+VN>?TB@I${c)yhyR13niWmAcHk43B)cLe~miFAc3Qb>dW*4W?FF zQmViYAa=Hl);rQ!-D<8n6nK zvH_=-o+i1vWUHmYAuLESjuVGDI6p1&SmtTZNPOiel9+}hds;<1h^7$Ul59n`#5xC2 z@}jis5*FJD!g4?uK9_!t?h0Sx@%o}3*&s%(0JTU1mwZ;s?-OeOM~zO~V1CqyB`b=U zT2WAaee^>}LoUwb019AERkC}HLs-LMP|51_%*MHemCt?Yd%}L_eE)8ktOP;EHN~dI z?Qw*ZV=J!9q?Q*amd{9rjEJ3Ob&XRNO8fR6Kr)grC;{uT92mspx)_-C>>&N-SFcC& z_AIIG0Z(&-v^a=t9RV%~=8PKJCXhwBA`Fi;p;0FQKE5pgY(SI0K7V={cPgSt8SjiQ zFRyB{^s<+}@aVw<5H0wYVQ53YFYEg3Ip_WJH@>;Q8_r(*gym8VH8W9-9N=HDE_nIR$f zx~)&V|IZg5xJg+#V8ttD8t8y=kk*Qp$XW`(FOWE@#-uHmbJI_7hN?=MnHE)+qk2)P z91{g##$Ct^Q=_IJw%3gyEf#uytQeh5=N?=d+_&e5?zG3JW*1lcPQ!C8YyR+o7d-bl zlaoBDgw_DcQ#0^EL?HO^(IWy!*qea8I^=l)MJ0_-Ni&-#GdW2m*gia3JuN6Uk>RW) zN~Wq}?{JzYah@i$c?uK=aH|gZC>CZ}D3y>cco*SXx01!VrT^!5&08 zZ?rteYXE#Fg$yCF+D#`W&vU$UZ@%M5lzOGwN{Y%)&>%R(URE*c336Y}plc0BVMm$` z#KjSLd;ulNoYO{R-;b~dB#s8uRA1%@8n?%jU~GYf5^lFra=R5=q1iyAx>7ZXTUm3C z1nOt>{z+7q(#bTseG-jsiw8y_K^)qq1S8k+7T8fhTv%9#hle|z&e+%(v?$C)A?`qr zDu05`GXArZhd%&4+VMXOJ*2)McfrP}FJ2e>4{(D5s0$u-Z>X99+j40*INIwT9rWf0 zeP9&;F#v5DpoI&t@E`|!7?)6WwS%k!|3ZS*5?-RI2Oj!dR;s zrslYxr>0{H;vq#^TioJ-`Wg7pkhN(6ag3D1N)|H$*yTUcfbi?UF~=wC7(fgN&P3fn zb+X_IP{c}T!V}&Vq8`;r!XNx*2(O6p6@HCIkdl#4TU~HK?JKaM*gFScswvzR2R>Ra zOa+xkf{D{|VYla5nI$>VaGX?m$|-(4sMN;O8B+fijrBpcR;aGynQD(ee zWMwJ#W5(AF#nM!PG{)mw_R&~v0qQ2Q1#7e|7MQVODiO_1Tb**P$ z{Yp)uxsC|8xFMQunwA|#sq3}vM(ds(55DJp|MyOZ!8w!^6?Xv@?t~ma4B_EIs)8h%nCJ}p;jg~! zZQHkON<)9F;X1Ys9dCHvD!|Uf=8t^lOZX#oHU@?l8g`Ci~{mtR4B3z zgay$+``F60rrwaTskvW&hM4y5B%c4d-anpevG5q_w88zwg2&_&e-`;HIYjb zehdjdT6_9K5)uYl53gS-(gc1GSIgZ>Hnub;AOGON>`&kO$tZIqMc=)!%Tu$@eDuBP z!u`t1o~;epDN1gbt=fv}_VGJa#+3m^F8k_gCuibc;H@!JmtO4L@ngLO*EYGKL@E?Bqji_C* zorE+@LPH0%g{fF)=usq9g#?uH6s9uRqYNVMt9J2Y&aIRv&IW}PYX*;n&$t$cYxAIY zpf`rYf$tB}jAaV~=Og<96e0-W$-UJUmU>jAj}UpDmu1krI zWMnkF*33#bJGz+Ndi#-o`TT8mW6Lm-RNKzwB+7cS8WWb&vQ(s0vntEe9hX;P?$Hh0 z&MpAx2jm}YK_{dHFRV`z;7v#qG%Lj@B`vFDo~7I$4Nxp$tS=_VhO6rR^d zqv{k?SH#IQx_!p9ZUE3nv5CzY^E}^sU_a73vtbqh4JD7dMoq&K7`^sy^nZw;S^)e| zVWe_W_p8e+F$tmm)`ZR_vD4t8fy%LIEpgZ0ES^3Gyw4B+SNK5agTCzN?53<>d1Pr^uaTE)4Xl{{gTFY+K3 ziqeATt$@q9gj#{g0VBasB?IUjMh-H@@e$Z4D%CDeR1mAFG(|`Lk#Ib0DyF4cus}@J zHZ&WzAm4Rv-h@vZkgptdDIrza7l!6T$HHSPf@A-^C|edXfq!ifuu>`K*Gj&=h0rH(*S@9#}zPR-3P?N6=nP*O5m~oZxGwkr~x0N_3P^-Bnzd2u4vF(KveCq@i0l3 zy1iDr<2EOPRQlYt-+br0KK6y{Z^=r{bG=G3_8mN0aW`2wNJg|?o{%a&E1Csc#zP6_ za}E8`$k0YW6kfs}&<$Bd>nMQtxW`%vnOo*yLom+!-~WEklNJ_xvl}N595~o)d61=K zGVneebMz2)5$K;?JR>){e8z;d)v!|2)X9m)+y3(}96huz&!Q}e$H&JH&CM6OIlKMB z+xH&&^jB|?#-;<)i3~e6^i1Vx@OY7eMwloZod9wv0Csscm{y>m%%E}yxv8qQtLb*s zZzjEFypkT-`>N+Y`_kK zmB}WzEJmFwg;9idIdn_kmLp(b@fyI7va`WD!OGzo8d*MY#j~?B3c=xM*?4?h8_T#Hqf=ohv1LJ~&*f9(i zIr}O;8=?wJM=bq<8Vdc6i-0Eua;SYcI z$AA16U-q&$yx|Q$|HLQ0=*drh$upn%%9p+DCw}^;-}c}C`yajQT_66Nzxl^cfBL%H z?>Mly+}*HgGg>y9WSm6+-m(hVodgl=H7H%H(U{!vz@fkWyU%{~+>v!Kyyk3Jp$EjBK|5Xc#zJyc3rai|D_NB|E2EHIU78kr^! z^DG3wX*D9~p%O|6CO!B5#dD})9VP*oQ=lAZAEN&fQk?;yNoXU{9rf@&(^GRh`Jecx z_L`bjTR_E zV4wg;J_FnqA8s^-2}ps}C(ICb+6j2e9y_3aIWOR(lxTv9#wE_& zp)-@TROV^B88xb;8UWq^+pKkQ5`?VTx@GE?t(m3{z-_=s*n(k3jIO)3({Mf4vGIfr zi_PLjwU%Kw?FO8s1KI0_qPd3SnXY5HwcoHj*K*+yfC&L>6*enSG;#*;1S^(Pk>yO5 z6ID)SDWh=(iOg{fZdfa3C7?_>=B3KI&Z7ntPR!)G<{jr zqWoFHqL5*{iR!3pfwtU<rI6nVJ9^JkN`gn02pc!!TsOnqd`^Y1*BvFu!}_UBCa%cfaogpV;xh zfh}9M3eaCWZ6rkCpZYr_R50fd=U_)EiX=!V+j3&)@VdVQvRRdQB%-0=N?IhivbeIC zm)URs?jKD|wU<{`x1O_w5tz9T1`!NzWBwD z`~AI1fBz+0n)~klu2seyRV=)$aMRMxO1)s;M`cO5RSccNcdDUL`4TX5nXTr!8aL!inVN>0#?ZEf>osM|IkL36WA}jv_a9Z=c92(bp+MF_R31KX;DT)z zy!GebjA}%xA&3B`E!RnFEg=}<(WZ(=I-r5>ER>YyYJca)vw+7@qhT2 z_x{C)|KyL~^Q*u18*lxE|Mb4U_$y=tvFWCc3|f{3-BLg~$lMv-4>QeZ96Yl8#V>yA zh8yqK&8ea=CE3iNS~&d|*$<^ML#=CI|AIY*x}?+{Q=GXhdXq%q&__XW(2fmRNF*xt zQ3FQ;#2_&)i+;9sGeES{jJvZZ5LqDZdI25Hy?RegHMgHkquXapgaBfVZ%wFZ;IJhw zmCm+q-HKcIX;~I(yv&Pws>Z+3|3MO%Tl7Yw3@)#?Snp74|hEpJB*OJ(w~g`G`X} zeh^MvI}HJ2k3wtZ1|o<@>9G?Ujhc=JE6~^3ElsdnpZ3BIFWN}R-1PtCLukImAtxagYMVkT5ZIllDida+~r6C`mdKY!|H>blx32buZqXGy<)~&668-Uu;5_zuw$>{Du}dFvOviN|Pc>xSd-RA|AXh{5Xl=LO3vr3|E6G4mcsvEM-Z88276xsLHU+ zgR+Rr94-|-op@3VlTei^C8s~JuL_c@0@E-;A$kSk7d6LX7sy_q{LvZ18L9vkA?kt` z;jg>;r+ADtg}3U0qzyou0$j|U*-^{u1a2EuGKDkp@uNjQatRW0g7Sl5UKpj2m`g}6 zupoSvtY|hW56&oq^*NRkdLgI8LoK zb={nqoLOB(V~Bq59sf&FEPQEUp)2Mc3HGMQK*pF~W`9jM)I>=uQuh6mbTY9?u=}4@ z&E)Ku?HGUl?myA=9AAii^(sUw`ml7x&#V zWd}~#+k5Y=mu}nc=nmj(R%oR-fSp5-U>#YEkjps)B8N>?o`jR+S(0RNl<~k=MT|Wv zoI(hGsdy%X?06GBUk-AoIeUJpHE+0Q=dBO!Dr`59ltePlzwnYWEAP4U4#QM_>21Go z(PihQgG91en~2zv^*D@Bm=GoF>~}WAhA;{~l##!A^f;3$0F2QsM%HF?k?)@M5_!U>Z>bHLT4V2B zwJc8~$8FlqhEncCiGIO_kIBjkO$I<*E=o(aIXsW2it1Km%zxlEOdc)*7a0nrWwGlIGr={jF>M)hvKzNe zNQyj2(ta5Fe&G9YmQ~}O$pWG_FJbEAl^mfmw+#KjzI`*(leQ)GdI9hxL=8~_zfP@q zjF8Y1{Ix`m+$g`|l{zf0*Ij-Py-X_=iMR_aiOA8~X`ULQp*nkTI(p}E(u0e4cL650}LlqjtAFV=;Ht27sC2mQMi7EjRR;8+FfhldQJ z!9pSGJf4}l3m_iPtA&g!;v%Q=@MtedcPrhNO}(=8NG>C#%%mij<5YpjBzDfY{t!t@ zkv1S@m;y-&wJ7%AOw$bf!huS$gPB;i#BMUvQhB7b!O1nIDZ-{==rZjlt~%0M+M6;jl!cy53>a)?bcWk#sN)dMCdZLzFU<>-u- zNk%HENG#F3qv|G46_X{4$0y`Q4rs`BB5Sm8VZ@D&qps2d+MI0%KtAWRCSrf~=c57u zyu?>Vj+KY(-~+-DSRxrLb`IpSQW+n5zpu=_tRxXq-fTw08%c6OP8L0FIE0>Mr- z;L1@5 zVeU9Ykc|M45}O1X9#CzZrcnaUvJ|^aq~7w-)LhS=2nWS`{_JnQ{?)stCnvK)U+#rD z1dXEi`o5TZ4Lcoz2HB>~N=YF~fbh2FlQSktVV0I;TSi^gg_>1reEnBHTjZ-!F`PfR zd!jYgZcQJZ3ruHgrEYrrAO1}@ZQ5g7(n=4)5N*(P?I;2;uqps|xsl6Wp%?{M2EYhT znzj=3dy4Mp?TMp)Hk1r=Y;3hR*HokM$c|ZU@C&bd>1$u`f=$zIcWAxzHNQB%{TYjK zV>MAzRILshx*LQ?thNSYKaITZ)V1|HX|P%rz2)YBzj;YK`isamD#RA~dl&=jPxNmQBb1 z0#XcyJs?9#id8A8ig?gn;5W`jLLh&B+^2$*$|5b$Qp#A01FroI62F^tHAC%8Or)~> z$xnazEkFOOZ~v`7?ZsuL*{a=;bQ^|&Vc96IU=TPaS9$?A`;pWO6=W!^nz=f@w3JOv zY%e6EFpT+rSeeaE=Ul0n9iq+Xg%vGJ zO?}3aJQzi})Gy6JpbifE-5qnodk^_xfdaEMy`iXfRw!}G1=5;kK{wF45{nTe9onMe z%EvV3DVkEfaF1s`a~z1+3u28}M25nY%^WoZap9-S-4MEp8)AdW4Fe7VafVMWUOnc7 zgb+@MYj(EQfn!coj8JM2U5W;d;9$9mW|w6!@WQlEoJJ(+_wL$TDb~!yv|dOJl&Mq% zy%kNZoQAVH=!$wffxug}zfSdaa$@~aLG@2a@0vzePbM^j8WNr8kNEr){)k4eucc)4 z<0Pu@o=l@yP9}WfRNuuL1PLekCqG&HC+CPh-7!KkMxoOXRDh8bQ*H~eS#zvRlQV_8 zTERSH4}wxHb)=Yh+dD4G^ho&h+^ zDqytjm_?eHsDL~*H7Sh-P0K9PxXKb-tFjEu7%9kQBUSX;<&wGXGRYdb$|@==FU+E} zppi;QImt!(gh8T16BT8%tXit>CAg%uqSOvzsOkt54%c@GOIDwVKM zqEdy6D=mSRFZH}a?i$49(8ETYTdAZY`KlThMp62CFKy&=%2MAB<0`OiZpNPEuo}En zF>}>W>_$|ng<+#+S-A=_YZQtF8D7csC2o-i3C(bUl9%nYveL@TWEZ@ftH*peppjB` zbiJkMuGq+d12TYZSrVF(68m8uz_`#LzM&MrZ7JKhhQ>!$l%(0235iyN^V`b+0RQw! zL_t(Zu5vMmm{BH+g_n@dD%3}Tmi7=4@vu}2Ezs!qiSn=xgOqiuZ~TZ5@`}bba*&(r z@~{Fn(ji6BaM4ciAloE|uqx5MONaqsl&d)nUpykGS*&r4zAV!aZ43w)GR5(lW1R`F z)hrcx5Juc0ElY=Kw$vT042J~WN-2a3r~aWrx!U|R1R=V<8?iXsT#BLqHo!>DGUaP! z3n|431BPRGj@hscPg9-YAi4FHyZ-6Z-w1|XUi0D?Kk0E-9a#)yrS;NR{M7iS$4zazXr<3X8cf?B-?n-G&K;~o7M#c~XJPRd zGf?N6ojv$If}`un@)Dty>q=3WhoRFL)9l9K6<_gY7JB7he)!XO-*;eTwGS=wQ?I$^ zmwxv3QtyD~AF{GlTM8_8b^%B^5JhO96}wt;BG4qR66mgqQ!i9Bd)3dYAg$622C2rg z9U!N|)Y2`m6LfBp`l?o%wo&Oiz~#0}uW}~O`{wO?zI(@hzideEWM#F2qC)8{%pFOB z;koB*`Qqn3p_@{7I4of0vey7v=0p%U=KTjCa)@|y1S!5har|742cB}$oOny3-I8~FIOB~m$c&3CV zgO_0O0v$_vrJ68SEl4QKbR4tUjeSVVKmOBq|K@M}?mc(!YBi=DYuwNqQe{fqG6L;f zmgAxb;+AH$4I8di`7Dno-KF^|_r7;^ILN5L}}353Xiq7G+H=WC#$59{TKnl$9vS{5bN1U=RjT9Or;9 znrc{PoFEZhXsk_;mz?R2RI*Xx0SL zdSE1WM?(Y@m%`^QJ|(oZhzBt+fXBdQwh3&lfNkP50+&KGaKWZy26-B0xu54TG&7gG zFnZXdy*|x>v9U1#<&~ACvdUb~K62#X+urv7Jo{NsZ+LbNB+b|n_X#YBZyx7PD9<$# znI+LIU~z~J5)RWbshkTB3oTB9vWmIc7dxBSr0+@{GSJmhVh!QYi7*PCi@)(C z!%PgW6sp7>NAQ5oo_|)%=wT*L(JWDgskE!g zRtrr~siI_c2sb{0 z&m(x8tMiW3B7Q)OI_BCjLa{49a)Bo+_SzHsX@KyBZo)K$l!5`KazOxEiov=-vg>kV zfXfC(!yWV$y1H(Vk@~Sx<3d6)vtV?EoV^~dYlLYNsjbJXz~{)3;3|$-P}p)DSX3Y~ z30TRFWHfKGE}QwN`QQ(DpmuAlJYv_HJx0&fgvdvsM~>Fp#*ZM0a;Y1MELj}l~!?p1;A_pOk+W)>Ku0UWR4S=yG%ss#i8UTC?pC7%***7BsiwNdWbzN_`o@3do ztE;!&di&SD_Ki3I7fJZ; z``v$zvRYV}8=n|kT$*=WJ4n)lEB*G?^Z(#|A3hRDWos%noWiuy63s7BrP!zfcK1TL zs7k2XiDDvpnEKo+v!05>mIXX zHeT5{9ZKb*?{B^I@}r^tJMa47jtBSkSADfe-}=fIyzLDy*Ap$n3#Z3xIpo ziX=UTfL0Po2`V`(N;qgG

d}+p86s6bCt60aXAiPcdMHb{efLjR(DzEQ@uQhpA+G z9xJKjY0Kg8j-3zQeD}^_tTo!(rD{6Q+6}MWY}t!Tb9)awc+<@{C{Q|*G&a@{mGejt z_3`m+0nRzj@y_u+3~7k^vf1dg+ha+}5$$%%E(+8hHo@{Lsnx1ox+SlP4|Y_Rf188o2x z(qS;{p%uW$%OyoMTt9+#wq)Ii^UQGV#eUFFfdb4z=NS%~+bmUc5U2G(JR2Z27MKKW z7QB>)anK6}EB#*AAJjkxf<8lOvkQl4JA;lu^MmYHxyqIqWYyI4kjjFZpgZoOloffB z7IMrEGf-EszXBdS?=jU|OKm^m%(|8X;18IOTENNU6V*AB^qyNKHx4YvBSA^ms zgMnCIRh~gYWoZJF7a~UhU2r2R5zpfR(R@!JYAbdm%Nc>Mm}XwXE-}ltUS5&kF$G_g7N8@NR&w`8 zsfxp(j(k)afY1cS8hhduD^}c4X=Spj7p7e(Cp#;bPj*I*LRUFimAm?KLXoU+SaB3! zhds)X^Y;N(3l0rRdX-pZSUX!dv!YwO5?S1vE;8%8Rp?ZaTZT?C6#nQUd_zG^}0k=rmF`nvXs@a+D6uMPt0-9@jp&5m0z|Ukm)0|XmB$}5>PM$cWUpq@U zyAXaAIKsJW4p%HGMv{a{10zS#P(1~V8NztwlJu9gh z*t>3?v?Aaj-p`I|ZUn9Utp7e@bPQ$w2vVI{_$WTdaj1d{ZelZ?dV?@q*fq(@f1*ecVkR}i%F!i!L;SsK)7Zaj(y|#|`K};ZIYnDY(gg{de0M_ld z-1(_beP(fC2vC?NWgOE65L2!2;^ST?m#K#iVm5ZC|)jkRRxRRV)qMc7ELIV zR|???*_QD5Q9Ql_`Q+0}z*Z`2=>tDI$fd_UD`hHPxt4FY^=rHEM zr0BP(XEK~XqfaqHrW0-9gv)0}u;?_|0Hg(KF+IDGlPK&aIqYh^=`~gc*(-kRCk`L% zg~Oa%H)v8G4Q5(SODW3!^2&joNAADlz+E@rfAjUXefyuw<^9U)KE1ck8SHQP2O8nN zRq&S<-)P`=2%nGw4?xvw}QA*bqg(#9c8){Woa&{oW;P2 zuu?9om8KPNTsbk4FtrW9J{`F*Y*R6`xXOEeu-IE&9rl9+Ov5L|EFh``;B1s6`yNN) z>U1Qgi_q2KiaYRew3xkSS;6DOV4??M+z&$hWZy0%0{7&ox4APl)50fU;L#3Y4=Y3x z9Z7Uk)z!q37o8EP;L>?!bcy&peb9;C`+mdzwGZm@;93|P9tF{8s!=x@p*nmJq;&| zBV-?(3}O+0@IYB`=V0jZB!LhBFz00|YwBy7x0oCwKMSnRb@bW z$>3;SL4!%`eTplnCoZK!`^_nXIa&Y-Lz|t}R;sZ>Eft;X^fg?O3SG)L=q{yVek`vb zQr@aEXeRhv$|k{Q06z^W*ZBZm%nexYWhSN#$pp%&2E=S-K<5DEa7Zm7H3t^RC~IuS zXc3i&p~P2^DiKBkq|7K&y-YcusLD(}#?CvV)b-NTAg~KVD-GyP_Q!HS0^FlQWD>Y@ zR+DO_l9j>+%EadXbX@f(9K*;Iam9(QM7`IQ3be<5d6~y2tNd1_Yq_dt042JW8*X8E zxg`vb%%~DX$Qen9lPMPkh{BPO>=Y^I5eEE;>v*6P`<)&x#o(cevD89?2FF9Te_8Hg(2*OTW-EDO)>+JhL6x_7?l<4UslB) z+mOj=k^lxm%5d(wBpIf;d)F>Jb?L?DnYuO{gt%x~cAa(cdd)P)`)5Hprz}F=Apz`y z)VPtdZklFZRQ-N%<&~F>jZJ^++u!Q<`x`fIh|&xudRoZ zC7^!_rGWI5>?KkY9$zZkD1vr_8lJH1fj!&~vTEn4QVR zAoXKaQ5r3|IdS`gM?U+FTju(uyN};yfoo%MmxZ}=mD{B0SPyYRrp8OcEp%oBe z+*XVlNYoEvt+`}G{BgpC5glv)C(!yu1de+Enu`|%3mxyEO7qe-oWUSS!mQPF(pdW3 zKY#VkJMV$=H%-?zz<8V?jN}2A`@XMPIwG#SzES*)n@mU$0TxvNl(SR^0?ra#dGb@A z$QAF$CFJ3Vtsn^tn4@UHMIIJqZhK8&f+&%$zWRmB%TYAQ$D8B86)o57FU?Iit)zFj zKetOymma%){FTqW^54Jg8LxT%6Q6O#InTc8yk}o^?sKj>_gPnNf7TPWJ^k@ppZU0L z&$;sampuRJS6qGNp(96;Ex?UDO2aS)XpT$h1U-`#!?g1>m0+5OgZ5-YGf_=)lB8(@ zgGd4@Ff3fj(T<3b*hxyX#B$({NgQ35G?iOH<$zmgJwguQQxqWpWQ1dU6r!a7BEYY; zssYDSJu*-`@t`Q{x~~X7Rg}JvYG6>55daDA{mtnS;)4@ z)`?eXbexJ#!=Jn{3YM2z4@L`%U+O$Ut!xChRl z2p>6uH*ufsTHvnru*5k?S-pf33?g>G1JET`!(`?5?vU4285cS1>L5u%KqVQ*0QYP} zLxNTmOv`l%Uek%wu$1$;#e;@kzT+Lg^?UF5Z{R!#nR@sd=p3>F<$#oPPi^r0DTr-{ ze@5vO#2{K;0hAAY4)y!q_kO@I996Ms4wtzH+d22QwB5&U-(Zvpcpm06XZiq?0~iCH zD;)hpScWOj`7I~_vBLB?A74g`Mfe0?k#lHW-Q+>OhncYN(xF!t?%Z>9HNu+>z2GrjZAH0w^Q?)2g^|EG$r<9T0dNeZPsRBz6;~HC5l9)@KK;5t zMXK-%zL0dd!XJiO*?9#ht`@elzaQ*g>_w83B57&zabIOr0hEPo!w`M>Mnx$d|y0dF(<=`OHji#RHN)lXg>9l8L z3iz>rC}TT;P=uVMxi!iN{?nKMhGDy5ZPqM~0v8_^4^jAvOyc=bn_+$N@VZ3O`dM-B z-ow7cMFm_eA%?YktBe2TZNKC=EI+gc( z1agzeHwu*{QDtd7KHh%aYhOMB4j`dHM2eU$VdRVdXG3TE{G&^vh(}Zhm`4$AxL$3& zv!|}^jzS@c;XD@D=rueIHs)S^n>S2snVr}$IW{vUZ<&;?y8N8izU*Ir!j?xqZ8AIe*d>kNb(&ze>Z)RB}A}l;8~2UCDszY**`aJfCu7AJigeA|Z@~ za1b+3VFcDs2__l&AOds#NP6=9kMe$XxQ6c{3@^j={! zwmtTLy!#`&2a+_tHC6$6p-{k=dF=!Ug29Vs$Q^kRMlEnABt)mIhH=qqcj7SWFE33t z98a#o`9oux^!k^-{Ic^dJZIAR$A7%_10Vhu#oAmM8#HGYDMj&!48oQe#YVBq9u#(< zvQ@$Y5!-cDN;*u#@r@f+gLqhKkA2d!mjd~J|Me$6cipXf4i&3?>1Y1kbAI*>uReIs z4cXlNTV@<9Ua?`U6V@8Q{dk{qtWXHtd4-#K0W7iY;|qnveY2yYhzkmDS>qx$N&(Jv zhYty9S)59~-0fFJbHn+ME#2vF-tpkye(uW;F02-AyO&F;YD~;-@zd(|d+wRpIQ_xD zdEaxM`^3S}NA$L>_xoM;W;3S`Q=99|^Kb+vS!>8OtFVgU>bgGW5FM0Vk;!At##r0y zt!7{P;y3QU|3Rp3&MgO+fP#^DJSVkURT%{4Yb5mED7=<1hB)Pu7**`nP+vY9Lb{M* zHe}YU+q6(D-Cpwi=fB=ECKitbn`X{CwD(BUaW_p*MBPL8-2J&Jz5BD*Jni@X%TN60 zH@)~7kDYEw^U>U$X0+D`_v*u)Qg27Gd{@47N3nQ&x^zc>-)+gl?y5I`WY@j^@&fb? z%oW?SlbkChE6H%|CQSLk%KTJYm6OG6I3M-qs<_)Q<#xj`wTe4?;aP$kmZ0#({0F+q zkHe%YI6mQ6s%d~@n69iR&0eTaw`G5iD=$8BIaL4A`}{TTeiOxdNZxs1P$u zp@dVOH8oS!quu2}=(Nmm9wTt7-ufGE}E0UQbs+LAO~^xi`L=HT&#rMa<=H@|T3 z!i%mALgxeAEFjJBpU;t`WN`a|=|&#aq12TO8}d zHBPI7&dFqx3t`v%T+uVd%wagG7W^DnRD(y>z~`bn+%mZ>2cI!Bl(2$l#KQoivcdHT zidD!^d?v&lCnE`a25F;u)wruDhZV$hd$HT7s7kHK)w~33K$dA#aCM)U=!5{jRgWAn z847$|EdOI73stO|5EIEzRlvNdE_3#}q%DE3>5CBL!hLoE%HrZ2691fM zJu^v@J^S|DaOZqcM$dZLD|SD)%X2+KNrEcacI-pS+5J%J_!6o@^d%{3UWsjbX&Gs% z(VkfKE2S}GwzhrfAHMkKfAt-3Ll{Uue$5Nt`tM&k*mrj`T{&;sJ-p-AnTbxEK{@G( z3{eO<$n&=}j;Llu5dhslETi3~am7xmw1NnvNEV~hg5k5O$|NEs1qM}C7Tq8SCBvTF zm>OfZJTUjgZ{InTT6Slf+L-CbrP*i=<8arWU9Gn97w`N17r*!!FumGsXMSNm2#2#X z(@`A36ciPNVmzTX`Qud8dqVp^fpGnJ4ymiV9s#JuO??Fp?8p^LVZbxXz^?!Fsn6ei z*N(Q=woDf|7VxmhIZH%03?KzWU|MEI#l?kIcpd!7KXn>~1lJHxo|vYQWGS%aQ=fhn zZ2;asGZJhhn6XHcVOb@*ZXP@`|GvNc+i!g1PRpFQ`25Qc?KyPG`P-Hc@4e^FZ=FBg ze94uUJ^$*99)JF9Lk^YCcp8U#)ztii|38(c(-uRP8T) z<9m|b&K0qx6?hdnf@ZBM*RsRGvJ@=6?!`}=ZOM7Ml7%Z$61QBV>Dd(*&cGamRg8Rz zo=(x~k#>{=N*Np}3?OnWb3_gn{fg{)&$%v_4Zju?U>^ZGMEQ)W1YuT_7z%)^FZ1H4 ztXYMW1u9}Dx9}Ew0Ug@|3vs3*Ws97b_*j{7;x~Xjl%Z5uo$;k!Z{Oh~A={Wj zV&^c=1jcvCS9lGKAUfNrc?dg2{o@YpiIIw;&(3~uS^b*~DU=YxsxVaPYR!gA!e@sU zI8fAb4lT?DpGqz%aVbY>3DXn~#wf1yC?{1HNEflt3Plu9Mnwr!pZ2;-hYs(5+b{p8 zkNoX>CnsCoUUzn8TxW~nlWYON207;nA`H02-=`qaYFOG#od}A*90AC5O-EylqVzA{ z_d(n86d-I!0Y!C8v-EqGls)0XbCf)UodJ-EoFPxh6#ItYgeAa2mN~s9*Ej{_c$X?= zrt0^(iaust%nTl*{u&D&Frpwe(Kse-XbcOT$ zMYvEjo{0b`t(KgKqrv7B>`C~hL#Os^^S8o2!<>u{Wu|IQNUc^#3#(l(iBH7_yvZAE4M7jR25~nK^1mDC2qr;I*%L z8C6Kl+H7-z)A670P`B{^+0fZO|0oknVU#4~PJ~23$UNd%2pO~yw8w&-nEUF^yyiIb&8$;RB* zpPTP#I^H`qL6krSiFvV5z)a!n1~jM9RK=6Ulde;JrfG^-Kye&LQ3QW#YG(hQgAkCj zlN;{1d9adJC8V$GK50LW7Df5-D zd>MpqZ{=u1O&Us4#gT-TtheSued>~@|Ni?wGf*c3rIW}GM1YVAxmhM=!7b6maUHc? z4qsuP0W^(eao9J8jbV?EHT=QK>dKLhr{%rFMfdPipYWJxJ>}|+lja9M`kgob+<&{^ zisuj2cBpuXigtxm=c*K$m9JNU%#D6CNscRJ{ltI@)_~!4cJG^;*>>sp%mwfMi;sTl zAHNC%Z+Ss_{mY*7?_d19U~Zq54BMu(I(J~AGd2vuFss5s&$zvpfo27vZI*#vhR`K2 z#GnPrLJxy97)E&l&1nE+Y1DVP3pkbJVs{9|fappFX=1ddHk^BzpSQ02_Jh}dckjZ` z@$)bC@LGCF?YoO=tutX;K3uV(+ERuC1YC-2d3D8LDM(IH8C4Ryj2sT zT8~Zep-_ilbr3PII0@@)DS>9>(2SZSk!a1*9k<{4NB{GGxpqTW%$+-SHEr-?K4zO+ z#@cP8xaOHpe9UxP>o2AYhZ{P;TS6PYEG)$5(ri;X`K(Y$9g1)2~15ia6kkrGY>)GP}IuhVWHURvr7eH9-n%l6n97y$Ci&><;Q z7&M%(%_>H_M+Kin9V6NQM*lh_kTGF0>TaEAt#S}m0+WDeD(FstMKoGAv{5~>rq`&h zFUmalb$}dCSBF(Ft9TPvR4^%-iAym7l8FE6BV;QL{^}sD#a{Hg=^$1 zhzy7s`rxdBijs#j7+-3C=<2HVBO^0)Uh}dzog~B zb!u=>kB}jptdE$BM6U{s2Ma)L@|1l%28Ubmdz2$!Z1(_*lQdIr{%!krrncGA;F z;zvHSaO^sK4rRa&B_85BPtjLQZemC&>(PLiGnLB}=7&}$9Bn88Pz1#1xCByIGb()~ zxb_(>E{dP^a7X=Vku_lzkiB8YF{z5mVHxiKMjIfNP2iHalF|~=8w{m`pL9;NHmD9c z1TQ4%sHq8{DmeMfX^l}wbZWErhoI9+b2Pcy)l{bgH2QrK)$QtJ8r?o)Vy_mB9)1xG zz6N24rrC6%F&nOZAD(ciPvnzfFrtQyAA@#1s+CJfZd$)Bf8*Cz;VM=!E;&JaAB=@rtZk4 zcF#TceeZ@_q9MCu(xiwYysqIBa1^$pWX_6g+eUT};4sz5A&cdBXT0CR@7!Ybfzo`=x zayFiT{+YrV`l(7k%2QmIO+CuvuHV%R+4HOY%He7trmtwP#0hlzMGVMwJ(Ux1J(X!z|zol`~*K{;P2{Fs2yRaIbd+`%Xt@HPv z{PM>>_MHQJB!5+U-3y=jbFX^YSl;)tVN=eF*oW00mkLbtRBNV6BbS`A(qKUV`WyK` z&x3~5lu9@BrO-#&02SJ(dVn6F;iAm)B7yWUY^BojOpc%(GF^#OGg4f=x$VJ2`4_*o zd#>wA=DBA3{9GL?RTw7D;iX-gJNVE?-}!{AI_#q5%ZnEI3ve9UOt4`hYAl}&M zj=8PeGP203M;S z1L_x2nPdf5aYDh+EZ`&osA!lInrUe~`UaW?s$B)t6BYtD9;KZ?PUG|J;YFOBEK~+* z%4DprF0L#uuB;4vKhBGZ4I7RwFD)#uOwMjdvUGX1J2g2O1tBCL&*_YLk~)|n&&o6t zCeU%UNlp_|8dP5g)we+P-O<$(UjfxWPo~k+C(-EkNi@2B5{+)3M91G9B}Gtu<%g#_ z{*!5R`}@+FBtu~L5!LDmg%93Cp#F(Sz=t511PBAm4#LQfW5s}hXmX>fEaU#@ND}a= zNH3xSzY(b*&NLGz##XS(O_-mYrURZU4M=@xABYrgc~U^S^L$mVQs>-~yfV-nl1v?j zMb}T4dXYF)9T)YqfWC#E(37kj`a(PNe4N-1`heNp?(&hN2cGogD?j)7e|q+Fo?+Xv zI3TCr76vcI2ru9_B{2W)>LRhh20T>EkZdJp(2;-SUhYq#J z#v$|KTuLM>Rh`{)y~^%nnyoucv@hm78B|f%DEyY0HPlqge7WR)FA~=|(}dxi4~|q< zVr~zcnkHrkaCSOys#I8p8v6qPY(uFGpw%=St}YmI0hk*0y8s@r2a?Fg1C^BP8cZ}s zc)a66S2QEeu7X_2A=4!Y7~vx&1kyCzI0gV?on6e7A}B9TScP-}ytj45)}cJnphJ$O zqc{Qm6`l}WX^1P0V&p61j+sSal(~^-R#BLFZWkQJKwd^uTZC8=AA-G5Cr<*z;&*{v z_-PuO+!8wHgyPLp<7Syb3tMW1Gz5N6wJw5JSTbSC4ju!3ZKn)!v}N(zE`E=LKt_$p;LzT4=hMSFJ3_in!@uQc0o zdn>C@13@qx40_sFO9fA$1Szk@q#)6DYyO0ApO~0n3tc1LTN6rk7#C|jUUwYVKrW|& z{D{$61Im9z0+aweXQ4xt**rP7%(BD)CqvZboS6q%hMK5lVwQ8%8>P?2QWje_ZEyj0 zz@0F|MB{-9w>TM|<~U7e@XdNx2i-Bj`tSsXWG#W4!T&ImQNxm^OXCwj9vQ$8xCC_u zAHoYXdP~&qC?p68C?If|OQaKVso^lW@7@Q#@cA!iA*vrn1iOmCcnP9Qa}K5cfK*pB z{5pVSC?fHcr)WG`E`hsV|GHQF$?yMf^ue#xq9rd+5WCw<#LZIimmnj~ke3C0X zX{~}R&Mh_7l_Cl9I8?F}Dc0HdQICn!UdmvXxeb_bao^{5L#k;2S*t-tdGgHxI+rwUrykbJuz;96!7x>f{Hf z^>{`f(p5c)GjYZ~ssVx>v8#?{EzN~@-+u4G{RcJGaP6iz%{^&0o5y0{paH7xSehY) zPE0?a0nc-?6m4TRM_hwhej<0D5#>2GR-VK5vK(vdmwx$IXJ@u#X+G9&9@@8O`{voU zE&Gdyo^kPGUjD2nSN&x>3#}qCi`0a2VlNt01r-EO(UMG9@l|CN9OrQg#Y3P{5!On= z6z)SUW+_1SvZIS?hA$|3nb}g@G@^#G+EG@nIH&RI=Ux6QKlhs7`sJUy;-bwBy#%+A zsaaY05Rg5)(?mA{5B{UpUX$YppjiQa;g48%&!aIR!m^4-pT>E<)a~_Q5WutqoPx;E zbQC~JOHG2Gl_efyZvm8+4pFD$T@Znq2mk}s@$;g%QeQuT#HG<)QLSjC+$Kl|Q)t}O zNa44FEa?aSfg^MK56un3bkH9{8_rBl*@oG4J-m(VQ9>SPkwSmgfion${-aFm`T7x| zGf58^tftX#@zyC{#6_?TZBZ39uA~`Pq;PCg)e#bV1&yfgMrBK`D#x@e!+@Ry=!cSp z11Et8(ioN~;!_|ubj>t$hX+k4Mi`}GTn0($CqeI2u;R z)a3a1#8`J_vEf>qHcZXW9qNoV{`+tI>U-Y(XN{(9JCMChIb<)MM;?(jk(Eb)U<4mL zcn~TZVMr>+akg#S76gH&a|-y_)TUk}f8*x6ecA17zx0ls`&WihrJ3WC6XRoJ8c=`G z&!Zs(j-#r!qF6GgcyqhVqEL|GJXZk#*TS{W)4*ts(@r9W0g{$0%g{X6YBfCs3>8gW zwrs<3EY0BHTO5bn!>8hC!@ARjv*fIHrZNgJEN6zCimhx?ou}q=_KjLZQW08uX{xze z##QR)VNXhYM=d8j3u>L6k2>HkU=fq2NkHcsO|)7>X0nwjRw~&%oeLRB5FuR^D@CLi zv6k~EJK4FrPNeaRAy7T;LY=~pFeKSg6jzZvsq)IQQB|I#IFjV4x~G|@rrSDTxe2M~ zulD3DmUFnU_C*XLo+4E87#})zB@eYcwe!->khaRokW`qSiq1vH@|fd!mT7U$E=8W9 z!jjY)E=n#y%)kzi;kv{0*XVhAUL@XklEIB5A6-gAErVe8W1OdSrufWB`dF+zJ8$jE@C8&c7&O6_A zOg21fFq-VJ=Qv0un&L568=7?dXzfI?thv$E69JGA#PDlPED#cOv$SQ)CVVb~Ab^(T z;i)tL6zDW8%ZCM z3w*=pMYQ=lprXothFb)8vy|D?e zIgv=}d_Pn>vx}*I^RBrY?mZk-?TL+-+s!SyJ+*Pm`IhS*Jh-na!h7zyQI!X-ma0++ zgXkD9J;WW4{?|$H-w#hg7(wH!3e69wH(RTLM5K_lwQY9FWfq@dD0oI%muyWvdGxIg@#*cvdsPa zDAc)FAB~JLK0Frz5Z6n%PXDvcAs0tG@0z=eX5wj)UNJ&fW!D`MfCN>1sJJ*UlASSGrE>evv>Jx_AdCk=>PJP86bUdeJDJt7$w}Sfa;dz^d2%?1UDMF- z9ooO!^Ym_a{+4flz1gt-`mg`uH-F=;We#BlL0c!8=|_@O6%C$EY;^U9BNR}p)k^ae zr~pd2+wH;(h{Djdy*N&Q*fpoKXVL%sckkFaADnm9Gt1_5KUWSe^bRjB;l7wZ>%i2v zpi2tP5x!e$@V!c}uQ<61-_FD`(o}}8^L$`VqbXqpWknE?*p-*2Q4|bet3y!F(X#zvYDJmx^Z9mbvzP1vmtG?Qgv>=tjqzqCeksR5! zWm5%?mkV1;PIiurFQ#?i*v~5SO0`j#ZfSUh?v}cPS}1gxI=YQlrGo3ahNV zN_L@EVk9pTuV+RXYMGBjniWckUvXL5v0cTM6mz0i6?j_8%qp=hM^+VDlFxvgXl2;4 zm3G6_y!ze)N56jij!-fUuLIM@bKP**t8y4%Ff>)S0kIDt1EoU| zEL!}T@^dX59&LJLTGyjNOc~mZfa$eXQ-K_l$PmMwAdX1l5z$pZp_V7O2!U3g&$V&m zEVN_+dzzcuLhTHbJVgRKp|np zJ0pW(JpjM1UBCp+3xc%(>8vQNMjJMOCYv|ibn7iQ-!XT%kNd9EBJ)U!Wxt13GV zWr}gUk&`%7C+p^4+m2TKuk=o6d{QS@U*}MN(*V28vZ{IZI#ldpB?M-al z+Lw)$!ujRje~&eLerxN+2bRLhYKzrBI!!B%d=f|2Qyw|KhA)XR9ARkzbHG&4B7m=o z1A?}c>0x)Pr$74%m%aQcmj?ss%h%ubj^F&F*6ant#9TVuldN`gYBTWDAn?;PQw^5~ zbW07(-QYB~eDa^Ze(m))@7o(3nv>q}!Yg0QGk8ATnh7dsuUt%V;I6443+ zPYlm0St{$AZ5m2yjO(-2;KF4ujC&2u}^J24q!ORSdoQU%jq-kKG zT(CEcx-2i!cDqR>c6LNW%bf%n)IRx%&rMHmkAf0LLG1V2p4zn19d~{GXaD^xtZbk~ zT{RiVQcx+rr1I>x5&;+h3T%K_R=9CL_n%NwiOWSInYIDYNCmK45w)Y0iGF%1FH4|t ziVK=BiiJvs(QbO0q^6#SEG5x!rO3k@Z@giC;V6p8aXd61ur{7XfHn&l2277OpBIoa z;^b8d7JLA$9_UF-1Og=IBphe}SQ{CqidK?g<&`pw($(Q`r9bF~KurZi8}8zYNN_Upo5r~1mV>yUoX zZ<>ZC5G8Sv@>B;^(E;p_sXbv_aPo@SCkl@No{C9llptUg*o|QM$}kE|OC-h5rD2?P zgLKsg=nBI;i?T97`-jB<8yFwe6lk^O)#W6MZATw#d8RGpnV-eoDj$Z!<=F3?w{6ph z{`PO~xb=p|J?5gN`Tq2jiv$T913q|P)l^gTD_(JM|6XL1 zhh1c;CMn&XUzy(crVGDw_nwb_{u{9~lUS3nJ)Svj$r&&0u}pJ=Qt!uw9~M!VCt;Dq zWfoU?CKuuiC~lBJr3dk@*I~}0FLg^|v3`S#D zCCl+z zhXStY2wW*31jV2Yz9k!)YM7Q`d#2Mc+_vtH8Qz%TI*Mg$whlw7P*aqT=ID0EY>ab? zW0s`_&n|?c@LY2gStUQk9S&+IQkdj24A>-B;R7_`N|s6uuha56ZTL>p)-A}pY#4^! zKCC^{gze@+&1r_k4RN`zv4IjpdEx6|cQL(!%Rb{QjpLAKSI2RbMyWVc5vfA*oQAhN z9PHe;@91jJYIRz(n}&IH$AkO7di#$1=XWk{`4n;gHd;o z>l&I5@#@1g_L|U!MxjTa&UzOhByaThQ6UI5N;b{_!-rUQP($pmf@Ztx{{6jP=r&t0 zrdf%c`j5wPU(rnqbw*_=SFpe)#~W8Y{ycWh=ZQgm4YkcRP@IXy9W-*sCY^xB@KO4-WlLaW*2<~OQ(>m9d0?b*+jH2ui@ zvTY$r1e$axV#qwsFf8C`NidAenooD6E^?e ze|_81-h1<?Z zUEds^a`x@{Hp(LPhqDt?et+0#OiIuJEbvE*IH)~}p0<_<&^HY`j%XD%C=Fc$%H+NSXhm!hS(@2*ED1l00Yn$ zsJ|NcgU3JqaWk{iI+s}2$v6{&GKuk_Jgs!i_}$<6(<0Xf19nB1MLIj-_Kxn_+%ezs z`j-~{qw-*>W662ZFXf064dlFpaVHm*N{giwww@#>K-#LDYIF&=gOjve^-^Q{Yq#7J zfD5>qCg$=MfEvX~GOl#Z@p+L;vuF)kt$XTY4dE9U8i{ za@mm%Yk;E(C`5(J=YV+>;Z#%x+Hx(y@m~}~-G|S@f)LYmlhcp5O%Sy_R4AT?CI_2C zN>DZkK|;Al2*wTqS`dPV2*)YMaD%`M60&yex)lL_j1Di?VFnR^Fh!+7JfW&MQIZ>q z8nULrRGMGz4TBgevPg=l@$qvuZK}e^Gc-9%xJXfakyaX;63<#eTdF^FhIAH>eqXBb z?juF(u|2ZU{y-$!)Jf?%K4EoO_}mSu(DVZ<%ei61+)hM83*RNfxAez^#(G)hvu?$W8Ee#m#CF4H8wg#=HVhIqYTGP%6SA^Yd(&=fU~so%4(T z@hxw8^M82y)1KI9sFo!gx`D*N;vgp@DU1hsV5i@R$IpV8A(AL75fXpVW}uiL3N2@8 zx%;eVKKE0f`fPXApPrnFeBZGx;AOO0uiZ%{_2AsX-S_X>xa~Zr)oD)5l&ZPnM}xRh z-LdhR%~>KVx+QCNrJIswOTw=-L(v`hxIVhV9eW)~w|jmPb8}C~BWob*ckW&2l}@T! zkOZbGUw*-6HIJ$SU^5*;dKtv4P$`T@Gx0haYW)?&rWlrDy8Jqnr(wgF3@25LO4WfO zco3Fp7p9k+?aHv-Mq5n4k_zZqcTDYUy!U87(p!FM7hE8mS#o*dmd%j<8EP|3RNE^w zGuQ0gFf+sAXYx>f2{g=FY3X>0}zx1aFv%mSvP zVMda1&z?hmVIZ9_z#exR{dK{cEti-Y+%S1XQjucs8KMPBxtEsmiIIzOq+jWmgthR0#H*_Az1yq)C7?!it zN)^fWO5G`0wvMPxo3pwMCsTQPSf%nnvkH+L%vxbOVP#Zy+nwIr-gvIuoIJ1++;Hdp z*WGqsS8EmSc$l%DF-kdbJ2gFC6yg3ocmL+wf9)}sT>=dWl|%SP!xrrlV!i}og>v0- z-`;P1=X<8<65_Jm3XTQSL+YYQ)vSz$i4fF9o=i_qy!x6K<1$*RxP=Eq`{g^lj1d2y z4gKgD0LU(MERnFlBJ9Sf*KW%P=T_$zyC|=+q|`u}0LDUKz$7&+Gls=#Kw&}Z^e;Jo z`vu#kVVCN1A&?3M3yTe<{xH+9)}%&FVg-V@hDeUPg*5V1U5HrxpbBRlD?DRs*Mo?u{=Y&AQx8*aJh?#8%v)2;VibisL-oPQCZYJXuVQ0>Gk zWr1+*KSIRTGKvjc#KIOI05|a@FU#~ehsu|}`<=V*y7Rs?&RU)q20m)saU4xEf*?TH zbsf?1R%2A*2nj@WB0fTXe1!(X=$9}6$`YzU$zg6)r5_HS_Oz$9I}M$uCe+C|0}`9p zaj#f#hN`{i-5;4d()GNyWuUHnN6Yp;c=K=mKR=VM9^5+SMDvH+t{!J0>WRCyNg79+ zh^?7cwjL4UP!ySv<2+(mO3eWD&8e^5d~bw$RiSY*KyF%mY9q<XPTcf)Inu9yy6&2u1dQ zu$oxWs26;hVI~3}=l8|u>YxxhDl9Xdc12c#)!FNi6~!=&R{CL9NV=jU;+e_mG0%wy zeHUeu$0}Gt^b`xz9aY7(Ok6lo$9f_$v!|ldvBK$|M^vNGiFCT_KNzjY_Q*#20})%( z$>}*wfb|TOc3@>C)Abk}sOmICajT>t7E4nFCvY23nxkA{#+9XDnOv1+lYE0pM0{i> z{6jT>MQOyd!L#9WMI@oW1lR;=ALTi_Hq!!9!%wp?FQTGM$PZdcs~4CC4N)Omkl7I@ zc&6}!o@vUqBZvOV(ZhRGC3)_1p8E4|{;8k&>7RV!Rab7>IAfSvzt;oqcWeWYNNkad zCd3F33sho}bEppOYn1;pqSG1x01SROL_0u%d!9ZqzU8BT_wiPv-L!1j01dC98P=hN zMa{Guo$1{N4&Qp`Ju7|Ra+_n*8`={a6sI}Nq=gk<(Tz+}6Ge?BHI})_CdVHorI)0B zUin2?`$56eC4&;^u?fgt>3X6YL)p4(|NKgB28D)3r&amo=WjLD(lP*o z_>~H!8B`idW01>!jt7(=<6XZ{2Bl(j#xqj`!YvFdl#M%f9bC>-0R1peFSzhr%P4Kf z;t6%gsp=M%(~Xm$RDu$5>LZ6RGm9_-^_7sh)_jzJZuzP@RFr|L^fYBCDOsT+qo&c! zb-QmFcN{#lToA-~x@#%g<}I77Mx)YrBm!hO5KLt?6?beUltUDeWXG}R{S5$wM5m2lWi)$){;x9t*r!D~f=iGr zVC1w?hC#9a(7en8Xcb)tdW;OQ-)fqsx@`lo>4sk9S)PPXzUqpZjs@^#L9C#dzz`HI zO2H#|fg9?wKBYU6@Gis|FQdqhyUS!&d7eUSiJ$aQqtNMjYVO~6xIj&-_*`b1W{Izp zSZ<xQXnTzmya(F`3Hv)gdZ%sH}CwHuiZLu zr}W7!lIAS-pbYfY{>r`s_ia08{JS@NuH<3K2@rScXYJNRuvi&l9Gj(nN_xn3avD|e z=;xUc8EW*#x&gr7z8`teYKk03()Vt-^Ol?M4E%I*Vv zJIhPy2jBm3S+X441G+Gj?9jfuue^BkW6zx(H}YiZ=#*{7ew@nCZB9|yMdehIQ&kpp znOvDlX(<&HsRo2^jQXr}9w9DCnPR8L#5ZofCxrTEw`R)2re#Yp+HvMU<40*f&KG~? zr(aSQeM{4`O1Ilv{`tC_?%A`fxU+@U*4<7@JD0m_089b48&#zjz({E3C?@u=W?5Eb z9Kc6$aoA7H7eZz7E<4egTZ%H61h~O2TH>_PUDSk(TZje~l8OJKPm<%_oXke;A=9*F zeh8iky#(|}b<{eb<{J)8AON1=Uy3hWBqT)2V04sd3`n7v)DgyE4_0-lXqs7}KrL%# zd{QaObkMgISueREIOk{KT`+_gOhdhDjO-Nk`)>xo4@#`klhbpW0P4Ip0K^CYPtY(R zW;uc>P68I2Ig%H|2mn+c`$53Ds4@UOn#59NXqsif3IH=wbf6l*epEsLCKc?{EUP%n zBubMY%fuGJWmNE-$fzuN7z#K6jHJQ7KqEtr75?cNDp@Z7^O6OBj655q-oUn4;zkGIU7;dzAk( zqSG1xNGOl#tYp`*mzI*NuDW2~-jzf94_H!_gn{L_vSuyy{9Mu-<5S+)xN11d{lTqw z-uvBK?s#zD5#Zg*XvmJIdroOvh2vD7Cp8*!v!%4!@TEpmZI7w#wl+4Vjdk=+2fp1J zhjoUA6ITV$WT<)fA6*U9R;GJ~;Z#L(-o}Y49cmgkwoYWVG8=Yhlhl|}y-CHJlpAyi zz)9{noi|ar z+;JpI8`FWL8Ln;Gumq*4nQ=~csftWjwaz%Se%@^5tya-)B38*}LVwBXX*&Z5lzf1#&Ez?Xa@17$IJ=u;;Q}w(J+h*f zw3>z6h+EBj78e%FBCM1$t_H(!X6reb>hx1-HDZ6?u+Uawxd-*q+>lyhnLVCcW0E~q z!FR?=yOY@+k*{%NnNz>aR&2B)qq%D_xb?xgfBDW`*WGgey+?;jxix@URXGFLU0G@B zHu!a{*+Mhiy=zA$C%^XJ{_}I6`}DL3b)Fyt9voqI0F#F`0P035eEej)fAkChZs#!y zo=B&W&mi^*olK__=x0fy2Y^}Q>CIvZ6WWH7OJ-PUdk=R%{rRutvaP6&VLGd;y=Jos zan$pNW1WdX6u7RN#lys3ealb2c5|CY$l9VeqKFgKGNF>wIMcZ&&zY7IC-KS|B~isK z((4)#CC;vxIQDHz?666V%>7I(!y0y_zxm)N1_R$ROwqUMCLw1VvwIzHv8Fh2h!u>w zQ!3YT!!XQJ2vyGgg&Bhs>pH?!4w;U)B|x@ltkZhZlb-mbCtt>C0wMu|*6RX+QKpbu z00X47eoE9!{g`-wnIWP52LTsLn6THy+6g2ok))%k)J)@k zx{0bU2KmP63CCZmmXFLBlBG)htc>l}lF@3M`&w28j|HErm zd-td5KvTSliF4-XqQCs>PkiRu`=QDvXC~kNo4>B*Jw00NEgG+x$L=yCzXW#St=@Bx7_xjMZZwT z#%3;B_SNs)bpMW>N4v6pP&1^?L>Q!T9M8_q?%%g_+d0$U`u0D<9JEcT%(+%TH@u`< znlAg#x$NMS>~^dY*ND7|x;nlcJv^gAkAh24)b#616eUWpH|UJD^Gy2IH*de=_ItT& znXJctU>mY)TWDJYpZ#Inle8=cgMs6^HSVWl&A|X*WZa>W(1B=E6;iA=1~|hl3LMXl z(zuk0<=*md{r3NG9Fea&BWFOsC$Is!gZ@Nw=9ce0@MAB1<5Qpd-1~R#1Sfh%oOJg- z?{Qn7{n%}dsK43sdIyfe3iXL;YWc@c(X1Dp1t@D+D+*H$lnb~lnkxaf99ZMs_JzOk z7aw1en~4E|%xSf<;%Me{f9N#YEx-F<8r*i{*Z!w8yf;}qB&FK;rmNoe-`;(sYj-2h z&&Q^tzs9NgjuJ9w=oFO{!Xks#~RI7ZMMh5hrpHesM4e zdO(vYF2u5FjzX{t6>ta<=RB1zPbF?q2S}&t8g9u3xBSrz!!QjzD69>>3IjkDS!OxZ zTtayQ`$TXXN~GXUTnLQV3G8aQmaJ-7k;C|d>-xjF<(0TH0SNOTnrV++ymgzFre)Bb zY*<;;V;nGOXu|;d!`@-cVx{IO>K92Gg-#?C(LG|^7^{8^Haw`W863Uh~I#kUBHMSXI*z^SfKf)%Fu?VUSQ&+g?gb8R(~Ohx0I zbfw7H>B0nn*~}a*K#5dt#;z&QhNV`Owko$hukG1Y#+~svv74qtA!gBWm&CY8#1ddJ z2^$yD$hZZY!oB!aFr8MZ2G^*7^-+UWW=J_S74sqZ5`aE0(yC0lD+?E#zwL$3d-@Ar z@Qe%3-D2p9p-C{dtI9SSoiBgk%Rv-f^V(P9#cmJkyCLSLF$Pi97IKViFzYqKIa3lV z3GfmucE7kZgg@t{mYMJ{NH@HqL@P%1V_Qx`{X08qgGQlRLO?wUB3AqbkJr8q?b+!09- zj;)EW-gbYtY9^8a1T#3g{~4EVmWM~jEO1)Nol~7=m>|b6&yJC(PpRH#xo*w)Tl>f+ zSfG+JxukWL!kDSFL^Rd5X{Uo#EeX)@Q)upO7u~db(VE;?RM1nZo<(u*=p|dHqu!EU zrM9JadjlGbDwm7MiY5#%M9sr~*{87nMbVRrqOJ1?OH%}d4^ESFyQ#!UU{uw___WvA z@Rje}zMN~B0+^Iva^9xlk^9?vrKAaz(J+x6yPXcgx?c&Ljt|3M%i5?6M0k{CaCj<1 z-GE7eFe(5JG&k_Moq~;$W~<|D+kC@=_XogXcB5Tcl^>Qx+H_6SV3`Cqq^eY;X$nD_ z@r(vEf10ph22Ck7eoIW)XWo$%n5FF25gRcVis@w%&n%M+Pd3~VGLt6&l$vSu2ffWx zvnxjrcRX7vqr30B>B&!e!k54DFQ%)-d8lh9GMFT}sTmxSQ}UdLW;%HxeezS+|K1<| zX`?X-D>3JSK{1X>^adu*Aa@1#b6mO1;v^b8_OTa!?C;(U%>xXAoD1p1WwL1I@VO)n zdigZ+=X7#OX45}A!dH()w;rf#=!YlKt3`D#y8rnt)Kf0&Q4U{z=es`KnB25F$lT_5 zm~yxBDvKbd0AE&DS7)XtvUm`#%>Vi?z0uQngq>QUQJ|#QR7##(A$qYyv}a89!$=h+ z^>Kvj4~d5YH&3K5U;C}yyZ82%`!h3}x~l`vX@QNzV1{@_<^(wrpxjhsROYdmMQO4G zz@vT?LgUkfNTVPKrl%(_xahp6JmX5lV1SoU-IWwYA>fx~8)Cx*zKf{QOyP@hUNDIG zmbgVv=o|h$x!Um-&(x6m{a~`~YEn5^U1^TBQ5zroyN~~uU;WLE8_!)@8ct7b@%s_P zwV|1E@90(2)f->@^d`8w1a#;X@xV0{%ius5@&*kn(4#8Q10B>3bH@X`A<@u;p>!0n zjM#}~tG!`+AnWh`@ZUXf@W8%7@h5-q)~7ywCh!*>ZNkxJe&fIV(cWG2i^J&BnT@~x zYrmxAJvmv_@~&0(%rex<7%)Ch$126)^dnVlM#eZ);8Te$ywzwy&AyRapDNxuc16(eRL=}sYO091+l>rdCRh>gAiTbg~v z>~=Q3{R5v^)@CB533wsoY?^b|yM|?&RWz@qJOAZl|8>Hii&yrKjcvT^!Q$=z^OGyl zI2fQ*4VdVbDeK$-h200hIo#9@q8t$3w0p~oO1${1zwndWrke9d_T6;b?bm+u#*G(U zImoT3a!Uy)qNtL@Rb|gpqhz&`5=Av(NW(f5n;1iRYGqz>!V+y3WJ8!4LfgY|!zI`i zuv{$NuuY45_Gwxc$3*y?1%=#GxbT%q0>;m|G_m4jTf#w^Q$8fwQ;j4_3kX5WN>ptn z3YVk6FY{2=3`Mo0?3`x%(hVEbFbMn0&6XWkiO3*Rp_Zz~3BqIpPIg_Z-&**ePPKf0 zI@`BSuV3ocaU5hn1HU!^YQMg6Is<@v<)01xV5M>LcWeJ4=|p>}GzU=f#{2J$HDv&U zv(ZFj2Q1QMU>NWY9)<|#`HTw00JI)3R>4I!Ff5@YT+{F@)7I58%Q^3!2Yra;oxmIg zY)~FC!CtqjO44wT_KsWceqi5$`ExJ4QVCLOu)~SN`k5ZH-;QL9n0e=>-(cyz`cy{cksY z?@m8RCMIW+yh@V-h%Ha!R?~$FE7CwJ6IICpjA<(ZPDVTzMZ|}=>KOTxw$d>oWX2!D z4o-d*pQa6Al&T3Qah(K5Z44e)g~oae>WIB6D9zy4G1pN658x-FTE9i&R6YlH1(u+# zjt?P&ynuTUBf=bl(FgId@{af`kZDrSVmODIq7uw0MKvhG+=ELf2+l#uvT zoolf-AdKV~8bekM+tCe^BV~kERCgxKr(`?|^CqMPI-+sp*!2pmIGo`sMG7lAtSh?{u;-)FEZU9_<`9&Z7+dqF~ z4S+{%3Q)}-KRl^*E#o6BFqA$Lj#j}%0Vuymh<-)wk9iJWiT53}e^MooJ_dRx}#z zh51F#ZB{U}>LQ{+i`S7b5ebKL#Pwsu>nKmO4NcJuV3@p$f;bpP-Cl2Xb!BpT(rcJu zkPiJpv(+>VJq!a?gV~BVnG(S`bu4vkXfp^Q!1AoGoBE=*&Cnr!q>mzr41!Al2t8THS&R0K)4`hT2b1v0?0*u z&LV);p(&3dRse$0fRn7sD#$cbob?FlqiUJea$26Pr%4b7tFYiy6M)A!yfU0Q=d$I* z{PK72zW&Dhmou}q>Ac+bx>2OtdKmS~GH#7I-~9IVo}D}>Ex9YkY>st&R|Mz$wkifR|q=@>%A>Pq-2k+GH>8kYAuio*!8*Tyu>~uPoWtL?z z?DsXD^S(xr97{v()(N-igdP)*Gbd=9!V;iQQzOk&uEjSsKlG-ea? zA0d9U-Xd2VRr&5WzIF4>x0sF_Q+G&4RV3XbFL=WF)4&JG&`{(Y0Fv!B4D9v2Z_gru6_Inm@yzNL-j#X+Ci7BhZP`I^+B3dmN3zlULcH=a8>F~jwFMj3~uYCR! zw@(|7Id6LVwwWhfdHHv5y0sgGgD6uK%>!&#xglLNSZTI(!;n!6MP3Ys!C)9xm1

S2}M-@(|Q642at$wN2<>y)WA~uG_xUBelN}t-NmYI(-)t@-YU(0me5Rn*# zAW}Ex7UzKAQeZgK0Aqk5(c)!p*2DfkUd0fCa zEmE+SSmq0UivUD46EH`!9nF9iRTA(C4+Td{tqfCZdUnG#bs5Ni5cF1>w%J=ebo9{f zbhvcRZ2M);fBIX0`gL!9(`&cQwzf<*Z9|dLFiR6)8WV=A;U3sK_wi5s%dR~~Ve0GF z*gt*dx>vpWg}RB%Wu{&P{<6kJU*ky(C`mA*LZqA^n$Dc?R_#W#RIvyylxq=+!ReU6it)41lE!?uQF`-T+6GuvJS!Ga*?s>;(;iaQyE{>5IOvuVKtLf z*g+7~Cpjg~)HqjRMhRcZ3dn8l;G+B_57`t5q9M2HgMN{Co{=mZ53H!zN63?5WW7Mi3)`&H zY!)3qry*@gsU(F2*BG1NXq#?;D|paTmfEI1)@;m9j^A<1jaNMGF}9;z`<2f=pRzX#+&>sbrBf5Zg_(G_=od6H69}&?YM8>H@@{<({yE+Ni;>)pCJsW*&hG#^4b)j z@gLna0H+nuXGtOh;uC9f5E+9Kk~owp?YMt$n83P30XndF$`ax#S5>Y9HlZntV(51_ z%}hQ1Fvtf4gm%scKn{$?uPG@3iY1MJe z<^Ia}?98=azW(u#f82Px5e3L~;y6$iDL_lf%%SA#W!z%*1vhl!!uUdk55$8qp=|&I z$ka+caZ`{$Z); zO1UqUDIk+l>QZj=s7FIbk)&0UbI6CSuY}et<$)ik8B`+Agep~A;?C>3!~+6=#Snw9 zYLSJuZ&HwTL#e&tF_N?OrX9=Qz2neQVwjzo!m?K4p<(Ndw!1KYWPah$u3dK{r%;B_ zZ7gRR0OYS@rOaP&XU=boq<&Qp0`)b@hL)iNL86^h5Ntf)g`GIJ+`Ric z-~MjkM-vlMz>9FUVZkUpt2wpIjUd6QL*=&-gz4nNKGoZ zI?WGHXaiKmrEIJ6SFZia?RVT`*bV3~jwcsMHkg0@RhNuIR7OMaQ3-2~20&dDf<*G_ zA0s?kXHNJ`DyJDE!Q%nVRRO~b+ zKY#5VJNNZ7rCq94E^JstiOQ`?N@|KD@Riut%GKn-(xLzKQ?I>X^LWxbYRP$)L}TNf z=e_79Gcz0GAQ~($rh~3kMq{Ql=2=JP7YD;6%T&W`HX0MA-ISoZa-eEPC+0AbjToSz z!)<_&F`BcLm=h>A%|ppYaTv!zoQ8P;^#lc1@k|GvpKMY~aSIEjL=%IEgyVb<6bOtF z01GwD%Rv%F5SKI>4JFTK9B;PSG}%HD@N!YoR^SQ%mLwG^3;>G@WBHweaTbPC=-gtf?=#`HWFx9Iueguov6Zo zD5{I`xJqZ4z4BGhYmarl^3^XNJ$huU)7EurTRfv91p5O#pBE5*rs23wlV($16yijE z5#V$w{1;X>JD%|_+7#Y3O&i(aQ6MU3`5~&>7iY1F0|Z5Q-RBjKsh|;q#1MgkIE63E zw(WAmG8BsNfp$dvHr~Qd&JZ;4RYMSd@>zf+rls~7xef>LS|^@!yw?5WTzQ-iCklZt zGMU1!9lj{C`4EQ`tfxn$(PS8Yjbh;HQmP$F^&wXt*41f1ppI?biCRTjG0yde2`xyY zKgSb_2vO9}<6X3KF|xwGosylkLJR|Sa@HG1yny4FJ-}?D9$6#FOjq5Igh#+0YMV z036>5bX=qQp-5yvL|cnpXj|w*HVX(WY2U%6#nnE$D0EX+^ej&SIDmQ5EVXP4_2Cb? z=by9r;`3(Fa8+n477&p!(kJv6lF5>O)QI0esi=y%d)FScfPR12X?Ku(POwB?h}$Tc z1%P7)S#9e$>o}qe5Tkxj_z2s!ZCMs43(M->eY;n?z1i8BR?CHX9mO$jp~X`Fi#&=x zQ3?`TJPh-vp!!3n_}qxdNO&5eEz>kK5?~6c-ydXIZkhH|pK`@u5Pj!6-#usB_JxHd zNQO$0+Or!DEiAar_HDP_^7zMIqLx_}4?M>JE~&%}1c7YmDsIJz^x;aqOAquGzJ>}% zG8N#xvDTR9y1qX^V+)2WkGJa%poJwpo=j5Bx>-SDKnjN}Lr@4A8_QD!GUe5DQH zuU=6O4705CG=O;5JhQbel&3#?{f@7EZ%@B!$?n9UkcMSkD8NkF^3r^khu`}4*HQkK zDWh-QI`BKy3W_j|6xhIT5~?Bj;XG}+SLZ_nlG2Dy{>J0vZM**sG%){ zfwXJa(Jy`BS|n#;d=mV#ytIlqUB_d}MoZGqi13Y?Xjq~_318?ZR%4cDj$?&!Gz|OC zf5G#{I&KcroEmfey@w$%04KaxvZYAZeeugXckapv%atS)=uGnK&kk{QWb0(+=gJul`8R9=g-^F{;Aiz#Hj)! z?{n!{nY9~DsK|>izT~M-eA3q0$zW-2e(wY2V97SL@tIAM;^vv0BxRDKwV;VBiZ1$b zIZzEphUPj0G0edO21eQ8j7KzSpgCM04u)|SaY;K&0z|`p+#J5Dn%uER1^P$XqG-9! z7-gg>Iv|Fm8gW?;qId}Pg@S`FgO_C+8)MUsD+i&HXO^XBMarGc#ZWXV33*j%Mx*xY zX$EInzyAvKf1LrKa>tmX3k#L5rO3TzaPMefd$H$_cp8-s^bZyS=fDDFwE_AQNVBa~ zInV?!gxHuIIs?ssGk;(M;9&%)M`U152!Awj1;`UHEuj zKoT|!(X%F;I3p8otkc3zLprW6Gms@|xfks_ctq3P z5)Bfv4+a3_ippjNlP=5B&>w7?oxJ$`4Lb5heafN~1%&77q7o(cXc0_WDT#|#Yiuwa z&do0dVKg&6JM?|Aumrh-FY1f{0*^y`ojOHzb3`B>PqaYJ##o=@X!{^-#>m#3$v zT*u5I!U_Koy?|##Y3ntD0<1r={+0E>8Xb2ZJgsSR#15d4M{8>;EGztji17XRdCz-> z@27X%aR)v_1KTi`D^<3i@v%LaYb5NEgo*rC}K zMjAG4NjLIgw6YTR3d7MmTlKN?KmUzAU-qkrm? zfB%HXpUab`S1`ZfLfl%Xuc< zdh@+s|LQk`VK_6jF-g*;rR8>`J=Si=QJQcYS+uY-O%HNIE*kx3ZIQ$+0t;0(ExkYN z>8ARu=RC`{2`9zfGml?RA-7}+1$ph~uRU~VPBY!Sg56uf0I0&{7hHWwOGOp-3^eje zCyz7owfIl|Se-iIBc-&&B_op6#I<1nM6#DDjv}GP836_Q4MqIEVu|I!I8F1F2i8?z?)wEqN^|6Rt^_8O*mCL zFkz$15CUm198`IF;nqzrc-qxZzU%@eUfun`{iW(<1y9}3bql#9SkyU)QR*5J{jWz&{9st> z002Iaapj|n^ObJ!Sa@LoC_Lv5iR42<957>|<&b{zMANUa3c$!M4(>io; zZrir)*I#$t8(;tWX2UtOZ-1*ZW*HVz*dNB0iF}D1{m@hw;6r>gFOAGy24QgV#pk`@ zjn|+x-gf(Kwrv~GLntauHBHmD9fad3p^0LmDFFxqRMeQVMw1enG@e1AUdl|ko+W_Y z!o(f{&2=Bnwk^ZZ>(TYvSr+0pQ1qxDQALmoBOgxJps6?{&t!bOf@ z2q8k2M2*(G$)8ji_4PAzvjIN)*x zvOjbIQz*(!(F{(ct3ki$)T65;Kz5`%M{MAhFdQx}&dtvsSz122^_-1=_|A9y!8?EF zqKmh~*3onY76SX`Mof!xTzBHPe0Bza(7K2Z0-XlHHLrSv4S*lPMZh8t$mOW#9-m`( zZU(ijO84*Yef%?DFucj6&@69k7zVnWX-Wxk#CMe5lRlhTuG~|!3Y2P?_^1Htwz7++or|ad4wn322>AjVKwL)UYW-f&YPv|oPrm7w@49P8uj}hxrz`1A&#QV%+F)+G zCzZ?l|LdFoeN#{5e5lE}3VWI(&k8#vD-Ai;sF{dw0C(U3cW4|`Wz#nMi;G2?Omv#< zc4O!6om;kV>Be%TZTRJPyywMFf82{-_;kl95A3^p`?gN(FQN&vleEy(($cGrQa0q= zt;$5v7bQK(RW*^+D3^n{NO(-8)G!-5CrVIELyy9t#I!0iqd}{w`I5g9_w1<&Z{r2K z7RqnkvGl#W{iA)mJ#&dKE346JbJiZj3;XuowRw8tFaGztp8uRDEv*bD$D1gZ<>mRQ zi3xTTp)n$lP{%0Swc-_peNq*i5sA0RC!jhygdf5xXm-XhOpqnlF#!5*x@pI)H{HIt zxIEUJXtz7d%ga#|ZJOPXBniUpR)h0S&p164O5)q~Mh%+qkvqultVj(=I=Na{o!@@` z_J8-r*FrNAA~NnXjUUo?m~**8Ly~^!E&ut(o9?PKFUV1br55$dr3c>mmRD_1f@1kl z!!QdVRW5qNd!zVKiJ+#ZXCN>f?U*rkk5!f<9ukA%!|fwQ8sed~13BZqYxJ1bh(R_lRN$N#Uk z2>3MgkaV(>-Y{ZWy=BJ^#cTLr1k;KOaHK8e9GHPD1^dv3WXjQO#VP=HwSs9-PTc)T zQFSyEfN^mJ;#u?=L38jMr5q=kDg);fc^vuOpt}?fmy6urHa-31t1o})3!Z)D;~z88 z^kis!-sai?waSn_r1Tqytq0s(?+rP`aQ#L5a%LQXH%l5=M!c9Rvn-( z=bBpiq3=3ur;wizFFWp?`|yW8_LuMbYd?u7`6NY0YxZ0~Y_zzXx_AWo8OfR~3W9(Q zmL&;oCkj&#EH69^=>$Sx{Y4&{yN2E9ME$}~%M?HVU-sSuz_Q~i6TUgU+k``FPzXY>@3HGjGcY!6WjlmHNwr~=1z)7~1ELm0_jWl_B zrqhczhyVMkZoht=q7>( zBg_2!-1PLc$cKH59ihw?989BV8y^8f79a>&9E5)7nrjZd> zW3!cM?QcY~g6ruiybBOo0%^07Gynov0FF7=SN`bF-(}S%dSOv*O!fVqsU;ZsG#>N8 zZ9x6*f~_V$`S1Vjq|0qUjUs}cLJC7`5#4iJ3T2x_=#ing=#r}P{`Y-yc6JUx8Ct*= zHs3Oj*mA5R87M_$Ey-=agzZi^o{5zkv{luh^mE-A@<1p}bJK846Cezui4uj%fBH}V`Q(W+ z_Z~hrcF`3;Gfo^jQO}LqI~*mLJNoOt_!C*MU@IYp0=r19JU6ofKExG>M9w(@TZk1} zEE@{JPgB!43j$qBE3P#+f2Pr>yUpoiXO&NU?vC&Ip4S?B)a%W*+s7`sXyVwh2PVgA zMV9NislfnHnriN;sYe4qol~ti)y;mI_2MFk!3~UfmN?uG10dgqGe`Jfmzvsn5+?nD zl3J~a%FexKBjxi`{NtzZpBT6Q{Ey!9%2&J~3KP#U zPoF()YU=dlBzmVOEG20G$lfl+Oz@sO+%i%AML_tJejPF&cg3IpIrzwbxx`O4u;^ZX3(qksXBoqIqU0Ls$o zhT|qN+7-Ze$e&VS${$itMgIen=u;yV5UW~Sg8|U|jX!(mqP{ayn$iF;G~cj{BnJpq z+`KpD&cgsm5{_4H&yDLg|G^VaR+YSqEdQQt4L$;cL*#OQ^xIr8*6!F;? zU$_64fAagY!JMlE6IDI+yQXdNyRpI!GJO!|S*liSrv~#V2|EKNaQA%nuEU?b=P-2{bt|OCo>)-XL**0H7)XICKofd?6vC0B!NpN!SGJ z_DBRx1&=^XH(iuLQT#9tiFCN%pO&WeJm1r3j9E@iQER|0NnB)!;p%>o@cSw;Dls3J zBFhE<`3xqn8v?dP+kI-Y_%r~vPvF&>z-H+aOqane(G%mwX0)c9)SQ;-E6N@BJ*YQY zgB$?XieUiQ+}4vSO-%O`T*N>h-P8o2EH8?F!Ip%?Ko7GYp|t$A9DPTK3{XVc^TS{e zbi2TiQxnZ+Tyw>Xo`1uYhc3SA&?T-_xWM>DT7-TQ`$dr;hbRX?%%Op7bPLV_C<{bO)AW3~9x1^~ihQ{TDBO z$$>0|((WfkRBJSWVl5aW8;xI^(dKf(M22^l0~q51-GD)@r95!nfpL%iMk9mR%3u~QvrJU0ilfM`@W1R6B!MF zkmKq=Ua7d${?Gt;dfCSn&#lPotNdlc=mRB$9EFY|#IIKQU92pFyduNIKg;2*`0`o# z)abLou|n;wT%l@2so_G$IK|31M{>sF} z)XtqV2M%1iW5+a_1{e%+T$dkNnf#1Q>2%v^8c$4&q4u5bQoWA)q8RLTPs{*dMc7%P zym?gg&;ZDi!gdhzU%df9hs41J;>Dhyy48wbC~yA5ciOed#eUoz+tC{gbS*}+* zt7|s$#$8HdNo6^xbvGiY5cE~_d;}nH5KwR!_CS(zBU{@xUC$l_{dRk)-thM9-~DZ` zeGPE{MnjBPAe9@5!g!RpXgw`A+?w2ZGIuC2qGLOee5k>x$wuHS zKkx(p;fr^ECAFK-GM=VYAg0~6=6Cl@)J{Hn@2~#iPdbHP$p@7@tYiZ(jT}IhoL?1D z)D@l&z&*m)N4Y)gpxc`mZ{%?t4Z8K3qvo;S?^%^rl((8wJNn&)g~ijmb~kh*IXC-g ztLbGJ*dYAeW6aeQPc6(mHPtNEl@6?+L{qzQ-VT!}2h&{Fa??R^-+Xyx{8-g)^NR^=_0#MY3b(*x|>%Qm5 zv>CAbq`UC`zy7&6K3$vK_p`t7`=9^9>>wJO*m2Fdr2$4*%|e1OpwJH;OBMS$=lwW5 zn+KYl4RN^ky@rDqs23f=IN!mW-OrWeN;7ZRRUZ>Xti5A?CjY575X z_q`AN<0n6J>)rQs4G2)?kW0sHh^4t3kNavM-*PKv%cYe8O|nCa|Ur+;pBK4Fq0AP|?=AbCt!X z^w4vkbHlaQT)Aszx?17aj6B~o>=kLmINUxmMGqhrMEU|RbFN9e2>=k|jDu|#QK~w? zjz$&(R9Twk0A?+9xsT4wwa@#`Z~E@L9yo1!yTZ(Bwq}kUJ9gdGmmYrj?)&cjr&?2q zQ_ z;R$pqd0moBgFYCIPF1$mN&qx`R?_fR!U=l*9CaYzcG2PK;|h{xPlh7nG$0A#p+if{ zr&egB42%GhF_+7LlqHQ`93`3HFj=v8Nf{o!HN3cnhRMnRqRE)3h5RY~VL)ErIt>fF zCLr5om@i0XK>{nN4M+XL;$j~B;9dADVL?blvVE8u_#cL}7Q{j-#)EX?t|8hb2m-l? zXyEsQU@$R0fk)Xbm^U#Qe+hc3830ecZveQ8T{PZ`yWl;BzE-n-O-m0WXjt8K z-8jx>&zwo2IHPcUastKa_Ig}LXIpWSus)lV2O~HTJd~+qEc6#OI4xYw(7C;D9K|^l zrDZ@`mKGQ9yZ?b^t2sU0LVTp`*cSNc4+e3P!dgHY5a=k1Il&<`i)b;Xy~@E#QZmk6 zaJOHUOmqRphQ*&Gyw#|Cy?$J&=&yOrx12n2^6-6MfpKGTOes1Y->ppqiZw{hJHGtD z!OO1PvwKf(e$EK}NyqY{K^AmW1AULxF47p)uuKar62+10Rbbmd-D#!;V;t$JI=`$! zslvgMk_Miwq*0g#zHN9#qARJX5xqGoPeK7dQbps2%?;a&1B^6-AWYB_Txto3kR;qI zKa2DtvaP~#Ax`MOVXUUJ!60u;H1}M+5I5iVkN1A&?z5S*tDRY?VFg9hns5v&e&F6) zcTG0`_gmib$`@ZH+Jd?PR)y#bxhJ}#={&*;+YRrkcP_9s8_g@+$J40Yi-z|t@mF?7O&a}5~08BbBhlPS?N)Rjni z9hCrD5XD0JDv+W$omwasSseTV7KQn=)Lwx3%J(2-xbkeCC!Tj~+LjsvmI`Z0dK7xbuzAzqaVjS764*38(YX2S)iR5*tzU=mRqvCx-|ZJpuDLo-rQuKfc71Bze9?8pfB; zg4mMF!T`dRGPDWF=3Gyu5Ue9{>#LJ23~0mnEYl_f2Kr0+FKNw1 z`4a}Y=9tH4&n9SV)rz>8q-NPJ2006=EgUFCtUdbGQK5%*ehY= zLyda2-km>n;^_TK(AhKT9oSL-wpYI3=YH(_e(1Yi^9w)mqu=uK7hQMx#WQ1G)yNDb zP?CTW&ZQ}0S(;dA3WOUbzd0Y6sJpl@t|ewr9Okc7*fQN~QkYTdB73czVK12bk<9b@*kU5^AX~p?Nq(gxib+UA9BF-_2pL9fT zxXSoKE0qpm;g~oEVmTJWEl1D|-jWTDpSXoM5++DTqJ9(4ipNVg{K)`e`^ZlQkO-Yo zUKv(UI+@YXi7L?H7AM82^h;kPDx{xFZcwCApSowmq}E@7V|A9pTXdu8NH;A1nh4^j zYz63fT**Yt3>?-CTu0tOl%+o`|MDnTvaV#B;6Jn};1-5o5mQD08}MKX^p8#f^@z~~ zkV7>1@<>SYb=d&GBYcAjSZ`v8KJw_PPk;9F8oz%8fFk2SxQo~*kI019I#R~C8ijtn zUir7*^=i{pfsb%elvIeENEb4N&~mO@rR~Q5+7L>$alug8@$nYeVS?i-hSUUOArwst z@CYl-aCF0olf2XQJKYrQ84Ln3-ZM4e*RM@&p>3h~FmT$oa_ON<_U_x=?{^x_TBozr z>vbH*;-)>qvfuve7m(jq0pol2!rt$JaY zb~*zHvFGt+R>(KBfk@$TNV00!5MaEPBniYEKVajYKC@t1%71&qFTdzHSNF~xn`}9* zZB!d$nN?{gPV7$k*5seQ>mwig!hKVFuQ1)Qxw(#QxvhEwO%}rvh=8u6A`J3iU@Cdt z<+L;eA3ZhI)KoJQ)yfoG=*iGfe2hazkr;W(Z-;YO9Ijc^)wGgFcA9W4l%mF}7Q%JA z{V?FNZ5rgjN139hiJr$%f2mQm$6D1a50={V{ivtvd19#M^p2!8bH}6e@A~NNU%Y>* zlT4(}&dHqzb8f3WX!nlJ%{_4G!O3_1)t`RzH(aMC7%{*LjD3X5Q24Z%R=6|_JP9f# zVwg^e%LlVDNs{zwtxz8 zIl(m~RL=$^22B#e)KAM4hT+)Q*y%GTU-`bO%Z50cKvZzF7ig0${wDTk1 z_v&~2`I~?D4L|qF7d|6iI{m=Cx6B_qTvfB3t?Epp+Hx%qa$F=DbX}g=s^SQ4B~YcfSRM=c@ub&Ku~3ZUkw}k2fp}OvuB~Gqk$nxO`Oz z*5nG869EYEZMtL{C450{M>=?M3bK^506gDS!n8hfe>$(k$>zJNp{N8W9;jYhp_Di>X@`LYs>-*pH)?fbV zAASCn`>%V}Av;;LvyPK@oUCW%11lTog%ABn`BhS(K=_A?krX3=4&}zUmRR5k5M#s8 z$O;3uFdV0F{8k`O)ihVqoFDv0JEkYj-ha=_UiyL?o_ST8_M))U8mnsjTGZOT_o83@ zwcot!?z6CCJ=f{`p#V=8vJr^2L?4xINMtQ?MyC*8N^7B_28tHY$4_<^Tpv1IL7WI< z(6U2VTttA^Wq6I_-b?4fNe;mg?BeGzclgL1KM^e#5oEN@oERO}Iy{RMWNKUSpK9*$ zOS_Rzv6Z9b)*QG*8WkYf9w11U3OzsfO*&x!Y-aaf0^?~4(43u(=(gp!EpfWbr()kWpsW+^@ z{)<0)`HP-4clzk!!r7(HlIeMgZaJ+fwLWz&Q2ybQw|?x4UpAXNoQd5h7X41F>P}TP z9Ms)&TnFeXii=WRCnixd}GXq#Di2{s*PPJlIDv4?JRAc;-tLM_n z=N~w8=i$Z7+1Z#m6cu(iirl)T8iA^H$C|~v-ti~TzTwiWPfiF_gh5w+OtRKV_FV{4 z#S1>Pa+(wz#|>17>;CV!?aoIYex$S11ul?ULkb25DfSo6(}6*>SlGT_UEbE9ZDM~3 zH&$KeJn_=f0wm$kp^G?Qtnf9?R?>eQ5_y$0EWnc?$pkpD4I&L?P6dgSHI3&4MoC)e zCLDLcaqDraf9%t@7FyM?>wMj%>b9Z7Vg=4h(-BKKrj@tBJC+@+bFtP(GGei+jB>>Y-!K5`wcIC#v6a_ z=WhDIJKy#PZ~8YcdRDM->hN7(IPt(;QEx8k&lh3a%>9ayJ4U9aK{)92mKLHx&w%OW zSQXc^bR&(@UZ*dcpB0qV=W-z7AUY=gW85hO%qNl$pih+0)8kQBMZS(yWpVlnf#|P;+0) z0sTWgkDx*odBQ6Sz|P5;nuI$h!n81GfG7qJ+NZF<@yHi>>I;;PC^bqC$$@0$8F#Dd z>PGexKk-BT-nk^}i$zR4y)KNSELDH~*M6(wDW^|$t6tTz#4)!Qnoup)Y?)+{!C-a@ z;6gYFf~A9=m8g2?gc-mo+ht>5^zO>V3*kyTOB7XgEer zkIwE+6Fj-+k<}pSt_ufju78cFx9DS8@8e7UhO!xt{G>nhwh-4f=ppVv-5kYS>5u zRpSrvE2_s0tpTM7Z&WhcP;*#5rmDceqjd+C4#FTTlvERIFnEeWmgNc3gc;#Eb{K}; zzMraAVb+4e&7863?km1<@5#Ua_-%JQc)FL{nN>?oGf0vk^4pzrF|e8z+y}^(5k#>SpMJM!Sr-UjDAtYR8Tp`^InlM&FMU z?t7*9J}jgsOJ!+9c|>-rd{B9N9m%^J5SJ#v{^6Sup(&UUU@?fx#|uMI%^+5s`k3z2 zmIlea_Z@R9lbYrwF;@%%Si@*clhEWBvmuZQz;>R63v(wg-8X&pWqUQ4redi)L=_M} z*G%!bELZM{Z+a=ZU>c{-X$B~1mIQ-N5)bM%duFoLtXX>QXJLC{cdKGWRXcw9i=OeO zH~!MQ-uee`_@$rx=9fROW`?#p(2|ZCFKSsEkyTitNq2gzTK6mksLAh!K}XFJ+tTV) zR}LD;kq8km9xj6cz}2f<|HztW=u}x0s&PEgsJkYZkVk0@p@I73awWn$at@Nm#DtG9 z3jZW&vt}B-&W72D%G>LS-S9%vCh4<%H=^?P1tZvI!28Q>p-FuR{y z(9|*|jVvz7OYtAbTYT$CisRG|qQ86J`+xU$e*d03zEt0}$FXdlGF`88_nr(UL=3nu z{FqDEAiz}4e3t~_L9U`b7!W}eCl_-!ye$18@!b>bUyOoWGlZc%Z_m$7jW=hHA9>kJ zp7){`J<}h|Q&A;-20-o9%{G8PhFs!fDPG~fm# zCG+v)Tu4Ikq+6xxB@KTrcOSL^n_;~xBm6&3E5arNTk!G7S|^4TxgAIub4bIcSs`?j zGKBUK3S_88ghnX|KZh|#A9<3rrhHFHl7kTYB-dL3eNK#xL7(9l6a>^Em%9S+sTiR# z&?%{h3qR)Ww|RT^11_l{m~g?E$K9DAt1yKKwWD{kt#U zbr>VP=b8Q>nmgBp%!m(VRNr5}{zs~bW$Bc1T#9e$e4pz|J_hxsR|n9SmH;<&QWHf3-s09zV3G;5PJ z0j`BXI`AXaaTLeSZ3DuA(FpuPE5J$w3i2uqyE@?~_IzOWl~!Qx=oORizxnRZ-Tqi+ zwd{JUJy=qWWNg~2HH>a=A&dr}`qZZY^)1Jq*|ReW^488Om`+qQ;;1~=I8j!*^GRA9 zVKCNdycNpvW8K?sz3a|9?t%P603b-HBhW2B+5+Z7z0sO19LE3(45#13u1mvKUQJSv zWMJqIN!%nM4DAC0V=x#@OiWyL{UO~@VR~Q)X*6o7*b+oOvPBx^gJefZ=C#I`fo&3@ zFc-4IqU9Q1IX_Or#;|P7Fmpv8L`kJKmh0}(Q*(2R1J`RMKtZW$YCL8WApm3BHp3{$ zvbgFQFaUa;Gp~B(i<(tkPy1RHDFtUqx%3LkNPM~@vo>JU(o&=lO4c{VCM~CyW*Scc z%eXahrE1s5YO{yG90v1aO}*JDs!nv-fr%gek=Op|+ur<_|L0A=^7B9P4KKNFqM=6J zQ~kxGc`$D&f!{ro1dE0mR$Z-LF&ztrukR0*#27CCycp|+h~_%KMnJDoQ5^$@N*WhQ z=o;!oy#{Q@kCc-Lmn8J(@=`96B?)6&att)Yolnz08=>n#m7#;6apYS;v>5c91KU6I zYp&+#MG^aEkr_qiXo{YtW|0_ZRX&#rt5i!1wNf9u@gpDq<3D@*=|@i~-uPlS?w@Ka znxn|=J4^k=$gkQZeHJwnS9IG7xo8fa>ysu9#OBuJVHLh!idhMx0?0W(ug zX!}g{EYr}6M$K7RIQ3tC{>NKmjvp?hS>U)jsj!7(`el;Cf87kXfL_X4=GFw)5@A}p&^ zhGn$j6-1L&-J0XZ85=lNu{Ln3EXh;Kq3yQpBm*V)&ZiUNM7JpoN4HU5(%LJu*h-E3 z*gG{c;4-Z6?oxPgFGRZlZc69cfBjyv$iLA)#s; z5^VtKpl7+T6U3R#dc9d>{LaC3s+Q@UI(6pLpZ?5EH+^>YOs8JACnxJsSPTZS>l(G1 z+wJ;gHXDI6fp;_ zJmZ4<96b{nhvpQktiYCwU;`k3e%8auEe&Q*5^HIqXSty{ZYI!wqGeolEm(xo!wAeZ zE7vN8HP)QIw6XK*2Tvvc=dV9{ZV48|RAX$1YUqYjR9jlFd-9>fU)r;G<||+MN~PM= zbT{W2#>$f4q1FYV+N17kL9i+_iwCfP8_Kbxox8qt@1sXfMj={+pN414B%!m;oj*~s zl#w4?mfzh9%BrhTh$nfm!?2BLg;;@(4o{3vw=tJ@$(lX8yBcwc}^3qo; z(valc^&}xIAq${+X_fN|c*WzfG&3zAC`NN)N0{b!-hE#L+f#A;L1JqB;0ptSsc8-m z?cu8`fvvMF9gH`tU-!Zrv@GEA=pxh$`FbknNDJb0IZwX8_$eR}x)6J-0ytDyhE>MZovF1PRfjFn*R`IaEQS43{@I5wyL9^1uX^FH{?d>C#UKCf zTi*QZKm6~$_0o%{vt%jg&JMa~{mxuCSWLoBmJEtCD6%-`QVq`3sw@%@*?=hU<2^t} zbTL#3DlrT!O&zbna4_>MNwb(+1EHWw5f|u8M13XuMBg8wCnfHiHPh&Iw&g}t-hRqZ zS*&$b-o8M@ZPZ}8!pi4LEf5+P!p!%-N~SCE#d~*Nyl=)(6R{!)k$?6R)rc`Qnxs(kqX8$d5&o)5sanp_y9A&HF6%nUdqGq~A9(1+ahyYm-cwDa}f z_qw_Hlep(p%!T&iu04Ae7M47(_Md+IXCP~k#S2W(jZ#6#r801dSR}KI)k=tu0Z5{M zI1Wbi`R;ewl~@zkrISXK3=i*K0LQGUc<9PvjG6(<1t<$Cqiw55z{JZHT zm-+LQ@VDzwHKDCZTl9q+wgR0{lWR5Qa3Eewqe?@DhrT3nr=;_T{7aJ6_!mGq;GFo_ zF3XflF4+NH#;Gn`CxJ2Gldh>ecQ(y1QfHo5z3q-KMTwH8h38pm%m?xKg{C;+W*``A z)12=C;NqBgX7AqdtFFFca&kP3e1H$zwozW(C>wblmC0>PtE7OqqEH>%t<@TaVbKP# zoQdYt(qivpAN%-+KJ<~t9-EahbFykh&APeJonMOMv4dC68_f^gdE_Ja zo;=#uLaU`Wcjk6I%E2hkV->*fd8!q$t|TUgtAf4-AN*mrbVcXX0M!aDQB;1Cl^26T zAt2*+DO{rgHSXC?GuE^Sh)hjk0}#8Jc#42kx7_X^?uV*f+o5_pj?BiNx#Q?3Z+|$7 zYnCR4=P&;3PaAc|;}?<+283hh=Erul+I|E;R}LA=jW8M> zC9(WsgATuaqSS&*kcu=>4nKVMOLu-Iv}oOR0^ zuQjK~CU>^RCX|YoMSZ`&*j_r->7GgAMbnC$hU$$&<@F7%?^w~~xc$s)54`^0zWR55 z^OyhnZU6hne)xM|{f#fZ^pf4W8V|bjanN?HVtlMx&Ws4%h$;&^gk+j#3RNgqzr^pqq|#AaN48vh~K{GNnApQfh-$=(54?h9ySwrLiHwy9lr?Um2E z?&_N7a6{w*1L5$6Di`YTbvff}(Bik>eV=0261{r!EnoWZKi%4nt)eo0^wd(Mda-J! zs-0o3-Cn@p2z@d&IfJhA#V_3PfBxiex?RqrT}Xmf zjKrtC@THSxz;Gy(xE8%xM^EAe6jh3J!n!Y=h#)~E9^q4RMi~KlYrPwVj8E8!VoG9> zWPxRw;bcifH0j{+b&+^Ov)YZMIqH@lT<0Ks{IX=7FP@T_J{9~Y;MUf3OKwBj?E2%9 z?AOb^yQI;d0F&tc<&P�xUeGNYqqxE0hgC%2p}T1c=VU^;{XND?IzC;8&rXlmPz7 z#d}HaLc&+tK@fWN`a=&t+Uavl2DjogiGo@4WM_`|f+7*Bj`%sj3ipfNlx9xi1#b zIuoFR7?o{Yl&L*#bFUBpmOyF0K|d1&@3^ZUm(Gjb&ji#^VA-ZOJp20kxKp33EX}ud z({SBNXV9;DwK9P%6KlxI4hdEh{}8o9D$w3yHjz+X6hOq;lw?xGIPww3=X@S2ViYD% zG!S1;aou=>(M5a4+l!~}z57-z=V=?%l0LBw?pWsd}A`A-^hJ#SXlpS98KF zFF*a1uDpdr;cr5Z-wCJ&M2ulznF(9*&j(3947ssPk6-MkX-JY$Tk*FYWmSw7>q1ebCvW}3{&<&}~6i$D`8{UAie!bhAHkMPA zvJ7pFhDOZrK~Ymw71#MkrJ@mrGT6jbyhWTw8paE*Wmgv#2c4x}f??SJJ|QC+30MKo z5EE%h7`QIyxp(fEvMj|SG}gHf4=qE%i<0AIK%{~H;4{L)ah8RJ5qGvq{OnjfZJ9vC z1Z1X(va{VBNAW66-;b7-`hZcm6Znzi*;y867-%$rj3SOx-2f78aKmrnF0zHlnlnBu zOi}K-fVS3Y{RjgH`X5gL@PezHX4Fi}@(j%?l47FX=*}-b_Ru3|PMjOBO-xKTT*nIf ziDl~?9yCBmB#&}(u+K7X%PyLD*-;wE1N<-yWD0&0wa6(b)J_9%fhCe;P0#N4f?BKo zx^MsPuiW?0m+pCBVsgj1b8W}2+J z$$+IS!*B}2jtV_gjTnv3^Y3HW^9m0`GBG~oip`zSbvw;cKODpu%~UXrCr_euVXQZ5 zEfpq3mRCGCPGUa}DwE@<+DmDrI&ssc8b9yGz40bZ|lV;f|OyAiYx_wNaaw9yS&5BCP*xw z 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 Xp}r$dRwpq5kUvdTJ(U_IaK!%s!3jJ> literal 0 HcmV?d00001 From ffe0722701fbd7390d1b6c230a398736c3ade712 Mon Sep 17 00:00:00 2001 From: Nicole Scalera <85967480+Nicole-Scalera@users.noreply.github.com> Date: Mon, 31 Mar 2025 14:48:26 -0400 Subject: [PATCH 68/68] Update 12-type-object.md Fixed spelling error in 12-type-object.md. - Inheritance was mispelled as "inehritance" --- _text/12-type-object.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/_text/12-type-object.md b/_text/12-type-object.md index f6d4f0f..842bffa 100644 --- a/_text/12-type-object.md +++ b/_text/12-type-object.md @@ -8,7 +8,7 @@ The Type Objects should share the same interface (or parent) to make it easier f **When is it useful?** -- When you can't (or don't want to) use class inehritance. Let's say you make a game with animals. You have a base class which is parent to all animals, and then as children to that class you add birds, fish, and mammals. In the bird class you define a flying behavior, which is all fine until you add an ostrich, which can't fly. In that case you have to inherit from the bird class and create new children that can fly and can't fly. But what about bats, which is a mammal that can fly? You don't want to add flying behavior in two separate classes! A better way is to define a flying and a non-flying type in a separate class, so both ostriches remain on the ground and bats can fly. +- When you can't (or don't want to) use class inheritance. Let's say you make a game with animals. You have a base class which is parent to all animals, and then as children to that class you add birds, fish, and mammals. In the bird class you define a flying behavior, which is all fine until you add an ostrich, which can't fly. In that case you have to inherit from the bird class and create new children that can fly and can't fly. But what about bats, which is a mammal that can fly? You don't want to add flying behavior in two separate classes! A better way is to define a flying and a non-flying type in a separate class, so both ostriches remain on the ground and bats can fly. - In game event systems, the Type Object can be used to define event types as objects. This allows for dynamic registration and handling of different event types during runtime, making the event system more versatile and adaptable. @@ -25,4 +25,4 @@ The Type Objects should share the same interface (or parent) to make it easier f - **Component.** The difference is that the Component is not always coupled with something else on the game object – it’s living its own life. In Unity you can add colliders, scripts, mesh renderers and they don’t need to know about each other to function. Type Object, however, is about adding a behavior to an existing class, so the type can't live on its own. -## [Back](../) \ No newline at end of file +## [Back](../)

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