Files
Assembly-CSharp/Assembly-CSharp/TextMoveEffect.cs
2026-06-12 12:58:31 +08:00

177 lines
4.4 KiB
C#

using System;
using TMPro;
using UnityEngine;
using UnityEngine.EventSystems;
// Token: 0x0200018E RID: 398
[RequireComponent(typeof(TMP_Text))]
public class TextMoveEffect : UIBehaviour
{
// Token: 0x1700015F RID: 351
// (get) Token: 0x06000E08 RID: 3592 RVA: 0x00042CDB File Offset: 0x00041EDB
public TextMoveEffect.ControlleMode Mode
{
get
{
return this._mode;
}
}
// Token: 0x17000160 RID: 352
// (get) Token: 0x06000E09 RID: 3593 RVA: 0x00042CE3 File Offset: 0x00041EE3
public float Frequency
{
get
{
return this._frequency;
}
}
// Token: 0x17000161 RID: 353
// (get) Token: 0x06000E0A RID: 3594 RVA: 0x00042CEB File Offset: 0x00041EEB
// (set) Token: 0x06000E0B RID: 3595 RVA: 0x00042CF3 File Offset: 0x00041EF3
public float Timer { get; set; }
// Token: 0x17000162 RID: 354
// (get) Token: 0x06000E0C RID: 3596 RVA: 0x00042CFC File Offset: 0x00041EFC
// (set) Token: 0x06000E0D RID: 3597 RVA: 0x00042D04 File Offset: 0x00041F04
public bool IsTypewriter { get; set; }
// Token: 0x17000163 RID: 355
// (get) Token: 0x06000E0E RID: 3598 RVA: 0x00042D0D File Offset: 0x00041F0D
public TMP_Text TmpText
{
get
{
return this._tmpText ?? base.GetComponent<TMP_Text>();
}
}
// Token: 0x06000E0F RID: 3599 RVA: 0x00042D1F File Offset: 0x00041F1F
private void Update()
{
this.Timer += Time.deltaTime;
if (this.Timer > this._frequency)
{
this.Timer = 0f;
this.MeshUpdate();
}
}
// Token: 0x06000E10 RID: 3600 RVA: 0x00042D54 File Offset: 0x00041F54
public void MeshUpdate()
{
if (this.TmpText == null)
{
return;
}
if (!this._distortion)
{
this.TmpText.ForceMeshUpdate();
}
TMP_TextInfo textInfo = this.TmpText.textInfo;
int characterCount = textInfo.characterCount;
Vector3[] array = null;
if (characterCount == 0)
{
return;
}
int num = 0;
while (num < characterCount && (!this.IsTypewriter || num != characterCount - 1) && textInfo.characterInfo.Length >= characterCount)
{
if (textInfo.characterInfo[num].isVisible)
{
int vertexIndex = textInfo.characterInfo[num].vertexIndex;
int materialReferenceIndex = textInfo.characterInfo[num].materialReferenceIndex;
array = textInfo.meshInfo[materialReferenceIndex].vertices;
this.TextMove(vertexIndex, ref array);
}
num++;
}
if (array != null && array.Length >= 4)
{
this.TmpText.UpdateVertexData();
}
}
// Token: 0x06000E11 RID: 3601 RVA: 0x00042E2C File Offset: 0x0004202C
public void TextMove(int vertexIndex, ref Vector3[] vertices)
{
TextMoveEffect.ControlleMode mode = this._mode;
if (mode == TextMoveEffect.ControlleMode.Simple)
{
this.TextMoveSimple(vertexIndex, ref vertices);
return;
}
if (mode != TextMoveEffect.ControlleMode.Active)
{
return;
}
this.TextMoveActive(vertexIndex, ref vertices);
}
// Token: 0x06000E12 RID: 3602 RVA: 0x00042E5C File Offset: 0x0004205C
private void TextMoveSimple(int vertexIndex, ref Vector3[] vertices)
{
float num = (float)Random.Range(0, 360) * 0.017453292f;
Vector3 vector;
vector..ctor(this._radius * Mathf.Cos(num), this._radius * Mathf.Sin(num), 0f);
for (int i = 0; i < 4; i++)
{
Vector3 vector2 = vertices[vertexIndex + i];
vector2 += vector;
vertices[vertexIndex + i] = vector2;
}
}
// Token: 0x06000E13 RID: 3603 RVA: 0x00042ECC File Offset: 0x000420CC
private void TextMoveActive(int vertexIndex, ref Vector3[] vertices)
{
Vector3[] array = new Vector3[4];
for (int i = 0; i < 4; i++)
{
float num = (float)Random.Range(0, 360) * 0.017453292f;
float num2 = this._radius * Random.value;
Vector3 vector;
vector..ctor(num2 * Mathf.Cos(num), num2 * Mathf.Sin(num), 0f);
array[i] = vector;
}
for (int j = 0; j < 4; j++)
{
Vector3 vector2 = vertices[vertexIndex + j];
vector2 += array[j];
vertices[vertexIndex + j] = vector2;
}
}
// Token: 0x04000ACC RID: 2764
[SerializeField]
private TextMoveEffect.ControlleMode _mode;
// Token: 0x04000ACD RID: 2765
[SerializeField]
private float _radius = 1.5f;
// Token: 0x04000ACE RID: 2766
[SerializeField]
private float _frequency = 0.05f;
// Token: 0x04000ACF RID: 2767
[SerializeField]
private bool _distortion;
// Token: 0x04000AD2 RID: 2770
private readonly TMP_Text _tmpText;
// Token: 0x02000A52 RID: 2642
public enum ControlleMode
{
// Token: 0x040063D7 RID: 25559
None,
// Token: 0x040063D8 RID: 25560
Simple,
// Token: 0x040063D9 RID: 25561
Active
}
}