226 lines
5.8 KiB
C#
226 lines
5.8 KiB
C#
using System;
|
|
using System.Collections;
|
|
using UnityEngine;
|
|
using UnityEngine.Rendering;
|
|
|
|
// Token: 0x02000006 RID: 6
|
|
public class MenuCameraCrossFade : MonoBehaviour
|
|
{
|
|
// Token: 0x0600003F RID: 63 RVA: 0x00006A14 File Offset: 0x00004C14
|
|
private void Awake()
|
|
{
|
|
this.cam = base.gameObject.GetComponent<Camera>();
|
|
this.fading = false;
|
|
}
|
|
|
|
// Token: 0x06000040 RID: 64 RVA: 0x00006A30 File Offset: 0x00004C30
|
|
private void CreateTextures()
|
|
{
|
|
int width = this.cam.targetTexture.width;
|
|
int height = this.cam.targetTexture.height;
|
|
if (this.renderTextureCopy != null)
|
|
{
|
|
this.renderTextureCopy.Release();
|
|
}
|
|
if (this.renderTextureNew != null)
|
|
{
|
|
this.renderTextureNew.Release();
|
|
}
|
|
this.renderTextureCopy = new RenderTexture(width, height, 16, RenderTextureFormat.ARGB32);
|
|
this.renderTextureNew = new RenderTexture(width, height, 16, RenderTextureFormat.ARGB32);
|
|
}
|
|
|
|
// Token: 0x06000041 RID: 65 RVA: 0x00006AB4 File Offset: 0x00004CB4
|
|
public void StartCrossFade()
|
|
{
|
|
base.enabled = true;
|
|
this.crossfadeValue = 0f;
|
|
if (!base.gameObject.activeInHierarchy)
|
|
{
|
|
return;
|
|
}
|
|
if (this.crossfadeCoroutine == null)
|
|
{
|
|
this.crossfadeCoroutine = this.CrossFade(this.crossfadeLength);
|
|
base.StartCoroutine(this.crossfadeCoroutine);
|
|
this.startCoroutineTime = Time.realtimeSinceStartup;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000042 RID: 66 RVA: 0x00006B14 File Offset: 0x00004D14
|
|
public void StartCrossFadeFast()
|
|
{
|
|
base.enabled = true;
|
|
this.crossfadeValue = 0f;
|
|
if (!base.gameObject.activeInHierarchy)
|
|
{
|
|
return;
|
|
}
|
|
if (this.crossfadeCoroutine == null)
|
|
{
|
|
this.crossfadeCoroutine = this.CrossFade(0.0001f);
|
|
base.StartCoroutine(this.crossfadeCoroutine);
|
|
this.startCoroutineTime = Time.realtimeSinceStartup;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000043 RID: 67 RVA: 0x00006B72 File Offset: 0x00004D72
|
|
private IEnumerator CrossFade(float len)
|
|
{
|
|
float startValue = this.crossfadeValue;
|
|
float endValue = 1f;
|
|
float percentage = 0f;
|
|
float startTime = Time.realtimeSinceStartup;
|
|
if (this.disableWhenDone)
|
|
{
|
|
while (this.renderTextureCopy == null)
|
|
{
|
|
yield return null;
|
|
}
|
|
}
|
|
this.fading = true;
|
|
if (!this.crossfadeMaterial)
|
|
{
|
|
this.crossfadeMaterial = new Material(Links.x.crossfadeShader);
|
|
}
|
|
while (percentage < 1f)
|
|
{
|
|
percentage = (Time.realtimeSinceStartup - startTime) / len;
|
|
this.crossfadeValue = Mathf.Lerp(startValue, endValue, percentage);
|
|
if (len < 0.01f)
|
|
{
|
|
this.crossfadeValue = endValue;
|
|
}
|
|
if (this.crossfadeValue < 0f)
|
|
{
|
|
this.crossfadeMaterial.SetFloat("_CrossFade", 0f);
|
|
}
|
|
else
|
|
{
|
|
this.crossfadeMaterial.SetFloat("_CrossFade", this.crossfadeValue);
|
|
}
|
|
yield return null;
|
|
}
|
|
this.fading = false;
|
|
this.crossfadeCoroutine = null;
|
|
this.startCoroutineTime = 0f;
|
|
this.EndCrossFade();
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x06000044 RID: 68 RVA: 0x00006B88 File Offset: 0x00004D88
|
|
private void OnDisable()
|
|
{
|
|
if (this.crossfadeCoroutine != null)
|
|
{
|
|
base.StopCoroutine(this.crossfadeCoroutine);
|
|
this.crossfadeCoroutine = null;
|
|
}
|
|
if (this.commandBuffer != null)
|
|
{
|
|
this.cam.RemoveCommandBuffer(CameraEvent.AfterImageEffects, this.commandBuffer);
|
|
}
|
|
this.commandBuffer = null;
|
|
if (this.renderTextureCopy != null)
|
|
{
|
|
this.renderTextureCopy.Release();
|
|
}
|
|
if (this.renderTextureNew != null)
|
|
{
|
|
this.renderTextureNew.Release();
|
|
}
|
|
this.startCoroutineTime = 0f;
|
|
this.fading = false;
|
|
}
|
|
|
|
// Token: 0x06000045 RID: 69 RVA: 0x00006C16 File Offset: 0x00004E16
|
|
public void EndCrossFade()
|
|
{
|
|
this.startCoroutineTime = 0f;
|
|
if (this.disableWhenDone)
|
|
{
|
|
if (this.crossfadeCoroutine != null)
|
|
{
|
|
base.StopCoroutine(this.crossfadeCoroutine);
|
|
this.crossfadeCoroutine = null;
|
|
}
|
|
base.enabled = false;
|
|
}
|
|
}
|
|
|
|
// Token: 0x06000046 RID: 70 RVA: 0x00006C50 File Offset: 0x00004E50
|
|
public void OnPreRender()
|
|
{
|
|
if (this.commandBuffer == null)
|
|
{
|
|
this.commandBuffer = new CommandBuffer();
|
|
this.cam.AddCommandBuffer(CameraEvent.AfterImageEffects, this.commandBuffer);
|
|
}
|
|
if (this.startCoroutineTime > 0f && Time.realtimeSinceStartup > this.startCoroutineTime + this.crossfadeLength * 3f)
|
|
{
|
|
if (this.crossfadeCoroutine != null)
|
|
{
|
|
base.StopCoroutine(this.crossfadeCoroutine);
|
|
this.crossfadeCoroutine = null;
|
|
}
|
|
this.fading = false;
|
|
}
|
|
if (this.cam.targetTexture)
|
|
{
|
|
if (!this.crossfadeMaterial)
|
|
{
|
|
this.crossfadeMaterial = new Material(Links.x.crossfadeShader);
|
|
}
|
|
if (!this.renderTextureCopy)
|
|
{
|
|
this.CreateTextures();
|
|
}
|
|
this.commandBuffer.Clear();
|
|
if (!this.fading)
|
|
{
|
|
this.commandBuffer.Blit(this.cam.targetTexture, this.renderTextureCopy);
|
|
return;
|
|
}
|
|
this.commandBuffer.Blit(this.cam.targetTexture, this.renderTextureNew);
|
|
this.crossfadeMaterial.SetTexture("_LastFrame", this.renderTextureCopy);
|
|
this.crossfadeMaterial.SetTexture("_NewFrame", this.renderTextureNew);
|
|
RenderTargetIdentifier renderTargetIdentifier = new RenderTargetIdentifier(BuiltinRenderTextureType.CameraTarget);
|
|
this.commandBuffer.SetRenderTarget(renderTargetIdentifier);
|
|
this.commandBuffer.Blit(this.renderTextureCopy, renderTargetIdentifier, this.crossfadeMaterial, 0);
|
|
}
|
|
}
|
|
|
|
// Token: 0x04000130 RID: 304
|
|
private Camera cam;
|
|
|
|
// Token: 0x04000131 RID: 305
|
|
private Material crossfadeMaterial;
|
|
|
|
// Token: 0x04000132 RID: 306
|
|
public bool disableWhenDone;
|
|
|
|
// Token: 0x04000133 RID: 307
|
|
public float crossfadeLength = 0.25f;
|
|
|
|
// Token: 0x04000134 RID: 308
|
|
private IEnumerator crossfadeCoroutine;
|
|
|
|
// Token: 0x04000135 RID: 309
|
|
public RenderTexture renderTextureCopy;
|
|
|
|
// Token: 0x04000136 RID: 310
|
|
public RenderTexture renderTextureNew;
|
|
|
|
// Token: 0x04000137 RID: 311
|
|
public bool fading;
|
|
|
|
// Token: 0x04000138 RID: 312
|
|
private CommandBuffer commandBuffer;
|
|
|
|
// Token: 0x04000139 RID: 313
|
|
public float crossfadeValue;
|
|
|
|
// Token: 0x0400013A RID: 314
|
|
private float startCoroutineTime;
|
|
}
|