You've already forked ParticleEffectForUGUI
mirror of
https://github.com/mob-sakai/ParticleEffectForUGUI.git
synced 2026-05-14 20:20:06 +00:00
3.0.0-preview.1
# [3.0.0-preview.1](https://github.com/mob-sakai/ParticleEffectForUGUI/compare/v2.3.0...v3.0.0-preview.1) (2020-02-12) ### Bug Fixes * change the text in the inspector to make it more understandable. ([7ca0b6f](7ca0b6fa34)), closes [#66](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/66) * editor crashes when mesh is set to null when ParticleSystem.RenderMode=Mesh ([e5ebadd](e5ebadd847)), closes [#69](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/69) * getting massive errors on editor ([ef82fa8](ef82fa82a6)), closes [#67](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/67) * heavy editor UI ([d3b470a](d3b470a2be)) * remove a menu to add overlay camera ([f5d3b6e](f5d3b6edb5)) * rotating the particle rect may cause out of bounds ([3439842](3439842119)), closes [#55](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/55) * scale will be decrease on editor ([0c59846](0c59846f11)) * UI darker than normal when change to linear color space ([db4d8a7](db4d8a742c)), closes [#57](https://github.com/mob-sakai/ParticleEffectForUGUI/issues/57) ### Build System * update develop environment ([9fcf169](9fcf169cd3)) ### Features * add menu to import sample ([b8b1827](b8b1827318)) * add samples test ([287b5cc](287b5cc832)) * **editor:** add osc package (portable mode) ([6c7f880](6c7f880435)) ### BREAKING CHANGES * update develop environment to Unity 2018.3. Unity 2018.2 will continue to be supported.
This commit is contained in:
@@ -7,148 +7,149 @@ using PrefabStageUtility = UnityEditor.Experimental.SceneManagement.PrefabStageU
|
||||
|
||||
namespace Coffee.UIExtensions
|
||||
{
|
||||
/// <summary>
|
||||
/// </summary>
|
||||
[ExecuteInEditMode]
|
||||
public class UIParticleOverlayCamera : MonoBehaviour
|
||||
{
|
||||
//################################
|
||||
// Public/Protected Members.
|
||||
//################################
|
||||
/// <summary>
|
||||
/// Get instance object.
|
||||
/// If instance does not exist, Find instance in scene, or create new one.
|
||||
/// </summary>
|
||||
public static UIParticleOverlayCamera instance
|
||||
{
|
||||
get
|
||||
{
|
||||
/// <summary>
|
||||
/// </summary>
|
||||
[ExecuteInEditMode]
|
||||
[AddComponentMenu("")]
|
||||
public class UIParticleOverlayCamera : MonoBehaviour
|
||||
{
|
||||
//################################
|
||||
// Public/Protected Members.
|
||||
//################################
|
||||
/// <summary>
|
||||
/// Get instance object.
|
||||
/// If instance does not exist, Find instance in scene, or create new one.
|
||||
/// </summary>
|
||||
public static UIParticleOverlayCamera instance
|
||||
{
|
||||
get
|
||||
{
|
||||
#if UNITY_2018_3_OR_NEWER && UNITY_EDITOR
|
||||
// If current scene is prefab mode, create OverlayCamera for editor.
|
||||
var prefabStage = PrefabStageUtility.GetCurrentPrefabStage ();
|
||||
if (prefabStage != null && prefabStage.scene.isLoaded)
|
||||
{
|
||||
if (!s_InstanceForPrefabMode)
|
||||
{
|
||||
// This GameObject is not saved in prefab.
|
||||
// This GameObject is not shown in the hierarchy view.
|
||||
// When you exit prefab mode, this GameObject is destroyed automatically.
|
||||
var go = new GameObject (typeof (UIParticleOverlayCamera).Name + "_ForEditor")
|
||||
{
|
||||
hideFlags = HideFlags.HideAndDontSave,
|
||||
tag = "EditorOnly",
|
||||
};
|
||||
UnityEngine.SceneManagement.SceneManager.MoveGameObjectToScene (go, prefabStage.scene);
|
||||
s_InstanceForPrefabMode = go.AddComponent<UIParticleOverlayCamera> ();
|
||||
}
|
||||
return s_InstanceForPrefabMode;
|
||||
}
|
||||
// If current scene is prefab mode, create OverlayCamera for editor.
|
||||
var prefabStage = PrefabStageUtility.GetCurrentPrefabStage();
|
||||
if (prefabStage != null && prefabStage.scene.isLoaded)
|
||||
{
|
||||
if (!s_InstanceForPrefabMode)
|
||||
{
|
||||
// This GameObject is not saved in prefab.
|
||||
// This GameObject is not shown in the hierarchy view.
|
||||
// When you exit prefab mode, this GameObject is destroyed automatically.
|
||||
var go = new GameObject(typeof(UIParticleOverlayCamera).Name + "_ForEditor")
|
||||
{
|
||||
hideFlags = HideFlags.HideAndDontSave,
|
||||
tag = "EditorOnly",
|
||||
};
|
||||
UnityEngine.SceneManagement.SceneManager.MoveGameObjectToScene(go, prefabStage.scene);
|
||||
s_InstanceForPrefabMode = go.AddComponent<UIParticleOverlayCamera>();
|
||||
}
|
||||
return s_InstanceForPrefabMode;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Find instance in scene, or create new one.
|
||||
if (object.ReferenceEquals (s_Instance, null))
|
||||
{
|
||||
s_Instance = FindObjectOfType<UIParticleOverlayCamera> () ?? new GameObject (typeof (UIParticleOverlayCamera).Name, typeof (UIParticleOverlayCamera)).GetComponent<UIParticleOverlayCamera> ();
|
||||
s_Instance.gameObject.SetActive (true);
|
||||
s_Instance.enabled = true;
|
||||
}
|
||||
return s_Instance;
|
||||
}
|
||||
}
|
||||
// Find instance in scene, or create new one.
|
||||
if (object.ReferenceEquals(s_Instance, null))
|
||||
{
|
||||
s_Instance = FindObjectOfType<UIParticleOverlayCamera>() ?? new GameObject(typeof(UIParticleOverlayCamera).Name, typeof(UIParticleOverlayCamera)).GetComponent<UIParticleOverlayCamera>();
|
||||
s_Instance.gameObject.SetActive(true);
|
||||
s_Instance.enabled = true;
|
||||
}
|
||||
return s_Instance;
|
||||
}
|
||||
}
|
||||
|
||||
public static Camera GetCameraForOvrelay (Canvas canvas)
|
||||
{
|
||||
var i = instance;
|
||||
var rt = canvas.rootCanvas.transform as RectTransform;
|
||||
var cam = i.cameraForOvrelay;
|
||||
var trans = i.transform;
|
||||
cam.enabled = false;
|
||||
public static Camera GetCameraForOvrelay(Canvas canvas)
|
||||
{
|
||||
var i = instance;
|
||||
var rt = canvas.rootCanvas.transform as RectTransform;
|
||||
var cam = i.cameraForOvrelay;
|
||||
var trans = i.transform;
|
||||
cam.enabled = false;
|
||||
|
||||
var pos = rt.localPosition;
|
||||
cam.orthographic = true;
|
||||
cam.orthographicSize = Mathf.Max (pos.x, pos.y);
|
||||
cam.nearClipPlane = 0.3f;
|
||||
cam.farClipPlane = 1000f;
|
||||
pos.z -= 100;
|
||||
trans.localPosition = pos;
|
||||
var pos = rt.localPosition;
|
||||
cam.orthographic = true;
|
||||
cam.orthographicSize = Mathf.Max(pos.x, pos.y);
|
||||
cam.nearClipPlane = 0.3f;
|
||||
cam.farClipPlane = 1000f;
|
||||
pos.z -= 100;
|
||||
trans.localPosition = pos;
|
||||
|
||||
return cam;
|
||||
}
|
||||
return cam;
|
||||
}
|
||||
|
||||
//################################
|
||||
// Private Members.
|
||||
//################################
|
||||
Camera cameraForOvrelay { get { return m_Camera ? m_Camera : (m_Camera = GetComponent<Camera> ()) ? m_Camera : (m_Camera = gameObject.AddComponent<Camera> ()); } }
|
||||
Camera m_Camera;
|
||||
static UIParticleOverlayCamera s_Instance;
|
||||
//################################
|
||||
// Private Members.
|
||||
//################################
|
||||
Camera cameraForOvrelay { get { return m_Camera ? m_Camera : (m_Camera = GetComponent<Camera>()) ? m_Camera : (m_Camera = gameObject.AddComponent<Camera>()); } }
|
||||
Camera m_Camera;
|
||||
static UIParticleOverlayCamera s_Instance;
|
||||
#if UNITY_2018_3_OR_NEWER && UNITY_EDITOR
|
||||
static UIParticleOverlayCamera s_InstanceForPrefabMode;
|
||||
static UIParticleOverlayCamera s_InstanceForPrefabMode;
|
||||
#endif
|
||||
|
||||
/// <summary>
|
||||
/// Awake is called when the script instance is being loaded.
|
||||
/// </summary>
|
||||
void Awake ()
|
||||
{
|
||||
/// <summary>
|
||||
/// Awake is called when the script instance is being loaded.
|
||||
/// </summary>
|
||||
void Awake()
|
||||
{
|
||||
#if UNITY_2018_3_OR_NEWER && UNITY_EDITOR
|
||||
// OverlayCamera for editor.
|
||||
if (hideFlags == HideFlags.HideAndDontSave || s_InstanceForPrefabMode == this)
|
||||
{
|
||||
s_InstanceForPrefabMode = GetComponent<UIParticleOverlayCamera> ();
|
||||
return;
|
||||
}
|
||||
// OverlayCamera for editor.
|
||||
if (hideFlags == HideFlags.HideAndDontSave || s_InstanceForPrefabMode == this)
|
||||
{
|
||||
s_InstanceForPrefabMode = GetComponent<UIParticleOverlayCamera>();
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Hold the instance.
|
||||
if (s_Instance == null)
|
||||
{
|
||||
s_Instance = GetComponent<UIParticleOverlayCamera> ();
|
||||
}
|
||||
// If the instance is duplicated, destroy itself.
|
||||
else if (s_Instance != this)
|
||||
{
|
||||
UnityEngine.Debug.LogWarning ("Multiple " + typeof (UIParticleOverlayCamera).Name + " in scene.", this.gameObject);
|
||||
enabled = false;
|
||||
// Hold the instance.
|
||||
if (s_Instance == null)
|
||||
{
|
||||
s_Instance = GetComponent<UIParticleOverlayCamera>();
|
||||
}
|
||||
// If the instance is duplicated, destroy itself.
|
||||
else if (s_Instance != this)
|
||||
{
|
||||
UnityEngine.Debug.LogWarning("Multiple " + typeof(UIParticleOverlayCamera).Name + " in scene.", this.gameObject);
|
||||
enabled = false;
|
||||
#if UNITY_EDITOR
|
||||
|
||||
if (!Application.isPlaying)
|
||||
{
|
||||
DestroyImmediate (gameObject);
|
||||
}
|
||||
else
|
||||
if (!Application.isPlaying)
|
||||
{
|
||||
DestroyImmediate(gameObject);
|
||||
}
|
||||
else
|
||||
#endif
|
||||
{
|
||||
Destroy (gameObject);
|
||||
}
|
||||
return;
|
||||
}
|
||||
{
|
||||
Destroy(gameObject);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
cameraForOvrelay.enabled = false;
|
||||
cameraForOvrelay.enabled = false;
|
||||
|
||||
// Singleton has DontDestroy flag.
|
||||
if (Application.isPlaying)
|
||||
{
|
||||
DontDestroyOnLoad (gameObject);
|
||||
}
|
||||
}
|
||||
// Singleton has DontDestroy flag.
|
||||
if (Application.isPlaying)
|
||||
{
|
||||
DontDestroyOnLoad(gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// This function is called when the MonoBehaviour will be destroyed.
|
||||
/// </summary>
|
||||
void OnDestroy ()
|
||||
{
|
||||
/// <summary>
|
||||
/// This function is called when the MonoBehaviour will be destroyed.
|
||||
/// </summary>
|
||||
void OnDestroy()
|
||||
{
|
||||
#if UNITY_2018_3_OR_NEWER && UNITY_EDITOR
|
||||
if (s_InstanceForPrefabMode == this)
|
||||
{
|
||||
s_InstanceForPrefabMode = null;
|
||||
}
|
||||
if (s_InstanceForPrefabMode == this)
|
||||
{
|
||||
s_InstanceForPrefabMode = null;
|
||||
}
|
||||
#endif
|
||||
|
||||
// Clear instance on destroy.
|
||||
if (s_Instance == this)
|
||||
{
|
||||
s_Instance = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
// Clear instance on destroy.
|
||||
if (s_Instance == this)
|
||||
{
|
||||
s_Instance = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user