diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 000000000..e29a8018a --- /dev/null +++ b/.editorconfig @@ -0,0 +1,200 @@ +; see http://editorconfig.org/ for docs on this file + +root = true + +[*] +ignore_if_in_header = This code was generated by a tool| +indent_style = space +indent_size = 4 +; uncomment to help with sharing files across os's (i.e. network share or through local vm) +#end_of_line = lf +; avoid a bom, which causes endless problems with naive text tooling +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true +; keeping auto-format enabled helps avoid merge hell for projects without CI-based format validation +#disable_auto_format = true + +[*.cs] +; uncomment to enable full formatting of c# files +formatters = generic, uncrustify + +[*.asmdef] +scrape_api = true + +[**/Tests/**.asmdef] +scrape_api = false + +[*.Tests.asmdef] +scrape_api = false + +[*.md] +indent_size = 2 +; trailing whitespace is unfortunately significant in markdown +trim_trailing_whitespace = false +; uncomment to enable basic formatting of markdown files +#formatters = generic + +[{Makefile,makefile}] +; tab characters are part of the Makefile format +indent_style = tab + +[*.asmdef] +indent_size = 4 + +[*.json] +indent_size = 2 + +[*.{vcproj,bat,cmd,xaml,tt,t4,ttinclude}] +end_of_line = crlf + +; this VS-specific stuff is based on experiments to see how VS will modify a file after it has been manually edited. +; the settings are meant to closely match what VS does to minimize unnecessary diffs. +[*.{vcxproj,vcxproj.filters}] +indent_style = space +indent_size = 2 +end_of_line = crlf +charset = utf-8-bom +trim_trailing_whitespace = true +insert_final_newline = false +; must be broken out because of 51-char bug (https://github.com/editorconfig/editorconfig-visualstudio/issues/21) +[*.{csproj,pyproj,props,targets}] +indent_style = space +indent_size = 2 +end_of_line = crlf +charset = utf-8-bom +trim_trailing_whitespace = true +insert_final_newline = false +[*.{sln,sln.template}] +indent_style = tab +indent_size = 4 +end_of_line = crlf +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = false + +#### naming styles #### + +# naming rules +[*.cs] +dotnet_naming_rule.interface_should_be_begins_with_i.severity = suggestion +dotnet_naming_rule.interface_should_be_begins_with_i.symbols = interface +dotnet_naming_rule.interface_should_be_begins_with_i.style = begins_with_i + +dotnet_naming_rule.types_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.types_should_be_pascal_case.symbols = types +dotnet_naming_rule.types_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.non_field_members_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.non_field_members_should_be_pascal_case.symbols = non_field_members +dotnet_naming_rule.non_field_members_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.method_should_be_pascal_case.severity = suggestion +dotnet_naming_rule.method_should_be_pascal_case.symbols = method +dotnet_naming_rule.method_should_be_pascal_case.style = pascal_case + +dotnet_naming_rule.private_or_internal_field_should_be_begins_with_m_.severity = suggestion +dotnet_naming_rule.private_or_internal_field_should_be_begins_with_m_.symbols = private_or_internal_field +dotnet_naming_rule.private_or_internal_field_should_be_begins_with_m_.style = begins_with_m_ + +dotnet_naming_rule.private_or_internal_static_field_should_be_begins_with_s_.severity = suggestion +dotnet_naming_rule.private_or_internal_static_field_should_be_begins_with_s_.symbols = private_or_internal_static_field +dotnet_naming_rule.private_or_internal_static_field_should_be_begins_with_s_.style = begins_with_s_ + +dotnet_naming_rule.non_public_const_fields_should_be_begins_with_k_.severity = suggestion +dotnet_naming_rule.non_public_const_fields_should_be_begins_with_k_.symbols = non_public_const_fields +dotnet_naming_rule.non_public_const_fields_should_be_begins_with_k_.style = begins_with_k_ + +dotnet_naming_rule.non_public_static_readonly_fields_should_be_begins_with_k_.severity = suggestion +dotnet_naming_rule.non_public_static_readonly_fields_should_be_begins_with_k_.symbols = non_public_static_readonly_fields +dotnet_naming_rule.non_public_static_readonly_fields_should_be_begins_with_k_.style = begins_with_k_ + +dotnet_naming_rule.event_should_be_camel_case.severity = suggestion +dotnet_naming_rule.event_should_be_camel_case.symbols = event +dotnet_naming_rule.event_should_be_camel_case.style = camel_case + +dotnet_naming_rule.method_parameters_should_be_camel_case.severity = suggestion +dotnet_naming_rule.method_parameters_should_be_camel_case.symbols = method_parameters +dotnet_naming_rule.method_parameters_should_be_camel_case.style = camel_case + +dotnet_naming_rule.local_should_be_camel_case.severity = suggestion +dotnet_naming_rule.local_should_be_camel_case.symbols = local +dotnet_naming_rule.local_should_be_camel_case.style = camel_case + +# symbol specifications + +dotnet_naming_symbols.interface.applicable_kinds = interface +dotnet_naming_symbols.interface.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.interface.required_modifiers = + +dotnet_naming_symbols.event.applicable_kinds = event +dotnet_naming_symbols.event.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.event.required_modifiers = + +dotnet_naming_symbols.method.applicable_kinds = method +dotnet_naming_symbols.method.applicable_accessibilities = public +dotnet_naming_symbols.method.required_modifiers = + +dotnet_naming_symbols.private_or_internal_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_field.applicable_accessibilities = internal, private, private_protected +dotnet_naming_symbols.private_or_internal_field.required_modifiers = + +dotnet_naming_symbols.private_or_internal_static_field.applicable_kinds = field +dotnet_naming_symbols.private_or_internal_static_field.applicable_accessibilities = internal, private, private_protected +dotnet_naming_symbols.private_or_internal_static_field.required_modifiers = static + +dotnet_naming_symbols.types.applicable_kinds = class, struct, interface, enum +dotnet_naming_symbols.types.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.types.required_modifiers = + +dotnet_naming_symbols.non_field_members.applicable_kinds = property, event, method +dotnet_naming_symbols.non_field_members.applicable_accessibilities = public, internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_field_members.required_modifiers = + +dotnet_naming_symbols.non_public_const_fields.applicable_kinds = field +dotnet_naming_symbols.non_public_const_fields.applicable_accessibilities = internal, private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_public_const_fields.required_modifiers = const + +dotnet_naming_symbols.non_public_static_readonly_fields.applicable_kinds = field +dotnet_naming_symbols.non_public_static_readonly_fields.applicable_accessibilities = private, protected, protected_internal, private_protected +dotnet_naming_symbols.non_public_static_readonly_fields.required_modifiers = readonly, static + +dotnet_naming_symbols.method_parameters.applicable_kinds = parameter +dotnet_naming_symbols.method_parameters.applicable_accessibilities = +dotnet_naming_symbols.method_parameters.required_modifiers = + +dotnet_naming_symbols.local.applicable_kinds = local +dotnet_naming_symbols.local.applicable_accessibilities = local +dotnet_naming_symbols.local.required_modifiers = + +# naming styles + +dotnet_naming_style.pascal_case.required_prefix = +dotnet_naming_style.pascal_case.required_suffix = +dotnet_naming_style.pascal_case.word_separator = +dotnet_naming_style.pascal_case.capitalization = pascal_case + +dotnet_naming_style.begins_with_i.required_prefix = I +dotnet_naming_style.begins_with_i.required_suffix = +dotnet_naming_style.begins_with_i.word_separator = +dotnet_naming_style.begins_with_i.capitalization = pascal_case + +dotnet_naming_style.begins_with_m_.required_prefix = m_ +dotnet_naming_style.begins_with_m_.required_suffix = +dotnet_naming_style.begins_with_m_.word_separator = +dotnet_naming_style.begins_with_m_.capitalization = pascal_case + +dotnet_naming_style.begins_with_s_.required_prefix = s_ +dotnet_naming_style.begins_with_s_.required_suffix = +dotnet_naming_style.begins_with_s_.word_separator = +dotnet_naming_style.begins_with_s_.capitalization = pascal_case + +dotnet_naming_style.begins_with_k_.required_prefix = k_ +dotnet_naming_style.begins_with_k_.required_suffix = +dotnet_naming_style.begins_with_k_.word_separator = +dotnet_naming_style.begins_with_k_.capitalization = pascal_case + +dotnet_naming_style.camel_case.required_prefix = +dotnet_naming_style.camel_case.required_suffix = +dotnet_naming_style.camel_case.word_separator = +dotnet_naming_style.camel_case.capitalization = camel_case diff --git a/.yamato/project-standards.yml b/.yamato/project-standards.yml new file mode 100644 index 000000000..e785f1c70 --- /dev/null +++ b/.yamato/project-standards.yml @@ -0,0 +1,22 @@ +{% metadata_file .yamato/project.metafile %} +--- + +{% for project in projects -%} +{% for editor in test_editors -%} + +standards_{{ project.name }}: + name: Standards Check {{ project.name }} - {{ editor }} + agent: + type: Unity::VM + image: desktop/logging-testing-linux:v0.1.2-926285 + flavor: b1.large + commands: + - dotnet --version + - dotnet format --version + - pip install unity-downloader-cli --upgrade --index-url https://artifactory.prd.it.unity3d.com/artifactory/api/pypi/pypi/simple + - unity-downloader-cli -u {{ test_editors.first }} -c editor --wait --fast + - .Editor/Unity -batchmode -nographics -logFile - -executeMethod Packages.Rider.Editor.RiderScriptEditor.SyncSolution -projectPath {{ project.path }} -quit + - dotnet run --project dotnet-tools/netcode.standards -- --project={{ project.path }} --check + +{% endfor -%} +{% endfor -%} diff --git a/Basic/2DSpaceShooter/Assets/Prefabs/Bullet.prefab b/Basic/2DSpaceShooter/Assets/Prefabs/Bullet.prefab index 895cabb0a..752df1ac4 100644 --- a/Basic/2DSpaceShooter/Assets/Prefabs/Bullet.prefab +++ b/Basic/2DSpaceShooter/Assets/Prefabs/Bullet.prefab @@ -12,8 +12,8 @@ GameObject: - component: {fileID: 21200000} - component: {fileID: 5000000} - component: {fileID: 5800000} - - component: {fileID: 11400004} - component: {fileID: -4113703611147433057} + - component: {fileID: 11400004} m_Layer: 0 m_Name: Bullet m_TagString: Untagged @@ -28,6 +28,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 100000} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 17.05494, y: -1.1583278, z: 0} m_LocalScale: {x: 0.6, y: 0.6, z: 0.6} @@ -37,7 +38,6 @@ Transform: - {fileID: 2541587719488337929} - {fileID: 437137293806936037} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &21200000 SpriteRenderer: @@ -108,6 +108,12 @@ Rigidbody2D: m_AngularDrag: 0.05 m_GravityScale: 0 m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 m_Interpolate: 1 m_SleepingMode: 1 m_CollisionDetection: 1 @@ -122,13 +128,32 @@ CircleCollider2D: m_Enabled: 1 m_Density: 1 m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 m_IsTrigger: 0 m_UsedByEffector: 0 m_UsedByComposite: 0 m_Offset: {x: 0, y: 0} serializedVersion: 2 m_Radius: 0.2 ---- !u!114 &11400004 +--- !u!114 &-4113703611147433057 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -137,11 +162,18 @@ MonoBehaviour: m_GameObject: {fileID: 100000} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 3cd7bb63a91d2a644b2775fdf8fa9087, type: 3} + m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} m_Name: m_EditorClassIdentifier: - explosionParticle: {fileID: 100000, guid: 9f490055b474c5b499c694b9f707abb0, type: 3} ---- !u!114 &-4113703611147433057 + GlobalObjectIdHash: 4230786284 + AlwaysReplicateAsRoot: 0 + SynchronizeTransform: 1 + ActiveSceneSynchronization: 0 + SceneMigrationSynchronization: 1 + SpawnWithObservers: 1 + DontDestroyWithOwner: 0 + AutoObjectParentSync: 0 +--- !u!114 &11400004 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -150,13 +182,10 @@ MonoBehaviour: m_GameObject: {fileID: 100000} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: d5a57f767e5e46a458fc5d3c628d0cbb, type: 3} + m_Script: {fileID: 11500000, guid: 3cd7bb63a91d2a644b2775fdf8fa9087, type: 3} m_Name: m_EditorClassIdentifier: - GlobalObjectIdHash: 951099334 - AlwaysReplicateAsRoot: 0 - DontDestroyWithOwner: 0 - AutoObjectParentSync: 0 + particles: {fileID: 19800000, guid: 9f490055b474c5b499c694b9f707abb0, type: 3} --- !u!1 &1734169577680067239 GameObject: m_ObjectHideFlags: 0 @@ -181,17 +210,17 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1734169577680067239} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1.6666665, y: 1.6666665, z: 1.6666665} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 400000} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!96 &8001524962857443883 TrailRenderer: - serializedVersion: 2 + serializedVersion: 3 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -232,6 +261,7 @@ TrailRenderer: m_SortingLayer: 7 m_SortingOrder: 0 m_Time: 0.1 + m_PreviewTimeScale: 1 m_Parameters: serializedVersion: 3 widthMultiplier: 1 @@ -286,17 +316,21 @@ TrailRenderer: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 numCornerVertices: 0 numCapVertices: 0 alignment: 0 textureMode: 0 + textureScale: {x: 1, y: 1} shadowBias: 0.5 generateLightingData: 0 m_MinVertexDistance: 0.2 + m_MaskInteraction: 0 m_Autodestruct: 0 m_Emitting: 1 + m_ApplyActiveColorSpace: 0 --- !u!1 &5834909677899066770 GameObject: m_ObjectHideFlags: 0 @@ -321,13 +355,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5834909677899066770} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.6784176, y: 0.6784176, z: 0.6784176} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 400000} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!212 &7281275371523386705 SpriteRenderer: @@ -405,17 +439,17 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8201526709602511825} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1.2764332, y: 1.2764332, z: 1.2764332} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 400000} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!96 &6763641590727656120 TrailRenderer: - serializedVersion: 2 + serializedVersion: 3 m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} @@ -456,6 +490,7 @@ TrailRenderer: m_SortingLayer: 7 m_SortingOrder: 5 m_Time: 0.04 + m_PreviewTimeScale: 1 m_Parameters: serializedVersion: 3 widthMultiplier: 1 @@ -510,14 +545,18 @@ TrailRenderer: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 numCornerVertices: 0 numCapVertices: 0 alignment: 0 textureMode: 0 + textureScale: {x: 1, y: 1} shadowBias: 0.5 generateLightingData: 0 m_MinVertexDistance: 0.1 + m_MaskInteraction: 0 m_Autodestruct: 0 m_Emitting: 1 + m_ApplyActiveColorSpace: 0 diff --git a/Basic/2DSpaceShooter/Assets/Prefabs/Explosion.prefab b/Basic/2DSpaceShooter/Assets/Prefabs/Explosion.prefab index 571bc37f5..eb53efbfb 100644 --- a/Basic/2DSpaceShooter/Assets/Prefabs/Explosion.prefab +++ b/Basic/2DSpaceShooter/Assets/Prefabs/Explosion.prefab @@ -26,6 +26,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 100000} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} @@ -35,7 +36,6 @@ Transform: - {fileID: 8627892897656053862} - {fileID: 5255014377074247034} m_Father: {fileID: 0} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!198 &19800000 ParticleSystem: @@ -47,7 +47,7 @@ ParticleSystem: serializedVersion: 8 lengthInSec: 1 simulationSpeed: 1 - stopAction: 2 + stopAction: 3 cullingMode: 1 ringBufferMode: 0 ringBufferLoopRange: {x: 0, y: 1} @@ -255,6 +255,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -284,6 +285,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 startSize: @@ -605,6 +607,7 @@ ParticleSystem: m_PostInfinity: 2 m_RotationOrder: 4 randomizeRotationDirection: 0 + gravitySource: 0 maxNumParticles: 1000 customEmitterVelocity: {x: 0, y: 0, z: 0} size3D: 0 @@ -1459,6 +1462,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 4 m_NumAlphaKeys: 4 minGradient: @@ -1488,6 +1492,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 UVModule: @@ -3717,6 +3722,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -3746,6 +3752,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 range: {x: 0, y: 1} @@ -4129,6 +4136,7 @@ ParticleSystem: m_RotationOrder: 4 minVertexDistance: 0.2 textureMode: 0 + textureScale: {x: 1, y: 1} ribbonCount: 1 shadowBias: 0.5 worldSpace: 0 @@ -4171,6 +4179,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -4200,6 +4209,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 widthOverTrail: @@ -4287,6 +4297,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -4316,6 +4327,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 CustomDataModule: @@ -4354,6 +4366,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -4383,6 +4396,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 colorLabel0: Color @@ -4636,6 +4650,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -4665,6 +4680,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 colorLabel1: Color @@ -4940,13 +4956,15 @@ ParticleSystemRenderer: m_RenderAlignment: 0 m_Pivot: {x: 0, y: 0, z: 0} m_Flip: {x: 0, y: 0, z: 0} - m_UseCustomVertexStreams: 0 m_EnableGPUInstancing: 0 m_ApplyActiveColorSpace: 0 m_AllowRoll: 1 m_FreeformStretching: 0 m_RotateWithStretchDirection: 1 + m_UseCustomVertexStreams: 0 m_VertexStreams: 0001030405 + m_UseCustomTrailVertexStreams: 0 + m_TrailVertexStreams: 00010304 m_Mesh: {fileID: 0} m_Mesh1: {fileID: 0} m_Mesh2: {fileID: 0} @@ -4963,7 +4981,7 @@ AudioSource: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 100000} - m_Enabled: 1 + m_Enabled: 0 serializedVersion: 4 OutputAudioMixerGroup: {fileID: 0} m_audioClip: {fileID: 8300000, guid: b3a8517925e98704985f20f3a605b2de, type: 3} @@ -5077,13 +5095,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2728610517644350409} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 400000} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!198 &8693427991503904308 ParticleSystem: @@ -5303,6 +5321,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -5332,6 +5351,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 startSize: @@ -5653,6 +5673,7 @@ ParticleSystem: m_PostInfinity: 2 m_RotationOrder: 4 randomizeRotationDirection: 0 + gravitySource: 0 maxNumParticles: 1000 customEmitterVelocity: {x: 0, y: 0, z: 0} size3D: 0 @@ -6458,6 +6479,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 3 m_NumAlphaKeys: 5 minGradient: @@ -6487,6 +6509,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 UVModule: @@ -8707,6 +8730,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -8736,6 +8760,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 range: {x: 0, y: 1} @@ -9119,6 +9144,7 @@ ParticleSystem: m_RotationOrder: 4 minVertexDistance: 0.2 textureMode: 0 + textureScale: {x: 1, y: 1} ribbonCount: 1 shadowBias: 0.5 worldSpace: 0 @@ -9161,6 +9187,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -9190,6 +9217,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 widthOverTrail: @@ -9277,6 +9305,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -9306,6 +9335,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 CustomDataModule: @@ -9344,6 +9374,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -9373,6 +9404,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 colorLabel0: Color @@ -9626,6 +9658,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -9655,6 +9688,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 colorLabel1: Color @@ -9930,13 +9964,15 @@ ParticleSystemRenderer: m_RenderAlignment: 0 m_Pivot: {x: 0, y: 0, z: 0} m_Flip: {x: 0, y: 0, z: 0} - m_UseCustomVertexStreams: 0 m_EnableGPUInstancing: 0 m_ApplyActiveColorSpace: 0 m_AllowRoll: 1 m_FreeformStretching: 0 m_RotateWithStretchDirection: 1 + m_UseCustomVertexStreams: 0 m_VertexStreams: 0001030405 + m_UseCustomTrailVertexStreams: 0 + m_TrailVertexStreams: 00010304 m_Mesh: {fileID: 0} m_Mesh1: {fileID: 0} m_Mesh2: {fileID: 0} @@ -9971,13 +10007,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5868758377587957888} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 400000} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!198 &1297806946781327402 ParticleSystem: @@ -10197,6 +10233,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -10226,6 +10263,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 startSize: @@ -10547,6 +10585,7 @@ ParticleSystem: m_PostInfinity: 2 m_RotationOrder: 4 randomizeRotationDirection: 0 + gravitySource: 0 maxNumParticles: 1000 customEmitterVelocity: {x: 0, y: 0, z: 0} size3D: 0 @@ -11352,6 +11391,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 3 m_NumAlphaKeys: 5 minGradient: @@ -11381,6 +11421,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 UVModule: @@ -13601,6 +13642,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -13630,6 +13672,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 range: {x: 0, y: 1} @@ -14013,6 +14056,7 @@ ParticleSystem: m_RotationOrder: 4 minVertexDistance: 0.2 textureMode: 0 + textureScale: {x: 1, y: 1} ribbonCount: 1 shadowBias: 0.5 worldSpace: 0 @@ -14055,6 +14099,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -14084,6 +14129,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 widthOverTrail: @@ -14171,6 +14217,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -14200,6 +14247,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 CustomDataModule: @@ -14238,6 +14286,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -14267,6 +14316,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 colorLabel0: Color @@ -14520,6 +14570,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -14549,6 +14600,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 colorLabel1: Color @@ -14824,13 +14876,15 @@ ParticleSystemRenderer: m_RenderAlignment: 0 m_Pivot: {x: 0, y: 0, z: 0} m_Flip: {x: 0, y: 0, z: 0} - m_UseCustomVertexStreams: 0 m_EnableGPUInstancing: 0 m_ApplyActiveColorSpace: 0 m_AllowRoll: 1 m_FreeformStretching: 0 m_RotateWithStretchDirection: 1 + m_UseCustomVertexStreams: 0 m_VertexStreams: 0001030405 + m_UseCustomTrailVertexStreams: 0 + m_TrailVertexStreams: 00010304 m_Mesh: {fileID: 0} m_Mesh1: {fileID: 0} m_Mesh2: {fileID: 0} @@ -14865,13 +14919,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 9156983861408004323} + serializedVersion: 2 m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 400000} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!198 &7102130296119057202 ParticleSystem: @@ -15091,6 +15145,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -15120,6 +15175,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 startSize: @@ -15441,6 +15497,7 @@ ParticleSystem: m_PostInfinity: 2 m_RotationOrder: 4 randomizeRotationDirection: 0 + gravitySource: 0 maxNumParticles: 1000 customEmitterVelocity: {x: 0, y: 0, z: 0} size3D: 0 @@ -16313,6 +16370,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 3 m_NumAlphaKeys: 3 minGradient: @@ -16342,6 +16400,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 UVModule: @@ -18562,6 +18621,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -18591,6 +18651,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 range: {x: 0, y: 1} @@ -18974,6 +19035,7 @@ ParticleSystem: m_RotationOrder: 4 minVertexDistance: 0.2 textureMode: 0 + textureScale: {x: 1, y: 1} ribbonCount: 1 shadowBias: 0.5 worldSpace: 0 @@ -19016,6 +19078,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -19045,6 +19108,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 widthOverTrail: @@ -19132,6 +19196,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -19161,6 +19226,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 CustomDataModule: @@ -19199,6 +19265,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -19228,6 +19295,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 colorLabel0: Color @@ -19481,6 +19549,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 minGradient: @@ -19510,6 +19579,7 @@ ParticleSystem: atime6: 0 atime7: 0 m_Mode: 0 + m_ColorSpace: -1 m_NumColorKeys: 2 m_NumAlphaKeys: 2 colorLabel1: Color @@ -19785,13 +19855,15 @@ ParticleSystemRenderer: m_RenderAlignment: 0 m_Pivot: {x: 0, y: 0, z: 0} m_Flip: {x: 0, y: 0, z: 0} - m_UseCustomVertexStreams: 0 m_EnableGPUInstancing: 0 m_ApplyActiveColorSpace: 0 m_AllowRoll: 1 m_FreeformStretching: 0 m_RotateWithStretchDirection: 1 + m_UseCustomVertexStreams: 0 m_VertexStreams: 0001030405 + m_UseCustomTrailVertexStreams: 0 + m_TrailVertexStreams: 00010304 m_Mesh: {fileID: 0} m_Mesh1: {fileID: 0} m_Mesh2: {fileID: 0} diff --git a/Basic/2DSpaceShooter/Assets/Prefabs/ExplosionsPool.prefab b/Basic/2DSpaceShooter/Assets/Prefabs/ExplosionsPool.prefab new file mode 100644 index 000000000..6bc537da7 --- /dev/null +++ b/Basic/2DSpaceShooter/Assets/Prefabs/ExplosionsPool.prefab @@ -0,0 +1,49 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &4100745325842416285 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 353012723220325942} + - component: {fileID: 906457504253834577} + m_Layer: 0 + m_Name: ExplosionsPool + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &353012723220325942 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4100745325842416285} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &906457504253834577 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4100745325842416285} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d3305ca95ec6e0c48aa691072c25b1c9, type: 3} + m_Name: + m_EditorClassIdentifier: + collectionChecks: 1 + maxPoolSize: 50 + m_ExplosionPrefab: {fileID: 100000, guid: 9f490055b474c5b499c694b9f707abb0, type: 3} diff --git a/Basic/2DSpaceShooter/Assets/Prefabs/ExplosionsPool.prefab.meta b/Basic/2DSpaceShooter/Assets/Prefabs/ExplosionsPool.prefab.meta new file mode 100644 index 000000000..3934cae75 --- /dev/null +++ b/Basic/2DSpaceShooter/Assets/Prefabs/ExplosionsPool.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 6221fcaa4ef51bb4badceb82a86cff8f +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Basic/2DSpaceShooter/Assets/Prefabs/NetworkObjectPool.prefab b/Basic/2DSpaceShooter/Assets/Prefabs/NetworkObjectPool.prefab new file mode 100644 index 000000000..dc9165b3b --- /dev/null +++ b/Basic/2DSpaceShooter/Assets/Prefabs/NetworkObjectPool.prefab @@ -0,0 +1,54 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1086539700089093819 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 411308774211368270} + - component: {fileID: 987422801466715749} + m_Layer: 0 + m_Name: NetworkObjectPool + m_TagString: ObjectPool + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &411308774211368270 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086539700089093819} + serializedVersion: 2 + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &987422801466715749 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1086539700089093819} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: d2e48fbd6d33eab48807525003196759, type: 3} + m_Name: + m_EditorClassIdentifier: + m_NetworkManager: {fileID: 0} + PooledPrefabsList: + - Prefab: {fileID: 100000, guid: f7120fa7a008f8d4fa6c6bb280d092ad, type: 3} + PrewarmCount: 100 + - Prefab: {fileID: 100000, guid: 7ab4780606df6934f9810adaf781b34a, type: 3} + PrewarmCount: 20 + - Prefab: {fileID: 100000, guid: d23f28732e2924c4180c8fec40c78dfc, type: 3} + PrewarmCount: 20 diff --git a/Basic/2DSpaceShooter/Assets/Prefabs/NetworkObjectPool.prefab.meta b/Basic/2DSpaceShooter/Assets/Prefabs/NetworkObjectPool.prefab.meta new file mode 100644 index 000000000..e3cb797bb --- /dev/null +++ b/Basic/2DSpaceShooter/Assets/Prefabs/NetworkObjectPool.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ef7853ed8a0f97040914dca7bde9f23b +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Basic/2DSpaceShooter/Assets/Scenes/network.unity b/Basic/2DSpaceShooter/Assets/Scenes/network.unity index 6310d1652..5d7435863 100644 --- a/Basic/2DSpaceShooter/Assets/Scenes/network.unity +++ b/Basic/2DSpaceShooter/Assets/Scenes/network.unity @@ -105,7 +105,7 @@ NavMeshSettings: serializedVersion: 2 m_ObjectHideFlags: 0 m_BuildSettings: - serializedVersion: 2 + serializedVersion: 3 agentTypeID: 0 agentRadius: 0.5 agentHeight: 2 @@ -118,7 +118,7 @@ NavMeshSettings: cellSize: 0.16666667 manualTileSize: 0 tileSize: 256 - accuratePlacement: 0 + buildHeightMesh: 0 maxJobWorkers: 0 preserveTilesOutsideBounds: 0 debug: @@ -147,13 +147,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 91422047} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -10.915647, y: 20.098461, z: 8.925151} 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 &139820504 GameObject: @@ -185,6 +185,25 @@ BoxCollider2D: m_Enabled: 1 m_Density: 1 m_Material: {fileID: 6200000, guid: 01b2dec7004cd734b9f0430b2ed4fd8e, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 m_IsTrigger: 0 m_UsedByEffector: 0 m_UsedByComposite: 0 @@ -218,6 +237,12 @@ Rigidbody2D: m_AngularDrag: 0.05 m_GravityScale: 0 m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 m_Interpolate: 0 m_SleepingMode: 1 m_CollisionDetection: 0 @@ -279,13 +304,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 139820504} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 50, z: 0} m_LocalScale: {x: 100, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1118650249} - m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &215857575 GameObject: @@ -328,66 +353,26 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 215857575} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 11 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &336748511 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 336748512} - - component: {fileID: 336748513} - m_Layer: 0 - m_Name: NetworkObjectPool - m_TagString: ObjectPool - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &336748512 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 336748511} - 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 &336748513 +--- !u!114 &336748513 stripped MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} + m_CorrespondingSourceObject: {fileID: 987422801466715749, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + m_PrefabInstance: {fileID: 4881783056451638245} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 336748511} + m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: d2e48fbd6d33eab48807525003196759, type: 3} m_Name: m_EditorClassIdentifier: - m_NetworkManager: {fileID: 872897446} - PooledPrefabsList: - - Prefab: {fileID: 100000, guid: f7120fa7a008f8d4fa6c6bb280d092ad, type: 3} - PrewarmCount: 100 - - Prefab: {fileID: 100000, guid: 7ab4780606df6934f9810adaf781b34a, type: 3} - PrewarmCount: 20 - - Prefab: {fileID: 100000, guid: d23f28732e2924c4180c8fec40c78dfc, type: 3} - PrewarmCount: 20 --- !u!1 &380222158 GameObject: m_ObjectHideFlags: 0 @@ -448,13 +433,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 380222158} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &440971078 GameObject: @@ -483,13 +468,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 440971078} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: -50, z: 0} m_LocalScale: {x: 100, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1118650249} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!61 &440971081 BoxCollider2D: @@ -501,6 +486,25 @@ BoxCollider2D: m_Enabled: 1 m_Density: 1 m_Material: {fileID: 6200000, guid: 01b2dec7004cd734b9f0430b2ed4fd8e, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 m_IsTrigger: 0 m_UsedByEffector: 0 m_UsedByComposite: 0 @@ -534,6 +538,12 @@ Rigidbody2D: m_AngularDrag: 0.05 m_GravityScale: 0 m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 m_Interpolate: 0 m_SleepingMode: 1 m_CollisionDetection: 0 @@ -615,13 +625,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 493657732} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 50, y: 0, z: 0} m_LocalScale: {x: 1, y: 100, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1118650249} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!61 &493657735 BoxCollider2D: @@ -633,6 +643,25 @@ BoxCollider2D: m_Enabled: 1 m_Density: 1 m_Material: {fileID: 6200000, guid: 01b2dec7004cd734b9f0430b2ed4fd8e, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 m_IsTrigger: 0 m_UsedByEffector: 0 m_UsedByComposite: 0 @@ -666,6 +695,12 @@ Rigidbody2D: m_AngularDrag: 0.05 m_GravityScale: 0 m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 m_Interpolate: 0 m_SleepingMode: 1 m_CollisionDetection: 0 @@ -761,13 +796,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 768456151} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 13.660404, y: 44.446568, z: -0.17136917} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &872897443 GameObject: @@ -815,8 +850,6 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 593a2fe42fa9d37498c96f9a383b6521, type: 3} m_Name: m_EditorClassIdentifier: - RunInBackground: 1 - LogLevel: 1 NetworkConfig: ProtocolVersion: 0 NetworkTransport: {fileID: 872897450} @@ -840,6 +873,8 @@ MonoBehaviour: SpawnTimeout: 1 EnableNetworkLogs: 1 OldPrefabList: [] + RunInBackground: 1 + LogLevel: 1 --- !u!114 &872897447 MonoBehaviour: m_ObjectHideFlags: 0 @@ -864,13 +899,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 872897443} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &872897450 MonoBehaviour: @@ -926,13 +961,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1056217932} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -50, y: 0, z: 0} m_LocalScale: {x: 1, y: 100, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1118650249} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!61 &1056217935 BoxCollider2D: @@ -944,6 +979,25 @@ BoxCollider2D: m_Enabled: 1 m_Density: 1 m_Material: {fileID: 6200000, guid: 01b2dec7004cd734b9f0430b2ed4fd8e, type: 2} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_LayerOverridePriority: 0 + m_ForceSendLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ForceReceiveLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_ContactCaptureLayers: + serializedVersion: 2 + m_Bits: 4294967295 + m_CallbackLayers: + serializedVersion: 2 + m_Bits: 4294967295 m_IsTrigger: 0 m_UsedByEffector: 0 m_UsedByComposite: 0 @@ -977,6 +1031,12 @@ Rigidbody2D: m_AngularDrag: 0.05 m_GravityScale: 0 m_Material: {fileID: 0} + m_IncludeLayers: + serializedVersion: 2 + m_Bits: 0 + m_ExcludeLayers: + serializedVersion: 2 + m_Bits: 0 m_Interpolate: 0 m_SleepingMode: 1 m_CollisionDetection: 0 @@ -1054,6 +1114,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1118650248} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} @@ -1064,7 +1125,6 @@ Transform: - {fileID: 139820510} - {fileID: 493657733} m_Father: {fileID: 0} - m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1339728175 GameObject: @@ -1090,13 +1150,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1339728175} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 50} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1667533374} - m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!81 &1339728177 AudioListener: @@ -1227,13 +1287,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1380148066} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 9.653846, y: 34.922676, z: 21.610683} 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 &1468317138 GameObject: @@ -1280,13 +1340,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1468317138} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1667533368 GameObject: @@ -1337,9 +1397,20 @@ MonoBehaviour: m_Dithering: 0 m_ClearDepth: 1 m_AllowXRRendering: 1 + m_AllowHDROutput: 1 + m_UseScreenCoordOverride: 0 + m_ScreenSizeOverride: {x: 0, y: 0, z: 0, w: 0} + m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0} m_RequiresDepthTexture: 0 m_RequiresColorTexture: 0 m_Version: 2 + m_TaaSettings: + quality: 3 + frameInfluence: 0.1 + jitterScale: 1 + mipBias: 0 + varianceClampScale: 0.9 + contrastAdaptiveSharpening: 0 --- !u!124 &1667533371 Behaviour: m_ObjectHideFlags: 0 @@ -1362,9 +1433,17 @@ Camera: m_projectionMatrixMode: 1 m_GateFitMode: 2 m_FOVAxisMode: 0 + m_Iso: 200 + m_ShutterSpeed: 0.005 + m_Aperture: 16 + m_FocusDistance: 10 + m_FocalLength: 50 + m_BladeCount: 5 + m_Curvature: {x: 2, y: 11} + m_BarrelClipping: 0.25 + m_Anamorphism: 0 m_SensorSize: {x: 36, y: 24} m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 m_NormalizedViewPortRect: serializedVersion: 2 x: 0 @@ -1398,6 +1477,7 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1667533368} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1, z: -50} m_LocalScale: {x: 1, y: 1, z: 1} @@ -1405,7 +1485,6 @@ Transform: m_Children: - {fileID: 1339728176} m_Father: {fileID: 0} - m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1875612116 GameObject: @@ -1430,13 +1509,13 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1875612116} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: -10.915647, y: 20.098461, z: 8.925151} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1939453142 GameObject: @@ -1479,19 +1558,88 @@ Transform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1939453142} + serializedVersion: 2 m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1001 &2078876190 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 353012723220325942, guid: 6221fcaa4ef51bb4badceb82a86cff8f, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 353012723220325942, guid: 6221fcaa4ef51bb4badceb82a86cff8f, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 353012723220325942, guid: 6221fcaa4ef51bb4badceb82a86cff8f, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 353012723220325942, guid: 6221fcaa4ef51bb4badceb82a86cff8f, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 353012723220325942, guid: 6221fcaa4ef51bb4badceb82a86cff8f, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 353012723220325942, guid: 6221fcaa4ef51bb4badceb82a86cff8f, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 353012723220325942, guid: 6221fcaa4ef51bb4badceb82a86cff8f, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 353012723220325942, guid: 6221fcaa4ef51bb4badceb82a86cff8f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 353012723220325942, guid: 6221fcaa4ef51bb4badceb82a86cff8f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 353012723220325942, guid: 6221fcaa4ef51bb4badceb82a86cff8f, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 4100745325842416285, guid: 6221fcaa4ef51bb4badceb82a86cff8f, + type: 3} + propertyPath: m_Name + value: ExplosionsPool + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: 6221fcaa4ef51bb4badceb82a86cff8f, type: 3} --- !u!1001 &2334341849323676973 PrefabInstance: m_ObjectHideFlags: 0 serializedVersion: 2 m_Modification: + serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - target: {fileID: 4870249468168423719, guid: 5743ca0999e90d246a71c949488e1bdf, @@ -1555,4 +1703,98 @@ PrefabInstance: value: EnvironmentObjects objectReference: {fileID: 0} m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 5743ca0999e90d246a71c949488e1bdf, type: 3} +--- !u!1001 &4881783056451638245 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + serializedVersion: 3 + m_TransformParent: {fileID: 0} + m_Modifications: + - target: {fileID: 411308774211368270, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 411308774211368270, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 411308774211368270, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 411308774211368270, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 411308774211368270, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 411308774211368270, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 411308774211368270, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 411308774211368270, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 411308774211368270, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 411308774211368270, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 987422801466715749, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + propertyPath: m_NetworkManager + value: + objectReference: {fileID: 872897446} + - target: {fileID: 1086539700089093819, guid: ef7853ed8a0f97040914dca7bde9f23b, + type: 3} + propertyPath: m_Name + value: NetworkObjectPool + objectReference: {fileID: 0} + m_RemovedComponents: [] + m_RemovedGameObjects: [] + m_AddedGameObjects: [] + m_AddedComponents: [] + m_SourcePrefab: {fileID: 100100000, guid: ef7853ed8a0f97040914dca7bde9f23b, type: 3} +--- !u!1660057539 &9223372036854775807 +SceneRoots: + m_ObjectHideFlags: 0 + m_Roots: + - {fileID: 91422048} + - {fileID: 1667533374} + - {fileID: 1380148068} + - {fileID: 1118650249} + - {fileID: 872897449} + - {fileID: 4881783056451638245} + - {fileID: 1468317140} + - {fileID: 380222161} + - {fileID: 1875612117} + - {fileID: 768456153} + - {fileID: 2334341849323676973} + - {fileID: 215857577} + - {fileID: 1939453144} + - {fileID: 2078876190} diff --git a/Basic/2DSpaceShooter/Assets/Scripts/Asteroid.cs b/Basic/2DSpaceShooter/Assets/Scripts/Asteroid.cs index efcd1d334..b78a58c11 100644 --- a/Basic/2DSpaceShooter/Assets/Scripts/Asteroid.cs +++ b/Basic/2DSpaceShooter/Assets/Scripts/Asteroid.cs @@ -1,11 +1,11 @@ -using Unity.Netcode; +using Unity.Netcode; using UnityEngine; using UnityEngine.Assertions; public class Asteroid : NetworkBehaviour { static string s_ObjectPoolTag = "ObjectPool"; - + public static int numAsteroids = 0; NetworkObjectPool m_ObjectPool; @@ -14,7 +14,7 @@ public class Asteroid : NetworkBehaviour [SerializeField] private int m_NumCreates = 3; - + [HideInInspector] public GameObject asteroidPrefab; @@ -42,9 +42,9 @@ public void Explode() return; } Assert.IsTrue(NetworkManager.IsServer); - + numAsteroids -= 1; - + var newSize = Size.Value - 1; if (newSize > 0) @@ -56,9 +56,9 @@ public void Explode() int dx = Random.Range(0, 4) - 2; int dy = Random.Range(0, 4) - 2; Vector3 diff = new Vector3(dx * 0.3f, dy * 0.3f, 0); - + var go = m_ObjectPool.GetNetworkObject(asteroidPrefab, transform.position + diff, Quaternion.identity); - + var asteroid = go.GetComponent(); asteroid.Size = new NetworkVariable(newSize); asteroid.asteroidPrefab = asteroidPrefab; @@ -66,7 +66,7 @@ public void Explode() go.GetComponent().AddForce(diff * 10, ForceMode2D.Impulse); } } - + NetworkObject.Despawn(true); } } diff --git a/Basic/2DSpaceShooter/Assets/Scripts/Bullet.cs b/Basic/2DSpaceShooter/Assets/Scripts/Bullet.cs index ad398c6ed..53ca86cbe 100644 --- a/Basic/2DSpaceShooter/Assets/Scripts/Bullet.cs +++ b/Basic/2DSpaceShooter/Assets/Scripts/Bullet.cs @@ -1,4 +1,5 @@ -using System; +using System; +using System.Collections; using Unity.Netcode; using UnityEngine; @@ -8,8 +9,6 @@ public class Bullet : NetworkBehaviour int m_Damage = 5; ShipControl m_Owner; - public GameObject explosionParticle; - public void Config(ShipControl owner, int damage, bool bounce, float lifetime) { m_Owner = owner; @@ -17,15 +16,24 @@ public void Config(ShipControl owner, int damage, bool bounce, float lifetime) m_Bounce = bounce; if (IsServer) { - // This is bad code don't use invoke. - Invoke(nameof(DestroyBullet), lifetime); + StartCoroutine(BulletDestroyCoroutine(lifetime)); } } + IEnumerator BulletDestroyCoroutine(float lifetime) + { + yield return new WaitForSeconds(lifetime); + DestroyBullet(); + } + public override void OnNetworkDespawn() { - // This is inefficient, the explosion object could be pooled. - GameObject ex = Instantiate(explosionParticle, transform.position + new Vector3(0, 0, -2), Quaternion.identity); + if (IsClient) + { + ParticleSystem explosionParticles = ExplosionsPool.s_Singleton.Pool.Get(); + explosionParticles.transform.position = transform.position; + explosionParticles.Play(); + } } private void DestroyBullet() @@ -44,12 +52,12 @@ public void SetVelocity(Vector2 velocity) { var bulletRb = GetComponent(); bulletRb.velocity = velocity; - SetVelocityClientRpc(velocity); + ClientSetVelocityRpc(velocity); } } - [ClientRpc] - void SetVelocityClientRpc(Vector2 velocity) + [Rpc(SendTo.ClientsAndHost)] + void ClientSetVelocityRpc(Vector2 velocity) { if (!IsHost) { diff --git a/Basic/2DSpaceShooter/Assets/Scripts/ExplosionsPool.cs b/Basic/2DSpaceShooter/Assets/Scripts/ExplosionsPool.cs new file mode 100644 index 000000000..48308f784 --- /dev/null +++ b/Basic/2DSpaceShooter/Assets/Scripts/ExplosionsPool.cs @@ -0,0 +1,89 @@ +using System; +using UnityEngine; +using UnityEngine.Pool; + +public class ExplosionsPool : MonoBehaviour +{ + public static ExplosionsPool s_Singleton; + /// + /// Collection checks will throw errors if we try to release an item that is already in the pool. + /// + [SerializeField] + bool m_CollectionChecks = true; + [SerializeField] + int m_MaxPoolSize = 100; + [SerializeField] + GameObject m_ExplosionPrefab; + ObjectPool m_Pool; + + public ObjectPool Pool + { + get + { + if (m_Pool == null) + { + m_Pool = new ObjectPool(CreatePooledItem, OnTakeFromPool, OnReturnedToPool, OnDestroyPoolObject, m_CollectionChecks, 50, m_MaxPoolSize); + } + return m_Pool; + } + } + + void Awake() + { + if (s_Singleton != null && s_Singleton != this) + { + Destroy(gameObject); + return; + } + s_Singleton = this; + } + + void Start() + { + // create pool item instances at the start of a game to avoid performance loss throughout the game session + for (int i = 0; i < 10; i++) + { + s_Singleton.Pool.Get(); + } + } + + void OnDestroy() + { + if (s_Singleton == this) + { + s_Singleton = null; + } + } + + ParticleSystem CreatePooledItem() + { + var explosionParticles = Instantiate(m_ExplosionPrefab, transform.position + new Vector3(0, 0, -2), Quaternion.identity).GetComponent(); + explosionParticles.Stop(true, ParticleSystemStopBehavior.StopEmittingAndClear); + + //This is used to return ParticleSystems to the pool when they have stopped. + var returnToPool = explosionParticles.gameObject.AddComponent(); + returnToPool.Initialize(explosionParticles, Pool); + return explosionParticles; + } + + // Called when an item is returned to the pool using Release + void OnReturnedToPool(ParticleSystem system) + { + system.gameObject.SetActive(false); + system.gameObject.GetComponent().enabled = false; + } + + // Called when an item is taken from the pool using Get + void OnTakeFromPool(ParticleSystem system) + { + system.gameObject.SetActive(true); + system.gameObject.GetComponent().enabled = true; + } + + // If the pool capacity is reached then any items returned will be destroyed. + // We can control what the destroy behavior does, here we destroy the GameObject. + void OnDestroyPoolObject(ParticleSystem system) + { + Destroy(system.gameObject); + } +} diff --git a/Basic/2DSpaceShooter/Assets/Scripts/ExplosionsPool.cs.meta b/Basic/2DSpaceShooter/Assets/Scripts/ExplosionsPool.cs.meta new file mode 100644 index 000000000..c28e52d09 --- /dev/null +++ b/Basic/2DSpaceShooter/Assets/Scripts/ExplosionsPool.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: d3305ca95ec6e0c48aa691072c25b1c9 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Basic/2DSpaceShooter/Assets/Scripts/NetworkManagerHud.cs b/Basic/2DSpaceShooter/Assets/Scripts/NetworkManagerHud.cs index 30ed035fe..8f2c373ff 100644 --- a/Basic/2DSpaceShooter/Assets/Scripts/NetworkManagerHud.cs +++ b/Basic/2DSpaceShooter/Assets/Scripts/NetworkManagerHud.cs @@ -14,35 +14,35 @@ public class NetworkManagerHud : MonoBehaviour NetworkManager m_NetworkManager; UnityTransport m_Transport; - + // This is needed to make the port field more convenient. GUILayout.TextField is very limited and we want to be able to clear the field entirely so we can't cache this as ushort. string m_PortString = "7777"; string m_ConnectAddress = "127.0.0.1"; - + [SerializeField] UIDocument m_MainMenuUIDocument; [SerializeField] UIDocument m_InGameUIDocument; - + VisualElement m_MainMenuRootVisualElement; VisualElement m_InGameRootVisualElement; - + Button m_HostButton; - + Button m_ServerButton; - + Button m_ClientButton; Button m_ShutdownButton; - + TextField m_IPAddressField; - + TextField m_PortField; TextElement m_MenuStatusText; - + TextElement m_InGameStatusText; void Awake() @@ -51,7 +51,7 @@ void Awake() m_NetworkManager = GetComponent(); m_MainMenuRootVisualElement = m_MainMenuUIDocument.rootVisualElement; - + m_IPAddressField = m_MainMenuRootVisualElement.Q("IPAddressField"); m_PortField = m_MainMenuRootVisualElement.Q("PortField"); m_HostButton = m_MainMenuRootVisualElement.Q