Fix directory name
commit
db00300625
|
@ -0,0 +1 @@
|
||||||
|
./../../../../CHANGELOG.md
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f69dd9b54399641dfb767c86736e80e0
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: bfa5c13411fd24a1683670b0c3bf0d6b
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
|
@ -0,0 +1,100 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 077b84be6d052c34d933c79ef500be13
|
||||||
|
timeCreated: 1472624687
|
||||||
|
licenseType: Pro
|
||||||
|
TextureImporter:
|
||||||
|
fileIDToRecycleName: {}
|
||||||
|
serializedVersion: 4
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: -1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
filterMode: -1
|
||||||
|
aniso: -1
|
||||||
|
mipBias: -1
|
||||||
|
wrapMode: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 8
|
||||||
|
textureShape: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
platformSettings:
|
||||||
|
- buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
- buildTarget: Standalone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
- buildTarget: iPhone
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
- buildTarget: Android
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
- buildTarget: WebGL
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 1
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
spritePackingTag:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 293537681b71040d0a9b03e13c0e4a20
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 100100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 77533a9d6813e4163a176c4206b0aba2
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 100100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,335 @@
|
||||||
|
/// Credit glennpow, Zarlang
|
||||||
|
/// Sourced from - http://forum.unity3d.com/threads/free-script-particle-systems-in-ui-screen-space-overlay.406862/
|
||||||
|
/// Updated by Zarlang with a more robust implementation, including TextureSheet annimation support
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
namespace Coffee.UIExtensions.Demos
|
||||||
|
{
|
||||||
|
#if UNITY_5_3_OR_NEWER
|
||||||
|
[ExecuteInEditMode]
|
||||||
|
[RequireComponent(typeof(CanvasRenderer), typeof(ParticleSystem))]
|
||||||
|
public class UIParticleSystem_Demo : MaskableGraphic
|
||||||
|
{
|
||||||
|
[Tooltip("Having this enabled run the system in LateUpdate rather than in Update making it faster but less precise (more clunky)")]
|
||||||
|
public bool fixedTime = true;
|
||||||
|
|
||||||
|
private Transform _transform;
|
||||||
|
private ParticleSystem pSystem;
|
||||||
|
private ParticleSystem.Particle[] particles;
|
||||||
|
private UIVertex[] _quad = new UIVertex[4];
|
||||||
|
private Vector4 imageUV = Vector4.zero;
|
||||||
|
private ParticleSystem.TextureSheetAnimationModule textureSheetAnimation;
|
||||||
|
private int textureSheetAnimationFrames;
|
||||||
|
private Vector2 textureSheetAnimationFrameSize;
|
||||||
|
private ParticleSystemRenderer pRenderer;
|
||||||
|
|
||||||
|
private Material currentMaterial;
|
||||||
|
|
||||||
|
private Texture currentTexture;
|
||||||
|
|
||||||
|
#if UNITY_5_5_OR_NEWER
|
||||||
|
private ParticleSystem.MainModule mainModule;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
public override Texture mainTexture
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return currentTexture;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected bool Initialize()
|
||||||
|
{
|
||||||
|
// initialize members
|
||||||
|
if (_transform == null)
|
||||||
|
{
|
||||||
|
_transform = transform;
|
||||||
|
}
|
||||||
|
if (pSystem == null)
|
||||||
|
{
|
||||||
|
pSystem = GetComponent<ParticleSystem>();
|
||||||
|
|
||||||
|
if (pSystem == null)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
#if UNITY_5_5_OR_NEWER
|
||||||
|
mainModule = pSystem.main;
|
||||||
|
if (pSystem.main.maxParticles > 14000)
|
||||||
|
{
|
||||||
|
mainModule.maxParticles = 14000;
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
if (pSystem.maxParticles > 14000)
|
||||||
|
pSystem.maxParticles = 14000;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
pRenderer = pSystem.GetComponent<ParticleSystemRenderer>();
|
||||||
|
if (pRenderer != null)
|
||||||
|
pRenderer.enabled = false;
|
||||||
|
|
||||||
|
//Shader foundShader = Shader.Find("UI Extensions/Particles/Additive");
|
||||||
|
//Material pMaterial = new Material(foundShader);
|
||||||
|
|
||||||
|
//if (material == null)
|
||||||
|
//material = pMaterial;
|
||||||
|
|
||||||
|
currentMaterial = material;
|
||||||
|
if (currentMaterial && currentMaterial.HasProperty("_MainTex"))
|
||||||
|
{
|
||||||
|
currentTexture = currentMaterial.mainTexture;
|
||||||
|
if (currentTexture == null)
|
||||||
|
currentTexture = Texture2D.whiteTexture;
|
||||||
|
}
|
||||||
|
material = currentMaterial;
|
||||||
|
// automatically set scaling
|
||||||
|
#if UNITY_5_5_OR_NEWER
|
||||||
|
mainModule.scalingMode = ParticleSystemScalingMode.Hierarchy;
|
||||||
|
#else
|
||||||
|
pSystem.scalingMode = ParticleSystemScalingMode.Hierarchy;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
particles = null;
|
||||||
|
}
|
||||||
|
#if UNITY_5_5_OR_NEWER
|
||||||
|
if (particles == null)
|
||||||
|
particles = new ParticleSystem.Particle[pSystem.main.maxParticles];
|
||||||
|
#else
|
||||||
|
if (particles == null)
|
||||||
|
particles = new ParticleSystem.Particle[pSystem.maxParticles];
|
||||||
|
#endif
|
||||||
|
|
||||||
|
imageUV = new Vector4(0, 0, 1, 1);
|
||||||
|
|
||||||
|
// prepare texture sheet animation
|
||||||
|
textureSheetAnimation = pSystem.textureSheetAnimation;
|
||||||
|
textureSheetAnimationFrames = 0;
|
||||||
|
textureSheetAnimationFrameSize = Vector2.zero;
|
||||||
|
if (textureSheetAnimation.enabled)
|
||||||
|
{
|
||||||
|
textureSheetAnimationFrames = textureSheetAnimation.numTilesX * textureSheetAnimation.numTilesY;
|
||||||
|
textureSheetAnimationFrameSize = new Vector2(1f / textureSheetAnimation.numTilesX, 1f / textureSheetAnimation.numTilesY);
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Awake()
|
||||||
|
{
|
||||||
|
base.Awake();
|
||||||
|
if (!Initialize())
|
||||||
|
enabled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected override void OnPopulateMesh(VertexHelper vh)
|
||||||
|
{
|
||||||
|
#if UNITY_EDITOR
|
||||||
|
if (!Application.isPlaying)
|
||||||
|
{
|
||||||
|
if (!Initialize())
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
// prepare vertices
|
||||||
|
vh.Clear();
|
||||||
|
|
||||||
|
if (!gameObject.activeInHierarchy)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Vector2 temp = Vector2.zero;
|
||||||
|
Vector2 corner1 = Vector2.zero;
|
||||||
|
Vector2 corner2 = Vector2.zero;
|
||||||
|
// iterate through current particles
|
||||||
|
int count = pSystem.GetParticles(particles);
|
||||||
|
|
||||||
|
for (int i = 0; i < count; ++i)
|
||||||
|
{
|
||||||
|
ParticleSystem.Particle particle = particles[i];
|
||||||
|
|
||||||
|
// get particle properties
|
||||||
|
#if UNITY_5_5_OR_NEWER
|
||||||
|
Vector2 position = (mainModule.simulationSpace == ParticleSystemSimulationSpace.Local ? particle.position : _transform.InverseTransformPoint(particle.position));
|
||||||
|
#else
|
||||||
|
Vector2 position = (pSystem.simulationSpace == ParticleSystemSimulationSpace.Local ? particle.position : _transform.InverseTransformPoint(particle.position));
|
||||||
|
#endif
|
||||||
|
float rotation = -particle.rotation * Mathf.Deg2Rad;
|
||||||
|
float rotation90 = rotation + Mathf.PI / 2;
|
||||||
|
Color32 color = particle.GetCurrentColor(pSystem);
|
||||||
|
float size = particle.GetCurrentSize(pSystem) * 0.5f;
|
||||||
|
|
||||||
|
// apply scale
|
||||||
|
#if UNITY_5_5_OR_NEWER
|
||||||
|
if (mainModule.scalingMode == ParticleSystemScalingMode.Shape)
|
||||||
|
position /= canvas.scaleFactor;
|
||||||
|
#else
|
||||||
|
if (pSystem.scalingMode == ParticleSystemScalingMode.Shape)
|
||||||
|
position /= canvas.scaleFactor;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// apply texture sheet animation
|
||||||
|
Vector4 particleUV = imageUV;
|
||||||
|
if (textureSheetAnimation.enabled)
|
||||||
|
{
|
||||||
|
#if UNITY_5_5_OR_NEWER
|
||||||
|
float frameProgress = 1 - (particle.remainingLifetime / particle.startLifetime);
|
||||||
|
|
||||||
|
if (textureSheetAnimation.frameOverTime.curveMin != null)
|
||||||
|
{
|
||||||
|
frameProgress = textureSheetAnimation.frameOverTime.curveMin.Evaluate(1 - (particle.remainingLifetime / particle.startLifetime));
|
||||||
|
}
|
||||||
|
else if (textureSheetAnimation.frameOverTime.curve != null)
|
||||||
|
{
|
||||||
|
frameProgress = textureSheetAnimation.frameOverTime.curve.Evaluate(1 - (particle.remainingLifetime / particle.startLifetime));
|
||||||
|
}
|
||||||
|
else if (textureSheetAnimation.frameOverTime.constant > 0)
|
||||||
|
{
|
||||||
|
frameProgress = textureSheetAnimation.frameOverTime.constant - (particle.remainingLifetime / particle.startLifetime);
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
float frameProgress = 1 - (particle.lifetime / particle.startLifetime);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
frameProgress = Mathf.Repeat(frameProgress * textureSheetAnimation.cycleCount, 1);
|
||||||
|
int frame = 0;
|
||||||
|
|
||||||
|
switch (textureSheetAnimation.animation)
|
||||||
|
{
|
||||||
|
|
||||||
|
case ParticleSystemAnimationType.WholeSheet:
|
||||||
|
frame = Mathf.FloorToInt(frameProgress * textureSheetAnimationFrames);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ParticleSystemAnimationType.SingleRow:
|
||||||
|
frame = Mathf.FloorToInt(frameProgress * textureSheetAnimation.numTilesX);
|
||||||
|
|
||||||
|
int row = textureSheetAnimation.rowIndex;
|
||||||
|
// if (textureSheetAnimation.useRandomRow) { // FIXME - is this handled internally by rowIndex?
|
||||||
|
// row = Random.Range(0, textureSheetAnimation.numTilesY, using: particle.randomSeed);
|
||||||
|
// }
|
||||||
|
frame += row * textureSheetAnimation.numTilesX;
|
||||||
|
break;
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
frame %= textureSheetAnimationFrames;
|
||||||
|
|
||||||
|
particleUV.x = (frame % textureSheetAnimation.numTilesX) * textureSheetAnimationFrameSize.x;
|
||||||
|
particleUV.y = Mathf.FloorToInt(frame / textureSheetAnimation.numTilesX) * textureSheetAnimationFrameSize.y;
|
||||||
|
particleUV.z = particleUV.x + textureSheetAnimationFrameSize.x;
|
||||||
|
particleUV.w = particleUV.y + textureSheetAnimationFrameSize.y;
|
||||||
|
}
|
||||||
|
|
||||||
|
temp.x = particleUV.x;
|
||||||
|
temp.y = particleUV.y;
|
||||||
|
|
||||||
|
_quad[0] = UIVertex.simpleVert;
|
||||||
|
_quad[0].color = color;
|
||||||
|
_quad[0].uv0 = temp;
|
||||||
|
|
||||||
|
temp.x = particleUV.x;
|
||||||
|
temp.y = particleUV.w;
|
||||||
|
_quad[1] = UIVertex.simpleVert;
|
||||||
|
_quad[1].color = color;
|
||||||
|
_quad[1].uv0 = temp;
|
||||||
|
|
||||||
|
temp.x = particleUV.z;
|
||||||
|
temp.y = particleUV.w;
|
||||||
|
_quad[2] = UIVertex.simpleVert;
|
||||||
|
_quad[2].color = color;
|
||||||
|
_quad[2].uv0 = temp;
|
||||||
|
|
||||||
|
temp.x = particleUV.z;
|
||||||
|
temp.y = particleUV.y;
|
||||||
|
_quad[3] = UIVertex.simpleVert;
|
||||||
|
_quad[3].color = color;
|
||||||
|
_quad[3].uv0 = temp;
|
||||||
|
|
||||||
|
if (rotation == 0)
|
||||||
|
{
|
||||||
|
// no rotation
|
||||||
|
corner1.x = position.x - size;
|
||||||
|
corner1.y = position.y - size;
|
||||||
|
corner2.x = position.x + size;
|
||||||
|
corner2.y = position.y + size;
|
||||||
|
|
||||||
|
temp.x = corner1.x;
|
||||||
|
temp.y = corner1.y;
|
||||||
|
_quad[0].position = temp;
|
||||||
|
temp.x = corner1.x;
|
||||||
|
temp.y = corner2.y;
|
||||||
|
_quad[1].position = temp;
|
||||||
|
temp.x = corner2.x;
|
||||||
|
temp.y = corner2.y;
|
||||||
|
_quad[2].position = temp;
|
||||||
|
temp.x = corner2.x;
|
||||||
|
temp.y = corner1.y;
|
||||||
|
_quad[3].position = temp;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// apply rotation
|
||||||
|
Vector2 right = new Vector2(Mathf.Cos(rotation), Mathf.Sin(rotation)) * size;
|
||||||
|
Vector2 up = new Vector2(Mathf.Cos(rotation90), Mathf.Sin(rotation90)) * size;
|
||||||
|
|
||||||
|
_quad[0].position = position - right - up;
|
||||||
|
_quad[1].position = position - right + up;
|
||||||
|
_quad[2].position = position + right + up;
|
||||||
|
_quad[3].position = position + right - up;
|
||||||
|
}
|
||||||
|
|
||||||
|
vh.AddUIVertexQuad(_quad);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
if (!fixedTime && Application.isPlaying)
|
||||||
|
{
|
||||||
|
pSystem.Simulate(Time.unscaledDeltaTime, false, false, true);
|
||||||
|
SetAllDirty();
|
||||||
|
|
||||||
|
if ((currentMaterial != null && currentTexture != currentMaterial.mainTexture) ||
|
||||||
|
(material != null && currentMaterial != null && material.shader != currentMaterial.shader))
|
||||||
|
{
|
||||||
|
pSystem = null;
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void LateUpdate()
|
||||||
|
{
|
||||||
|
if (!Application.isPlaying)
|
||||||
|
{
|
||||||
|
SetAllDirty();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (fixedTime)
|
||||||
|
{
|
||||||
|
pSystem.Simulate(Time.unscaledDeltaTime, false, false, true);
|
||||||
|
SetAllDirty();
|
||||||
|
if ((currentMaterial != null && currentTexture != currentMaterial.mainTexture) ||
|
||||||
|
(material != null && currentMaterial != null && material.shader != currentMaterial.shader))
|
||||||
|
{
|
||||||
|
pSystem = null;
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (material == currentMaterial)
|
||||||
|
return;
|
||||||
|
pSystem = null;
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f5f85388e938d9e4599afc6d9441ed57
|
||||||
|
timeCreated: 1464383716
|
||||||
|
licenseType: Pro
|
||||||
|
MonoImporter:
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,12 @@
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Coffee.UIExtensions.Demo
|
||||||
|
{
|
||||||
|
public class UIParticle_Demo : MonoBehaviour
|
||||||
|
{
|
||||||
|
public void SetTimeScale(float scale)
|
||||||
|
{
|
||||||
|
Time.timeScale = scale;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: eba3b7ce20b7f470a891c84def6be7e4
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,33 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!84 &8400000
|
||||||
|
RenderTexture:
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_Name: UIParticle_Demo
|
||||||
|
m_ImageContentsHash:
|
||||||
|
serializedVersion: 2
|
||||||
|
Hash: 00000000000000000000000000000000
|
||||||
|
m_ForcedFallbackFormat: 4
|
||||||
|
m_DownscaleFallback: 0
|
||||||
|
m_Width: 256
|
||||||
|
m_Height: 256
|
||||||
|
m_AntiAliasing: 1
|
||||||
|
m_DepthFormat: 0
|
||||||
|
m_ColorFormat: 0
|
||||||
|
m_MipMap: 0
|
||||||
|
m_GenerateMips: 1
|
||||||
|
m_SRGB: 0
|
||||||
|
m_UseDynamicScale: 0
|
||||||
|
m_BindMS: 0
|
||||||
|
m_TextureSettings:
|
||||||
|
serializedVersion: 2
|
||||||
|
m_FilterMode: 1
|
||||||
|
m_Aniso: 0
|
||||||
|
m_MipBias: 0
|
||||||
|
m_WrapU: 1
|
||||||
|
m_WrapV: 1
|
||||||
|
m_WrapW: 1
|
||||||
|
m_Dimension: 2
|
||||||
|
m_VolumeDepth: 1
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ab4cc8f5f51c14175af41c4daa68cbf5
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 8400000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 1fc4d0f41c2bd3745b97b439cca95c22
|
||||||
|
timeCreated: 1494672490
|
||||||
|
licenseType: Store
|
||||||
|
DefaultImporter:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,84 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_Name: UIParticle_Demo_Fire
|
||||||
|
m_Shader: {fileID: 4800000, guid: ecfa8f5732b504ef98fba10aa18d0326, type: 3}
|
||||||
|
m_ShaderKeywords:
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _BumpMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailAlbedoMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailMask:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailNormalMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _EmissionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MainTex:
|
||||||
|
m_Texture: {fileID: 2800000, guid: df33a97a787f8a64a82b59ee073e7cd7, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MetallicGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OcclusionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _ParallaxMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Floats:
|
||||||
|
- _BumpScale: 1
|
||||||
|
- _ColorMask: 15
|
||||||
|
- _Cutoff: 0.5
|
||||||
|
- _DetailNormalMapScale: 1
|
||||||
|
- _DstBlend: 0
|
||||||
|
- _GlossMapScale: 1
|
||||||
|
- _Glossiness: 0.5
|
||||||
|
- _GlossyReflections: 1
|
||||||
|
- _InvFade: 1
|
||||||
|
- _Metallic: 0
|
||||||
|
- _Mode: 0
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.02
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _Stencil: 0
|
||||||
|
- _StencilComp: 8
|
||||||
|
- _StencilOp: 0
|
||||||
|
- _StencilReadMask: 255
|
||||||
|
- _StencilWriteMask: 255
|
||||||
|
- _UVSec: 0
|
||||||
|
- _ZWrite: 1
|
||||||
|
m_Colors:
|
||||||
|
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _TintColor: {r: 1, g: 1, b: 1, a: 1}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 57cef6c0f7570214991e091275f08894
|
||||||
|
timeCreated: 1494793998
|
||||||
|
licenseType: Store
|
||||||
|
NativeFormatImporter:
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
After Width: | Height: | Size: 5.4 MiB |
|
@ -0,0 +1,92 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: df33a97a787f8a64a82b59ee073e7cd7
|
||||||
|
timeCreated: 1494793876
|
||||||
|
licenseType: Store
|
||||||
|
TextureImporter:
|
||||||
|
fileIDToRecycleName: {}
|
||||||
|
serializedVersion: 4
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 1
|
||||||
|
sRGBTexture: 1
|
||||||
|
linearTexture: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 6
|
||||||
|
cubemapConvolution: 0
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: 1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
filterMode: 2
|
||||||
|
aniso: 16
|
||||||
|
mipBias: -1
|
||||||
|
wrapMode: -1
|
||||||
|
nPOTScale: 1
|
||||||
|
lightmap: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
spriteMode: 0
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
alphaUsage: 1
|
||||||
|
alphaIsTransparency: 0
|
||||||
|
spriteTessellationDetail: -1
|
||||||
|
textureType: 0
|
||||||
|
textureShape: 1
|
||||||
|
maxTextureSizeSet: 0
|
||||||
|
compressionQualitySet: 0
|
||||||
|
textureFormatSet: 0
|
||||||
|
platformSettings:
|
||||||
|
- buildTarget: DefaultTexturePlatform
|
||||||
|
maxTextureSize: 4096
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 2
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
- buildTarget: Standalone
|
||||||
|
maxTextureSize: 4096
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 2
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
- buildTarget: Android
|
||||||
|
maxTextureSize: 4096
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 2
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
- buildTarget: WebGL
|
||||||
|
maxTextureSize: 4096
|
||||||
|
textureFormat: -1
|
||||||
|
textureCompression: 2
|
||||||
|
compressionQuality: 50
|
||||||
|
crunchedCompression: 0
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
overridden: 0
|
||||||
|
spriteSheet:
|
||||||
|
serializedVersion: 2
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
spritePackingTag:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,84 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_Name: UIParticle_Demo_Spread
|
||||||
|
m_Shader: {fileID: 4800000, guid: ecfa8f5732b504ef98fba10aa18d0326, type: 3}
|
||||||
|
m_ShaderKeywords:
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _BumpMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailAlbedoMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailMask:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailNormalMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _EmissionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MainTex:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MetallicGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OcclusionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _ParallaxMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Floats:
|
||||||
|
- _BumpScale: 1
|
||||||
|
- _ColorMask: 15
|
||||||
|
- _Cutoff: 0.5
|
||||||
|
- _DetailNormalMapScale: 1
|
||||||
|
- _DstBlend: 0
|
||||||
|
- _GlossMapScale: 1
|
||||||
|
- _Glossiness: 0.5
|
||||||
|
- _GlossyReflections: 1
|
||||||
|
- _InvFade: 1
|
||||||
|
- _Metallic: 0
|
||||||
|
- _Mode: 0
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.02
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _Stencil: 0
|
||||||
|
- _StencilComp: 8
|
||||||
|
- _StencilOp: 0
|
||||||
|
- _StencilReadMask: 255
|
||||||
|
- _StencilWriteMask: 255
|
||||||
|
- _UVSec: 0
|
||||||
|
- _ZWrite: 1
|
||||||
|
m_Colors:
|
||||||
|
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
||||||
|
- _TintColor: {r: 1, g: 1, b: 1, a: 1}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 356b9d0e2cad849c3b53c7e9e1680cb7
|
||||||
|
timeCreated: 1494793998
|
||||||
|
licenseType: Store
|
||||||
|
NativeFormatImporter:
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Binary file not shown.
After Width: | Height: | Size: 34 KiB |
|
@ -0,0 +1,57 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 925f66fdcc9764b579413b7408c718f2
|
||||||
|
timeCreated: 1488188399
|
||||||
|
licenseType: Pro
|
||||||
|
TextureImporter:
|
||||||
|
fileIDToRecycleName: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
mipmaps:
|
||||||
|
mipMapMode: 0
|
||||||
|
enableMipMap: 0
|
||||||
|
linearTexture: 0
|
||||||
|
correctGamma: 0
|
||||||
|
fadeOut: 0
|
||||||
|
borderMipMap: 0
|
||||||
|
mipMapFadeDistanceStart: 1
|
||||||
|
mipMapFadeDistanceEnd: 3
|
||||||
|
bumpmap:
|
||||||
|
convertToNormalMap: 0
|
||||||
|
externalNormalMap: 0
|
||||||
|
heightScale: 0.25
|
||||||
|
normalMapFilter: 0
|
||||||
|
isReadable: 0
|
||||||
|
grayScaleToAlpha: 0
|
||||||
|
generateCubemap: 0
|
||||||
|
cubemapConvolution: 0
|
||||||
|
cubemapConvolutionSteps: 7
|
||||||
|
cubemapConvolutionExponent: 1.5
|
||||||
|
seamlessCubemap: 0
|
||||||
|
textureFormat: -1
|
||||||
|
maxTextureSize: 2048
|
||||||
|
textureSettings:
|
||||||
|
filterMode: 0
|
||||||
|
aniso: 16
|
||||||
|
mipBias: -1
|
||||||
|
wrapMode: 1
|
||||||
|
nPOTScale: 0
|
||||||
|
lightmap: 0
|
||||||
|
rGBM: 0
|
||||||
|
compressionQuality: 50
|
||||||
|
allowsAlphaSplitting: 0
|
||||||
|
spriteMode: 1
|
||||||
|
spriteExtrude: 1
|
||||||
|
spriteMeshType: 1
|
||||||
|
alignment: 0
|
||||||
|
spritePivot: {x: 0.5, y: 0.5}
|
||||||
|
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
|
||||||
|
spritePixelsToUnits: 100
|
||||||
|
alphaIsTransparency: 1
|
||||||
|
textureType: 8
|
||||||
|
buildTargetSettings: []
|
||||||
|
spriteSheet:
|
||||||
|
sprites: []
|
||||||
|
outline: []
|
||||||
|
spritePackingTag:
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: f479867169fb04929b98c38e646b83c5
|
||||||
|
folderAsset: yes
|
||||||
|
DefaultImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,70 @@
|
||||||
|
using UnityEditor;
|
||||||
|
using UnityEditor.UI;
|
||||||
|
using UnityEngine;
|
||||||
|
|
||||||
|
namespace Coffee.UIExtensions
|
||||||
|
{
|
||||||
|
[CustomEditor(typeof(UIParticle))]
|
||||||
|
[CanEditMultipleObjects]
|
||||||
|
public class UIParticleEditor : GraphicEditor
|
||||||
|
{
|
||||||
|
//################################
|
||||||
|
// Constant or Static Members.
|
||||||
|
//################################
|
||||||
|
static readonly GUIContent contentParticleMaterial = new GUIContent("Particle Material", "The material for rendering particles");
|
||||||
|
static readonly GUIContent contentTrailMaterial = new GUIContent("Trail Material", "The material for rendering particle trails");
|
||||||
|
|
||||||
|
|
||||||
|
//################################
|
||||||
|
// Public/Protected Members.
|
||||||
|
//################################
|
||||||
|
/// <summary>
|
||||||
|
/// This function is called when the object becomes enabled and active.
|
||||||
|
/// </summary>
|
||||||
|
protected override void OnEnable()
|
||||||
|
{
|
||||||
|
base.OnEnable();
|
||||||
|
_spParticleSystem = serializedObject.FindProperty("m_ParticleSystem");
|
||||||
|
_spTrailParticle = serializedObject.FindProperty("m_TrailParticle");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Implement this function to make a custom inspector.
|
||||||
|
/// </summary>
|
||||||
|
public override void OnInspectorGUI()
|
||||||
|
{
|
||||||
|
serializedObject.Update();
|
||||||
|
|
||||||
|
EditorGUILayout.PropertyField(_spParticleSystem);
|
||||||
|
EditorGUI.indentLevel++;
|
||||||
|
var ps = _spParticleSystem.objectReferenceValue as ParticleSystem;
|
||||||
|
if (ps)
|
||||||
|
{
|
||||||
|
var pr = ps.GetComponent<ParticleSystemRenderer>();
|
||||||
|
var sp = new SerializedObject(pr).FindProperty("m_Materials");
|
||||||
|
|
||||||
|
EditorGUILayout.PropertyField(sp.GetArrayElementAtIndex(0), contentParticleMaterial);
|
||||||
|
EditorGUILayout.PropertyField(sp.GetArrayElementAtIndex(1), contentTrailMaterial);
|
||||||
|
sp.serializedObject.ApplyModifiedProperties();
|
||||||
|
|
||||||
|
if(!Application.isPlaying && pr.enabled)
|
||||||
|
{
|
||||||
|
EditorGUILayout.HelpBox("ParticleSystemRenderer will be disable on playing.", MessageType.Info);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
EditorGUI.indentLevel--;
|
||||||
|
|
||||||
|
EditorGUI.BeginDisabledGroup(true);
|
||||||
|
EditorGUILayout.PropertyField(_spTrailParticle);
|
||||||
|
EditorGUI.EndDisabledGroup();
|
||||||
|
|
||||||
|
serializedObject.ApplyModifiedProperties();
|
||||||
|
}
|
||||||
|
|
||||||
|
//################################
|
||||||
|
// Private Members.
|
||||||
|
//################################
|
||||||
|
SerializedProperty _spParticleSystem;
|
||||||
|
SerializedProperty _spTrailParticle;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 37cdd12f98487483aba53394d2174e31
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: 0
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1 @@
|
||||||
|
./../../../../LICENSE.txt
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ad82da1cf120442c7950d301ea3c1543
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,7 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: c0ba14a84a98844a68c60835d602a332
|
||||||
|
TextScriptImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,83 @@
|
||||||
|
%YAML 1.1
|
||||||
|
%TAG !u! tag:unity3d.com,2011:
|
||||||
|
--- !u!21 &2100000
|
||||||
|
Material:
|
||||||
|
serializedVersion: 6
|
||||||
|
m_ObjectHideFlags: 0
|
||||||
|
m_CorrespondingSourceObject: {fileID: 0}
|
||||||
|
m_PrefabInternal: {fileID: 0}
|
||||||
|
m_Name: UIAdditive
|
||||||
|
m_Shader: {fileID: 4800000, guid: ecfa8f5732b504ef98fba10aa18d0326, type: 3}
|
||||||
|
m_ShaderKeywords:
|
||||||
|
m_LightmapFlags: 4
|
||||||
|
m_EnableInstancingVariants: 0
|
||||||
|
m_DoubleSidedGI: 0
|
||||||
|
m_CustomRenderQueue: -1
|
||||||
|
stringTagMap: {}
|
||||||
|
disabledShaderPasses: []
|
||||||
|
m_SavedProperties:
|
||||||
|
serializedVersion: 3
|
||||||
|
m_TexEnvs:
|
||||||
|
- _BumpMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailAlbedoMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailMask:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _DetailNormalMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _EmissionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MainTex:
|
||||||
|
m_Texture: {fileID: 2800000, guid: 975570a90d56c477582e12d440dc9931, type: 3}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _MetallicGlossMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _OcclusionMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
- _ParallaxMap:
|
||||||
|
m_Texture: {fileID: 0}
|
||||||
|
m_Scale: {x: 1, y: 1}
|
||||||
|
m_Offset: {x: 0, y: 0}
|
||||||
|
m_Floats:
|
||||||
|
- _BumpScale: 1
|
||||||
|
- _ColorMask: 15
|
||||||
|
- _Cutoff: 0.5
|
||||||
|
- _DetailNormalMapScale: 1
|
||||||
|
- _DstBlend: 0
|
||||||
|
- _GlossMapScale: 1
|
||||||
|
- _Glossiness: 0.5
|
||||||
|
- _GlossyReflections: 1
|
||||||
|
- _Metallic: 0
|
||||||
|
- _Mode: 0
|
||||||
|
- _OcclusionStrength: 1
|
||||||
|
- _Parallax: 0.02
|
||||||
|
- _SmoothnessTextureChannel: 0
|
||||||
|
- _SpecularHighlights: 1
|
||||||
|
- _SrcBlend: 1
|
||||||
|
- _Stencil: 0
|
||||||
|
- _StencilComp: 8
|
||||||
|
- _StencilOp: 0
|
||||||
|
- _StencilReadMask: 255
|
||||||
|
- _StencilWriteMask: 255
|
||||||
|
- _UVSec: 0
|
||||||
|
- _UseUIAlphaClip: 0
|
||||||
|
- _ZWrite: 1
|
||||||
|
m_Colors:
|
||||||
|
- _Color: {r: 1, g: 1, b: 1, a: 1}
|
||||||
|
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
|
|
@ -0,0 +1,8 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: e44a36783dcfc43bdab399a1adcef4f5
|
||||||
|
NativeFormatImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
mainObjectFileID: 2100000
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,93 @@
|
||||||
|
Shader "UI/Additive"
|
||||||
|
{
|
||||||
|
Properties
|
||||||
|
{
|
||||||
|
_MainTex ("Sprite Texture", 2D) = "white" {}
|
||||||
|
_Color ("Tint", Color) = (1,1,1,1)
|
||||||
|
|
||||||
|
_StencilComp ("Stencil Comparison", Float) = 8
|
||||||
|
_Stencil ("Stencil ID", Float) = 0
|
||||||
|
_StencilOp ("Stencil Operation", Float) = 0
|
||||||
|
_StencilWriteMask ("Stencil Write Mask", Float) = 255
|
||||||
|
_StencilReadMask ("Stencil Read Mask", Float) = 255
|
||||||
|
|
||||||
|
_ColorMask ("Color Mask", Float) = 15
|
||||||
|
}
|
||||||
|
|
||||||
|
SubShader
|
||||||
|
{
|
||||||
|
Tags
|
||||||
|
{
|
||||||
|
"Queue"="Transparent"
|
||||||
|
"IgnoreProjector"="True"
|
||||||
|
"RenderType"="Transparent"
|
||||||
|
"PreviewType"="Plane"
|
||||||
|
"CanUseSpriteAtlas"="True"
|
||||||
|
}
|
||||||
|
|
||||||
|
Stencil
|
||||||
|
{
|
||||||
|
Ref [_Stencil]
|
||||||
|
Comp [_StencilComp]
|
||||||
|
Pass [_StencilOp]
|
||||||
|
ReadMask [_StencilReadMask]
|
||||||
|
WriteMask [_StencilWriteMask]
|
||||||
|
}
|
||||||
|
|
||||||
|
Cull Off
|
||||||
|
Lighting Off
|
||||||
|
ZWrite Off
|
||||||
|
ZTest [unity_GUIZTestMode]
|
||||||
|
Fog { Mode Off }
|
||||||
|
Blend One One
|
||||||
|
|
||||||
|
ColorMask [_ColorMask]
|
||||||
|
|
||||||
|
Pass
|
||||||
|
{
|
||||||
|
CGPROGRAM
|
||||||
|
#pragma vertex vert
|
||||||
|
#pragma fragment frag
|
||||||
|
#include "UnityCG.cginc"
|
||||||
|
|
||||||
|
struct appdata_t
|
||||||
|
{
|
||||||
|
float4 vertex : POSITION;
|
||||||
|
float4 color : COLOR;
|
||||||
|
float2 texcoord : TEXCOORD0;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct v2f
|
||||||
|
{
|
||||||
|
float4 vertex : SV_POSITION;
|
||||||
|
fixed4 color : COLOR;
|
||||||
|
half2 texcoord : TEXCOORD0;
|
||||||
|
};
|
||||||
|
|
||||||
|
fixed4 _Color;
|
||||||
|
|
||||||
|
v2f vert(appdata_t IN)
|
||||||
|
{
|
||||||
|
v2f OUT;
|
||||||
|
OUT.vertex = UnityObjectToClipPos(IN.vertex);
|
||||||
|
OUT.texcoord = IN.texcoord;
|
||||||
|
#ifdef UNITY_HALF_TEXEL_OFFSET
|
||||||
|
OUT.vertex.xy += (_ScreenParams.zw-1.0)*float2(-1,1);
|
||||||
|
#endif
|
||||||
|
OUT.color = IN.color * _Color;
|
||||||
|
return OUT;
|
||||||
|
}
|
||||||
|
|
||||||
|
sampler2D _MainTex;
|
||||||
|
|
||||||
|
fixed4 frag(v2f IN) : SV_Target
|
||||||
|
{
|
||||||
|
half4 color = tex2D(_MainTex, IN.texcoord) * IN.color;
|
||||||
|
color.rgb *= color.a;
|
||||||
|
clip (color.a - 0.01);
|
||||||
|
return color;
|
||||||
|
}
|
||||||
|
ENDCG
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: ecfa8f5732b504ef98fba10aa18d0326
|
||||||
|
ShaderImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
defaultTextures: []
|
||||||
|
nonModifiableTextures: []
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
|
@ -0,0 +1,174 @@
|
||||||
|
using System.Collections;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using UnityEngine;
|
||||||
|
using UnityEngine.Profiling;
|
||||||
|
using UnityEngine.UI;
|
||||||
|
|
||||||
|
|
||||||
|
namespace Coffee.UIExtensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Render maskable and sortable particle effect ,without Camera, RenderTexture or Canvas.
|
||||||
|
/// </summary>
|
||||||
|
[ExecuteInEditMode]
|
||||||
|
public class UIParticle : MaskableGraphic
|
||||||
|
{
|
||||||
|
//################################
|
||||||
|
// Constant or Readonly Static Members.
|
||||||
|
//################################
|
||||||
|
static readonly int s_IdMainTex = Shader.PropertyToID("_MainTex");
|
||||||
|
static readonly List<Vector3> s_Vertices = new List<Vector3>();
|
||||||
|
|
||||||
|
|
||||||
|
//################################
|
||||||
|
// Serialize Members.
|
||||||
|
//################################
|
||||||
|
[Tooltip("The ParticleSystem rendered by CanvasRenderer")]
|
||||||
|
[SerializeField] ParticleSystem m_ParticleSystem;
|
||||||
|
[Tooltip("The UIParticle to render trail effect")]
|
||||||
|
[SerializeField] UIParticle m_TrailParticle;
|
||||||
|
[HideInInspector] [SerializeField] bool m_IsTrail = false;
|
||||||
|
|
||||||
|
|
||||||
|
//################################
|
||||||
|
// Public/Protected Members.
|
||||||
|
//################################
|
||||||
|
public override Texture mainTexture
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
var mat = _renderer ? _renderer.sharedMaterial : defaultGraphicMaterial;
|
||||||
|
return mat && mat.HasProperty(s_IdMainTex) ? mat.mainTexture : s_WhiteTexture; ;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Material GetModifiedMaterial(Material baseMaterial)
|
||||||
|
{
|
||||||
|
return base.GetModifiedMaterial(_renderer ? _renderer.sharedMaterial : baseMaterial);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnEnable()
|
||||||
|
{
|
||||||
|
m_ParticleSystem = m_ParticleSystem ? m_ParticleSystem : GetComponent<ParticleSystem>();
|
||||||
|
_renderer = m_ParticleSystem ? m_ParticleSystem.GetComponent<ParticleSystemRenderer>() : null;
|
||||||
|
|
||||||
|
_mesh = new Mesh();
|
||||||
|
_mesh.MarkDynamic();
|
||||||
|
CheckTrail();
|
||||||
|
base.OnEnable();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void OnDisable()
|
||||||
|
{
|
||||||
|
DestroyImmediate(_mesh);
|
||||||
|
_mesh = null;
|
||||||
|
CheckTrail();
|
||||||
|
base.OnDisable();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void UpdateGeometry()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
//################################
|
||||||
|
// Private Members.
|
||||||
|
//################################
|
||||||
|
Mesh _mesh;
|
||||||
|
ParticleSystemRenderer _renderer;
|
||||||
|
|
||||||
|
void Update()
|
||||||
|
{
|
||||||
|
Profiler.BeginSample("CheckTrail");
|
||||||
|
CheckTrail();
|
||||||
|
Profiler.EndSample();
|
||||||
|
|
||||||
|
if (m_ParticleSystem)
|
||||||
|
{
|
||||||
|
Profiler.BeginSample("Disable ParticleSystemRenderer");
|
||||||
|
if (Application.isPlaying)
|
||||||
|
{
|
||||||
|
_renderer.enabled = false;
|
||||||
|
}
|
||||||
|
Profiler.EndSample();
|
||||||
|
|
||||||
|
Profiler.BeginSample("Make Matrix");
|
||||||
|
var cam = canvas.worldCamera ?? Camera.main;
|
||||||
|
bool useTransform = false;
|
||||||
|
Matrix4x4 matrix = default(Matrix4x4);
|
||||||
|
switch (m_ParticleSystem.main.simulationSpace)
|
||||||
|
{
|
||||||
|
case ParticleSystemSimulationSpace.Local:
|
||||||
|
matrix =
|
||||||
|
Matrix4x4.Rotate(m_ParticleSystem.transform.rotation).inverse
|
||||||
|
* Matrix4x4.Scale(m_ParticleSystem.transform.lossyScale).inverse;
|
||||||
|
useTransform = true;
|
||||||
|
break;
|
||||||
|
case ParticleSystemSimulationSpace.World:
|
||||||
|
matrix = m_ParticleSystem.transform.worldToLocalMatrix;
|
||||||
|
break;
|
||||||
|
case ParticleSystemSimulationSpace.Custom:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Profiler.EndSample();
|
||||||
|
|
||||||
|
_mesh.Clear();
|
||||||
|
if (0 < m_ParticleSystem.particleCount)
|
||||||
|
{
|
||||||
|
Profiler.BeginSample("Bake Mesh");
|
||||||
|
if (m_IsTrail)
|
||||||
|
{
|
||||||
|
_renderer.BakeTrailsMesh(_mesh, cam, useTransform);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
_renderer.BakeMesh(_mesh, cam, useTransform);
|
||||||
|
}
|
||||||
|
Profiler.EndSample();
|
||||||
|
|
||||||
|
// Apply matrix.
|
||||||
|
Profiler.BeginSample("Apply matrix to position");
|
||||||
|
_mesh.GetVertices(s_Vertices);
|
||||||
|
var count = s_Vertices.Count;
|
||||||
|
for (int i = 0; i < count; i++)
|
||||||
|
{
|
||||||
|
s_Vertices[i] = matrix.MultiplyPoint3x4(s_Vertices[i]);
|
||||||
|
}
|
||||||
|
_mesh.SetVertices(s_Vertices);
|
||||||
|
s_Vertices.Clear();
|
||||||
|
Profiler.EndSample();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// Set mesh to CanvasRenderer.
|
||||||
|
Profiler.BeginSample("Set mesh to CanvasRenderer");
|
||||||
|
canvasRenderer.SetMesh(_mesh);
|
||||||
|
Profiler.EndSample();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CheckTrail()
|
||||||
|
{
|
||||||
|
if (isActiveAndEnabled && !m_IsTrail && m_ParticleSystem && m_ParticleSystem.trails.enabled)
|
||||||
|
{
|
||||||
|
if (!m_TrailParticle)
|
||||||
|
{
|
||||||
|
m_TrailParticle = new GameObject("[UIParticle] Trail").AddComponent<UIParticle>();
|
||||||
|
var trans = m_TrailParticle.transform;
|
||||||
|
trans.SetParent(transform);
|
||||||
|
trans.localPosition = Vector3.zero;
|
||||||
|
trans.localRotation = Quaternion.identity;
|
||||||
|
trans.localScale = Vector3.one;
|
||||||
|
|
||||||
|
m_TrailParticle._renderer = GetComponent<ParticleSystemRenderer>();
|
||||||
|
m_TrailParticle.m_ParticleSystem = GetComponent<ParticleSystem>();
|
||||||
|
m_TrailParticle.m_IsTrail = true;
|
||||||
|
}
|
||||||
|
m_TrailParticle.enabled = true;
|
||||||
|
}
|
||||||
|
else if (m_TrailParticle)
|
||||||
|
{
|
||||||
|
m_TrailParticle.enabled = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,11 @@
|
||||||
|
fileFormatVersion: 2
|
||||||
|
guid: 16f0b0b6d0b7542bfbd20a3e05b04ff1
|
||||||
|
MonoImporter:
|
||||||
|
externalObjects: {}
|
||||||
|
serializedVersion: 2
|
||||||
|
defaultReferences: []
|
||||||
|
executionOrder: -100
|
||||||
|
icon: {instanceID: 0}
|
||||||
|
userData:
|
||||||
|
assetBundleName:
|
||||||
|
assetBundleVariant:
|
Loading…
Reference in New Issue