You've already forked ParticleEffectForUGUI
mirror of
https://github.com/mob-sakai/ParticleEffectForUGUI.git
synced 2026-05-15 12:40:08 +00:00
Compare commits
4 Commits
develop-ne
...
fix-333
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
67c7e816a7 | ||
|
|
109caed657 | ||
|
|
2a1cd502b4 | ||
|
|
78d0219235 |
@@ -31,3 +31,10 @@ MonoBehaviour:
|
|||||||
m_Path: UnityEngine.Screen, UnityEngine.CoreModule;height
|
m_Path: UnityEngine.Screen, UnityEngine.CoreModule;height
|
||||||
m_Arg2:
|
m_Arg2:
|
||||||
m_Path:
|
m_Path:
|
||||||
|
- m_Format: UIParticles:{0} Materials:{1}
|
||||||
|
m_Arg0:
|
||||||
|
m_Path: Coffee.UIExtensions.UIParticleUpdater, Coffee.UIParticle;uiParticleCount
|
||||||
|
m_Arg1:
|
||||||
|
m_Path: Coffee.UIParticleInternal.MaterialRepository, Coffee.UIParticle;count
|
||||||
|
m_Arg2:
|
||||||
|
m_Path:
|
||||||
|
|||||||
@@ -1,3 +1,10 @@
|
|||||||
|
## [4.9.1](https://github.com/mob-sakai/ParticleEffectForUGUI/compare/v4.9.0...v4.9.1) (2024-08-07)
|
||||||
|
|
||||||
|
|
||||||
|
### Bug Fixes
|
||||||
|
|
||||||
|
* ParticleSystem trails gain offset on parent canvas change ([2a1cd50](https://github.com/mob-sakai/ParticleEffectForUGUI/commit/2a1cd502b452b5b56edf8bcfe91adf99d1bb5147)), closes [#323](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/323)
|
||||||
|
|
||||||
# [4.9.0](https://github.com/mob-sakai/ParticleEffectForUGUI/compare/v4.8.1...v4.9.0) (2024-07-18)
|
# [4.9.0](https://github.com/mob-sakai/ParticleEffectForUGUI/compare/v4.8.1...v4.9.0) (2024-07-18)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -355,13 +355,6 @@ namespace Coffee.UIExtensions
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// This function is called when a direct or indirect parent of the transform of the GameObject has changed.
|
|
||||||
/// </summary>
|
|
||||||
protected override void OnTransformParentChanged()
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void ISerializationCallbackReceiver.OnBeforeSerialize()
|
void ISerializationCallbackReceiver.OnBeforeSerialize()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -593,7 +586,7 @@ namespace Coffee.UIExtensions
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void UpdateTransformScale()
|
internal void UpdateTransformScale(Vector3 ratio)
|
||||||
{
|
{
|
||||||
_tracker.Clear();
|
_tracker.Clear();
|
||||||
canvasScale = canvas.rootCanvas.transform.localScale.Inverse();
|
canvasScale = canvas.rootCanvas.transform.localScale.Inverse();
|
||||||
@@ -617,7 +610,7 @@ namespace Coffee.UIExtensions
|
|||||||
}
|
}
|
||||||
|
|
||||||
_tracker.Add(this, rectTransform, DrivenTransformProperties.Scale);
|
_tracker.Add(this, rectTransform, DrivenTransformProperties.Scale);
|
||||||
var newScale = parentScale.Inverse();
|
var newScale = parentScale.GetScaled(ratio).Inverse();
|
||||||
if (currentScale != newScale)
|
if (currentScale != newScale)
|
||||||
{
|
{
|
||||||
transform.localScale = newScale;
|
transform.localScale = newScale;
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using Coffee.UIParticleExtensions;
|
||||||
using UnityEditor;
|
using UnityEditor;
|
||||||
using UnityEngine;
|
using UnityEngine;
|
||||||
|
|
||||||
@@ -8,7 +9,7 @@ namespace Coffee.UIExtensions
|
|||||||
{
|
{
|
||||||
private static readonly List<UIParticle> s_ActiveParticles = new List<UIParticle>();
|
private static readonly List<UIParticle> s_ActiveParticles = new List<UIParticle>();
|
||||||
private static readonly List<UIParticleAttractor> s_ActiveAttractors = new List<UIParticleAttractor>();
|
private static readonly List<UIParticleAttractor> s_ActiveAttractors = new List<UIParticleAttractor>();
|
||||||
private static readonly HashSet<int> s_UpdatedGroupIds = new HashSet<int>();
|
private static readonly Dictionary<int, Vector3> s_GroupScales = new Dictionary<int, Vector3>();
|
||||||
private static int s_FrameCount;
|
private static int s_FrameCount;
|
||||||
|
|
||||||
public static int uiParticleCount => s_ActiveParticles.Count;
|
public static int uiParticleCount => s_ActiveParticles.Count;
|
||||||
@@ -53,14 +54,17 @@ namespace Coffee.UIExtensions
|
|||||||
// Do not allow it to be called in the same frame.
|
// Do not allow it to be called in the same frame.
|
||||||
if (s_FrameCount == Time.frameCount) return;
|
if (s_FrameCount == Time.frameCount) return;
|
||||||
s_FrameCount = Time.frameCount;
|
s_FrameCount = Time.frameCount;
|
||||||
|
s_GroupScales.Clear();
|
||||||
|
|
||||||
// Simulate -> Primary
|
// Simulate -> Primary
|
||||||
for (var i = 0; i < s_ActiveParticles.Count; i++)
|
for (var i = 0; i < s_ActiveParticles.Count; i++)
|
||||||
{
|
{
|
||||||
|
// Process only primary UIParticles.
|
||||||
var uip = s_ActiveParticles[i];
|
var uip = s_ActiveParticles[i];
|
||||||
if (!uip || !uip.canvas || !uip.isPrimary || !s_UpdatedGroupIds.Add(uip.groupId)) continue;
|
if (!uip || !uip.canvas || !uip.isPrimary || s_GroupScales.ContainsKey(uip.groupId)) continue;
|
||||||
|
|
||||||
uip.UpdateTransformScale();
|
s_GroupScales.Add(uip.groupId, uip.transform.parent.lossyScale);
|
||||||
|
uip.UpdateTransformScale(Vector3.one);
|
||||||
uip.UpdateRenderers();
|
uip.UpdateRenderers();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -70,20 +74,31 @@ namespace Coffee.UIExtensions
|
|||||||
var uip = s_ActiveParticles[i];
|
var uip = s_ActiveParticles[i];
|
||||||
if (!uip || !uip.canvas) continue;
|
if (!uip || !uip.canvas) continue;
|
||||||
|
|
||||||
uip.UpdateTransformScale();
|
// Case 1: Not using mesh sharing.
|
||||||
|
|
||||||
if (!uip.useMeshSharing)
|
if (!uip.useMeshSharing)
|
||||||
{
|
{
|
||||||
|
uip.UpdateTransformScale(Vector3.one);
|
||||||
uip.UpdateRenderers();
|
uip.UpdateRenderers();
|
||||||
}
|
}
|
||||||
else if (s_UpdatedGroupIds.Add(uip.groupId))
|
// Case 2: Using mesh sharing as primary.
|
||||||
|
else if (!s_GroupScales.TryGetValue(uip.groupId, out var groupScale))
|
||||||
{
|
{
|
||||||
|
s_GroupScales.Add(uip.groupId, uip.transform.parent.lossyScale);
|
||||||
|
uip.UpdateTransformScale(Vector3.one);
|
||||||
uip.UpdateRenderers();
|
uip.UpdateRenderers();
|
||||||
}
|
}
|
||||||
|
// Case 3: Using mesh sharing as replica. (Only scaling)
|
||||||
|
else
|
||||||
|
{
|
||||||
|
var parentScale = uip.transform.parent.lossyScale;
|
||||||
|
var ratio = parentScale.IsVisible()
|
||||||
|
? groupScale.GetScaled(parentScale.Inverse())
|
||||||
|
: Vector3.one;
|
||||||
|
ratio = Vector3.one;
|
||||||
|
uip.UpdateTransformScale(ratio);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
s_UpdatedGroupIds.Clear();
|
|
||||||
|
|
||||||
// Attract
|
// Attract
|
||||||
for (var i = 0; i < s_ActiveAttractors.Count; i++)
|
for (var i = 0; i < s_ActiveAttractors.Count; i++)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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.9.0",
|
"version": "4.9.1",
|
||||||
"unity": "2018.2",
|
"unity": "2018.2",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"repository": {
|
"repository": {
|
||||||
|
|||||||
Reference in New Issue
Block a user