You've already forked ParticleEffectForUGUI
mirror of
https://github.com/mob-sakai/ParticleEffectForUGUI.git
synced 2026-05-16 05:00:07 +00:00
Compare commits
8 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
598c85e0f4 | ||
|
|
5f479902aa | ||
|
|
2a66393cb0 | ||
|
|
2b3cec69ac | ||
|
|
a4dd8c5776 | ||
|
|
dd94bba43c | ||
|
|
2e813c5313 | ||
|
|
1b61904018 |
21
CHANGELOG.md
21
CHANGELOG.md
@@ -1,3 +1,24 @@
|
|||||||
|
## [4.10.3](https://github.com/mob-sakai/ParticleEffectForUGUI/compare/v4.10.2...v4.10.3) (2024-11-20)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* if not configured as a preloaded asset, the project settings asset will be regenerated ([abe0948](https://github.com/mob-sakai/ParticleEffectForUGUI/commit/abe09485f65dd4efd18e74675e752e0213bdf3be)), closes [#342](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/342)
|
||||||
|
|
||||||
|
## [4.10.2](https://github.com/mob-sakai/ParticleEffectForUGUI/compare/v4.10.1...v4.10.2) (2024-11-01)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* trail incorrect offset ([afe00a1](https://github.com/mob-sakai/ParticleEffectForUGUI/commit/afe00a1dde80eb1c0a7bb668b75f4c3733d3fa43)), closes [#335](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/335)
|
||||||
|
|
||||||
|
## [4.10.1](https://github.com/mob-sakai/ParticleEffectForUGUI/compare/v4.10.0...v4.10.1) (2024-09-29)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* mainTex will be ignored ([2ee69d0](https://github.com/mob-sakai/ParticleEffectForUGUI/commit/2ee69d04245fabce185f67dc9bd68c870e556564))
|
||||||
|
|
||||||
# [4.10.0](https://github.com/mob-sakai/ParticleEffectForUGUI/compare/v4.9.1...v4.10.0) (2024-09-29)
|
# [4.10.0](https://github.com/mob-sakai/ParticleEffectForUGUI/compare/v4.9.1...v4.10.0) (2024-09-29)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -134,6 +134,35 @@ namespace Coffee.UIParticleInternal
|
|||||||
Profiler.EndSample();
|
Profiler.EndSample();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Add a component of a specific type to the children of a GameObject.
|
||||||
|
/// </summary>
|
||||||
|
public static void AddComponentOnChildren<T>(this Component self, bool includeSelf)
|
||||||
|
where T : Component
|
||||||
|
{
|
||||||
|
if (self == null) return;
|
||||||
|
|
||||||
|
Profiler.BeginSample("(COF)[ComponentExt] AddComponentOnChildren > Self");
|
||||||
|
if (includeSelf && !self.TryGetComponent<T>(out _))
|
||||||
|
{
|
||||||
|
self.gameObject.AddComponent<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Profiler.EndSample();
|
||||||
|
|
||||||
|
Profiler.BeginSample("(COF)[ComponentExt] AddComponentOnChildren > Child");
|
||||||
|
var childCount = self.transform.childCount;
|
||||||
|
for (var i = 0; i < childCount; i++)
|
||||||
|
{
|
||||||
|
var child = self.transform.GetChild(i);
|
||||||
|
if (child.TryGetComponent<T>(out _)) continue;
|
||||||
|
|
||||||
|
child.gameObject.AddComponent<T>();
|
||||||
|
}
|
||||||
|
|
||||||
|
Profiler.EndSample();
|
||||||
|
}
|
||||||
|
|
||||||
#if !UNITY_2021_2_OR_NEWER && !UNITY_2020_3_45 && !UNITY_2020_3_46 && !UNITY_2020_3_47 && !UNITY_2020_3_48
|
#if !UNITY_2021_2_OR_NEWER && !UNITY_2020_3_45 && !UNITY_2020_3_46 && !UNITY_2020_3_47 && !UNITY_2020_3_48
|
||||||
public static T GetComponentInParent<T>(this Component self, bool includeInactive) where T : Component
|
public static T GetComponentInParent<T>(this Component self, bool includeInactive) where T : Component
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,125 +0,0 @@
|
|||||||
using System.Collections.Generic;
|
|
||||||
using UnityEditor;
|
|
||||||
using UnityEngine;
|
|
||||||
using UnityEngine.Profiling;
|
|
||||||
using UnityEngine.UI;
|
|
||||||
|
|
||||||
namespace Coffee.UIParticleInternal
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Extension methods for Graphic class.
|
|
||||||
/// </summary>
|
|
||||||
internal static class GraphicExtensions
|
|
||||||
{
|
|
||||||
private static readonly Vector3[] s_WorldCorners = new Vector3[4];
|
|
||||||
private static readonly Bounds s_ScreenBounds = new Bounds(new Vector3(0.5f, 0.5f, 0.5f), new Vector3(1, 1, 1));
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if a Graphic component is currently in the screen view.
|
|
||||||
/// </summary>
|
|
||||||
public static void GetMaterialsForRendering(this Graphic self, List<Material> result)
|
|
||||||
{
|
|
||||||
result.Clear();
|
|
||||||
if (!self) return;
|
|
||||||
|
|
||||||
var cr = self.canvasRenderer;
|
|
||||||
var count = cr.materialCount;
|
|
||||||
var popCount = cr.popMaterialCount;
|
|
||||||
|
|
||||||
if (result.Capacity < count + popCount)
|
|
||||||
{
|
|
||||||
result.Capacity = count + popCount;
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i = 0; i < count; i++)
|
|
||||||
{
|
|
||||||
result.Add(cr.GetMaterial(i));
|
|
||||||
}
|
|
||||||
|
|
||||||
for (var i = 0; i < popCount; i++)
|
|
||||||
{
|
|
||||||
result.Add(cr.GetPopMaterial(i));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Check if a Graphic component is currently in the screen view.
|
|
||||||
/// </summary>
|
|
||||||
public static bool IsInScreen(this Graphic self)
|
|
||||||
{
|
|
||||||
if (!self || !self.canvas) return false;
|
|
||||||
|
|
||||||
if (FrameCache.TryGet(self, nameof(IsInScreen), out bool result))
|
|
||||||
{
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
Profiler.BeginSample("(COF)[GraphicExt] IsInScreen");
|
|
||||||
var cam = self.canvas.renderMode != RenderMode.ScreenSpaceOverlay
|
|
||||||
? self.canvas.worldCamera
|
|
||||||
: null;
|
|
||||||
var min = new Vector3(float.MaxValue, float.MaxValue, float.MaxValue);
|
|
||||||
var max = new Vector3(float.MinValue, float.MinValue, float.MinValue);
|
|
||||||
self.rectTransform.GetWorldCorners(s_WorldCorners);
|
|
||||||
var screenSize = GetScreenSize();
|
|
||||||
for (var i = 0; i < 4; i++)
|
|
||||||
{
|
|
||||||
if (cam)
|
|
||||||
{
|
|
||||||
s_WorldCorners[i] = cam.WorldToViewportPoint(s_WorldCorners[i]);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
s_WorldCorners[i] = RectTransformUtility.WorldToScreenPoint(null, s_WorldCorners[i]);
|
|
||||||
s_WorldCorners[i].x /= screenSize.x;
|
|
||||||
s_WorldCorners[i].y /= screenSize.y;
|
|
||||||
}
|
|
||||||
|
|
||||||
s_WorldCorners[i].z = 0;
|
|
||||||
min = Vector3.Min(s_WorldCorners[i], min);
|
|
||||||
max = Vector3.Max(s_WorldCorners[i], max);
|
|
||||||
}
|
|
||||||
|
|
||||||
var bounds = new Bounds(min, Vector3.zero);
|
|
||||||
bounds.Encapsulate(max);
|
|
||||||
result = bounds.Intersects(s_ScreenBounds);
|
|
||||||
FrameCache.Set(self, nameof(IsInScreen), result);
|
|
||||||
Profiler.EndSample();
|
|
||||||
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Get the actual main texture of a Graphic component.
|
|
||||||
/// </summary>
|
|
||||||
public static Texture GetActualMainTexture(this Graphic self)
|
|
||||||
{
|
|
||||||
var image = self as Image;
|
|
||||||
if (image == null) return self.mainTexture;
|
|
||||||
|
|
||||||
var sprite = image.overrideSprite;
|
|
||||||
return sprite ? sprite.GetActualTexture() : self.mainTexture;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static Vector2Int GetScreenSize()
|
|
||||||
{
|
|
||||||
#if UNITY_EDITOR
|
|
||||||
if (!Application.isPlaying && !Camera.current)
|
|
||||||
{
|
|
||||||
var res = UnityStats.screenRes.Split('x');
|
|
||||||
return new Vector2Int(int.Parse(res[0]), int.Parse(res[1]));
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return new Vector2Int(Screen.width, Screen.height);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static float GetParentGroupAlpha(this Graphic self)
|
|
||||||
{
|
|
||||||
var alpha = self.canvasRenderer.GetAlpha();
|
|
||||||
if (Mathf.Approximately(alpha, 0)) return 1;
|
|
||||||
|
|
||||||
var inheritedAlpha = self.canvasRenderer.GetInheritedAlpha();
|
|
||||||
return Mathf.Clamp01(inheritedAlpha / alpha);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
fileFormatVersion: 2
|
|
||||||
guid: 3803b037cd2ed45459dd660072f223dd
|
|
||||||
MonoImporter:
|
|
||||||
externalObjects: {}
|
|
||||||
serializedVersion: 2
|
|
||||||
defaultReferences: []
|
|
||||||
executionOrder: 0
|
|
||||||
icon: {instanceID: 0}
|
|
||||||
userData:
|
|
||||||
assetBundleName:
|
|
||||||
assetBundleVariant:
|
|
||||||
@@ -1,9 +1,9 @@
|
|||||||
using System;
|
using System;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Reflection;
|
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using Object = UnityEngine.Object;
|
using Object = UnityEngine.Object;
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
|
using System.IO;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEditor.Build;
|
using UnityEditor.Build;
|
||||||
using UnityEditor.Build.Reporting;
|
using UnityEditor.Build.Reporting;
|
||||||
@@ -14,6 +14,14 @@ namespace Coffee.UIParticleInternal
|
|||||||
public abstract class PreloadedProjectSettings : ScriptableObject
|
public abstract class PreloadedProjectSettings : ScriptableObject
|
||||||
#if UNITY_EDITOR
|
#if UNITY_EDITOR
|
||||||
{
|
{
|
||||||
|
private class Postprocessor : AssetPostprocessor
|
||||||
|
{
|
||||||
|
private static void OnPostprocessAllAssets(string[] _, string[] __, string[] ___, string[] ____)
|
||||||
|
{
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private class PreprocessBuildWithReport : IPreprocessBuildWithReport
|
private class PreprocessBuildWithReport : IPreprocessBuildWithReport
|
||||||
{
|
{
|
||||||
int IOrderedCallback.callbackOrder => 0;
|
int IOrderedCallback.callbackOrder => 0;
|
||||||
@@ -24,32 +32,32 @@ namespace Coffee.UIParticleInternal
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
[InitializeOnLoadMethod]
|
|
||||||
[InitializeOnEnterPlayMode]
|
|
||||||
private static void Initialize()
|
private static void Initialize()
|
||||||
{
|
{
|
||||||
const BindingFlags flags = BindingFlags.Public | BindingFlags.Static | BindingFlags.FlattenHierarchy;
|
|
||||||
foreach (var t in TypeCache.GetTypesDerivedFrom(typeof(PreloadedProjectSettings<>)))
|
foreach (var t in TypeCache.GetTypesDerivedFrom(typeof(PreloadedProjectSettings<>)))
|
||||||
{
|
{
|
||||||
var defaultSettings = GetDefaultSettings(t);
|
var defaultSettings = GetDefaultSettings(t);
|
||||||
if (!defaultSettings)
|
if (!defaultSettings)
|
||||||
{
|
{
|
||||||
// When create a new instance, automatically set it as default settings.
|
// When create a new instance, automatically set it as default settings.
|
||||||
defaultSettings = t.GetProperty("instance", flags)
|
defaultSettings = CreateInstance(t) as PreloadedProjectSettings;
|
||||||
?.GetValue(null, null) as PreloadedProjectSettings;
|
SetDefaultSettings(defaultSettings);
|
||||||
}
|
}
|
||||||
else if (GetPreloadedSettings(t).Length != 1)
|
else if (GetPreloadedSettings(t).Length != 1)
|
||||||
{
|
{
|
||||||
SetDefaultSettings(defaultSettings);
|
SetDefaultSettings(defaultSettings);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
EditorApplication.QueuePlayerLoopUpdate();
|
if (defaultSettings)
|
||||||
|
{
|
||||||
|
defaultSettings.OnInitialize();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected static string GetDefaultName(Type type, bool nicify)
|
protected static string GetDefaultName(Type type, bool nicify)
|
||||||
{
|
{
|
||||||
var typeName = type.Name.Replace("ProjectSettings", "");
|
var typeName = type.Name;
|
||||||
return nicify
|
return nicify
|
||||||
? ObjectNames.NicifyVariableName(typeName)
|
? ObjectNames.NicifyVariableName(typeName)
|
||||||
: typeName;
|
: typeName;
|
||||||
@@ -74,6 +82,7 @@ namespace Coffee.UIParticleInternal
|
|||||||
protected static void SetDefaultSettings(PreloadedProjectSettings asset)
|
protected static void SetDefaultSettings(PreloadedProjectSettings asset)
|
||||||
{
|
{
|
||||||
if (!asset) return;
|
if (!asset) return;
|
||||||
|
|
||||||
var type = asset.GetType();
|
var type = asset.GetType();
|
||||||
if (string.IsNullOrEmpty(AssetDatabase.GetAssetPath(asset)))
|
if (string.IsNullOrEmpty(AssetDatabase.GetAssetPath(asset)))
|
||||||
{
|
{
|
||||||
@@ -84,7 +93,11 @@ namespace Coffee.UIParticleInternal
|
|||||||
|
|
||||||
var assetPath = $"Assets/ProjectSettings/{GetDefaultName(type, false)}.asset";
|
var assetPath = $"Assets/ProjectSettings/{GetDefaultName(type, false)}.asset";
|
||||||
assetPath = AssetDatabase.GenerateUniqueAssetPath(assetPath);
|
assetPath = AssetDatabase.GenerateUniqueAssetPath(assetPath);
|
||||||
AssetDatabase.CreateAsset(asset, assetPath);
|
if (!File.Exists(assetPath))
|
||||||
|
{
|
||||||
|
AssetDatabase.CreateAsset(asset, assetPath);
|
||||||
|
asset.OnCreateAsset();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var preloadedAssets = PlayerSettings.GetPreloadedAssets();
|
var preloadedAssets = PlayerSettings.GetPreloadedAssets();
|
||||||
@@ -98,6 +111,14 @@ namespace Coffee.UIParticleInternal
|
|||||||
|
|
||||||
AssetDatabase.Refresh();
|
AssetDatabase.Refresh();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected virtual void OnCreateAsset()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
protected virtual void OnInitialize()
|
||||||
|
{
|
||||||
|
}
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -6,6 +6,15 @@ namespace Coffee.UIParticleInternal
|
|||||||
{
|
{
|
||||||
internal static class Misc
|
internal static class Misc
|
||||||
{
|
{
|
||||||
|
public static T[] FindObjectsOfType<T>() where T : Object
|
||||||
|
{
|
||||||
|
#if UNITY_2023_1_OR_NEWER
|
||||||
|
return Object.FindObjectsByType<T>(FindObjectsInactive.Include, FindObjectsSortMode.None);
|
||||||
|
#else
|
||||||
|
return Object.FindObjectsOfType<T>();
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
public static void Destroy(Object obj)
|
public static void Destroy(Object obj)
|
||||||
{
|
{
|
||||||
if (!obj) return;
|
if (!obj) return;
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
fileFormatVersion: 2
|
fileFormatVersion: 2
|
||||||
guid: 39ed6a6b0a72e482488bd298b2ae762e
|
guid: 182319ecc315e4858b119764af0fbcb0
|
||||||
MonoImporter:
|
MonoImporter:
|
||||||
externalObjects: {}
|
externalObjects: {}
|
||||||
serializedVersion: 2
|
serializedVersion: 2
|
||||||
@@ -14,6 +14,8 @@ namespace Coffee.UIParticleInternal
|
|||||||
private static readonly FastAction s_AfterCanvasRebuildAction = new FastAction();
|
private static readonly FastAction s_AfterCanvasRebuildAction = new FastAction();
|
||||||
private static readonly FastAction s_LateAfterCanvasRebuildAction = new FastAction();
|
private static readonly FastAction s_LateAfterCanvasRebuildAction = new FastAction();
|
||||||
private static readonly FastAction s_BeforeCanvasRebuildAction = new FastAction();
|
private static readonly FastAction s_BeforeCanvasRebuildAction = new FastAction();
|
||||||
|
private static readonly FastAction s_OnScreenSizeChangedAction = new FastAction();
|
||||||
|
private static Vector2Int s_LastScreenSize;
|
||||||
|
|
||||||
static UIExtraCallbacks()
|
static UIExtraCallbacks()
|
||||||
{
|
{
|
||||||
@@ -48,6 +50,15 @@ namespace Coffee.UIParticleInternal
|
|||||||
remove => s_AfterCanvasRebuildAction.Remove(value);
|
remove => s_AfterCanvasRebuildAction.Remove(value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Event that occurs when the screen size changes.
|
||||||
|
/// </summary>
|
||||||
|
public static event Action onScreenSizeChanged
|
||||||
|
{
|
||||||
|
add => s_OnScreenSizeChangedAction.Add(value);
|
||||||
|
remove => s_OnScreenSizeChangedAction.Remove(value);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Initializes the UIExtraCallbacks to ensure proper event handling.
|
/// Initializes the UIExtraCallbacks to ensure proper event handling.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -77,6 +88,17 @@ namespace Coffee.UIParticleInternal
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
private static void OnBeforeCanvasRebuild()
|
private static void OnBeforeCanvasRebuild()
|
||||||
{
|
{
|
||||||
|
var screenSize = new Vector2Int(Screen.width, Screen.height);
|
||||||
|
if (s_LastScreenSize != screenSize)
|
||||||
|
{
|
||||||
|
if (s_LastScreenSize != default)
|
||||||
|
{
|
||||||
|
s_OnScreenSizeChangedAction.Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
s_LastScreenSize = screenSize;
|
||||||
|
}
|
||||||
|
|
||||||
s_BeforeCanvasRebuildAction.Invoke();
|
s_BeforeCanvasRebuildAction.Invoke();
|
||||||
InitializeAfterCanvasRebuild();
|
InitializeAfterCanvasRebuild();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,8 @@ using UnityEngine.UI;
|
|||||||
using Random = UnityEngine.Random;
|
using Random = UnityEngine.Random;
|
||||||
|
|
||||||
[assembly: InternalsVisibleTo("Coffee.UIParticle.Editor")]
|
[assembly: InternalsVisibleTo("Coffee.UIParticle.Editor")]
|
||||||
|
[assembly: InternalsVisibleTo("Coffee.UIParticle.PerformanceDemo")]
|
||||||
|
[assembly: InternalsVisibleTo("Coffee.UIParticle.Demo")]
|
||||||
|
|
||||||
namespace Coffee.UIExtensions
|
namespace Coffee.UIExtensions
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -24,7 +24,6 @@ namespace Coffee.UIExtensions
|
|||||||
private static readonly CombineInstance[] s_CombineInstances = { new CombineInstance() };
|
private static readonly CombineInstance[] s_CombineInstances = { new CombineInstance() };
|
||||||
private static readonly List<Material> s_Materials = new List<Material>(2);
|
private static readonly List<Material> s_Materials = new List<Material>(2);
|
||||||
private static MaterialPropertyBlock s_Mpb;
|
private static MaterialPropertyBlock s_Mpb;
|
||||||
private static readonly List<Color32> s_Colors = new List<Color32>();
|
|
||||||
private static readonly Vector3[] s_Corners = new Vector3[4];
|
private static readonly Vector3[] s_Corners = new Vector3[4];
|
||||||
private bool _delay;
|
private bool _delay;
|
||||||
private int _index;
|
private int _index;
|
||||||
@@ -189,7 +188,6 @@ namespace Coffee.UIExtensions
|
|||||||
if (!IsActive() || !_parent)
|
if (!IsActive() || !_parent)
|
||||||
{
|
{
|
||||||
MaterialRepository.Release(ref _modifiedMaterial);
|
MaterialRepository.Release(ref _modifiedMaterial);
|
||||||
_modifiedMaterial = null;
|
|
||||||
return baseMaterial;
|
return baseMaterial;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -215,10 +213,11 @@ namespace Coffee.UIExtensions
|
|||||||
);
|
);
|
||||||
if (!MaterialRepository.Valid(hash, _modifiedMaterial))
|
if (!MaterialRepository.Valid(hash, _modifiedMaterial))
|
||||||
{
|
{
|
||||||
MaterialRepository.Get(hash, ref _modifiedMaterial, () => new Material(modifiedMaterial)
|
MaterialRepository.Get(hash, ref _modifiedMaterial, x => new Material(x.mat)
|
||||||
{
|
{
|
||||||
hideFlags = HideFlags.HideAndDontSave
|
hideFlags = HideFlags.HideAndDontSave,
|
||||||
});
|
mainTexture = x.texture ? x.texture : x.mat.mainTexture
|
||||||
|
}, (mat: modifiedMaterial, texture));
|
||||||
}
|
}
|
||||||
|
|
||||||
return _modifiedMaterial;
|
return _modifiedMaterial;
|
||||||
@@ -543,6 +542,12 @@ namespace Coffee.UIExtensions
|
|||||||
return Matrix4x4.Translate(psPos)
|
return Matrix4x4.Translate(psPos)
|
||||||
* Matrix4x4.Scale(scale);
|
* Matrix4x4.Scale(scale);
|
||||||
case ParticleSystemSimulationSpace.World:
|
case ParticleSystemSimulationSpace.World:
|
||||||
|
if (_isTrail)
|
||||||
|
{
|
||||||
|
return Matrix4x4.Translate(psPos)
|
||||||
|
* Matrix4x4.Scale(scale)
|
||||||
|
* Matrix4x4.Translate(-psPos);
|
||||||
|
}
|
||||||
return Matrix4x4.Scale(scale);
|
return Matrix4x4.Scale(scale);
|
||||||
case ParticleSystemSimulationSpace.Custom:
|
case ParticleSystemSimulationSpace.Custom:
|
||||||
return Matrix4x4.Translate(_particleSystem.main.customSimulationSpace.position.GetScaled(scale))
|
return Matrix4x4.Translate(_particleSystem.main.customSimulationSpace.position.GetScaled(scale))
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
using Coffee.UIParticleInternal;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
using UnityEngine.Serialization;
|
using UnityEngine.Serialization;
|
||||||
using UnityEngine.UI;
|
using UnityEngine.UI;
|
||||||
@@ -51,11 +52,7 @@ namespace Coffee.UIExtensions.Demo
|
|||||||
|
|
||||||
public void EnableAnimations(bool flag)
|
public void EnableAnimations(bool flag)
|
||||||
{
|
{
|
||||||
#if UNITY_2023_1_OR_NEWER
|
foreach (var animator in Misc.FindObjectsOfType<Animator>())
|
||||||
foreach (var animator in FindObjectsByType<Animator>(FindObjectsInactive.Include, FindObjectsSortMode.None))
|
|
||||||
#else
|
|
||||||
foreach (var animator in FindObjectsOfType<Animator>())
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
animator.enabled = flag;
|
animator.enabled = flag;
|
||||||
}
|
}
|
||||||
@@ -83,11 +80,7 @@ namespace Coffee.UIExtensions.Demo
|
|||||||
|
|
||||||
public void UIParticle_Scale(float scale)
|
public void UIParticle_Scale(float scale)
|
||||||
{
|
{
|
||||||
#if UNITY_2023_1_OR_NEWER
|
foreach (var uip in Misc.FindObjectsOfType<UIParticle>())
|
||||||
foreach (var uip in FindObjectsByType<UIParticle>(FindObjectsInactive.Include, FindObjectsSortMode.None))
|
|
||||||
#else
|
|
||||||
foreach (var uip in FindObjectsOfType<UIParticle>())
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
uip.scale = scale;
|
uip.scale = scale;
|
||||||
}
|
}
|
||||||
@@ -95,11 +88,7 @@ namespace Coffee.UIExtensions.Demo
|
|||||||
|
|
||||||
public void ParticleSystem_WorldSpaseSimulation(bool flag)
|
public void ParticleSystem_WorldSpaseSimulation(bool flag)
|
||||||
{
|
{
|
||||||
#if UNITY_2023_1_OR_NEWER
|
foreach (var p in Misc.FindObjectsOfType<ParticleSystem>())
|
||||||
foreach (var p in FindObjectsByType<ParticleSystem>(FindObjectsInactive.Include, FindObjectsSortMode.None))
|
|
||||||
#else
|
|
||||||
foreach (var p in FindObjectsOfType<ParticleSystem>())
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
var main = p.main;
|
var main = p.main;
|
||||||
main.simulationSpace = flag
|
main.simulationSpace = flag
|
||||||
@@ -135,11 +124,7 @@ namespace Coffee.UIExtensions.Demo
|
|||||||
|
|
||||||
public void ParticleSystem_SetScale(float scale)
|
public void ParticleSystem_SetScale(float scale)
|
||||||
{
|
{
|
||||||
#if UNITY_2023_1_OR_NEWER
|
foreach (var ps in Misc.FindObjectsOfType<ParticleSystem>())
|
||||||
foreach (var ps in FindObjectsByType<ParticleSystem>(FindObjectsInactive.Include, FindObjectsSortMode.None))
|
|
||||||
#else
|
|
||||||
foreach (var ps in FindObjectsOfType<ParticleSystem>())
|
|
||||||
#endif
|
|
||||||
{
|
{
|
||||||
ps.transform.localScale = new Vector3(scale, scale, scale);
|
ps.transform.localScale = new Vector3(scale, scale, scale);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
"name": "com.coffee.ui-particle",
|
"name": "com.coffee.ui-particle",
|
||||||
"displayName": "UI Particle",
|
"displayName": "UI Particle",
|
||||||
"description": "This package provides a component to render particle effects for uGUI.\nThe particle rendering is maskable and sortable, without the need for an extra Camera, RenderTexture, or Canvas.",
|
"description": "This package provides a component to render particle effects for uGUI.\nThe particle rendering is maskable and sortable, without the need for an extra Camera, RenderTexture, or Canvas.",
|
||||||
"version": "4.10.0",
|
"version": "4.10.3",
|
||||||
"unity": "2018.2",
|
"unity": "2018.2",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
Reference in New Issue
Block a user