From 1ce4e31a9681bf1a201d2723c8d97e07ecc16592 Mon Sep 17 00:00:00 2001 From: mob-sakai <12690315+mob-sakai@users.noreply.github.com> Date: Mon, 30 Sep 2024 01:10:58 +0900 Subject: [PATCH] feat: add project settings --- Assets/ProjectSettings/UIParticle.asset | 16 ++++++++ Assets/ProjectSettings/UIParticle.asset.meta | 8 ++++ Packages/src/Runtime/UIParticle.cs | 2 +- .../src/Runtime/UIParticleProjectSettings.cs | 40 +++++++++++++++++++ .../Runtime/UIParticleProjectSettings.cs.meta | 11 +++++ Packages/src/Runtime/UIParticleRenderer.cs | 5 ++- ProjectSettings/ProjectSettings.asset | 2 +- 7 files changed, 80 insertions(+), 4 deletions(-) create mode 100644 Assets/ProjectSettings/UIParticle.asset create mode 100644 Assets/ProjectSettings/UIParticle.asset.meta create mode 100644 Packages/src/Runtime/UIParticleProjectSettings.cs create mode 100644 Packages/src/Runtime/UIParticleProjectSettings.cs.meta diff --git a/Assets/ProjectSettings/UIParticle.asset b/Assets/ProjectSettings/UIParticle.asset new file mode 100644 index 0000000..c35aeba --- /dev/null +++ b/Assets/ProjectSettings/UIParticle.asset @@ -0,0 +1,16 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!114 &11400000 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 0} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f22a23b9d98e440478697f4adf30e61c, type: 3} + m_Name: UIParticle + m_EditorClassIdentifier: + m_EnableLinearToGamma: 1 + m_HideGeneratedObjects: 1 diff --git a/Assets/ProjectSettings/UIParticle.asset.meta b/Assets/ProjectSettings/UIParticle.asset.meta new file mode 100644 index 0000000..29755e2 --- /dev/null +++ b/Assets/ProjectSettings/UIParticle.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4b9df7b8a4193489299b8f477348ae0c +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/src/Runtime/UIParticle.cs b/Packages/src/Runtime/UIParticle.cs index 5d98577..40133d6 100644 --- a/Packages/src/Runtime/UIParticle.cs +++ b/Packages/src/Runtime/UIParticle.cs @@ -732,7 +732,7 @@ namespace Coffee.UIExtensions _bakeCamera.useOcclusionCulling = false; _bakeCamera.gameObject.SetActive(false); - _bakeCamera.gameObject.hideFlags = HideFlags.HideAndDontSave; + _bakeCamera.gameObject.hideFlags = UIParticleProjectSettings.globalHideFlags; return _bakeCamera; } diff --git a/Packages/src/Runtime/UIParticleProjectSettings.cs b/Packages/src/Runtime/UIParticleProjectSettings.cs new file mode 100644 index 0000000..ab295d6 --- /dev/null +++ b/Packages/src/Runtime/UIParticleProjectSettings.cs @@ -0,0 +1,40 @@ +#pragma warning disable CS0414 +using Coffee.UIParticleInternal; +using UnityEditor; +using UnityEngine; + +namespace Coffee.UIExtensions +{ + public class UIParticleProjectSettings : PreloadedProjectSettings + { + [Header("Setting")] + [SerializeField] + internal bool m_EnableLinearToGamma = true; + + public static bool enableLinearToGamma + { + get => instance.m_EnableLinearToGamma; + set => instance.m_EnableLinearToGamma = value; + } + + + [Header("Editor")] + [Tooltip("Hide the automatically generated objects.\n" + + " - UIParticleRenderer\n" + + " - UIParticle BakingCamera")] + [SerializeField] + private bool m_HideGeneratedObjects = true; + + public static HideFlags globalHideFlags => instance.m_HideGeneratedObjects + ? HideFlags.DontSave | HideFlags.NotEditable | HideFlags.HideInHierarchy | HideFlags.HideInInspector + : HideFlags.DontSave | HideFlags.NotEditable; + +#if UNITY_EDITOR + [SettingsProvider] + private static SettingsProvider CreateSettingsProvider() + { + return new PreloadedProjectSettingsProvider("Project/UI/UI Particle"); + } +#endif + } +} diff --git a/Packages/src/Runtime/UIParticleProjectSettings.cs.meta b/Packages/src/Runtime/UIParticleProjectSettings.cs.meta new file mode 100644 index 0000000..22e35af --- /dev/null +++ b/Packages/src/Runtime/UIParticleProjectSettings.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f22a23b9d98e440478697f4adf30e61c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Packages/src/Runtime/UIParticleRenderer.cs b/Packages/src/Runtime/UIParticleRenderer.cs index 7bc9920..38bf1e9 100644 --- a/Packages/src/Runtime/UIParticleRenderer.cs +++ b/Packages/src/Runtime/UIParticleRenderer.cs @@ -137,6 +137,7 @@ namespace Coffee.UIExtensions { base.OnEnable(); + hideFlags = UIParticleProjectSettings.globalHideFlags; if (!s_CombineInstances[0].mesh) { s_CombineInstances[0].mesh = new Mesh @@ -161,7 +162,7 @@ namespace Coffee.UIExtensions // Create renderer object. var go = new GameObject("[generated] UIParticleRenderer", typeof(UIParticleRenderer)) { - hideFlags = HideFlags.HideAndDontSave, + hideFlags = UIParticleProjectSettings.globalHideFlags, layer = parent.gameObject.layer }; @@ -416,7 +417,7 @@ namespace Coffee.UIExtensions _lastBounds = bounds; // Convert linear color to gamma color. - if (canvas.ShouldGammaToLinearInMesh()) + if (UIParticleProjectSettings.enableLinearToGamma && canvas.ShouldGammaToLinearInMesh()) { workerMesh.LinearToGamma(); } diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset index 03e0b48..d16eac7 100644 --- a/ProjectSettings/ProjectSettings.asset +++ b/ProjectSettings/ProjectSettings.asset @@ -124,7 +124,7 @@ PlayerSettings: bundleVersion: 1.0 preloadedAssets: - {fileID: 11400000, guid: 86087a0847f384b538391745dad4565c, type: 2} - - {fileID: 11400000, guid: be3e05903ef7041d39b3ef8ecdd47f08, type: 2} + - {fileID: 11400000, guid: 4b9df7b8a4193489299b8f477348ae0c, type: 2} metroInputSource: 0 wsaTransparentSwapchain: 0 m_HolographicPauseOnTrackingLoss: 1